08beba6cb1
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
38 lines
1.1 KiB
JavaScript
Generated
38 lines
1.1 KiB
JavaScript
Generated
import { readFileSync } from "node:fs";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const root = fileURLToPath(new URL("../..", import.meta.url));
|
|
|
|
const binding = typeof process.versions.bun === "string"
|
|
// Support `bun build --compile` by being statically analyzable enough to find the .node file at build-time
|
|
? await import(`${root}/prebuilds/${process.platform}-${process.arch}/tree-sitter-p4.node`)
|
|
: (await import("node-gyp-build")).default(root);
|
|
|
|
try {
|
|
const nodeTypes = await import(`${root}/src/node-types.json`, { with: { type: "json" } });
|
|
binding.nodeTypeInfo = nodeTypes.default;
|
|
} catch { }
|
|
|
|
const queries = [
|
|
["HIGHLIGHTS_QUERY", `${root}/queries/highlights.scm`],
|
|
["INJECTIONS_QUERY", `${root}/queries/injections.scm`],
|
|
["LOCALS_QUERY", `${root}/queries/locals.scm`],
|
|
["TAGS_QUERY", `${root}/queries/tags.scm`],
|
|
];
|
|
|
|
for (const [prop, path] of queries) {
|
|
Object.defineProperty(binding, prop, {
|
|
configurable: true,
|
|
enumerable: true,
|
|
get() {
|
|
delete binding[prop];
|
|
try {
|
|
binding[prop] = readFileSync(path, "utf8");
|
|
} catch { }
|
|
return binding[prop];
|
|
}
|
|
});
|
|
}
|
|
|
|
export default binding;
|