tree-sitter/lib/binding_web/test/helper.ts
Amaan Qureshi be7716dfa7 feat(web)!: use the WASM module in the bindings, and not the other way around
Parser is no longer the default export, but you *must* call
`Parser.init()` before doing anything still
2025-01-21 12:36:15 -05:00

29 lines
1.2 KiB
TypeScript

import { type Parser as ParserType, type Language as LanguageType } from '../src';
import path from 'path';
// @ts-expect-error We're intentionally importing ../tree-sitter.js
import { Parser as ParserImpl, Language as LanguageImpl } from '..';
const Parser = ParserImpl as typeof ParserType;
const Language = LanguageImpl as typeof LanguageType;
// https://github.com/tree-sitter/tree-sitter/blob/master/xtask/src/fetch.rs#L15
export type LanguageName = 'bash' | 'c' | 'cpp' | 'embedded-template' | 'go' | 'html' | 'java' | 'javascript' | 'jsdoc' | 'json' | 'php' | 'python' | 'ruby' | 'rust' | 'typescript' | 'tsx';
function languageURL(name: LanguageName): string {
const basePath = process.cwd();
return path.join(basePath, `../../target/release/tree-sitter-${name}.wasm`);
}
export default Parser.init().then(async () => ({
Parser,
Language,
languageURL,
C: await Language.load(languageURL('c')),
EmbeddedTemplate: await Language.load(languageURL('embedded-template')),
HTML: await Language.load(languageURL('html')),
JavaScript: await Language.load(languageURL('javascript')),
JSON: await Language.load(languageURL('json')),
Python: await Language.load(languageURL('python')),
Rust: await Language.load(languageURL('rust')),
}));