@tsrx/typescript-plugin 0.3.54 → 0.3.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getRippleLanguagePlugin"],"sources":["../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/dedupe.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/utils.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/transform.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/proxyLanguageService.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/common.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/resolveModuleName.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/decorateLanguageServiceHost.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/quickstart/languageServicePluginCommon.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/quickstart/createLanguageServicePlugin.js","../src/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dedupeDocumentSpans = dedupeDocumentSpans;\nfunction dedupeDocumentSpans(items) {\n return dedupe(items, item => [\n item.fileName,\n item.textSpan.start,\n item.textSpan.length,\n ].join(':'));\n}\nfunction dedupe(items, getKey) {\n const map = new Map();\n for (const item of items.reverse()) {\n map.set(getKey(item), item);\n }\n return [...map.values()];\n}\n//# sourceMappingURL=dedupe.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getServiceScript = getServiceScript;\nexports.fixupImpliedNodeFormatForFile = fixupImpliedNodeFormatForFile;\nfunction getServiceScript(language, fileName) {\n const sourceScript = language.scripts.get(fileName);\n if (sourceScript?.targetIds.size) {\n for (const targetId of sourceScript.targetIds) {\n const targetScript = language.scripts.get(targetId);\n if (targetScript?.generated) {\n const serviceScript = targetScript.generated.languagePlugin.typescript?.getServiceScript(targetScript.generated.root);\n if (serviceScript) {\n return [serviceScript, targetScript, sourceScript];\n }\n }\n }\n }\n if (sourceScript?.associatedOnly) {\n return [undefined, sourceScript, sourceScript];\n }\n if (sourceScript?.generated) {\n const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);\n if (serviceScript) {\n return [serviceScript, sourceScript, sourceScript];\n }\n }\n return [undefined, undefined, undefined];\n}\nfunction fixupImpliedNodeFormatForFile(ts, pluginExtensions, sourceFile, packageJsonInfoCache, host, options) {\n if (sourceFile.impliedNodeFormat !== undefined || !pluginExtensions.some(ext => sourceFile.fileName.endsWith(ext))) {\n return;\n }\n // https://github.com/microsoft/TypeScript/blob/669c25c091ad4d32298d0f33b0e4e681d46de3ea/src/compiler/program.ts#L1354\n const validExts = ['.d.ts', '.ts', '.tsx', '.js', '.jsx'];\n if (validExts.some(ext => sourceFile.fileName.endsWith(ext))) {\n return;\n }\n const asTs = sourceFile.fileName + '.ts';\n // Use getImpliedNodeFormatForFileWorker instead of getImpliedNodeFormatForFile for runTsc() compatibility\n const impliedNodeFormat = ts.getImpliedNodeFormatForFileWorker?.(asTs, packageJsonInfoCache, host, options)?.impliedNodeFormat;\n if (impliedNodeFormat === undefined) {\n return;\n }\n sourceFile.impliedNodeFormat = impliedNodeFormat;\n return () => sourceFile.impliedNodeFormat = undefined;\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformCallHierarchyItem = transformCallHierarchyItem;\nexports.transformDiagnostic = transformDiagnostic;\nexports.fillSourceFileText = fillSourceFileText;\nexports.transformFileTextChanges = transformFileTextChanges;\nexports.transformDocumentSpan = transformDocumentSpan;\nexports.transformSpan = transformSpan;\nexports.transformTextChange = transformTextChange;\nexports.transformTextSpan = transformTextSpan;\nexports.toSourceOffset = toSourceOffset;\nexports.toSourceRanges = toSourceRanges;\nexports.toSourceOffsets = toSourceOffsets;\nexports.toGeneratedRange = toGeneratedRange;\nexports.toGeneratedRanges = toGeneratedRanges;\nexports.toGeneratedOffset = toGeneratedOffset;\nexports.toGeneratedOffsets = toGeneratedOffsets;\nexports.getMappingOffset = getMappingOffset;\nconst language_core_1 = require(\"@volar/language-core\");\nconst utils_1 = require(\"./utils\");\nconst transformedDiagnostics = new WeakMap();\nconst transformedSourceFile = new WeakSet();\n/**\n * This file contains a number of facilities for transforming `ts.Diagnostic`s returned\n * from the base TypeScript LanguageService, which reference locations in generated\n * TS code (e.g. the TypeScript codegen'd from the script portion of a .vue file) into locations\n * in the script portion of the .vue file.\n */\nfunction transformCallHierarchyItem(language, item, fallbackToAnyMatch, filter) {\n const span = transformSpan(language, item.file, item.span, fallbackToAnyMatch, filter);\n const selectionSpan = transformSpan(language, item.file, item.selectionSpan, fallbackToAnyMatch, filter);\n return {\n ...item,\n file: span?.fileName ?? item.file,\n span: span?.textSpan ?? { start: 0, length: 0 },\n selectionSpan: selectionSpan?.textSpan ?? { start: 0, length: 0 },\n };\n}\nfunction transformDiagnostic(language, diagnostic, program, isTsc) {\n if (!transformedDiagnostics.has(diagnostic)) {\n transformedDiagnostics.set(diagnostic, undefined);\n const { relatedInformation } = diagnostic;\n if (relatedInformation) {\n diagnostic.relatedInformation = relatedInformation\n .map(d => transformDiagnostic(language, d, program, isTsc))\n .filter(d => !!d);\n }\n if (diagnostic.file !== undefined\n && diagnostic.start !== undefined\n && diagnostic.length !== undefined) {\n const [serviceScript] = (0, utils_1.getServiceScript)(language, diagnostic.file.fileName);\n if (serviceScript) {\n const [sourceSpanFileName, sourceSpan] = transformTextSpan(undefined, language, serviceScript, {\n start: diagnostic.start,\n length: diagnostic.length,\n }, true, data => (0, language_core_1.shouldReportDiagnostics)(data, String(diagnostic.source), String(diagnostic.code))) ?? [];\n const actualDiagnosticFile = sourceSpanFileName\n ? diagnostic.file.fileName === sourceSpanFileName\n ? diagnostic.file\n : program?.getSourceFile(sourceSpanFileName)\n : undefined;\n if (sourceSpan && actualDiagnosticFile) {\n if (isTsc) {\n fillSourceFileText(language, diagnostic.file);\n }\n transformedDiagnostics.set(diagnostic, {\n ...diagnostic,\n file: actualDiagnosticFile,\n start: sourceSpan.start,\n length: sourceSpan.length,\n });\n }\n }\n else {\n transformedDiagnostics.set(diagnostic, diagnostic);\n }\n }\n else {\n transformedDiagnostics.set(diagnostic, diagnostic);\n }\n }\n return transformedDiagnostics.get(diagnostic);\n}\n// fix https://github.com/vuejs/language-tools/issues/4099 without `incremental`\nfunction fillSourceFileText(language, sourceFile) {\n if (transformedSourceFile.has(sourceFile)) {\n return;\n }\n transformedSourceFile.add(sourceFile);\n const [serviceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);\n if (serviceScript && !serviceScript.preventLeadingOffset) {\n const sourceScript = language.scripts.fromVirtualCode(serviceScript.code);\n sourceFile.text = sourceScript.snapshot.getText(0, sourceScript.snapshot.getLength())\n + sourceFile.text.substring(sourceScript.snapshot.getLength());\n }\n}\nfunction transformFileTextChanges(language, changes, fallbackToAnyMatch, filter) {\n const changesPerFile = {};\n const newFiles = new Set();\n for (const fileChanges of changes) {\n const [_, source] = (0, utils_1.getServiceScript)(language, fileChanges.fileName);\n if (source) {\n fileChanges.textChanges.forEach(c => {\n const { fileName, textSpan } = transformSpan(language, fileChanges.fileName, c.span, fallbackToAnyMatch, filter)\n ?? {};\n if (fileName && textSpan) {\n (changesPerFile[fileName] ?? (changesPerFile[fileName] = [])).push({ ...c, span: textSpan });\n }\n });\n }\n else {\n const list = changesPerFile[fileChanges.fileName] ?? (changesPerFile[fileChanges.fileName] = []);\n fileChanges.textChanges.forEach(c => {\n list.push(c);\n });\n if (fileChanges.isNewFile) {\n newFiles.add(fileChanges.fileName);\n }\n }\n }\n const result = [];\n for (const fileName in changesPerFile) {\n result.push({\n fileName,\n isNewFile: newFiles.has(fileName),\n textChanges: changesPerFile[fileName],\n });\n }\n return result;\n}\nfunction transformDocumentSpan(language, documentSpan, fallbackToAnyMatch, filter, shouldFallback) {\n let textSpan = transformSpan(language, documentSpan.fileName, documentSpan.textSpan, fallbackToAnyMatch, filter);\n if (!textSpan && shouldFallback) {\n textSpan = {\n fileName: documentSpan.fileName,\n textSpan: { start: 0, length: 0 },\n };\n }\n if (!textSpan) {\n return;\n }\n const contextSpan = transformSpan(language, documentSpan.fileName, documentSpan.contextSpan, fallbackToAnyMatch, filter);\n const originalTextSpan = transformSpan(language, documentSpan.originalFileName, documentSpan.originalTextSpan, fallbackToAnyMatch, filter);\n const originalContextSpan = transformSpan(language, documentSpan.originalFileName, documentSpan.originalContextSpan, fallbackToAnyMatch, filter);\n return {\n ...documentSpan,\n fileName: textSpan.fileName,\n textSpan: textSpan.textSpan,\n contextSpan: contextSpan?.textSpan,\n originalFileName: originalTextSpan?.fileName,\n originalTextSpan: originalTextSpan?.textSpan,\n originalContextSpan: originalContextSpan?.textSpan,\n };\n}\nfunction transformSpan(language, fileName, textSpan, fallbackToAnyMatch, filter) {\n if (!fileName || !textSpan) {\n return;\n }\n const [serviceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (serviceScript) {\n const [sourceSpanFileName, sourceSpan] = transformTextSpan(undefined, language, serviceScript, textSpan, fallbackToAnyMatch, filter) ?? [];\n if (sourceSpan && sourceSpanFileName) {\n return {\n fileName: sourceSpanFileName,\n textSpan: sourceSpan,\n };\n }\n }\n else {\n return {\n fileName,\n textSpan,\n };\n }\n}\nfunction transformTextChange(sourceScript, language, serviceScript, textChange, fallbackToAnyMatch, filter) {\n const [sourceSpanFileName, sourceSpan] = transformTextSpan(sourceScript, language, serviceScript, textChange.span, fallbackToAnyMatch, filter) ?? [];\n if (sourceSpan && sourceSpanFileName) {\n return [sourceSpanFileName, {\n newText: textChange.newText,\n span: sourceSpan,\n }];\n }\n return undefined;\n}\nfunction transformTextSpan(sourceScript, language, serviceScript, textSpan, fallbackToAnyMatch, filter) {\n const start = textSpan.start;\n const end = textSpan.start + textSpan.length;\n for (const [fileName, sourceStart, sourceEnd] of toSourceRanges(sourceScript, language, serviceScript, start, end, fallbackToAnyMatch, filter)) {\n return [fileName, {\n start: sourceStart,\n length: sourceEnd - sourceStart,\n }];\n }\n}\nfunction toSourceOffset(sourceScript, language, serviceScript, position, filter) {\n for (const source of toSourceOffsets(sourceScript, language, serviceScript, position, filter)) {\n return source;\n }\n}\nfunction* toSourceRanges(sourceScript, language, serviceScript, start, end, fallbackToAnyMatch, filter) {\n if (sourceScript) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n for (const [sourceStart, sourceEnd] of map.toSourceRange(start - getMappingOffset(language, serviceScript), end - getMappingOffset(language, serviceScript), fallbackToAnyMatch, filter)) {\n yield [sourceScript.id, sourceStart, sourceEnd];\n }\n }\n else {\n for (const [sourceScript, map] of language.maps.forEach(serviceScript.code)) {\n for (const [sourceStart, sourceEnd] of map.toSourceRange(start - getMappingOffset(language, serviceScript), end - getMappingOffset(language, serviceScript), fallbackToAnyMatch, filter)) {\n yield [sourceScript.id, sourceStart, sourceEnd];\n }\n }\n }\n}\nfunction* toSourceOffsets(sourceScript, language, serviceScript, position, filter) {\n if (sourceScript) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n for (const [sourceOffset, mapping] of map.toSourceLocation(position - getMappingOffset(language, serviceScript))) {\n if (filter(mapping.data)) {\n yield [sourceScript.id, sourceOffset];\n }\n }\n }\n else {\n for (const [sourceScript, map] of language.maps.forEach(serviceScript.code)) {\n for (const [sourceOffset, mapping] of map.toSourceLocation(position - getMappingOffset(language, serviceScript))) {\n if (filter(mapping.data)) {\n yield [sourceScript.id, sourceOffset];\n }\n }\n }\n }\n}\nfunction toGeneratedRange(language, serviceScript, sourceScript, start, end, filter) {\n for (const result of toGeneratedRanges(language, serviceScript, sourceScript, start, end, filter)) {\n return result;\n }\n}\nfunction* toGeneratedRanges(language, serviceScript, sourceScript, start, end, filter) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n for (const [generateStart, generateEnd] of map.toGeneratedRange(start, end, true, filter)) {\n yield [\n generateStart + getMappingOffset(language, serviceScript),\n generateEnd + getMappingOffset(language, serviceScript),\n ];\n }\n}\nfunction toGeneratedOffset(language, serviceScript, sourceScript, position, filter) {\n for (const [generateOffset] of toGeneratedOffsets(language, serviceScript, sourceScript, position, filter)) {\n return generateOffset;\n }\n}\nfunction* toGeneratedOffsets(language, serviceScript, sourceScript, position, filter) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n for (const [generateOffset, mapping] of map.toGeneratedLocation(position)) {\n if (filter(mapping.data)) {\n yield [generateOffset + getMappingOffset(language, serviceScript), mapping];\n }\n }\n}\nfunction getMappingOffset(language, serviceScript) {\n if (serviceScript.preventLeadingOffset) {\n return 0;\n }\n const sourceScript = language.scripts.fromVirtualCode(serviceScript.code);\n return sourceScript.snapshot.getLength();\n}\n//# sourceMappingURL=transform.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProxyLanguageService = createProxyLanguageService;\nconst language_core_1 = require(\"@volar/language-core\");\nconst dedupe_1 = require(\"./dedupe\");\nconst transform_1 = require(\"./transform\");\nconst utils_1 = require(\"./utils\");\nconst windowsPathReg = /\\\\/g;\n/**\n * Creates and returns a Proxy around the base TypeScript LanguageService.\n *\n * This is used by the Volar TypeScript Plugin (which can be created by `createLanguageServicePlugin`\n * and `createAsyncLanguageServicePlugin`) as an adapter layer between the TypeScript Language Service\n * plugin API (see https://github.com/microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin)\n * and a Volar `Language`.\n *\n * Once the `initialize` method is called, the proxy will begin intercepting requests and\n * enhancing the default behavior of the LanguageService with enhancements based on\n * the Volar `Language` that has been passed to `initialize`.\n */\nfunction createProxyLanguageService(languageService) {\n const proxyCache = new Map();\n let getProxyMethod;\n return {\n initialize(language) {\n getProxyMethod = (target, p) => {\n switch (p) {\n case 'getNavigationTree':\n return getNavigationTree(language, target[p]);\n case 'getOutliningSpans':\n return getOutliningSpans(language, target[p]);\n case 'getFormattingEditsForDocument':\n return getFormattingEditsForDocument(language, target[p]);\n case 'getFormattingEditsForRange':\n return getFormattingEditsForRange(language, target[p]);\n case 'getFormattingEditsAfterKeystroke':\n return getFormattingEditsAfterKeystroke(language, target[p]);\n case 'getEditsForFileRename':\n return getEditsForFileRename(language, target[p]);\n case 'getLinkedEditingRangeAtPosition':\n return getLinkedEditingRangeAtPosition(language, target[p]);\n case 'prepareCallHierarchy':\n return prepareCallHierarchy(language, target[p]);\n case 'provideCallHierarchyIncomingCalls':\n return provideCallHierarchyIncomingCalls(language, target[p]);\n case 'provideCallHierarchyOutgoingCalls':\n return provideCallHierarchyOutgoingCalls(language, target[p]);\n case 'organizeImports':\n return organizeImports(language, target[p]);\n case 'getQuickInfoAtPosition':\n return getQuickInfoAtPosition(language, target[p]);\n case 'getSignatureHelpItems':\n return getSignatureHelpItems(language, target[p]);\n case 'getDocumentHighlights':\n return getDocumentHighlights(language, target[p]);\n case 'getApplicableRefactors':\n return getApplicableRefactors(language, target[p]);\n case 'getEditsForRefactor':\n return getEditsForRefactor(language, target[p]);\n case 'getCombinedCodeFix':\n return getCombinedCodeFix(language, target[p]);\n case 'getRenameInfo':\n return getRenameInfo(language, target[p]);\n case 'getCodeFixesAtPosition':\n return getCodeFixesAtPosition(language, target[p]);\n case 'getEncodedSemanticClassifications':\n return getEncodedSemanticClassifications(language, target[p]);\n case 'getSyntacticDiagnostics':\n return getSyntacticDiagnostics(language, languageService, target[p]);\n case 'getSemanticDiagnostics':\n return getSemanticDiagnostics(language, languageService, target[p]);\n case 'getSuggestionDiagnostics':\n return getSuggestionDiagnostics(language, languageService, target[p]);\n case 'getDefinitionAndBoundSpan':\n return getDefinitionAndBoundSpan(language, target[p]);\n case 'findReferences':\n return findReferences(language, target[p]);\n case 'getDefinitionAtPosition':\n return getDefinitionAtPosition(language, target[p]);\n case 'getTypeDefinitionAtPosition':\n return getTypeDefinitionAtPosition(language, target[p]);\n case 'getImplementationAtPosition':\n return getImplementationAtPosition(language, target[p]);\n case 'findRenameLocations':\n return findRenameLocations(language, target[p]);\n case 'getReferencesAtPosition':\n return getReferencesAtPosition(language, target[p]);\n case 'getCompletionsAtPosition':\n return getCompletionsAtPosition(language, target[p]);\n case 'getCompletionEntryDetails':\n return getCompletionEntryDetails(language, target[p]);\n case 'provideInlayHints':\n return provideInlayHints(language, target[p]);\n case 'getFileReferences':\n return getFileReferences(language, target[p]);\n case 'getNavigateToItems':\n return getNavigateToItems(language, target[p]);\n }\n };\n },\n proxy: new Proxy(languageService, {\n get(target, p, receiver) {\n if (getProxyMethod) {\n if (!proxyCache.has(p)) {\n proxyCache.set(p, getProxyMethod(target, p));\n }\n const proxyMethod = proxyCache.get(p);\n if (proxyMethod) {\n return proxyMethod;\n }\n }\n return Reflect.get(target, p, receiver);\n },\n set(target, p, value, receiver) {\n return Reflect.set(target, p, value, receiver);\n },\n }),\n };\n}\n// ignored methods\nfunction getNavigationTree(language, getNavigationTree) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (serviceScript || targetScript?.associatedOnly) {\n const tree = getNavigationTree(targetScript.id);\n tree.childItems = undefined;\n return tree;\n }\n else {\n return getNavigationTree(fileName);\n }\n };\n}\nfunction getOutliningSpans(language, getOutliningSpans) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (serviceScript || targetScript?.associatedOnly) {\n return [];\n }\n else {\n return getOutliningSpans(fileName);\n }\n };\n}\n// proxy methods\nfunction getFormattingEditsForDocument(language, getFormattingEditsForDocument) {\n return (filePath, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const map = language.maps.get(serviceScript.code, targetScript);\n if (!map.mappings.some(mapping => (0, language_core_1.isFormattingEnabled)(mapping.data))) {\n return [];\n }\n const edits = getFormattingEditsForDocument(targetScript.id, options);\n return edits\n .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, false, language_core_1.isFormattingEnabled)?.[1])\n .filter(edit => !!edit);\n }\n else {\n return getFormattingEditsForDocument(fileName, options);\n }\n };\n}\nfunction getFormattingEditsForRange(language, getFormattingEditsForRange) {\n return (filePath, start, end, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generatedRange = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, start, end, language_core_1.isFormattingEnabled);\n if (generatedRange !== undefined) {\n const edits = getFormattingEditsForRange(targetScript.id, generatedRange[0], generatedRange[1], options);\n return edits\n .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, false, language_core_1.isFormattingEnabled)?.[1])\n .filter(edit => !!edit);\n }\n return [];\n }\n else {\n return getFormattingEditsForRange(fileName, start, end, options);\n }\n };\n}\nfunction getFormattingEditsAfterKeystroke(language, getFormattingEditsAfterKeystroke) {\n return (filePath, position, key, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isFormattingEnabled);\n if (generatePosition !== undefined) {\n const edits = getFormattingEditsAfterKeystroke(targetScript.id, generatePosition, key, options);\n return edits\n .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, false, language_core_1.isFormattingEnabled)?.[1])\n .filter(edit => !!edit);\n }\n return [];\n }\n else {\n return getFormattingEditsAfterKeystroke(fileName, position, key, options);\n }\n };\n}\nfunction getEditsForFileRename(language, getEditsForFileRename) {\n return (oldFilePath, newFilePath, formatOptions, preferences) => {\n const edits = getEditsForFileRename(oldFilePath, newFilePath, formatOptions, preferences);\n return (0, transform_1.transformFileTextChanges)(language, edits, false, language_core_1.isRenameEnabled);\n };\n}\nfunction getLinkedEditingRangeAtPosition(language, getLinkedEditingRangeAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isLinkedEditingEnabled);\n if (generatePosition !== undefined) {\n const info = getLinkedEditingRangeAtPosition(targetScript.id, generatePosition);\n if (info) {\n return {\n ranges: info.ranges\n .map(span => (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, false, language_core_1.isLinkedEditingEnabled)?.[1])\n .filter(span => !!span),\n wordPattern: info.wordPattern,\n };\n }\n }\n }\n else {\n return getLinkedEditingRangeAtPosition(fileName, position);\n }\n };\n}\nfunction prepareCallHierarchy(language, prepareCallHierarchy) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);\n if (generatePosition !== undefined) {\n const item = prepareCallHierarchy(targetScript.id, generatePosition);\n if (Array.isArray(item)) {\n return item.map(item => (0, transform_1.transformCallHierarchyItem)(language, item, true, language_core_1.isCallHierarchyEnabled));\n }\n else if (item) {\n return (0, transform_1.transformCallHierarchyItem)(language, item, true, language_core_1.isCallHierarchyEnabled);\n }\n }\n }\n else {\n return prepareCallHierarchy(fileName, position);\n }\n };\n}\nfunction provideCallHierarchyIncomingCalls(language, provideCallHierarchyIncomingCalls) {\n return (filePath, position) => {\n let calls = [];\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);\n if (generatePosition !== undefined) {\n calls = provideCallHierarchyIncomingCalls(targetScript.id, generatePosition);\n }\n }\n else {\n calls = provideCallHierarchyIncomingCalls(fileName, position);\n }\n return calls\n .map(call => {\n const from = (0, transform_1.transformCallHierarchyItem)(language, call.from, true, language_core_1.isCallHierarchyEnabled);\n const fromSpans = call.fromSpans\n .map(span => (0, transform_1.transformSpan)(language, call.from.file, span, true, language_core_1.isCallHierarchyEnabled)?.textSpan)\n .filter(span => !!span);\n return {\n from,\n fromSpans,\n };\n });\n };\n}\nfunction provideCallHierarchyOutgoingCalls(language, provideCallHierarchyOutgoingCalls) {\n return (filePath, position) => {\n let calls = [];\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);\n if (generatePosition !== undefined) {\n calls = provideCallHierarchyOutgoingCalls(targetScript.id, generatePosition);\n }\n }\n else {\n calls = provideCallHierarchyOutgoingCalls(fileName, position);\n }\n return calls\n .map(call => {\n const to = (0, transform_1.transformCallHierarchyItem)(language, call.to, true, language_core_1.isCallHierarchyEnabled);\n const fromSpans = call.fromSpans\n .map(span => serviceScript\n ? (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, true, language_core_1.isCallHierarchyEnabled)?.[1]\n : span)\n .filter(span => !!span);\n return {\n to,\n fromSpans,\n };\n });\n };\n}\nfunction organizeImports(language, organizeImports) {\n return (args, formatOptions, preferences) => {\n const unresolved = organizeImports(args, formatOptions, preferences);\n return (0, transform_1.transformFileTextChanges)(language, unresolved, false, language_core_1.isCodeActionsEnabled);\n };\n}\nfunction getQuickInfoAtPosition(language, getQuickInfoAtPosition) {\n /**\n * Using `...args` for pass through rest params (including internal `verbosityLevel` param).\n * https://github.com/microsoft/TypeScript/blob/dd830711041b7b0cfd3da7937755996b1e1b1c7e/src/services/types.ts#L588\n */\n return (filePath, position, ...args) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const infos = [];\n for (const [generatePosition] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isHoverEnabled)) {\n const info = getQuickInfoAtPosition(targetScript.id, generatePosition, ...args);\n if (info) {\n const textSpan = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, info.textSpan, true, language_core_1.isHoverEnabled)?.[1];\n if (textSpan) {\n infos.push({\n ...info,\n textSpan: textSpan,\n });\n }\n }\n }\n if (infos.length === 1) {\n return infos[0];\n }\n else if (infos.length >= 2) {\n const combine = { ...infos[0] };\n combine.displayParts = combine.displayParts?.slice();\n combine.documentation = combine.documentation?.slice();\n combine.tags = combine.tags?.slice();\n const displayPartsStrs = new Set([displayPartsToString(infos[0].displayParts)]);\n const documentationStrs = new Set([displayPartsToString(infos[0].documentation)]);\n const tagsStrs = new Set();\n for (const tag of infos[0].tags ?? []) {\n tagsStrs.add(tag.name + '__volar__' + displayPartsToString(tag.text));\n }\n for (let i = 1; i < infos.length; i++) {\n const { displayParts, documentation, tags } = infos[i];\n if (displayParts?.length && !displayPartsStrs.has(displayPartsToString(displayParts))) {\n displayPartsStrs.add(displayPartsToString(displayParts));\n combine.displayParts ??= [];\n combine.displayParts.push({ ...displayParts[0], text: '\\n\\n' + displayParts[0].text });\n combine.displayParts.push(...displayParts.slice(1));\n }\n if (documentation?.length && !documentationStrs.has(displayPartsToString(documentation))) {\n documentationStrs.add(displayPartsToString(documentation));\n combine.documentation ??= [];\n combine.documentation.push({ ...documentation[0], text: '\\n\\n' + documentation[0].text });\n combine.documentation.push(...documentation.slice(1));\n }\n for (const tag of tags ?? []) {\n if (!tagsStrs.has(tag.name + '__volar__' + displayPartsToString(tag.text))) {\n tagsStrs.add(tag.name + '__volar__' + displayPartsToString(tag.text));\n combine.tags ??= [];\n combine.tags.push(tag);\n }\n }\n }\n return combine;\n }\n }\n else {\n return getQuickInfoAtPosition(fileName, position, ...args);\n }\n };\n}\nfunction getSignatureHelpItems(language, getSignatureHelpItems) {\n return (filePath, position, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isSignatureHelpEnabled);\n if (generatePosition !== undefined) {\n const result = getSignatureHelpItems(targetScript.id, generatePosition, options);\n if (result) {\n const applicableSpan = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, result.applicableSpan, true, language_core_1.isSignatureHelpEnabled)?.[1];\n if (applicableSpan) {\n return {\n ...result,\n applicableSpan,\n };\n }\n }\n }\n }\n else {\n return getSignatureHelpItems(fileName, position, options);\n }\n };\n}\nfunction getDocumentHighlights(language, getDocumentHighlights) {\n return (filePath, position, filesToSearch) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isHighlightEnabled, (fileName, position) => getDocumentHighlights(fileName, position, filesToSearch), function* (result) {\n for (const ref of result) {\n for (const reference of ref.highlightSpans) {\n yield [reference.fileName ?? ref.fileName, reference.textSpan.start];\n }\n }\n });\n const resolved = unresolved\n .flat()\n .map(highlights => {\n return {\n ...highlights,\n highlightSpans: highlights.highlightSpans\n .map(span => {\n const { textSpan } = (0, transform_1.transformSpan)(language, span.fileName ?? highlights.fileName, span.textSpan, false, language_core_1.isHighlightEnabled)\n ?? {};\n if (textSpan) {\n return {\n ...span,\n contextSpan: (0, transform_1.transformSpan)(language, span.fileName ?? highlights.fileName, span.contextSpan, false, language_core_1.isHighlightEnabled)?.textSpan,\n textSpan,\n };\n }\n })\n .filter(span => !!span),\n };\n });\n return resolved;\n };\n}\nfunction getApplicableRefactors(language, getApplicableRefactors) {\n return (filePath, positionOrRange, preferences, triggerReason, kind, includeInteractiveActions) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n if (typeof positionOrRange === 'number') {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, positionOrRange, language_core_1.isCodeActionsEnabled);\n if (generatePosition !== undefined) {\n return getApplicableRefactors(targetScript.id, generatePosition, preferences, triggerReason, kind, includeInteractiveActions);\n }\n }\n else {\n for (const [generatedStart, generatedEnd] of (0, transform_1.toGeneratedRanges)(language, serviceScript, sourceScript, positionOrRange.pos, positionOrRange.end, language_core_1.isCodeActionsEnabled)) {\n return getApplicableRefactors(targetScript.id, { pos: generatedStart, end: generatedEnd }, preferences, triggerReason, kind, includeInteractiveActions);\n }\n }\n return [];\n }\n else {\n return getApplicableRefactors(fileName, positionOrRange, preferences, triggerReason, kind, includeInteractiveActions);\n }\n };\n}\nfunction getEditsForRefactor(language, getEditsForRefactor) {\n return (filePath, formatOptions, positionOrRange, refactorName, actionName, preferences, interactiveRefactorArguments) => {\n let edits;\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n if (typeof positionOrRange === 'number') {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, positionOrRange, language_core_1.isCodeActionsEnabled);\n if (generatePosition !== undefined) {\n edits = getEditsForRefactor(targetScript.id, formatOptions, generatePosition, refactorName, actionName, preferences, interactiveRefactorArguments);\n }\n }\n else {\n for (const [generatedStart, generatedEnd] of (0, transform_1.toGeneratedRanges)(language, serviceScript, sourceScript, positionOrRange.pos, positionOrRange.end, language_core_1.isCodeActionsEnabled)) {\n edits = getEditsForRefactor(targetScript.id, formatOptions, { pos: generatedStart, end: generatedEnd }, refactorName, actionName, preferences, interactiveRefactorArguments);\n }\n }\n }\n else {\n edits = getEditsForRefactor(fileName, formatOptions, positionOrRange, refactorName, actionName, preferences, interactiveRefactorArguments);\n }\n if (edits) {\n edits.edits = (0, transform_1.transformFileTextChanges)(language, edits.edits, false, language_core_1.isCodeActionsEnabled);\n return edits;\n }\n };\n}\nfunction getCombinedCodeFix(language, getCombinedCodeFix) {\n return (...args) => {\n const codeActions = getCombinedCodeFix(...args);\n codeActions.changes = (0, transform_1.transformFileTextChanges)(language, codeActions.changes, false, language_core_1.isCodeActionsEnabled);\n return codeActions;\n };\n}\nfunction getRenameInfo(language, getRenameInfo) {\n return (filePath, position, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return {\n canRename: false,\n localizedErrorMessage: 'Cannot rename',\n };\n }\n if (serviceScript) {\n let failed;\n for (const [generateOffset] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isRenameEnabled)) {\n const info = getRenameInfo(targetScript.id, generateOffset, options);\n if (info.canRename) {\n const span = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, info.triggerSpan, false, language_core_1.isRenameEnabled)?.[1];\n if (span) {\n info.triggerSpan = span;\n return info;\n }\n }\n else {\n failed = info;\n }\n }\n if (failed) {\n return failed;\n }\n return {\n canRename: false,\n localizedErrorMessage: 'Failed to get rename locations',\n };\n }\n else {\n return getRenameInfo(fileName, position, options);\n }\n };\n}\nfunction getCodeFixesAtPosition(language, getCodeFixesAtPosition) {\n return (filePath, start, end, errorCodes, formatOptions, preferences) => {\n let fixes = [];\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generateRange = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, start, end, language_core_1.isCodeActionsEnabled);\n if (generateRange !== undefined) {\n fixes = getCodeFixesAtPosition(targetScript.id, generateRange[0], generateRange[1], errorCodes, formatOptions, preferences);\n }\n }\n else {\n fixes = getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences);\n }\n fixes = fixes.map(fix => {\n fix.changes = (0, transform_1.transformFileTextChanges)(language, fix.changes, false, language_core_1.isCodeActionsEnabled);\n return fix;\n });\n return fixes;\n };\n}\nfunction getEncodedSemanticClassifications(language, getEncodedSemanticClassifications) {\n return (filePath, span, format) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return {\n spans: [],\n endOfLineState: 0,\n };\n }\n if (serviceScript) {\n const map = language.maps.get(serviceScript.code, targetScript);\n const mapped = (0, language_core_1.findOverlapCodeRange)(span.start, span.start + span.length, map, language_core_1.isSemanticTokensEnabled);\n if (!mapped) {\n return {\n spans: [],\n endOfLineState: 0,\n };\n }\n const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);\n const start = mapped.start + mappingOffset;\n const end = mapped.end + mappingOffset;\n const result = getEncodedSemanticClassifications(targetScript.id, { start, length: end - start }, format);\n const spans = [];\n for (let i = 0; i < result.spans.length; i += 3) {\n for (const [_, sourceStart, sourceEnd] of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, result.spans[i], result.spans[i] + result.spans[i + 1], false, language_core_1.isSemanticTokensEnabled)) {\n spans.push(sourceStart, sourceEnd - sourceStart, result.spans[i + 2]);\n break;\n }\n }\n result.spans = spans;\n return result;\n }\n else {\n return getEncodedSemanticClassifications(fileName, span, format);\n }\n };\n}\nfunction getSyntacticDiagnostics(language, languageService, getSyntacticDiagnostics) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n return getSyntacticDiagnostics(targetScript?.id ?? fileName)\n .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))\n .filter(d => !!d)\n .filter(d => !serviceScript || language.scripts.get(d.file.fileName) === sourceScript);\n };\n}\nfunction getSemanticDiagnostics(language, languageService, getSemanticDiagnostics) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n return getSemanticDiagnostics(targetScript?.id ?? fileName)\n .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))\n .filter(d => !!d)\n .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);\n };\n}\nfunction getSuggestionDiagnostics(language, languageService, getSuggestionDiagnostics) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n return getSuggestionDiagnostics(targetScript?.id ?? fileName)\n .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))\n .filter(d => !!d)\n .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);\n };\n}\nfunction getDefinitionAndBoundSpan(language, getDefinitionAndBoundSpan) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isDefinitionEnabled, (fileName, position) => getDefinitionAndBoundSpan(fileName, position), function* (result) {\n for (const ref of result.definitions ?? []) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const textSpan = unresolved\n .map(s => (0, transform_1.transformSpan)(language, fileName, s.textSpan, true, language_core_1.isDefinitionEnabled)?.textSpan)\n .filter(s => !!s)[0];\n if (!textSpan) {\n return;\n }\n const definitions = unresolved\n .map(s => s.definitions\n ?.map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isDefinitionEnabled, s.fileName !== fileName))\n .filter(s => !!s)\n ?? [])\n .flat();\n return {\n textSpan,\n definitions: (0, dedupe_1.dedupeDocumentSpans)(definitions),\n };\n };\n}\nfunction findReferences(language, findReferences) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isReferencesEnabled, (fileName, position) => findReferences(fileName, position), function* (result) {\n for (const ref of result) {\n for (const reference of ref.references) {\n yield [reference.fileName, reference.textSpan.start];\n }\n }\n });\n const resolved = unresolved\n .flat()\n .map(symbol => {\n const definition = (0, transform_1.transformDocumentSpan)(language, symbol.definition, true, language_core_1.isDefinitionEnabled, true);\n return {\n definition,\n references: symbol.references\n .map(r => (0, transform_1.transformDocumentSpan)(language, r, true, language_core_1.isReferencesEnabled))\n .filter(r => !!r),\n };\n });\n return resolved;\n };\n}\nfunction getDefinitionAtPosition(language, getDefinitionAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isDefinitionEnabled, (fileName, position) => getDefinitionAtPosition(fileName, position), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isDefinitionEnabled, s.fileName !== fileName))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getTypeDefinitionAtPosition(language, getTypeDefinitionAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isTypeDefinitionEnabled, (fileName, position) => getTypeDefinitionAtPosition(fileName, position), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isTypeDefinitionEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getImplementationAtPosition(language, getImplementationAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isImplementationEnabled, (fileName, position) => getImplementationAtPosition(fileName, position), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isImplementationEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction findRenameLocations(language, findRenameLocations) {\n return (filePath, position, findInStrings, findInComments, preferences) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isRenameEnabled, (fileName, position) => findRenameLocations(fileName, position, findInStrings, findInComments, preferences), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, false, language_core_1.isRenameEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getReferencesAtPosition(language, getReferencesAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isReferencesEnabled, (fileName, position) => getReferencesAtPosition(fileName, position), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isReferencesEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getCompletionsAtPosition(language, getCompletionsAtPosition) {\n return (filePath, position, options, formattingSettings) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n let mainResult;\n const additionalResults = [];\n for (const [generatedOffset, mapping] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isCompletionEnabled)) {\n const isAdditional = typeof mapping.data.completion === 'object' && mapping.data.completion.isAdditional;\n if (!isAdditional && mainResult?.entries.length) {\n continue;\n }\n const result = getCompletionsAtPosition(targetScript.id, generatedOffset, options, formattingSettings);\n if (!result) {\n continue;\n }\n if (typeof mapping.data.completion === 'object' && mapping.data.completion.onlyImport) {\n result.entries = result.entries.filter(entry => !!entry.sourceDisplay);\n }\n for (const entry of result.entries) {\n entry.replacementSpan = entry.replacementSpan\n && (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, entry.replacementSpan, false, language_core_1.isCompletionEnabled)?.[1];\n }\n result.optionalReplacementSpan = result.optionalReplacementSpan\n && (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, result.optionalReplacementSpan, false, language_core_1.isCompletionEnabled)?.[1];\n if (isAdditional) {\n additionalResults.push(result);\n }\n else {\n mainResult = result;\n }\n }\n const results = additionalResults;\n if (mainResult) {\n results.unshift(mainResult);\n }\n if (results.length) {\n return {\n ...results[0],\n entries: results\n .map(additionalResult => additionalResult.entries)\n .flat(),\n };\n }\n }\n else {\n return getCompletionsAtPosition(fileName, position, options, formattingSettings);\n }\n };\n}\nfunction getCompletionEntryDetails(language, getCompletionEntryDetails) {\n return (filePath, position, entryName, formatOptions, source, preferences, data) => {\n let details;\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCompletionEnabled);\n if (generatePosition !== undefined) {\n details = getCompletionEntryDetails(targetScript.id, generatePosition, entryName, formatOptions, source, preferences, data);\n }\n }\n else {\n return getCompletionEntryDetails(fileName, position, entryName, formatOptions, source, preferences, data);\n }\n if (details?.codeActions) {\n for (const codeAction of details.codeActions) {\n codeAction.changes = (0, transform_1.transformFileTextChanges)(language, codeAction.changes, false, language_core_1.isCompletionEnabled);\n }\n }\n return details;\n };\n}\nfunction provideInlayHints(language, provideInlayHints) {\n return (filePath, span, preferences) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n const mapped = (0, language_core_1.findOverlapCodeRange)(span.start, span.start + span.length, map, language_core_1.isSemanticTokensEnabled);\n if (!mapped) {\n return [];\n }\n const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);\n const start = mapped.start + mappingOffset;\n const end = mapped.end + mappingOffset;\n const result = provideInlayHints(targetScript.id, { start, length: end - start }, preferences);\n const hints = [];\n for (const hint of result) {\n const sourcePosition = (0, transform_1.toSourceOffset)(sourceScript, language, serviceScript, hint.position, language_core_1.isInlayHintsEnabled);\n if (sourcePosition !== undefined) {\n hints.push({\n ...hint,\n position: sourcePosition[1],\n });\n }\n }\n return hints;\n }\n else {\n return provideInlayHints(fileName, span, preferences);\n }\n };\n}\nfunction getFileReferences(language, getFileReferences) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = getFileReferences(fileName);\n const resolved = unresolved\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isReferencesEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getNavigateToItems(language, getNavigateToItems) {\n return (...args) => {\n const unresolved = getNavigateToItems(...args);\n const resolved = unresolved\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isReferencesEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction linkedCodeFeatureWorker(language, fileName, position, filter, worker, getLinkedCodes) {\n const results = [];\n const processedFilePositions = new Set();\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (serviceScript) {\n for (const [generatedOffset] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, filter)) {\n process(targetScript.id, generatedOffset);\n }\n }\n else {\n process(fileName, position);\n }\n return results;\n function process(fileName, position) {\n if (processedFilePositions.has(fileName + ':' + position)) {\n return;\n }\n processedFilePositions.add(fileName + ':' + position);\n const result = worker(fileName, position);\n if (!result) {\n return;\n }\n results.push(result);\n for (const ref of getLinkedCodes(result)) {\n processedFilePositions.add(ref[0] + ':' + ref[1]);\n const [serviceScript] = (0, utils_1.getServiceScript)(language, ref[0]);\n if (!serviceScript) {\n continue;\n }\n const linkedCodeMap = language.linkedCodeMaps.get(serviceScript.code);\n if (!linkedCodeMap) {\n continue;\n }\n const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);\n for (const linkedCodeOffset of linkedCodeMap.getLinkedOffsets(ref[1] - mappingOffset)) {\n process(ref[0], linkedCodeOffset + mappingOffset);\n }\n }\n }\n}\nfunction displayPartsToString(displayParts) {\n if (displayParts) {\n return displayParts.map(displayPart => displayPart.text).join('');\n }\n return '';\n}\n//# sourceMappingURL=proxyLanguageService.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveFileLanguageId = resolveFileLanguageId;\nfunction resolveFileLanguageId(path) {\n const ext = path.split('.').pop();\n switch (ext) {\n case 'js':\n return 'javascript';\n case 'cjs':\n return 'javascript';\n case 'mjs':\n return 'javascript';\n case 'ts':\n return 'typescript';\n case 'cts':\n return 'typescript';\n case 'mts':\n return 'typescript';\n case 'jsx':\n return 'javascriptreact';\n case 'tsx':\n return 'typescriptreact';\n case 'json':\n return 'json';\n }\n}\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createResolveModuleName = createResolveModuleName;\nfunction createResolveModuleName(ts, getFileSize, host, languagePlugins, getSourceScript) {\n const toSourceFileInfo = new Map();\n const moduleResolutionHost = {\n readFile: host.readFile.bind(host),\n directoryExists: host.directoryExists?.bind(host),\n realpath: host.realpath?.bind(host),\n getCurrentDirectory: host.getCurrentDirectory?.bind(host),\n getDirectories: host.getDirectories?.bind(host),\n useCaseSensitiveFileNames: typeof host.useCaseSensitiveFileNames === 'function'\n ? host.useCaseSensitiveFileNames.bind(host)\n : host.useCaseSensitiveFileNames,\n fileExists(fileName) {\n const result = host.fileExists(fileName);\n for (const { typescript } of languagePlugins) {\n if (!typescript) {\n continue;\n }\n if (!result) {\n for (const { extension } of typescript.extraFileExtensions) {\n if (!fileName.endsWith(`.d.${extension}.ts`)) {\n continue;\n }\n const sourceFileName = fileName.slice(0, -`.d.${extension}.ts`.length) + `.${extension}`;\n if (fileExists(sourceFileName)) {\n const sourceScript = getSourceScript(sourceFileName);\n if (sourceScript?.generated) {\n const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);\n if (serviceScript) {\n const dtsPath = sourceFileName + '.d.ts';\n if ((serviceScript.extension === '.js' || serviceScript.extension === '.jsx') && fileExists(dtsPath)) {\n toSourceFileInfo.set(fileName, {\n sourceFileName: dtsPath,\n extension: '.ts',\n });\n }\n else {\n toSourceFileInfo.set(fileName, {\n sourceFileName,\n extension: serviceScript.extension,\n });\n }\n return true;\n }\n }\n }\n }\n }\n if (typescript.resolveHiddenExtensions && fileName.endsWith(`.d.ts`)) {\n for (const { extension } of typescript.extraFileExtensions) {\n const sourceFileName = fileName.slice(0, -`.d.ts`.length) + `.${extension}`;\n if (fileExists(sourceFileName)) {\n const sourceScript = getSourceScript(sourceFileName);\n if (sourceScript?.generated) {\n const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);\n if (serviceScript) {\n toSourceFileInfo.set(fileName, {\n sourceFileName,\n extension: serviceScript.extension,\n });\n return true;\n }\n }\n }\n }\n }\n }\n return result;\n },\n };\n return (moduleName, containingFile, compilerOptions, cache, redirectedReference, resolutionMode) => {\n const result = ts.resolveModuleName(moduleName, containingFile, compilerOptions, moduleResolutionHost, cache, redirectedReference, resolutionMode);\n if (result.resolvedModule) {\n const sourceFileInfo = toSourceFileInfo.get(result.resolvedModule.resolvedFileName);\n if (sourceFileInfo) {\n result.resolvedModule.resolvedFileName = sourceFileInfo.sourceFileName;\n result.resolvedModule.extension = sourceFileInfo.extension;\n }\n }\n toSourceFileInfo.clear();\n return result;\n };\n // fix https://github.com/vuejs/language-tools/issues/3332\n function fileExists(fileName) {\n if (host.fileExists(fileName)) {\n const fileSize = getFileSize?.(fileName) ?? host.readFile(fileName)?.length ?? 0;\n return fileSize < 4 * 1024 * 1024;\n }\n return false;\n }\n}\n//# sourceMappingURL=resolveModuleName.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decorateLanguageServiceHost = decorateLanguageServiceHost;\nexports.searchExternalFiles = searchExternalFiles;\nconst resolveModuleName_1 = require(\"../resolveModuleName\");\nconst utils_1 = require(\"./utils\");\nfunction decorateLanguageServiceHost(ts, language, languageServiceHost) {\n const pluginExtensions = language.plugins\n .map(plugin => plugin.typescript?.extraFileExtensions.map(ext => '.' + ext.extension) ?? [])\n .flat();\n const scripts = new Map();\n const crashFileNames = new Set();\n const readDirectory = languageServiceHost.readDirectory?.bind(languageServiceHost);\n const resolveModuleNameLiterals = languageServiceHost.resolveModuleNameLiterals?.bind(languageServiceHost);\n const resolveModuleNames = languageServiceHost.resolveModuleNames?.bind(languageServiceHost);\n const getScriptSnapshot = languageServiceHost.getScriptSnapshot.bind(languageServiceHost);\n const getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost);\n // path completion\n if (readDirectory) {\n languageServiceHost.readDirectory = (path, extensions, exclude, include, depth) => {\n if (extensions) {\n for (const ext of pluginExtensions) {\n if (!extensions.includes(ext)) {\n extensions = [...extensions, ext];\n }\n }\n }\n return readDirectory(path, extensions, exclude, include, depth);\n };\n }\n if (pluginExtensions.length) {\n const resolveModuleName = (0, resolveModuleName_1.createResolveModuleName)(ts, ts.sys.getFileSize, languageServiceHost, language.plugins, fileName => language.scripts.get(fileName));\n const moduleResolutionCache = languageServiceHost.getModuleResolutionCache?.();\n if (resolveModuleNameLiterals) {\n languageServiceHost.resolveModuleNameLiterals = (moduleLiterals, containingFile, redirectedReference, options, containingSourceFile, ...rest) => {\n const disposeFixup = (0, utils_1.fixupImpliedNodeFormatForFile)(ts, pluginExtensions, containingSourceFile, moduleResolutionCache?.getPackageJsonInfoCache(), languageServiceHost, options);\n try {\n if (moduleLiterals.every(name => !pluginExtensions.some(ext => name.text.endsWith(ext)))) {\n return resolveModuleNameLiterals(moduleLiterals, containingFile, redirectedReference, options, containingSourceFile, ...rest);\n }\n return moduleLiterals.map(moduleLiteral => {\n const mode = ts.getModeForUsageLocation(containingSourceFile, moduleLiteral, options);\n return resolveModuleName(moduleLiteral.text, containingFile, options, moduleResolutionCache, redirectedReference, mode);\n });\n }\n finally {\n disposeFixup?.();\n }\n };\n }\n if (resolveModuleNames) {\n languageServiceHost.resolveModuleNames = (moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile) => {\n if (moduleNames.every(name => !pluginExtensions.some(ext => name.endsWith(ext)))) {\n return resolveModuleNames(moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile);\n }\n return moduleNames.map(moduleName => {\n return resolveModuleName(moduleName, containingFile, options, moduleResolutionCache, redirectedReference)\n .resolvedModule;\n });\n };\n }\n }\n languageServiceHost.getScriptSnapshot = fileName => {\n const virtualScript = updateVirtualScript(fileName, true);\n if (virtualScript) {\n return virtualScript.snapshot;\n }\n return getScriptSnapshot(fileName);\n };\n if (getScriptKind) {\n languageServiceHost.getScriptKind = fileName => {\n const virtualScript = updateVirtualScript(fileName, false);\n if (virtualScript) {\n return virtualScript.scriptKind;\n }\n return getScriptKind(fileName);\n };\n }\n function updateVirtualScript(fileName, shouldRegister) {\n if (crashFileNames.has(fileName)) {\n return;\n }\n let version;\n try {\n version = languageServiceHost.getScriptVersion(fileName);\n }\n catch {\n // fix https://github.com/vuejs/language-tools/issues/4278\n crashFileNames.add(fileName);\n }\n if (version === undefined) {\n // somehow getScriptVersion returns undefined\n return;\n }\n let script = scripts.get(fileName);\n if (!script || script[0] !== version) {\n script = [version];\n const sourceScript = language.scripts.get(fileName, undefined, shouldRegister);\n if (sourceScript?.generated) {\n const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);\n if (serviceScript) {\n if (serviceScript.preventLeadingOffset) {\n script[1] = {\n extension: serviceScript.extension,\n scriptKind: serviceScript.scriptKind,\n snapshot: serviceScript.code.snapshot,\n };\n }\n else {\n const sourceContents = sourceScript.snapshot.getText(0, sourceScript.snapshot.getLength());\n const virtualContents = sourceContents.split('\\n').map(line => ' '.repeat(line.length)).join('\\n')\n + serviceScript.code.snapshot.getText(0, serviceScript.code.snapshot.getLength());\n script[1] = {\n extension: serviceScript.extension,\n scriptKind: serviceScript.scriptKind,\n snapshot: ts.ScriptSnapshot.fromString(virtualContents),\n };\n }\n }\n if (sourceScript.generated.languagePlugin.typescript?.getExtraServiceScripts) {\n console.warn('getExtraServiceScripts() is not available in TS plugin.');\n }\n }\n scripts.set(fileName, script);\n }\n return script[1];\n }\n}\nfunction searchExternalFiles(ts, project, exts) {\n if (project.projectKind !== ts.server.ProjectKind.Configured) {\n return [];\n }\n const configFile = project.getProjectName();\n const config = ts.readJsonConfigFile(configFile, project.readFile.bind(project));\n const parseHost = {\n useCaseSensitiveFileNames: project.useCaseSensitiveFileNames(),\n fileExists: project.fileExists.bind(project),\n readFile: project.readFile.bind(project),\n readDirectory: (...args) => {\n args[1] = exts;\n return project.readDirectory(...args);\n },\n };\n const parsed = ts.parseJsonSourceFileConfigFileContent(config, parseHost, project.getCurrentDirectory());\n return parsed.fileNames;\n}\n//# sourceMappingURL=decorateLanguageServiceHost.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeGetExternalFiles = exports.decoratedLanguageServiceHosts = exports.decoratedLanguageServices = exports.projectExternalFileExtensions = exports.externalFiles = void 0;\nexports.makeGetScriptInfoWithLargeFileFailsafe = makeGetScriptInfoWithLargeFileFailsafe;\nexports.createLanguageCommon = createLanguageCommon;\nexports.isHasAlreadyDecoratedLanguageService = isHasAlreadyDecoratedLanguageService;\nconst language_core_1 = require(\"@volar/language-core\");\nconst common_1 = require(\"../common\");\nconst decorateLanguageServiceHost_1 = require(\"../node/decorateLanguageServiceHost\");\nexports.externalFiles = new WeakMap();\nexports.projectExternalFileExtensions = new WeakMap();\nexports.decoratedLanguageServices = new WeakSet();\nexports.decoratedLanguageServiceHosts = new WeakSet();\n/**\n * Wrap `getScriptInfo` to handle large files that may crash the language service.\n *\n * Introduced to fix issues with converting `relatedInformation` (in Diagnostics)\n * when working with large files.\n *\n * https://github.com/volarjs/volar.js/commit/e242709a91e9d2919dc4fa59278dd266fd11e7a3\n */\nfunction makeGetScriptInfoWithLargeFileFailsafe(info) {\n return (fileName) => {\n // getSnapshot could be crashed if the file is too large\n try {\n return info.project.getScriptInfo(fileName);\n }\n catch { }\n };\n}\nfunction createLanguageCommon(createPluginResult, ts, info, initializeProxiedLanguageService) {\n const getScriptSnapshot = info.languageServiceHost.getScriptSnapshot.bind(info.languageServiceHost);\n const getScriptInfo = makeGetScriptInfoWithLargeFileFailsafe(info);\n const language = (0, language_core_1.createLanguage)([\n ...createPluginResult.languagePlugins,\n { getLanguageId: common_1.resolveFileLanguageId },\n ], new language_core_1.FileMap(ts.sys.useCaseSensitiveFileNames), (fileName, _, shouldRegister) => {\n let snapshot;\n if (shouldRegister) {\n // We need to trigger registration of the script file with the project, see #250\n snapshot = getScriptSnapshot(fileName);\n }\n else {\n snapshot = getScriptInfo(fileName)?.getSnapshot();\n if (!snapshot) {\n // trigger projectService.getOrCreateScriptInfoNotOpenedByClient\n info.project.getScriptVersion(fileName);\n snapshot = getScriptInfo(fileName)?.getSnapshot();\n }\n }\n if (snapshot) {\n language.scripts.set(fileName, snapshot);\n }\n else {\n language.scripts.delete(fileName);\n }\n }, targetFileName => {\n // https://github.com/JetBrains/intellij-plugins/blob/6435723ad88fa296b41144162ebe3b8513f4949b/Angular/src-js/angular-service/src/ngCommands.ts#L88\n info.session.change({\n file: targetFileName,\n line: 1,\n offset: 1,\n endLine: 1,\n endOffset: 1,\n insertString: '',\n });\n });\n initializeProxiedLanguageService(language);\n (0, decorateLanguageServiceHost_1.decorateLanguageServiceHost)(ts, language, info.languageServiceHost);\n createPluginResult.setup?.(language);\n}\nconst makeGetExternalFiles = (ts) => (project, updateLevel = 0) => {\n if (updateLevel >= 1\n || !exports.externalFiles.has(project)) {\n const oldFiles = exports.externalFiles.get(project);\n const extensions = exports.projectExternalFileExtensions.get(project);\n const newFiles = extensions?.length ? (0, decorateLanguageServiceHost_1.searchExternalFiles)(ts, project, extensions) : [];\n exports.externalFiles.set(project, newFiles);\n if (oldFiles && !arrayItemsEqual(oldFiles, newFiles)) {\n project.refreshDiagnostics();\n }\n }\n return exports.externalFiles.get(project);\n};\nexports.makeGetExternalFiles = makeGetExternalFiles;\nfunction arrayItemsEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n const set = new Set(a);\n for (const file of b) {\n if (!set.has(file)) {\n return false;\n }\n }\n return true;\n}\nfunction isHasAlreadyDecoratedLanguageService(info) {\n if (exports.decoratedLanguageServices.has(info.languageService)\n || exports.decoratedLanguageServiceHosts.has(info.languageServiceHost)) {\n return true;\n }\n else {\n exports.decoratedLanguageServices.add(info.languageService);\n exports.decoratedLanguageServiceHosts.add(info.languageServiceHost);\n return false;\n }\n}\n//# sourceMappingURL=languageServicePluginCommon.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLanguageServicePlugin = createLanguageServicePlugin;\nconst proxyLanguageService_1 = require(\"../node/proxyLanguageService\");\nconst languageServicePluginCommon_1 = require(\"./languageServicePluginCommon\");\n/**\n * Creates and returns a TS Service Plugin using Volar primitives.\n *\n * See https://github.com/microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin for\n * more information.\n */\nfunction createLanguageServicePlugin(createPluginCallback) {\n return modules => {\n const { typescript: ts } = modules;\n const pluginModule = {\n create(info) {\n if (!(0, languageServicePluginCommon_1.isHasAlreadyDecoratedLanguageService)(info)) {\n const createPluginResult = createPluginCallback(ts, info);\n const extensions = createPluginResult.languagePlugins\n .map(plugin => plugin.typescript?.extraFileExtensions.map(ext => '.' + ext.extension) ?? [])\n .flat();\n // TODO: this logic does not seem to appear in the async variant\n // (createAsyncLanguageServicePlugin)... bug?\n languageServicePluginCommon_1.projectExternalFileExtensions.set(info.project, extensions);\n const { proxy, initialize } = (0, proxyLanguageService_1.createProxyLanguageService)(info.languageService);\n info.languageService = proxy;\n (0, languageServicePluginCommon_1.createLanguageCommon)(createPluginResult, ts, info, initialize);\n }\n return info.languageService;\n },\n getExternalFiles: (0, languageServicePluginCommon_1.makeGetExternalFiles)(ts),\n };\n return pluginModule;\n };\n}\n//# sourceMappingURL=createLanguageServicePlugin.js.map","import { createLanguageServicePlugin } from '@volar/typescript/lib/quickstart/createLanguageServicePlugin.js';\nimport { getRippleLanguagePlugin } from './language.js';\n\n// This TypeScript plugin is loaded by TypeScript's tsserver when configured in tsconfig.json.\n// Note: When using the Ripple VS Code extension, the language server handles everything,\n// so this plugin is redundant but harmless (both instances work independently).\n// This plugin is useful for non-VS Code editors or when not using the language server.\nexport default createLanguageServicePlugin(() => ({\n\tlanguagePlugins: [getRippleLanguagePlugin()],\n}));\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["getRippleLanguagePlugin"],"sources":["../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/dedupe.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/utils.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/transform.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/proxyLanguageService.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/common.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/resolveModuleName.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/node/decorateLanguageServiceHost.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/quickstart/languageServicePluginCommon.js","../../../node_modules/.pnpm/@volar+typescript@2.4.28/node_modules/@volar/typescript/lib/quickstart/createLanguageServicePlugin.js","../src/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dedupeDocumentSpans = dedupeDocumentSpans;\nfunction dedupeDocumentSpans(items) {\n return dedupe(items, item => [\n item.fileName,\n item.textSpan.start,\n item.textSpan.length,\n ].join(':'));\n}\nfunction dedupe(items, getKey) {\n const map = new Map();\n for (const item of items.reverse()) {\n map.set(getKey(item), item);\n }\n return [...map.values()];\n}\n//# sourceMappingURL=dedupe.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getServiceScript = getServiceScript;\nexports.fixupImpliedNodeFormatForFile = fixupImpliedNodeFormatForFile;\nfunction getServiceScript(language, fileName) {\n const sourceScript = language.scripts.get(fileName);\n if (sourceScript?.targetIds.size) {\n for (const targetId of sourceScript.targetIds) {\n const targetScript = language.scripts.get(targetId);\n if (targetScript?.generated) {\n const serviceScript = targetScript.generated.languagePlugin.typescript?.getServiceScript(targetScript.generated.root);\n if (serviceScript) {\n return [serviceScript, targetScript, sourceScript];\n }\n }\n }\n }\n if (sourceScript?.associatedOnly) {\n return [undefined, sourceScript, sourceScript];\n }\n if (sourceScript?.generated) {\n const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);\n if (serviceScript) {\n return [serviceScript, sourceScript, sourceScript];\n }\n }\n return [undefined, undefined, undefined];\n}\nfunction fixupImpliedNodeFormatForFile(ts, pluginExtensions, sourceFile, packageJsonInfoCache, host, options) {\n if (sourceFile.impliedNodeFormat !== undefined || !pluginExtensions.some(ext => sourceFile.fileName.endsWith(ext))) {\n return;\n }\n // https://github.com/microsoft/TypeScript/blob/669c25c091ad4d32298d0f33b0e4e681d46de3ea/src/compiler/program.ts#L1354\n const validExts = ['.d.ts', '.ts', '.tsx', '.js', '.jsx'];\n if (validExts.some(ext => sourceFile.fileName.endsWith(ext))) {\n return;\n }\n const asTs = sourceFile.fileName + '.ts';\n // Use getImpliedNodeFormatForFileWorker instead of getImpliedNodeFormatForFile for runTsc() compatibility\n const impliedNodeFormat = ts.getImpliedNodeFormatForFileWorker?.(asTs, packageJsonInfoCache, host, options)?.impliedNodeFormat;\n if (impliedNodeFormat === undefined) {\n return;\n }\n sourceFile.impliedNodeFormat = impliedNodeFormat;\n return () => sourceFile.impliedNodeFormat = undefined;\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformCallHierarchyItem = transformCallHierarchyItem;\nexports.transformDiagnostic = transformDiagnostic;\nexports.fillSourceFileText = fillSourceFileText;\nexports.transformFileTextChanges = transformFileTextChanges;\nexports.transformDocumentSpan = transformDocumentSpan;\nexports.transformSpan = transformSpan;\nexports.transformTextChange = transformTextChange;\nexports.transformTextSpan = transformTextSpan;\nexports.toSourceOffset = toSourceOffset;\nexports.toSourceRanges = toSourceRanges;\nexports.toSourceOffsets = toSourceOffsets;\nexports.toGeneratedRange = toGeneratedRange;\nexports.toGeneratedRanges = toGeneratedRanges;\nexports.toGeneratedOffset = toGeneratedOffset;\nexports.toGeneratedOffsets = toGeneratedOffsets;\nexports.getMappingOffset = getMappingOffset;\nconst language_core_1 = require(\"@volar/language-core\");\nconst utils_1 = require(\"./utils\");\nconst transformedDiagnostics = new WeakMap();\nconst transformedSourceFile = new WeakSet();\n/**\n * This file contains a number of facilities for transforming `ts.Diagnostic`s returned\n * from the base TypeScript LanguageService, which reference locations in generated\n * TS code (e.g. the TypeScript codegen'd from the script portion of a .vue file) into locations\n * in the script portion of the .vue file.\n */\nfunction transformCallHierarchyItem(language, item, fallbackToAnyMatch, filter) {\n const span = transformSpan(language, item.file, item.span, fallbackToAnyMatch, filter);\n const selectionSpan = transformSpan(language, item.file, item.selectionSpan, fallbackToAnyMatch, filter);\n return {\n ...item,\n file: span?.fileName ?? item.file,\n span: span?.textSpan ?? { start: 0, length: 0 },\n selectionSpan: selectionSpan?.textSpan ?? { start: 0, length: 0 },\n };\n}\nfunction transformDiagnostic(language, diagnostic, program, isTsc) {\n if (!transformedDiagnostics.has(diagnostic)) {\n transformedDiagnostics.set(diagnostic, undefined);\n const { relatedInformation } = diagnostic;\n if (relatedInformation) {\n diagnostic.relatedInformation = relatedInformation\n .map(d => transformDiagnostic(language, d, program, isTsc))\n .filter(d => !!d);\n }\n if (diagnostic.file !== undefined\n && diagnostic.start !== undefined\n && diagnostic.length !== undefined) {\n const [serviceScript] = (0, utils_1.getServiceScript)(language, diagnostic.file.fileName);\n if (serviceScript) {\n const [sourceSpanFileName, sourceSpan] = transformTextSpan(undefined, language, serviceScript, {\n start: diagnostic.start,\n length: diagnostic.length,\n }, true, data => (0, language_core_1.shouldReportDiagnostics)(data, String(diagnostic.source), String(diagnostic.code))) ?? [];\n const actualDiagnosticFile = sourceSpanFileName\n ? diagnostic.file.fileName === sourceSpanFileName\n ? diagnostic.file\n : program?.getSourceFile(sourceSpanFileName)\n : undefined;\n if (sourceSpan && actualDiagnosticFile) {\n if (isTsc) {\n fillSourceFileText(language, diagnostic.file);\n }\n transformedDiagnostics.set(diagnostic, {\n ...diagnostic,\n file: actualDiagnosticFile,\n start: sourceSpan.start,\n length: sourceSpan.length,\n });\n }\n }\n else {\n transformedDiagnostics.set(diagnostic, diagnostic);\n }\n }\n else {\n transformedDiagnostics.set(diagnostic, diagnostic);\n }\n }\n return transformedDiagnostics.get(diagnostic);\n}\n// fix https://github.com/vuejs/language-tools/issues/4099 without `incremental`\nfunction fillSourceFileText(language, sourceFile) {\n if (transformedSourceFile.has(sourceFile)) {\n return;\n }\n transformedSourceFile.add(sourceFile);\n const [serviceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);\n if (serviceScript && !serviceScript.preventLeadingOffset) {\n const sourceScript = language.scripts.fromVirtualCode(serviceScript.code);\n sourceFile.text = sourceScript.snapshot.getText(0, sourceScript.snapshot.getLength())\n + sourceFile.text.substring(sourceScript.snapshot.getLength());\n }\n}\nfunction transformFileTextChanges(language, changes, fallbackToAnyMatch, filter) {\n const changesPerFile = {};\n const newFiles = new Set();\n for (const fileChanges of changes) {\n const [_, source] = (0, utils_1.getServiceScript)(language, fileChanges.fileName);\n if (source) {\n fileChanges.textChanges.forEach(c => {\n const { fileName, textSpan } = transformSpan(language, fileChanges.fileName, c.span, fallbackToAnyMatch, filter)\n ?? {};\n if (fileName && textSpan) {\n (changesPerFile[fileName] ?? (changesPerFile[fileName] = [])).push({ ...c, span: textSpan });\n }\n });\n }\n else {\n const list = changesPerFile[fileChanges.fileName] ?? (changesPerFile[fileChanges.fileName] = []);\n fileChanges.textChanges.forEach(c => {\n list.push(c);\n });\n if (fileChanges.isNewFile) {\n newFiles.add(fileChanges.fileName);\n }\n }\n }\n const result = [];\n for (const fileName in changesPerFile) {\n result.push({\n fileName,\n isNewFile: newFiles.has(fileName),\n textChanges: changesPerFile[fileName],\n });\n }\n return result;\n}\nfunction transformDocumentSpan(language, documentSpan, fallbackToAnyMatch, filter, shouldFallback) {\n let textSpan = transformSpan(language, documentSpan.fileName, documentSpan.textSpan, fallbackToAnyMatch, filter);\n if (!textSpan && shouldFallback) {\n textSpan = {\n fileName: documentSpan.fileName,\n textSpan: { start: 0, length: 0 },\n };\n }\n if (!textSpan) {\n return;\n }\n const contextSpan = transformSpan(language, documentSpan.fileName, documentSpan.contextSpan, fallbackToAnyMatch, filter);\n const originalTextSpan = transformSpan(language, documentSpan.originalFileName, documentSpan.originalTextSpan, fallbackToAnyMatch, filter);\n const originalContextSpan = transformSpan(language, documentSpan.originalFileName, documentSpan.originalContextSpan, fallbackToAnyMatch, filter);\n return {\n ...documentSpan,\n fileName: textSpan.fileName,\n textSpan: textSpan.textSpan,\n contextSpan: contextSpan?.textSpan,\n originalFileName: originalTextSpan?.fileName,\n originalTextSpan: originalTextSpan?.textSpan,\n originalContextSpan: originalContextSpan?.textSpan,\n };\n}\nfunction transformSpan(language, fileName, textSpan, fallbackToAnyMatch, filter) {\n if (!fileName || !textSpan) {\n return;\n }\n const [serviceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (serviceScript) {\n const [sourceSpanFileName, sourceSpan] = transformTextSpan(undefined, language, serviceScript, textSpan, fallbackToAnyMatch, filter) ?? [];\n if (sourceSpan && sourceSpanFileName) {\n return {\n fileName: sourceSpanFileName,\n textSpan: sourceSpan,\n };\n }\n }\n else {\n return {\n fileName,\n textSpan,\n };\n }\n}\nfunction transformTextChange(sourceScript, language, serviceScript, textChange, fallbackToAnyMatch, filter) {\n const [sourceSpanFileName, sourceSpan] = transformTextSpan(sourceScript, language, serviceScript, textChange.span, fallbackToAnyMatch, filter) ?? [];\n if (sourceSpan && sourceSpanFileName) {\n return [sourceSpanFileName, {\n newText: textChange.newText,\n span: sourceSpan,\n }];\n }\n return undefined;\n}\nfunction transformTextSpan(sourceScript, language, serviceScript, textSpan, fallbackToAnyMatch, filter) {\n const start = textSpan.start;\n const end = textSpan.start + textSpan.length;\n for (const [fileName, sourceStart, sourceEnd] of toSourceRanges(sourceScript, language, serviceScript, start, end, fallbackToAnyMatch, filter)) {\n return [fileName, {\n start: sourceStart,\n length: sourceEnd - sourceStart,\n }];\n }\n}\nfunction toSourceOffset(sourceScript, language, serviceScript, position, filter) {\n for (const source of toSourceOffsets(sourceScript, language, serviceScript, position, filter)) {\n return source;\n }\n}\nfunction* toSourceRanges(sourceScript, language, serviceScript, start, end, fallbackToAnyMatch, filter) {\n if (sourceScript) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n for (const [sourceStart, sourceEnd] of map.toSourceRange(start - getMappingOffset(language, serviceScript), end - getMappingOffset(language, serviceScript), fallbackToAnyMatch, filter)) {\n yield [sourceScript.id, sourceStart, sourceEnd];\n }\n }\n else {\n for (const [sourceScript, map] of language.maps.forEach(serviceScript.code)) {\n for (const [sourceStart, sourceEnd] of map.toSourceRange(start - getMappingOffset(language, serviceScript), end - getMappingOffset(language, serviceScript), fallbackToAnyMatch, filter)) {\n yield [sourceScript.id, sourceStart, sourceEnd];\n }\n }\n }\n}\nfunction* toSourceOffsets(sourceScript, language, serviceScript, position, filter) {\n if (sourceScript) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n for (const [sourceOffset, mapping] of map.toSourceLocation(position - getMappingOffset(language, serviceScript))) {\n if (filter(mapping.data)) {\n yield [sourceScript.id, sourceOffset];\n }\n }\n }\n else {\n for (const [sourceScript, map] of language.maps.forEach(serviceScript.code)) {\n for (const [sourceOffset, mapping] of map.toSourceLocation(position - getMappingOffset(language, serviceScript))) {\n if (filter(mapping.data)) {\n yield [sourceScript.id, sourceOffset];\n }\n }\n }\n }\n}\nfunction toGeneratedRange(language, serviceScript, sourceScript, start, end, filter) {\n for (const result of toGeneratedRanges(language, serviceScript, sourceScript, start, end, filter)) {\n return result;\n }\n}\nfunction* toGeneratedRanges(language, serviceScript, sourceScript, start, end, filter) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n for (const [generateStart, generateEnd] of map.toGeneratedRange(start, end, true, filter)) {\n yield [\n generateStart + getMappingOffset(language, serviceScript),\n generateEnd + getMappingOffset(language, serviceScript),\n ];\n }\n}\nfunction toGeneratedOffset(language, serviceScript, sourceScript, position, filter) {\n for (const [generateOffset] of toGeneratedOffsets(language, serviceScript, sourceScript, position, filter)) {\n return generateOffset;\n }\n}\nfunction* toGeneratedOffsets(language, serviceScript, sourceScript, position, filter) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n for (const [generateOffset, mapping] of map.toGeneratedLocation(position)) {\n if (filter(mapping.data)) {\n yield [generateOffset + getMappingOffset(language, serviceScript), mapping];\n }\n }\n}\nfunction getMappingOffset(language, serviceScript) {\n if (serviceScript.preventLeadingOffset) {\n return 0;\n }\n const sourceScript = language.scripts.fromVirtualCode(serviceScript.code);\n return sourceScript.snapshot.getLength();\n}\n//# sourceMappingURL=transform.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProxyLanguageService = createProxyLanguageService;\nconst language_core_1 = require(\"@volar/language-core\");\nconst dedupe_1 = require(\"./dedupe\");\nconst transform_1 = require(\"./transform\");\nconst utils_1 = require(\"./utils\");\nconst windowsPathReg = /\\\\/g;\n/**\n * Creates and returns a Proxy around the base TypeScript LanguageService.\n *\n * This is used by the Volar TypeScript Plugin (which can be created by `createLanguageServicePlugin`\n * and `createAsyncLanguageServicePlugin`) as an adapter layer between the TypeScript Language Service\n * plugin API (see https://github.com/microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin)\n * and a Volar `Language`.\n *\n * Once the `initialize` method is called, the proxy will begin intercepting requests and\n * enhancing the default behavior of the LanguageService with enhancements based on\n * the Volar `Language` that has been passed to `initialize`.\n */\nfunction createProxyLanguageService(languageService) {\n const proxyCache = new Map();\n let getProxyMethod;\n return {\n initialize(language) {\n getProxyMethod = (target, p) => {\n switch (p) {\n case 'getNavigationTree':\n return getNavigationTree(language, target[p]);\n case 'getOutliningSpans':\n return getOutliningSpans(language, target[p]);\n case 'getFormattingEditsForDocument':\n return getFormattingEditsForDocument(language, target[p]);\n case 'getFormattingEditsForRange':\n return getFormattingEditsForRange(language, target[p]);\n case 'getFormattingEditsAfterKeystroke':\n return getFormattingEditsAfterKeystroke(language, target[p]);\n case 'getEditsForFileRename':\n return getEditsForFileRename(language, target[p]);\n case 'getLinkedEditingRangeAtPosition':\n return getLinkedEditingRangeAtPosition(language, target[p]);\n case 'prepareCallHierarchy':\n return prepareCallHierarchy(language, target[p]);\n case 'provideCallHierarchyIncomingCalls':\n return provideCallHierarchyIncomingCalls(language, target[p]);\n case 'provideCallHierarchyOutgoingCalls':\n return provideCallHierarchyOutgoingCalls(language, target[p]);\n case 'organizeImports':\n return organizeImports(language, target[p]);\n case 'getQuickInfoAtPosition':\n return getQuickInfoAtPosition(language, target[p]);\n case 'getSignatureHelpItems':\n return getSignatureHelpItems(language, target[p]);\n case 'getDocumentHighlights':\n return getDocumentHighlights(language, target[p]);\n case 'getApplicableRefactors':\n return getApplicableRefactors(language, target[p]);\n case 'getEditsForRefactor':\n return getEditsForRefactor(language, target[p]);\n case 'getCombinedCodeFix':\n return getCombinedCodeFix(language, target[p]);\n case 'getRenameInfo':\n return getRenameInfo(language, target[p]);\n case 'getCodeFixesAtPosition':\n return getCodeFixesAtPosition(language, target[p]);\n case 'getEncodedSemanticClassifications':\n return getEncodedSemanticClassifications(language, target[p]);\n case 'getSyntacticDiagnostics':\n return getSyntacticDiagnostics(language, languageService, target[p]);\n case 'getSemanticDiagnostics':\n return getSemanticDiagnostics(language, languageService, target[p]);\n case 'getSuggestionDiagnostics':\n return getSuggestionDiagnostics(language, languageService, target[p]);\n case 'getDefinitionAndBoundSpan':\n return getDefinitionAndBoundSpan(language, target[p]);\n case 'findReferences':\n return findReferences(language, target[p]);\n case 'getDefinitionAtPosition':\n return getDefinitionAtPosition(language, target[p]);\n case 'getTypeDefinitionAtPosition':\n return getTypeDefinitionAtPosition(language, target[p]);\n case 'getImplementationAtPosition':\n return getImplementationAtPosition(language, target[p]);\n case 'findRenameLocations':\n return findRenameLocations(language, target[p]);\n case 'getReferencesAtPosition':\n return getReferencesAtPosition(language, target[p]);\n case 'getCompletionsAtPosition':\n return getCompletionsAtPosition(language, target[p]);\n case 'getCompletionEntryDetails':\n return getCompletionEntryDetails(language, target[p]);\n case 'provideInlayHints':\n return provideInlayHints(language, target[p]);\n case 'getFileReferences':\n return getFileReferences(language, target[p]);\n case 'getNavigateToItems':\n return getNavigateToItems(language, target[p]);\n }\n };\n },\n proxy: new Proxy(languageService, {\n get(target, p, receiver) {\n if (getProxyMethod) {\n if (!proxyCache.has(p)) {\n proxyCache.set(p, getProxyMethod(target, p));\n }\n const proxyMethod = proxyCache.get(p);\n if (proxyMethod) {\n return proxyMethod;\n }\n }\n return Reflect.get(target, p, receiver);\n },\n set(target, p, value, receiver) {\n return Reflect.set(target, p, value, receiver);\n },\n }),\n };\n}\n// ignored methods\nfunction getNavigationTree(language, getNavigationTree) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (serviceScript || targetScript?.associatedOnly) {\n const tree = getNavigationTree(targetScript.id);\n tree.childItems = undefined;\n return tree;\n }\n else {\n return getNavigationTree(fileName);\n }\n };\n}\nfunction getOutliningSpans(language, getOutliningSpans) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (serviceScript || targetScript?.associatedOnly) {\n return [];\n }\n else {\n return getOutliningSpans(fileName);\n }\n };\n}\n// proxy methods\nfunction getFormattingEditsForDocument(language, getFormattingEditsForDocument) {\n return (filePath, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const map = language.maps.get(serviceScript.code, targetScript);\n if (!map.mappings.some(mapping => (0, language_core_1.isFormattingEnabled)(mapping.data))) {\n return [];\n }\n const edits = getFormattingEditsForDocument(targetScript.id, options);\n return edits\n .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, false, language_core_1.isFormattingEnabled)?.[1])\n .filter(edit => !!edit);\n }\n else {\n return getFormattingEditsForDocument(fileName, options);\n }\n };\n}\nfunction getFormattingEditsForRange(language, getFormattingEditsForRange) {\n return (filePath, start, end, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generatedRange = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, start, end, language_core_1.isFormattingEnabled);\n if (generatedRange !== undefined) {\n const edits = getFormattingEditsForRange(targetScript.id, generatedRange[0], generatedRange[1], options);\n return edits\n .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, false, language_core_1.isFormattingEnabled)?.[1])\n .filter(edit => !!edit);\n }\n return [];\n }\n else {\n return getFormattingEditsForRange(fileName, start, end, options);\n }\n };\n}\nfunction getFormattingEditsAfterKeystroke(language, getFormattingEditsAfterKeystroke) {\n return (filePath, position, key, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isFormattingEnabled);\n if (generatePosition !== undefined) {\n const edits = getFormattingEditsAfterKeystroke(targetScript.id, generatePosition, key, options);\n return edits\n .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, false, language_core_1.isFormattingEnabled)?.[1])\n .filter(edit => !!edit);\n }\n return [];\n }\n else {\n return getFormattingEditsAfterKeystroke(fileName, position, key, options);\n }\n };\n}\nfunction getEditsForFileRename(language, getEditsForFileRename) {\n return (oldFilePath, newFilePath, formatOptions, preferences) => {\n const edits = getEditsForFileRename(oldFilePath, newFilePath, formatOptions, preferences);\n return (0, transform_1.transformFileTextChanges)(language, edits, false, language_core_1.isRenameEnabled);\n };\n}\nfunction getLinkedEditingRangeAtPosition(language, getLinkedEditingRangeAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isLinkedEditingEnabled);\n if (generatePosition !== undefined) {\n const info = getLinkedEditingRangeAtPosition(targetScript.id, generatePosition);\n if (info) {\n return {\n ranges: info.ranges\n .map(span => (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, false, language_core_1.isLinkedEditingEnabled)?.[1])\n .filter(span => !!span),\n wordPattern: info.wordPattern,\n };\n }\n }\n }\n else {\n return getLinkedEditingRangeAtPosition(fileName, position);\n }\n };\n}\nfunction prepareCallHierarchy(language, prepareCallHierarchy) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);\n if (generatePosition !== undefined) {\n const item = prepareCallHierarchy(targetScript.id, generatePosition);\n if (Array.isArray(item)) {\n return item.map(item => (0, transform_1.transformCallHierarchyItem)(language, item, true, language_core_1.isCallHierarchyEnabled));\n }\n else if (item) {\n return (0, transform_1.transformCallHierarchyItem)(language, item, true, language_core_1.isCallHierarchyEnabled);\n }\n }\n }\n else {\n return prepareCallHierarchy(fileName, position);\n }\n };\n}\nfunction provideCallHierarchyIncomingCalls(language, provideCallHierarchyIncomingCalls) {\n return (filePath, position) => {\n let calls = [];\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);\n if (generatePosition !== undefined) {\n calls = provideCallHierarchyIncomingCalls(targetScript.id, generatePosition);\n }\n }\n else {\n calls = provideCallHierarchyIncomingCalls(fileName, position);\n }\n return calls\n .map(call => {\n const from = (0, transform_1.transformCallHierarchyItem)(language, call.from, true, language_core_1.isCallHierarchyEnabled);\n const fromSpans = call.fromSpans\n .map(span => (0, transform_1.transformSpan)(language, call.from.file, span, true, language_core_1.isCallHierarchyEnabled)?.textSpan)\n .filter(span => !!span);\n return {\n from,\n fromSpans,\n };\n });\n };\n}\nfunction provideCallHierarchyOutgoingCalls(language, provideCallHierarchyOutgoingCalls) {\n return (filePath, position) => {\n let calls = [];\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);\n if (generatePosition !== undefined) {\n calls = provideCallHierarchyOutgoingCalls(targetScript.id, generatePosition);\n }\n }\n else {\n calls = provideCallHierarchyOutgoingCalls(fileName, position);\n }\n return calls\n .map(call => {\n const to = (0, transform_1.transformCallHierarchyItem)(language, call.to, true, language_core_1.isCallHierarchyEnabled);\n const fromSpans = call.fromSpans\n .map(span => serviceScript\n ? (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, true, language_core_1.isCallHierarchyEnabled)?.[1]\n : span)\n .filter(span => !!span);\n return {\n to,\n fromSpans,\n };\n });\n };\n}\nfunction organizeImports(language, organizeImports) {\n return (args, formatOptions, preferences) => {\n const unresolved = organizeImports(args, formatOptions, preferences);\n return (0, transform_1.transformFileTextChanges)(language, unresolved, false, language_core_1.isCodeActionsEnabled);\n };\n}\nfunction getQuickInfoAtPosition(language, getQuickInfoAtPosition) {\n /**\n * Using `...args` for pass through rest params (including internal `verbosityLevel` param).\n * https://github.com/microsoft/TypeScript/blob/dd830711041b7b0cfd3da7937755996b1e1b1c7e/src/services/types.ts#L588\n */\n return (filePath, position, ...args) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const infos = [];\n for (const [generatePosition] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isHoverEnabled)) {\n const info = getQuickInfoAtPosition(targetScript.id, generatePosition, ...args);\n if (info) {\n const textSpan = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, info.textSpan, true, language_core_1.isHoverEnabled)?.[1];\n if (textSpan) {\n infos.push({\n ...info,\n textSpan: textSpan,\n });\n }\n }\n }\n if (infos.length === 1) {\n return infos[0];\n }\n else if (infos.length >= 2) {\n const combine = { ...infos[0] };\n combine.displayParts = combine.displayParts?.slice();\n combine.documentation = combine.documentation?.slice();\n combine.tags = combine.tags?.slice();\n const displayPartsStrs = new Set([displayPartsToString(infos[0].displayParts)]);\n const documentationStrs = new Set([displayPartsToString(infos[0].documentation)]);\n const tagsStrs = new Set();\n for (const tag of infos[0].tags ?? []) {\n tagsStrs.add(tag.name + '__volar__' + displayPartsToString(tag.text));\n }\n for (let i = 1; i < infos.length; i++) {\n const { displayParts, documentation, tags } = infos[i];\n if (displayParts?.length && !displayPartsStrs.has(displayPartsToString(displayParts))) {\n displayPartsStrs.add(displayPartsToString(displayParts));\n combine.displayParts ??= [];\n combine.displayParts.push({ ...displayParts[0], text: '\\n\\n' + displayParts[0].text });\n combine.displayParts.push(...displayParts.slice(1));\n }\n if (documentation?.length && !documentationStrs.has(displayPartsToString(documentation))) {\n documentationStrs.add(displayPartsToString(documentation));\n combine.documentation ??= [];\n combine.documentation.push({ ...documentation[0], text: '\\n\\n' + documentation[0].text });\n combine.documentation.push(...documentation.slice(1));\n }\n for (const tag of tags ?? []) {\n if (!tagsStrs.has(tag.name + '__volar__' + displayPartsToString(tag.text))) {\n tagsStrs.add(tag.name + '__volar__' + displayPartsToString(tag.text));\n combine.tags ??= [];\n combine.tags.push(tag);\n }\n }\n }\n return combine;\n }\n }\n else {\n return getQuickInfoAtPosition(fileName, position, ...args);\n }\n };\n}\nfunction getSignatureHelpItems(language, getSignatureHelpItems) {\n return (filePath, position, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isSignatureHelpEnabled);\n if (generatePosition !== undefined) {\n const result = getSignatureHelpItems(targetScript.id, generatePosition, options);\n if (result) {\n const applicableSpan = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, result.applicableSpan, true, language_core_1.isSignatureHelpEnabled)?.[1];\n if (applicableSpan) {\n return {\n ...result,\n applicableSpan,\n };\n }\n }\n }\n }\n else {\n return getSignatureHelpItems(fileName, position, options);\n }\n };\n}\nfunction getDocumentHighlights(language, getDocumentHighlights) {\n return (filePath, position, filesToSearch) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isHighlightEnabled, (fileName, position) => getDocumentHighlights(fileName, position, filesToSearch), function* (result) {\n for (const ref of result) {\n for (const reference of ref.highlightSpans) {\n yield [reference.fileName ?? ref.fileName, reference.textSpan.start];\n }\n }\n });\n const resolved = unresolved\n .flat()\n .map(highlights => {\n return {\n ...highlights,\n highlightSpans: highlights.highlightSpans\n .map(span => {\n const { textSpan } = (0, transform_1.transformSpan)(language, span.fileName ?? highlights.fileName, span.textSpan, false, language_core_1.isHighlightEnabled)\n ?? {};\n if (textSpan) {\n return {\n ...span,\n contextSpan: (0, transform_1.transformSpan)(language, span.fileName ?? highlights.fileName, span.contextSpan, false, language_core_1.isHighlightEnabled)?.textSpan,\n textSpan,\n };\n }\n })\n .filter(span => !!span),\n };\n });\n return resolved;\n };\n}\nfunction getApplicableRefactors(language, getApplicableRefactors) {\n return (filePath, positionOrRange, preferences, triggerReason, kind, includeInteractiveActions) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n if (typeof positionOrRange === 'number') {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, positionOrRange, language_core_1.isCodeActionsEnabled);\n if (generatePosition !== undefined) {\n return getApplicableRefactors(targetScript.id, generatePosition, preferences, triggerReason, kind, includeInteractiveActions);\n }\n }\n else {\n for (const [generatedStart, generatedEnd] of (0, transform_1.toGeneratedRanges)(language, serviceScript, sourceScript, positionOrRange.pos, positionOrRange.end, language_core_1.isCodeActionsEnabled)) {\n return getApplicableRefactors(targetScript.id, { pos: generatedStart, end: generatedEnd }, preferences, triggerReason, kind, includeInteractiveActions);\n }\n }\n return [];\n }\n else {\n return getApplicableRefactors(fileName, positionOrRange, preferences, triggerReason, kind, includeInteractiveActions);\n }\n };\n}\nfunction getEditsForRefactor(language, getEditsForRefactor) {\n return (filePath, formatOptions, positionOrRange, refactorName, actionName, preferences, interactiveRefactorArguments) => {\n let edits;\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n if (typeof positionOrRange === 'number') {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, positionOrRange, language_core_1.isCodeActionsEnabled);\n if (generatePosition !== undefined) {\n edits = getEditsForRefactor(targetScript.id, formatOptions, generatePosition, refactorName, actionName, preferences, interactiveRefactorArguments);\n }\n }\n else {\n for (const [generatedStart, generatedEnd] of (0, transform_1.toGeneratedRanges)(language, serviceScript, sourceScript, positionOrRange.pos, positionOrRange.end, language_core_1.isCodeActionsEnabled)) {\n edits = getEditsForRefactor(targetScript.id, formatOptions, { pos: generatedStart, end: generatedEnd }, refactorName, actionName, preferences, interactiveRefactorArguments);\n }\n }\n }\n else {\n edits = getEditsForRefactor(fileName, formatOptions, positionOrRange, refactorName, actionName, preferences, interactiveRefactorArguments);\n }\n if (edits) {\n edits.edits = (0, transform_1.transformFileTextChanges)(language, edits.edits, false, language_core_1.isCodeActionsEnabled);\n return edits;\n }\n };\n}\nfunction getCombinedCodeFix(language, getCombinedCodeFix) {\n return (...args) => {\n const codeActions = getCombinedCodeFix(...args);\n codeActions.changes = (0, transform_1.transformFileTextChanges)(language, codeActions.changes, false, language_core_1.isCodeActionsEnabled);\n return codeActions;\n };\n}\nfunction getRenameInfo(language, getRenameInfo) {\n return (filePath, position, options) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return {\n canRename: false,\n localizedErrorMessage: 'Cannot rename',\n };\n }\n if (serviceScript) {\n let failed;\n for (const [generateOffset] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isRenameEnabled)) {\n const info = getRenameInfo(targetScript.id, generateOffset, options);\n if (info.canRename) {\n const span = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, info.triggerSpan, false, language_core_1.isRenameEnabled)?.[1];\n if (span) {\n info.triggerSpan = span;\n return info;\n }\n }\n else {\n failed = info;\n }\n }\n if (failed) {\n return failed;\n }\n return {\n canRename: false,\n localizedErrorMessage: 'Failed to get rename locations',\n };\n }\n else {\n return getRenameInfo(fileName, position, options);\n }\n };\n}\nfunction getCodeFixesAtPosition(language, getCodeFixesAtPosition) {\n return (filePath, start, end, errorCodes, formatOptions, preferences) => {\n let fixes = [];\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const generateRange = (0, transform_1.toGeneratedRange)(language, serviceScript, sourceScript, start, end, language_core_1.isCodeActionsEnabled);\n if (generateRange !== undefined) {\n fixes = getCodeFixesAtPosition(targetScript.id, generateRange[0], generateRange[1], errorCodes, formatOptions, preferences);\n }\n }\n else {\n fixes = getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences);\n }\n fixes = fixes.map(fix => {\n fix.changes = (0, transform_1.transformFileTextChanges)(language, fix.changes, false, language_core_1.isCodeActionsEnabled);\n return fix;\n });\n return fixes;\n };\n}\nfunction getEncodedSemanticClassifications(language, getEncodedSemanticClassifications) {\n return (filePath, span, format) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return {\n spans: [],\n endOfLineState: 0,\n };\n }\n if (serviceScript) {\n const map = language.maps.get(serviceScript.code, targetScript);\n const mapped = (0, language_core_1.findOverlapCodeRange)(span.start, span.start + span.length, map, language_core_1.isSemanticTokensEnabled);\n if (!mapped) {\n return {\n spans: [],\n endOfLineState: 0,\n };\n }\n const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);\n const start = mapped.start + mappingOffset;\n const end = mapped.end + mappingOffset;\n const result = getEncodedSemanticClassifications(targetScript.id, { start, length: end - start }, format);\n const spans = [];\n for (let i = 0; i < result.spans.length; i += 3) {\n for (const [_, sourceStart, sourceEnd] of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, result.spans[i], result.spans[i] + result.spans[i + 1], false, language_core_1.isSemanticTokensEnabled)) {\n spans.push(sourceStart, sourceEnd - sourceStart, result.spans[i + 2]);\n break;\n }\n }\n result.spans = spans;\n return result;\n }\n else {\n return getEncodedSemanticClassifications(fileName, span, format);\n }\n };\n}\nfunction getSyntacticDiagnostics(language, languageService, getSyntacticDiagnostics) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n return getSyntacticDiagnostics(targetScript?.id ?? fileName)\n .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))\n .filter(d => !!d)\n .filter(d => !serviceScript || language.scripts.get(d.file.fileName) === sourceScript);\n };\n}\nfunction getSemanticDiagnostics(language, languageService, getSemanticDiagnostics) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n return getSemanticDiagnostics(targetScript?.id ?? fileName)\n .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))\n .filter(d => !!d)\n .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);\n };\n}\nfunction getSuggestionDiagnostics(language, languageService, getSuggestionDiagnostics) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n return getSuggestionDiagnostics(targetScript?.id ?? fileName)\n .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))\n .filter(d => !!d)\n .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);\n };\n}\nfunction getDefinitionAndBoundSpan(language, getDefinitionAndBoundSpan) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isDefinitionEnabled, (fileName, position) => getDefinitionAndBoundSpan(fileName, position), function* (result) {\n for (const ref of result.definitions ?? []) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const textSpan = unresolved\n .map(s => (0, transform_1.transformSpan)(language, fileName, s.textSpan, true, language_core_1.isDefinitionEnabled)?.textSpan)\n .filter(s => !!s)[0];\n if (!textSpan) {\n return;\n }\n const definitions = unresolved\n .map(s => s.definitions\n ?.map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isDefinitionEnabled, s.fileName !== fileName))\n .filter(s => !!s)\n ?? [])\n .flat();\n return {\n textSpan,\n definitions: (0, dedupe_1.dedupeDocumentSpans)(definitions),\n };\n };\n}\nfunction findReferences(language, findReferences) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isReferencesEnabled, (fileName, position) => findReferences(fileName, position), function* (result) {\n for (const ref of result) {\n for (const reference of ref.references) {\n yield [reference.fileName, reference.textSpan.start];\n }\n }\n });\n const resolved = unresolved\n .flat()\n .map(symbol => {\n const definition = (0, transform_1.transformDocumentSpan)(language, symbol.definition, true, language_core_1.isDefinitionEnabled, true);\n return {\n definition,\n references: symbol.references\n .map(r => (0, transform_1.transformDocumentSpan)(language, r, true, language_core_1.isReferencesEnabled))\n .filter(r => !!r),\n };\n });\n return resolved;\n };\n}\nfunction getDefinitionAtPosition(language, getDefinitionAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isDefinitionEnabled, (fileName, position) => getDefinitionAtPosition(fileName, position), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isDefinitionEnabled, s.fileName !== fileName))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getTypeDefinitionAtPosition(language, getTypeDefinitionAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isTypeDefinitionEnabled, (fileName, position) => getTypeDefinitionAtPosition(fileName, position), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isTypeDefinitionEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getImplementationAtPosition(language, getImplementationAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isImplementationEnabled, (fileName, position) => getImplementationAtPosition(fileName, position), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isImplementationEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction findRenameLocations(language, findRenameLocations) {\n return (filePath, position, findInStrings, findInComments, preferences) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isRenameEnabled, (fileName, position) => findRenameLocations(fileName, position, findInStrings, findInComments, preferences), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, false, language_core_1.isRenameEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getReferencesAtPosition(language, getReferencesAtPosition) {\n return (filePath, position) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = linkedCodeFeatureWorker(language, fileName, position, language_core_1.isReferencesEnabled, (fileName, position) => getReferencesAtPosition(fileName, position), function* (result) {\n for (const ref of result) {\n yield [ref.fileName, ref.textSpan.start];\n }\n });\n const resolved = unresolved\n .flat()\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isReferencesEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getCompletionsAtPosition(language, getCompletionsAtPosition) {\n return (filePath, position, options, formattingSettings) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n let mainResult;\n const additionalResults = [];\n for (const [generatedOffset, mapping] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isCompletionEnabled)) {\n const isAdditional = typeof mapping.data.completion === 'object' && mapping.data.completion.isAdditional;\n if (!isAdditional && mainResult?.entries.length) {\n continue;\n }\n const result = getCompletionsAtPosition(targetScript.id, generatedOffset, options, formattingSettings);\n if (!result) {\n continue;\n }\n if (typeof mapping.data.completion === 'object' && mapping.data.completion.onlyImport) {\n result.entries = result.entries.filter(entry => !!entry.sourceDisplay);\n }\n for (const entry of result.entries) {\n entry.replacementSpan = entry.replacementSpan\n && (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, entry.replacementSpan, false, language_core_1.isCompletionEnabled)?.[1];\n }\n result.optionalReplacementSpan = result.optionalReplacementSpan\n && (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, result.optionalReplacementSpan, false, language_core_1.isCompletionEnabled)?.[1];\n if (isAdditional) {\n additionalResults.push(result);\n }\n else {\n mainResult = result;\n }\n }\n const results = additionalResults;\n if (mainResult) {\n results.unshift(mainResult);\n }\n if (results.length) {\n return {\n ...results[0],\n entries: results\n .map(additionalResult => additionalResult.entries)\n .flat(),\n };\n }\n }\n else {\n return getCompletionsAtPosition(fileName, position, options, formattingSettings);\n }\n };\n}\nfunction getCompletionEntryDetails(language, getCompletionEntryDetails) {\n return (filePath, position, entryName, formatOptions, source, preferences, data) => {\n let details;\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return undefined;\n }\n if (serviceScript) {\n const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCompletionEnabled);\n if (generatePosition !== undefined) {\n details = getCompletionEntryDetails(targetScript.id, generatePosition, entryName, formatOptions, source, preferences, data);\n }\n }\n else {\n return getCompletionEntryDetails(fileName, position, entryName, formatOptions, source, preferences, data);\n }\n if (details?.codeActions) {\n for (const codeAction of details.codeActions) {\n codeAction.changes = (0, transform_1.transformFileTextChanges)(language, codeAction.changes, false, language_core_1.isCompletionEnabled);\n }\n }\n return details;\n };\n}\nfunction provideInlayHints(language, provideInlayHints) {\n return (filePath, span, preferences) => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (targetScript?.associatedOnly) {\n return [];\n }\n if (serviceScript) {\n const map = language.maps.get(serviceScript.code, sourceScript);\n const mapped = (0, language_core_1.findOverlapCodeRange)(span.start, span.start + span.length, map, language_core_1.isSemanticTokensEnabled);\n if (!mapped) {\n return [];\n }\n const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);\n const start = mapped.start + mappingOffset;\n const end = mapped.end + mappingOffset;\n const result = provideInlayHints(targetScript.id, { start, length: end - start }, preferences);\n const hints = [];\n for (const hint of result) {\n const sourcePosition = (0, transform_1.toSourceOffset)(sourceScript, language, serviceScript, hint.position, language_core_1.isInlayHintsEnabled);\n if (sourcePosition !== undefined) {\n hints.push({\n ...hint,\n position: sourcePosition[1],\n });\n }\n }\n return hints;\n }\n else {\n return provideInlayHints(fileName, span, preferences);\n }\n };\n}\nfunction getFileReferences(language, getFileReferences) {\n return filePath => {\n const fileName = filePath.replace(windowsPathReg, '/');\n const unresolved = getFileReferences(fileName);\n const resolved = unresolved\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isReferencesEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction getNavigateToItems(language, getNavigateToItems) {\n return (...args) => {\n const unresolved = getNavigateToItems(...args);\n const resolved = unresolved\n .map(s => (0, transform_1.transformDocumentSpan)(language, s, true, language_core_1.isReferencesEnabled))\n .filter(s => !!s);\n return (0, dedupe_1.dedupeDocumentSpans)(resolved);\n };\n}\nfunction linkedCodeFeatureWorker(language, fileName, position, filter, worker, getLinkedCodes) {\n const results = [];\n const processedFilePositions = new Set();\n const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);\n if (serviceScript) {\n for (const [generatedOffset] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, filter)) {\n process(targetScript.id, generatedOffset);\n }\n }\n else {\n process(fileName, position);\n }\n return results;\n function process(fileName, position) {\n if (processedFilePositions.has(fileName + ':' + position)) {\n return;\n }\n processedFilePositions.add(fileName + ':' + position);\n const result = worker(fileName, position);\n if (!result) {\n return;\n }\n results.push(result);\n for (const ref of getLinkedCodes(result)) {\n processedFilePositions.add(ref[0] + ':' + ref[1]);\n const [serviceScript] = (0, utils_1.getServiceScript)(language, ref[0]);\n if (!serviceScript) {\n continue;\n }\n const linkedCodeMap = language.linkedCodeMaps.get(serviceScript.code);\n if (!linkedCodeMap) {\n continue;\n }\n const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);\n for (const linkedCodeOffset of linkedCodeMap.getLinkedOffsets(ref[1] - mappingOffset)) {\n process(ref[0], linkedCodeOffset + mappingOffset);\n }\n }\n }\n}\nfunction displayPartsToString(displayParts) {\n if (displayParts) {\n return displayParts.map(displayPart => displayPart.text).join('');\n }\n return '';\n}\n//# sourceMappingURL=proxyLanguageService.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveFileLanguageId = resolveFileLanguageId;\nfunction resolveFileLanguageId(path) {\n const ext = path.split('.').pop();\n switch (ext) {\n case 'js':\n return 'javascript';\n case 'cjs':\n return 'javascript';\n case 'mjs':\n return 'javascript';\n case 'ts':\n return 'typescript';\n case 'cts':\n return 'typescript';\n case 'mts':\n return 'typescript';\n case 'jsx':\n return 'javascriptreact';\n case 'tsx':\n return 'typescriptreact';\n case 'json':\n return 'json';\n }\n}\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createResolveModuleName = createResolveModuleName;\nfunction createResolveModuleName(ts, getFileSize, host, languagePlugins, getSourceScript) {\n const toSourceFileInfo = new Map();\n const moduleResolutionHost = {\n readFile: host.readFile.bind(host),\n directoryExists: host.directoryExists?.bind(host),\n realpath: host.realpath?.bind(host),\n getCurrentDirectory: host.getCurrentDirectory?.bind(host),\n getDirectories: host.getDirectories?.bind(host),\n useCaseSensitiveFileNames: typeof host.useCaseSensitiveFileNames === 'function'\n ? host.useCaseSensitiveFileNames.bind(host)\n : host.useCaseSensitiveFileNames,\n fileExists(fileName) {\n const result = host.fileExists(fileName);\n for (const { typescript } of languagePlugins) {\n if (!typescript) {\n continue;\n }\n if (!result) {\n for (const { extension } of typescript.extraFileExtensions) {\n if (!fileName.endsWith(`.d.${extension}.ts`)) {\n continue;\n }\n const sourceFileName = fileName.slice(0, -`.d.${extension}.ts`.length) + `.${extension}`;\n if (fileExists(sourceFileName)) {\n const sourceScript = getSourceScript(sourceFileName);\n if (sourceScript?.generated) {\n const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);\n if (serviceScript) {\n const dtsPath = sourceFileName + '.d.ts';\n if ((serviceScript.extension === '.js' || serviceScript.extension === '.jsx') && fileExists(dtsPath)) {\n toSourceFileInfo.set(fileName, {\n sourceFileName: dtsPath,\n extension: '.ts',\n });\n }\n else {\n toSourceFileInfo.set(fileName, {\n sourceFileName,\n extension: serviceScript.extension,\n });\n }\n return true;\n }\n }\n }\n }\n }\n if (typescript.resolveHiddenExtensions && fileName.endsWith(`.d.ts`)) {\n for (const { extension } of typescript.extraFileExtensions) {\n const sourceFileName = fileName.slice(0, -`.d.ts`.length) + `.${extension}`;\n if (fileExists(sourceFileName)) {\n const sourceScript = getSourceScript(sourceFileName);\n if (sourceScript?.generated) {\n const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);\n if (serviceScript) {\n toSourceFileInfo.set(fileName, {\n sourceFileName,\n extension: serviceScript.extension,\n });\n return true;\n }\n }\n }\n }\n }\n }\n return result;\n },\n };\n return (moduleName, containingFile, compilerOptions, cache, redirectedReference, resolutionMode) => {\n const result = ts.resolveModuleName(moduleName, containingFile, compilerOptions, moduleResolutionHost, cache, redirectedReference, resolutionMode);\n if (result.resolvedModule) {\n const sourceFileInfo = toSourceFileInfo.get(result.resolvedModule.resolvedFileName);\n if (sourceFileInfo) {\n result.resolvedModule.resolvedFileName = sourceFileInfo.sourceFileName;\n result.resolvedModule.extension = sourceFileInfo.extension;\n }\n }\n toSourceFileInfo.clear();\n return result;\n };\n // fix https://github.com/vuejs/language-tools/issues/3332\n function fileExists(fileName) {\n if (host.fileExists(fileName)) {\n const fileSize = getFileSize?.(fileName) ?? host.readFile(fileName)?.length ?? 0;\n return fileSize < 4 * 1024 * 1024;\n }\n return false;\n }\n}\n//# sourceMappingURL=resolveModuleName.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decorateLanguageServiceHost = decorateLanguageServiceHost;\nexports.searchExternalFiles = searchExternalFiles;\nconst resolveModuleName_1 = require(\"../resolveModuleName\");\nconst utils_1 = require(\"./utils\");\nfunction decorateLanguageServiceHost(ts, language, languageServiceHost) {\n const pluginExtensions = language.plugins\n .map(plugin => plugin.typescript?.extraFileExtensions.map(ext => '.' + ext.extension) ?? [])\n .flat();\n const scripts = new Map();\n const crashFileNames = new Set();\n const readDirectory = languageServiceHost.readDirectory?.bind(languageServiceHost);\n const resolveModuleNameLiterals = languageServiceHost.resolveModuleNameLiterals?.bind(languageServiceHost);\n const resolveModuleNames = languageServiceHost.resolveModuleNames?.bind(languageServiceHost);\n const getScriptSnapshot = languageServiceHost.getScriptSnapshot.bind(languageServiceHost);\n const getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost);\n // path completion\n if (readDirectory) {\n languageServiceHost.readDirectory = (path, extensions, exclude, include, depth) => {\n if (extensions) {\n for (const ext of pluginExtensions) {\n if (!extensions.includes(ext)) {\n extensions = [...extensions, ext];\n }\n }\n }\n return readDirectory(path, extensions, exclude, include, depth);\n };\n }\n if (pluginExtensions.length) {\n const resolveModuleName = (0, resolveModuleName_1.createResolveModuleName)(ts, ts.sys.getFileSize, languageServiceHost, language.plugins, fileName => language.scripts.get(fileName));\n const moduleResolutionCache = languageServiceHost.getModuleResolutionCache?.();\n if (resolveModuleNameLiterals) {\n languageServiceHost.resolveModuleNameLiterals = (moduleLiterals, containingFile, redirectedReference, options, containingSourceFile, ...rest) => {\n const disposeFixup = (0, utils_1.fixupImpliedNodeFormatForFile)(ts, pluginExtensions, containingSourceFile, moduleResolutionCache?.getPackageJsonInfoCache(), languageServiceHost, options);\n try {\n if (moduleLiterals.every(name => !pluginExtensions.some(ext => name.text.endsWith(ext)))) {\n return resolveModuleNameLiterals(moduleLiterals, containingFile, redirectedReference, options, containingSourceFile, ...rest);\n }\n return moduleLiterals.map(moduleLiteral => {\n const mode = ts.getModeForUsageLocation(containingSourceFile, moduleLiteral, options);\n return resolveModuleName(moduleLiteral.text, containingFile, options, moduleResolutionCache, redirectedReference, mode);\n });\n }\n finally {\n disposeFixup?.();\n }\n };\n }\n if (resolveModuleNames) {\n languageServiceHost.resolveModuleNames = (moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile) => {\n if (moduleNames.every(name => !pluginExtensions.some(ext => name.endsWith(ext)))) {\n return resolveModuleNames(moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile);\n }\n return moduleNames.map(moduleName => {\n return resolveModuleName(moduleName, containingFile, options, moduleResolutionCache, redirectedReference)\n .resolvedModule;\n });\n };\n }\n }\n languageServiceHost.getScriptSnapshot = fileName => {\n const virtualScript = updateVirtualScript(fileName, true);\n if (virtualScript) {\n return virtualScript.snapshot;\n }\n return getScriptSnapshot(fileName);\n };\n if (getScriptKind) {\n languageServiceHost.getScriptKind = fileName => {\n const virtualScript = updateVirtualScript(fileName, false);\n if (virtualScript) {\n return virtualScript.scriptKind;\n }\n return getScriptKind(fileName);\n };\n }\n function updateVirtualScript(fileName, shouldRegister) {\n if (crashFileNames.has(fileName)) {\n return;\n }\n let version;\n try {\n version = languageServiceHost.getScriptVersion(fileName);\n }\n catch {\n // fix https://github.com/vuejs/language-tools/issues/4278\n crashFileNames.add(fileName);\n }\n if (version === undefined) {\n // somehow getScriptVersion returns undefined\n return;\n }\n let script = scripts.get(fileName);\n if (!script || script[0] !== version) {\n script = [version];\n const sourceScript = language.scripts.get(fileName, undefined, shouldRegister);\n if (sourceScript?.generated) {\n const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);\n if (serviceScript) {\n if (serviceScript.preventLeadingOffset) {\n script[1] = {\n extension: serviceScript.extension,\n scriptKind: serviceScript.scriptKind,\n snapshot: serviceScript.code.snapshot,\n };\n }\n else {\n const sourceContents = sourceScript.snapshot.getText(0, sourceScript.snapshot.getLength());\n const virtualContents = sourceContents.split('\\n').map(line => ' '.repeat(line.length)).join('\\n')\n + serviceScript.code.snapshot.getText(0, serviceScript.code.snapshot.getLength());\n script[1] = {\n extension: serviceScript.extension,\n scriptKind: serviceScript.scriptKind,\n snapshot: ts.ScriptSnapshot.fromString(virtualContents),\n };\n }\n }\n if (sourceScript.generated.languagePlugin.typescript?.getExtraServiceScripts) {\n console.warn('getExtraServiceScripts() is not available in TS plugin.');\n }\n }\n scripts.set(fileName, script);\n }\n return script[1];\n }\n}\nfunction searchExternalFiles(ts, project, exts) {\n if (project.projectKind !== ts.server.ProjectKind.Configured) {\n return [];\n }\n const configFile = project.getProjectName();\n const config = ts.readJsonConfigFile(configFile, project.readFile.bind(project));\n const parseHost = {\n useCaseSensitiveFileNames: project.useCaseSensitiveFileNames(),\n fileExists: project.fileExists.bind(project),\n readFile: project.readFile.bind(project),\n readDirectory: (...args) => {\n args[1] = exts;\n return project.readDirectory(...args);\n },\n };\n const parsed = ts.parseJsonSourceFileConfigFileContent(config, parseHost, project.getCurrentDirectory());\n return parsed.fileNames;\n}\n//# sourceMappingURL=decorateLanguageServiceHost.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeGetExternalFiles = exports.decoratedLanguageServiceHosts = exports.decoratedLanguageServices = exports.projectExternalFileExtensions = exports.externalFiles = void 0;\nexports.makeGetScriptInfoWithLargeFileFailsafe = makeGetScriptInfoWithLargeFileFailsafe;\nexports.createLanguageCommon = createLanguageCommon;\nexports.isHasAlreadyDecoratedLanguageService = isHasAlreadyDecoratedLanguageService;\nconst language_core_1 = require(\"@volar/language-core\");\nconst common_1 = require(\"../common\");\nconst decorateLanguageServiceHost_1 = require(\"../node/decorateLanguageServiceHost\");\nexports.externalFiles = new WeakMap();\nexports.projectExternalFileExtensions = new WeakMap();\nexports.decoratedLanguageServices = new WeakSet();\nexports.decoratedLanguageServiceHosts = new WeakSet();\n/**\n * Wrap `getScriptInfo` to handle large files that may crash the language service.\n *\n * Introduced to fix issues with converting `relatedInformation` (in Diagnostics)\n * when working with large files.\n *\n * https://github.com/volarjs/volar.js/commit/e242709a91e9d2919dc4fa59278dd266fd11e7a3\n */\nfunction makeGetScriptInfoWithLargeFileFailsafe(info) {\n return (fileName) => {\n // getSnapshot could be crashed if the file is too large\n try {\n return info.project.getScriptInfo(fileName);\n }\n catch { }\n };\n}\nfunction createLanguageCommon(createPluginResult, ts, info, initializeProxiedLanguageService) {\n const getScriptSnapshot = info.languageServiceHost.getScriptSnapshot.bind(info.languageServiceHost);\n const getScriptInfo = makeGetScriptInfoWithLargeFileFailsafe(info);\n const language = (0, language_core_1.createLanguage)([\n ...createPluginResult.languagePlugins,\n { getLanguageId: common_1.resolveFileLanguageId },\n ], new language_core_1.FileMap(ts.sys.useCaseSensitiveFileNames), (fileName, _, shouldRegister) => {\n let snapshot;\n if (shouldRegister) {\n // We need to trigger registration of the script file with the project, see #250\n snapshot = getScriptSnapshot(fileName);\n }\n else {\n snapshot = getScriptInfo(fileName)?.getSnapshot();\n if (!snapshot) {\n // trigger projectService.getOrCreateScriptInfoNotOpenedByClient\n info.project.getScriptVersion(fileName);\n snapshot = getScriptInfo(fileName)?.getSnapshot();\n }\n }\n if (snapshot) {\n language.scripts.set(fileName, snapshot);\n }\n else {\n language.scripts.delete(fileName);\n }\n }, targetFileName => {\n // https://github.com/JetBrains/intellij-plugins/blob/6435723ad88fa296b41144162ebe3b8513f4949b/Angular/src-js/angular-service/src/ngCommands.ts#L88\n info.session.change({\n file: targetFileName,\n line: 1,\n offset: 1,\n endLine: 1,\n endOffset: 1,\n insertString: '',\n });\n });\n initializeProxiedLanguageService(language);\n (0, decorateLanguageServiceHost_1.decorateLanguageServiceHost)(ts, language, info.languageServiceHost);\n createPluginResult.setup?.(language);\n}\nconst makeGetExternalFiles = (ts) => (project, updateLevel = 0) => {\n if (updateLevel >= 1\n || !exports.externalFiles.has(project)) {\n const oldFiles = exports.externalFiles.get(project);\n const extensions = exports.projectExternalFileExtensions.get(project);\n const newFiles = extensions?.length ? (0, decorateLanguageServiceHost_1.searchExternalFiles)(ts, project, extensions) : [];\n exports.externalFiles.set(project, newFiles);\n if (oldFiles && !arrayItemsEqual(oldFiles, newFiles)) {\n project.refreshDiagnostics();\n }\n }\n return exports.externalFiles.get(project);\n};\nexports.makeGetExternalFiles = makeGetExternalFiles;\nfunction arrayItemsEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n const set = new Set(a);\n for (const file of b) {\n if (!set.has(file)) {\n return false;\n }\n }\n return true;\n}\nfunction isHasAlreadyDecoratedLanguageService(info) {\n if (exports.decoratedLanguageServices.has(info.languageService)\n || exports.decoratedLanguageServiceHosts.has(info.languageServiceHost)) {\n return true;\n }\n else {\n exports.decoratedLanguageServices.add(info.languageService);\n exports.decoratedLanguageServiceHosts.add(info.languageServiceHost);\n return false;\n }\n}\n//# sourceMappingURL=languageServicePluginCommon.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLanguageServicePlugin = createLanguageServicePlugin;\nconst proxyLanguageService_1 = require(\"../node/proxyLanguageService\");\nconst languageServicePluginCommon_1 = require(\"./languageServicePluginCommon\");\n/**\n * Creates and returns a TS Service Plugin using Volar primitives.\n *\n * See https://github.com/microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin for\n * more information.\n */\nfunction createLanguageServicePlugin(createPluginCallback) {\n return modules => {\n const { typescript: ts } = modules;\n const pluginModule = {\n create(info) {\n if (!(0, languageServicePluginCommon_1.isHasAlreadyDecoratedLanguageService)(info)) {\n const createPluginResult = createPluginCallback(ts, info);\n const extensions = createPluginResult.languagePlugins\n .map(plugin => plugin.typescript?.extraFileExtensions.map(ext => '.' + ext.extension) ?? [])\n .flat();\n // TODO: this logic does not seem to appear in the async variant\n // (createAsyncLanguageServicePlugin)... bug?\n languageServicePluginCommon_1.projectExternalFileExtensions.set(info.project, extensions);\n const { proxy, initialize } = (0, proxyLanguageService_1.createProxyLanguageService)(info.languageService);\n info.languageService = proxy;\n (0, languageServicePluginCommon_1.createLanguageCommon)(createPluginResult, ts, info, initialize);\n }\n return info.languageService;\n },\n getExternalFiles: (0, languageServicePluginCommon_1.makeGetExternalFiles)(ts),\n };\n return pluginModule;\n };\n}\n//# sourceMappingURL=createLanguageServicePlugin.js.map","import { createLanguageServicePlugin } from '@volar/typescript/lib/quickstart/createLanguageServicePlugin.js';\nimport { getRippleLanguagePlugin } from './language.js';\n\n// This TypeScript plugin is loaded by TypeScript's tsserver when configured in tsconfig.json.\n// Note: When using the Ripple VS Code extension, the language server handles everything,\n// so this plugin is redundant but harmless (both instances work independently).\n// This plugin is useful for non-VS Code editors or when not using the language server.\nexport default createLanguageServicePlugin(() => ({\n\tlanguagePlugins: [getRippleLanguagePlugin()],\n}));\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8],"mappings":"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"}