23 lines
1 KiB
TypeScript
23 lines
1 KiB
TypeScript
import TSParser from "web-tree-sitter";
|
|
|
|
// @ts-ignore
|
|
const Parser: typeof TSParser = await import('..').then(m => m.default);
|
|
|
|
// https://github.com/tree-sitter/tree-sitter/blob/master/xtask/src/fetch.rs#L15
|
|
type LanguageName = "bash" | "c" | "cpp" | "embedded-template" | "go" | "html" | "java" | "javascript" | "jsdoc" | "json" | "php" | "python" | "ruby" | "rust" | "typescript";
|
|
|
|
function languageURL(name: LanguageName): string {
|
|
return new URL(`../../../target/release/tree-sitter-${name}.wasm`, import.meta.url).pathname;
|
|
}
|
|
|
|
export default Parser.init().then(async () => ({
|
|
Parser,
|
|
languageURL,
|
|
C: await Parser.Language.load(languageURL('c')),
|
|
EmbeddedTemplate: await Parser.Language.load(languageURL('embedded-template')),
|
|
HTML: await Parser.Language.load(languageURL('html')),
|
|
JavaScript: await Parser.Language.load(languageURL('javascript')),
|
|
JSON: await Parser.Language.load(languageURL('json')),
|
|
Python: await Parser.Language.load(languageURL('python')),
|
|
Rust: await Parser.Language.load(languageURL('rust')),
|
|
}));
|