(language: string)
| 139 | } |
| 140 | |
| 141 | async function loadLanguage(language: string): Promise<Language> { |
| 142 | const wasmFile = CURATED_LANGUAGE_TO_WASM[language]; |
| 143 | if (!wasmFile) { |
| 144 | throw new Error(`Tree-sitter grammar is not configured for '${language}'.`); |
| 145 | } |
| 146 | |
| 147 | let cachedLanguage = languageCache.get(language); |
| 148 | if (!cachedLanguage) { |
| 149 | const { wasmPath } = resolveGrammarPath(language, import.meta.url); |
| 150 | cachedLanguage = Language.load(wasmPath).catch((err) => { |
| 151 | // Evict failed entry so later calls can retry after fixes |
| 152 | languageCache.delete(language); |
| 153 | throw err; |
| 154 | }); |
| 155 | languageCache.set(language, cachedLanguage); |
| 156 | } |
| 157 | |
| 158 | return cachedLanguage; |
| 159 | } |
| 160 | |
| 161 | async function getParserForLanguage(language: string): Promise<Parser> { |
| 162 | let cachedParser = parserCache.get(language); |
no test coverage detected