@arkts/language-server
Version:
ArkTS Language Server.
1,054 lines (1,039 loc) • 8.47 MB
JavaScript
//#region rolldown:runtime
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __esm = (fn, res) => function() {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
};
var __commonJS = (cb, mod) => function() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key$1; i < n; i++) {
key$1 = keys[i];
if (!__hasOwnProp.call(to, key$1) && key$1 !== except) __defProp(to, key$1, {
get: ((k) => from[k]).bind(null, key$1),
enumerable: !(desc = __getOwnPropDesc(from, key$1)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
//#endregion
const node_fs = __toESM(require("node:fs"));
const node_process = __toESM(require("node:process"));
const node_path = __toESM(require("node:path"));
const node_util = __toESM(require("node:util"));
//#region ../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/common.js
var require_common$2 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/common.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveFileLanguageId = resolveFileLanguageId;
function resolveFileLanguageId(path$13) {
const ext = path$13.split(".").pop();
switch (ext) {
case "js": return "javascript";
case "cjs": return "javascript";
case "mjs": return "javascript";
case "ts": return "typescript";
case "cts": return "typescript";
case "mts": return "typescript";
case "jsx": return "javascriptreact";
case "tsx": return "typescriptreact";
case "json": return "json";
}
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+source-map@2.4.23/node_modules/@volar/source-map/lib/binarySearch.js
var require_binarySearch = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+source-map@2.4.23/node_modules/@volar/source-map/lib/binarySearch.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.binarySearch = binarySearch$1;
function binarySearch$1(values, searchValue) {
let low = 0;
let high = values.length - 1;
let match;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
const midValue = values[mid];
if (midValue < searchValue) low = mid + 1;
else if (midValue > searchValue) high = mid - 1;
else {
low = mid;
high = mid;
match = mid;
break;
}
}
const finalLow = Math.max(Math.min(low, high, values.length - 1), 0);
const finalHigh = Math.min(Math.max(low, high, 0), values.length - 1);
return {
low: finalLow,
high: finalHigh,
match
};
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+source-map@2.4.23/node_modules/@volar/source-map/lib/translateOffset.js
var require_translateOffset = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+source-map@2.4.23/node_modules/@volar/source-map/lib/translateOffset.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.translateOffset = translateOffset;
let warned = false;
function translateOffset(start, fromOffsets, toOffsets, fromLengths, toLengths = fromLengths) {
const isSorted = fromOffsets.every((value, index) => index === 0 || fromOffsets[index - 1] <= value);
if (!isSorted) {
for (let i = 0; i < fromOffsets.length; i++) {
const fromOffset = fromOffsets[i];
const fromLength = fromLengths[i];
if (start >= fromOffset && start <= fromOffset + fromLength) {
const toLength = toLengths[i];
const toOffset$1 = toOffsets[i];
let rangeOffset = Math.min(start - fromOffset, toLength);
return toOffset$1 + rangeOffset;
}
}
if (!warned) {
warned = true;
console.warn("fromOffsets should be sorted in ascending order");
}
}
let low = 0;
let high = fromOffsets.length - 1;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
const fromOffset = fromOffsets[mid];
const fromLength = fromLengths[mid];
if (start >= fromOffset && start <= fromOffset + fromLength) {
const toLength = toLengths[mid];
const toOffset$1 = toOffsets[mid];
let rangeOffset = Math.min(start - fromOffset, toLength);
return toOffset$1 + rangeOffset;
} else if (start < fromOffset) high = mid - 1;
else low = mid + 1;
}
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+source-map@2.4.23/node_modules/@volar/source-map/lib/sourceMap.js
var require_sourceMap = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+source-map@2.4.23/node_modules/@volar/source-map/lib/sourceMap.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.SourceMap = void 0;
const binarySearch_1 = require_binarySearch();
const translateOffset_1 = require_translateOffset();
var SourceMap = class {
constructor(mappings) {
this.mappings = mappings;
}
toSourceRange(generatedStart, generatedEnd, fallbackToAnyMatch, filter) {
return this.findMatchingStartEnd(generatedStart, generatedEnd, fallbackToAnyMatch, "generatedOffsets", filter);
}
toGeneratedRange(sourceStart, sourceEnd, fallbackToAnyMatch, filter) {
return this.findMatchingStartEnd(sourceStart, sourceEnd, fallbackToAnyMatch, "sourceOffsets", filter);
}
toSourceLocation(generatedOffset, filter) {
return this.findMatchingOffsets(generatedOffset, "generatedOffsets", filter);
}
toGeneratedLocation(sourceOffset, filter) {
return this.findMatchingOffsets(sourceOffset, "sourceOffsets", filter);
}
*findMatchingOffsets(offset, fromRange, filter) {
const memo = this.getMemoBasedOnRange(fromRange);
if (memo.offsets.length === 0) return;
const { low: start, high: end } = (0, binarySearch_1.binarySearch)(memo.offsets, offset);
const skip = /* @__PURE__ */ new Set();
const toRange$1 = fromRange == "sourceOffsets" ? "generatedOffsets" : "sourceOffsets";
for (let i = start; i <= end; i++) for (const mapping of memo.mappings[i]) {
if (skip.has(mapping)) continue;
skip.add(mapping);
if (filter && !filter(mapping.data)) continue;
const mapped = (0, translateOffset_1.translateOffset)(offset, mapping[fromRange], mapping[toRange$1], getLengths(mapping, fromRange), getLengths(mapping, toRange$1));
if (mapped !== void 0) yield [mapped, mapping];
}
}
*findMatchingStartEnd(start, end, fallbackToAnyMatch, fromRange, filter) {
const toRange$1 = fromRange == "sourceOffsets" ? "generatedOffsets" : "sourceOffsets";
const mappedStarts = [];
let hadMatch = false;
for (const [mappedStart, mapping] of this.findMatchingOffsets(start, fromRange)) {
if (filter && !filter(mapping.data)) continue;
mappedStarts.push([mappedStart, mapping]);
const mappedEnd = (0, translateOffset_1.translateOffset)(end, mapping[fromRange], mapping[toRange$1], getLengths(mapping, fromRange), getLengths(mapping, toRange$1));
if (mappedEnd !== void 0) {
hadMatch = true;
yield [
mappedStart,
mappedEnd,
mapping,
mapping
];
}
}
if (!hadMatch && fallbackToAnyMatch) for (const [mappedStart, mappingStart] of mappedStarts) for (const [mappedEnd, mappingEnd] of this.findMatchingOffsets(end, fromRange)) {
if (filter && !filter(mappingEnd.data) || mappedEnd < mappedStart) continue;
yield [
mappedStart,
mappedEnd,
mappingStart,
mappingEnd
];
break;
}
}
getMemoBasedOnRange(fromRange) {
return fromRange === "sourceOffsets" ? this.sourceCodeOffsetsMemo ??= this.createMemo("sourceOffsets") : this.generatedCodeOffsetsMemo ??= this.createMemo("generatedOffsets");
}
createMemo(key$1) {
const offsetsSet = /* @__PURE__ */ new Set();
for (const mapping of this.mappings) for (let i = 0; i < mapping[key$1].length; i++) {
offsetsSet.add(mapping[key$1][i]);
offsetsSet.add(mapping[key$1][i] + getLengths(mapping, key$1)[i]);
}
const offsets = [...offsetsSet].sort((a, b) => a - b);
const mappings = offsets.map(() => /* @__PURE__ */ new Set());
for (const mapping of this.mappings) for (let i = 0; i < mapping[key$1].length; i++) {
const startIndex = (0, binarySearch_1.binarySearch)(offsets, mapping[key$1][i]).match;
const endIndex = (0, binarySearch_1.binarySearch)(offsets, mapping[key$1][i] + getLengths(mapping, key$1)[i]).match;
for (let i$1 = startIndex; i$1 <= endIndex; i$1++) mappings[i$1].add(mapping);
}
return {
offsets,
mappings
};
}
};
exports.SourceMap = SourceMap;
function getLengths(mapping, key$1) {
return key$1 == "sourceOffsets" ? mapping.lengths : mapping.generatedLengths ?? mapping.lengths;
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+source-map@2.4.23/node_modules/@volar/source-map/index.js
var require_source_map$1 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+source-map@2.4.23/node_modules/@volar/source-map/index.js": ((exports) => {
var __createBinding$11 = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {
enumerable: true,
get: function() {
return m[k];
}
};
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
}));
var __exportStar$11 = exports && exports.__exportStar || function(m, exports$1) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding$11(exports$1, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar$11(require_sourceMap(), exports);
__exportStar$11(require_translateOffset(), exports);
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/lib/editor.js
var require_editor = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/lib/editor.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.isHoverEnabled = isHoverEnabled;
exports.isInlayHintsEnabled = isInlayHintsEnabled;
exports.isCodeLensEnabled = isCodeLensEnabled;
exports.isMonikerEnabled = isMonikerEnabled;
exports.isInlineValueEnabled = isInlineValueEnabled;
exports.isSemanticTokensEnabled = isSemanticTokensEnabled;
exports.isCallHierarchyEnabled = isCallHierarchyEnabled;
exports.isTypeHierarchyEnabled = isTypeHierarchyEnabled;
exports.isRenameEnabled = isRenameEnabled;
exports.isDefinitionEnabled = isDefinitionEnabled;
exports.isTypeDefinitionEnabled = isTypeDefinitionEnabled;
exports.isReferencesEnabled = isReferencesEnabled;
exports.isImplementationEnabled = isImplementationEnabled;
exports.isHighlightEnabled = isHighlightEnabled;
exports.isSymbolsEnabled = isSymbolsEnabled;
exports.isFoldingRangesEnabled = isFoldingRangesEnabled;
exports.isSelectionRangesEnabled = isSelectionRangesEnabled;
exports.isLinkedEditingEnabled = isLinkedEditingEnabled;
exports.isColorEnabled = isColorEnabled;
exports.isDocumentLinkEnabled = isDocumentLinkEnabled;
exports.isDiagnosticsEnabled = isDiagnosticsEnabled;
exports.isCodeActionsEnabled = isCodeActionsEnabled;
exports.isFormattingEnabled = isFormattingEnabled;
exports.isCompletionEnabled = isCompletionEnabled;
exports.isAutoInsertEnabled = isAutoInsertEnabled;
exports.isSignatureHelpEnabled = isSignatureHelpEnabled;
exports.shouldReportDiagnostics = shouldReportDiagnostics;
exports.resolveRenameNewName = resolveRenameNewName;
exports.resolveRenameEditText = resolveRenameEditText;
exports.findOverlapCodeRange = findOverlapCodeRange;
function isHoverEnabled(info) {
return !!info.semantic;
}
function isInlayHintsEnabled(info) {
return !!info.semantic;
}
function isCodeLensEnabled(info) {
return !!info.semantic;
}
function isMonikerEnabled(info) {
return !!info.semantic;
}
function isInlineValueEnabled(info) {
return !!info.semantic;
}
function isSemanticTokensEnabled(info) {
var _info$semantic$should, _info$semantic;
return typeof info.semantic === "object" ? ((_info$semantic$should = (_info$semantic = info.semantic).shouldHighlight) === null || _info$semantic$should === void 0 ? void 0 : _info$semantic$should.call(_info$semantic)) ?? true : !!info.semantic;
}
function isCallHierarchyEnabled(info) {
return !!info.navigation;
}
function isTypeHierarchyEnabled(info) {
return !!info.navigation;
}
function isRenameEnabled(info) {
var _info$navigation$shou, _info$navigation;
return typeof info.navigation === "object" ? ((_info$navigation$shou = (_info$navigation = info.navigation).shouldRename) === null || _info$navigation$shou === void 0 ? void 0 : _info$navigation$shou.call(_info$navigation)) ?? true : !!info.navigation;
}
function isDefinitionEnabled(info) {
return !!info.navigation;
}
function isTypeDefinitionEnabled(info) {
return !!info.navigation;
}
function isReferencesEnabled(info) {
return !!info.navigation;
}
function isImplementationEnabled(info) {
return !!info.navigation;
}
function isHighlightEnabled(info) {
var _info$navigation$shou2, _info$navigation2;
return typeof info.navigation === "object" ? ((_info$navigation$shou2 = (_info$navigation2 = info.navigation).shouldHighlight) === null || _info$navigation$shou2 === void 0 ? void 0 : _info$navigation$shou2.call(_info$navigation2)) ?? true : !!info.navigation;
}
function isSymbolsEnabled(info) {
return !!info.structure;
}
function isFoldingRangesEnabled(info) {
return !!info.structure;
}
function isSelectionRangesEnabled(info) {
return !!info.structure;
}
function isLinkedEditingEnabled(info) {
return !!info.structure;
}
function isColorEnabled(info) {
return !!info.structure;
}
function isDocumentLinkEnabled(info) {
return !!info.structure;
}
function isDiagnosticsEnabled(info) {
return !!info.verification;
}
function isCodeActionsEnabled(info) {
return !!info.verification;
}
function isFormattingEnabled(info) {
return !!info.format;
}
function isCompletionEnabled(info) {
return !!info.completion;
}
function isAutoInsertEnabled(info) {
return !!info.completion;
}
function isSignatureHelpEnabled(info) {
return !!info.completion;
}
function shouldReportDiagnostics(info, source$1, code) {
var _info$verification$sh, _info$verification;
return typeof info.verification === "object" ? ((_info$verification$sh = (_info$verification = info.verification).shouldReport) === null || _info$verification$sh === void 0 ? void 0 : _info$verification$sh.call(_info$verification, source$1, code)) ?? true : !!info.verification;
}
function resolveRenameNewName(newName, info) {
var _info$navigation$reso, _info$navigation3;
return typeof info.navigation === "object" ? ((_info$navigation$reso = (_info$navigation3 = info.navigation).resolveRenameNewName) === null || _info$navigation$reso === void 0 ? void 0 : _info$navigation$reso.call(_info$navigation3, newName)) ?? newName : newName;
}
function resolveRenameEditText(text, info) {
var _info$navigation$reso2, _info$navigation4;
return typeof info.navigation === "object" ? ((_info$navigation$reso2 = (_info$navigation4 = info.navigation).resolveRenameEditText) === null || _info$navigation$reso2 === void 0 ? void 0 : _info$navigation$reso2.call(_info$navigation4, text)) ?? text : text;
}
function findOverlapCodeRange(start, end, map$1, filter) {
let mappedStart;
let mappedEnd;
for (const [mapped, mapping] of map$1.toGeneratedLocation(start)) if (filter(mapping.data)) {
mappedStart = mapped;
break;
}
for (const [mapped, mapping] of map$1.toGeneratedLocation(end)) if (filter(mapping.data)) {
mappedEnd = mapped;
break;
}
if (mappedStart === void 0 || mappedEnd === void 0) {
for (const mapping of map$1.mappings) if (filter(mapping.data)) {
const mappingStart = mapping.sourceOffsets[0];
const mappingEnd = mapping.sourceOffsets[mapping.sourceOffsets.length - 1] + mapping.lengths[mapping.lengths.length - 1];
const overlap = getOverlapRange(start, end, mappingStart, mappingEnd);
if (overlap) {
const curMappedStart = overlap.start - mappingStart + mapping.generatedOffsets[0];
const lastGeneratedLength = (mapping.generatedLengths ?? mapping.lengths)[mapping.generatedOffsets.length - 1];
const curMappedEndOffset = Math.min(overlap.end - mapping.sourceOffsets[mapping.sourceOffsets.length - 1], lastGeneratedLength);
const curMappedEnd = mapping.generatedOffsets[mapping.generatedOffsets.length - 1] + curMappedEndOffset;
mappedStart = mappedStart === void 0 ? curMappedStart : Math.min(mappedStart, curMappedStart);
mappedEnd = mappedEnd === void 0 ? curMappedEnd : Math.max(mappedEnd, curMappedEnd);
}
}
}
if (mappedStart !== void 0 && mappedEnd !== void 0) return {
start: mappedStart,
end: mappedEnd
};
}
function getOverlapRange(range1Start, range1End, range2Start, range2End) {
const start = Math.max(range1Start, range2Start);
const end = Math.min(range1End, range2End);
if (start > end) return void 0;
return {
start,
end
};
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/lib/linkedCodeMap.js
var require_linkedCodeMap = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/lib/linkedCodeMap.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkedCodeMap = void 0;
const source_map_1$1 = require_source_map$1();
var LinkedCodeMap = class extends source_map_1$1.SourceMap {
*getLinkedOffsets(start) {
for (const mapped of this.toGeneratedLocation(start)) yield mapped[0];
for (const mapped of this.toSourceLocation(start)) yield mapped[0];
}
};
exports.LinkedCodeMap = LinkedCodeMap;
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/lib/types.js
var require_types$2 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/lib/types.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/lib/utils.js
var require_utils$1 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/lib/utils.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileMap = void 0;
var FileMap = class extends Map {
constructor(caseSensitive) {
super();
this.caseSensitive = caseSensitive;
this.originalFileNames = /* @__PURE__ */ new Map();
}
keys() {
return this.originalFileNames.values();
}
get(key$1) {
return super.get(this.normalizeId(key$1));
}
has(key$1) {
return super.has(this.normalizeId(key$1));
}
set(key$1, value) {
this.originalFileNames.set(this.normalizeId(key$1), key$1);
return super.set(this.normalizeId(key$1), value);
}
delete(key$1) {
this.originalFileNames.delete(this.normalizeId(key$1));
return super.delete(this.normalizeId(key$1));
}
clear() {
this.originalFileNames.clear();
return super.clear();
}
normalizeId(id) {
return this.caseSensitive ? id : id.toLowerCase();
}
};
exports.FileMap = FileMap;
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/index.js
var require_language_core = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+language-core@2.4.23/node_modules/@volar/language-core/index.js": ((exports) => {
var __createBinding$10 = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {
enumerable: true,
get: function() {
return m[k];
}
};
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
}));
var __exportStar$10 = exports && exports.__exportStar || function(m, exports$1) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding$10(exports$1, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultMapperFactory = exports.SourceMap = void 0;
exports.createLanguage = createLanguage;
exports.forEachEmbeddedCode = forEachEmbeddedCode;
var source_map_1 = require_source_map$1();
Object.defineProperty(exports, "SourceMap", {
enumerable: true,
get: function() {
return source_map_1.SourceMap;
}
});
__exportStar$10(require_editor(), exports);
__exportStar$10(require_linkedCodeMap(), exports);
__exportStar$10(require_types$2(), exports);
__exportStar$10(require_utils$1(), exports);
const source_map_2 = require_source_map$1();
const linkedCodeMap_1 = require_linkedCodeMap();
const defaultMapperFactory = (mappings) => new source_map_2.SourceMap(mappings);
exports.defaultMapperFactory = defaultMapperFactory;
function createLanguage(plugins, scriptRegistry, sync, onAssociationDirty) {
const virtualCodeToSourceScriptMap = /* @__PURE__ */ new WeakMap();
const virtualCodeToSourceMap = /* @__PURE__ */ new WeakMap();
const virtualCodeToLinkedCodeMap = /* @__PURE__ */ new WeakMap();
const language = {
mapperFactory: exports.defaultMapperFactory,
plugins,
scripts: {
fromVirtualCode(virtualCode) {
return virtualCodeToSourceScriptMap.get(virtualCode);
},
get(id, includeFsFiles = true, shouldRegister = false) {
sync(id, includeFsFiles, shouldRegister);
const result = scriptRegistry.get(id);
if (result === null || result === void 0 ? void 0 : result.isAssociationDirty) this.set(id, result.snapshot, result.languageId);
return scriptRegistry.get(id);
},
set(id, snapshot, languageId, _plugins = plugins) {
if (!languageId) for (const plugin of plugins) {
var _plugin$getLanguageId;
languageId = (_plugin$getLanguageId = plugin.getLanguageId) === null || _plugin$getLanguageId === void 0 ? void 0 : _plugin$getLanguageId.call(plugin, id);
if (languageId) break;
}
if (!languageId) {
console.warn(`languageId not found for ${id}`);
return;
}
let associatedOnly = false;
for (const plugin of plugins) {
var _plugin$isAssociatedF;
if ((_plugin$isAssociatedF = plugin.isAssociatedFileOnly) === null || _plugin$isAssociatedF === void 0 ? void 0 : _plugin$isAssociatedF.call(plugin, id, languageId)) {
associatedOnly = true;
break;
}
}
if (scriptRegistry.has(id)) {
const sourceScript = scriptRegistry.get(id);
if (sourceScript.languageId !== languageId || sourceScript.associatedOnly !== associatedOnly) {
this.delete(id);
triggerTargetsDirty(sourceScript);
return this.set(id, snapshot, languageId);
} else if (associatedOnly) {
if (sourceScript.snapshot !== snapshot) {
sourceScript.snapshot = snapshot;
triggerTargetsDirty(sourceScript);
}
} else if (sourceScript.isAssociationDirty || sourceScript.snapshot !== snapshot) {
if (sourceScript.snapshot !== snapshot) {
sourceScript.snapshot = snapshot;
triggerTargetsDirty(sourceScript);
}
const codegenCtx = prepareCreateVirtualCode(sourceScript);
if (sourceScript.generated) {
const { updateVirtualCode, createVirtualCode: createVirtualCode$1 } = sourceScript.generated.languagePlugin;
const newVirtualCode = updateVirtualCode ? updateVirtualCode(id, sourceScript.generated.root, snapshot, codegenCtx) : createVirtualCode$1 === null || createVirtualCode$1 === void 0 ? void 0 : createVirtualCode$1(id, languageId, snapshot, codegenCtx);
if (newVirtualCode) {
sourceScript.generated.root = newVirtualCode;
sourceScript.generated.embeddedCodes.clear();
for (const code of forEachEmbeddedCode(sourceScript.generated.root)) {
virtualCodeToSourceScriptMap.set(code, sourceScript);
sourceScript.generated.embeddedCodes.set(code.id, code);
}
return sourceScript;
} else {
this.delete(id);
return;
}
}
} else return sourceScript;
} else {
const sourceScript = {
id,
languageId,
snapshot,
associatedIds: /* @__PURE__ */ new Set(),
targetIds: /* @__PURE__ */ new Set(),
associatedOnly
};
scriptRegistry.set(id, sourceScript);
if (associatedOnly) return sourceScript;
for (const languagePlugin of _plugins) {
var _languagePlugin$creat;
const virtualCode = (_languagePlugin$creat = languagePlugin.createVirtualCode) === null || _languagePlugin$creat === void 0 ? void 0 : _languagePlugin$creat.call(languagePlugin, id, languageId, snapshot, prepareCreateVirtualCode(sourceScript));
if (virtualCode) {
sourceScript.generated = {
root: virtualCode,
languagePlugin,
embeddedCodes: /* @__PURE__ */ new Map()
};
for (const code of forEachEmbeddedCode(virtualCode)) {
virtualCodeToSourceScriptMap.set(code, sourceScript);
sourceScript.generated.embeddedCodes.set(code.id, code);
}
break;
}
}
return sourceScript;
}
},
delete(id) {
const sourceScript = scriptRegistry.get(id);
if (sourceScript) {
var _sourceScript$generat, _sourceScript$generat2, _sourceScript$generat3;
(_sourceScript$generat = sourceScript.generated) === null || _sourceScript$generat === void 0 || (_sourceScript$generat3 = (_sourceScript$generat2 = _sourceScript$generat.languagePlugin).disposeVirtualCode) === null || _sourceScript$generat3 === void 0 || _sourceScript$generat3.call(_sourceScript$generat2, id, sourceScript.generated.root);
scriptRegistry.delete(id);
triggerTargetsDirty(sourceScript);
}
}
},
maps: {
get(virtualCode, sourceScript) {
let mapCache = virtualCodeToSourceMap.get(virtualCode.snapshot);
if (!mapCache) virtualCodeToSourceMap.set(virtualCode.snapshot, mapCache = /* @__PURE__ */ new WeakMap());
if (!mapCache.has(sourceScript.snapshot)) {
var _virtualCode$associat;
const mappings = ((_virtualCode$associat = virtualCode.associatedScriptMappings) === null || _virtualCode$associat === void 0 ? void 0 : _virtualCode$associat.get(sourceScript.id)) ?? virtualCode.mappings;
mapCache.set(sourceScript.snapshot, language.mapperFactory(mappings));
}
return mapCache.get(sourceScript.snapshot);
},
*forEach(virtualCode) {
const sourceScript = virtualCodeToSourceScriptMap.get(virtualCode);
yield [sourceScript, this.get(virtualCode, sourceScript)];
if (virtualCode.associatedScriptMappings) for (const [relatedScriptId] of virtualCode.associatedScriptMappings) {
const relatedSourceScript = scriptRegistry.get(relatedScriptId);
if (relatedSourceScript) yield [relatedSourceScript, this.get(virtualCode, relatedSourceScript)];
}
}
},
linkedCodeMaps: { get(virtualCode) {
const sourceScript = virtualCodeToSourceScriptMap.get(virtualCode);
let mapCache = virtualCodeToLinkedCodeMap.get(virtualCode.snapshot);
if ((mapCache === null || mapCache === void 0 ? void 0 : mapCache[0]) !== sourceScript.snapshot) virtualCodeToLinkedCodeMap.set(virtualCode.snapshot, mapCache = [sourceScript.snapshot, virtualCode.linkedCodeMappings ? new linkedCodeMap_1.LinkedCodeMap(virtualCode.linkedCodeMappings) : void 0]);
return mapCache[1];
} }
};
return language;
function triggerTargetsDirty(sourceScript) {
sourceScript.targetIds.forEach((id) => {
const sourceScript$1 = scriptRegistry.get(id);
if (sourceScript$1) {
sourceScript$1.isAssociationDirty = true;
onAssociationDirty === null || onAssociationDirty === void 0 || onAssociationDirty(sourceScript$1.id);
}
});
}
function prepareCreateVirtualCode(sourceScript) {
for (const id of sourceScript.associatedIds) {
var _scriptRegistry$get;
(_scriptRegistry$get = scriptRegistry.get(id)) === null || _scriptRegistry$get === void 0 || _scriptRegistry$get.targetIds.delete(sourceScript.id);
}
sourceScript.associatedIds.clear();
sourceScript.isAssociationDirty = false;
return { getAssociatedScript(id) {
sync(id, true, true);
const relatedSourceScript = scriptRegistry.get(id);
if (relatedSourceScript) {
relatedSourceScript.targetIds.add(sourceScript.id);
sourceScript.associatedIds.add(relatedSourceScript.id);
}
return relatedSourceScript;
} };
}
}
function* forEachEmbeddedCode(virtualCode) {
yield virtualCode;
if (virtualCode.embeddedCodes) for (const embeddedCode of virtualCode.embeddedCodes) yield* forEachEmbeddedCode(embeddedCode);
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/node/dedupe.js
var require_dedupe$1 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/node/dedupe.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.dedupeDocumentSpans = dedupeDocumentSpans;
function dedupeDocumentSpans(items) {
return dedupe$10(items, (item) => [
item.fileName,
item.textSpan.start,
item.textSpan.length
].join(":"));
}
function dedupe$10(items, getKey) {
const map$1 = /* @__PURE__ */ new Map();
for (const item of items.reverse()) map$1.set(getKey(item), item);
return [...map$1.values()];
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/node/utils.js
var require_utils = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/node/utils.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.getServiceScript = getServiceScript;
function getServiceScript(language, fileName) {
const sourceScript = language.scripts.get(fileName);
if (sourceScript === null || sourceScript === void 0 ? void 0 : sourceScript.targetIds.size) for (const targetId of sourceScript.targetIds) {
const targetScript = language.scripts.get(targetId);
if (targetScript === null || targetScript === void 0 ? void 0 : targetScript.generated) {
var _targetScript$generat;
const serviceScript = (_targetScript$generat = targetScript.generated.languagePlugin.typescript) === null || _targetScript$generat === void 0 ? void 0 : _targetScript$generat.getServiceScript(targetScript.generated.root);
if (serviceScript) return [
serviceScript,
targetScript,
sourceScript
];
}
}
if (sourceScript === null || sourceScript === void 0 ? void 0 : sourceScript.associatedOnly) return [
void 0,
sourceScript,
sourceScript
];
if (sourceScript === null || sourceScript === void 0 ? void 0 : sourceScript.generated) {
var _sourceScript$generat;
const serviceScript = (_sourceScript$generat = sourceScript.generated.languagePlugin.typescript) === null || _sourceScript$generat === void 0 ? void 0 : _sourceScript$generat.getServiceScript(sourceScript.generated.root);
if (serviceScript) return [
serviceScript,
sourceScript,
sourceScript
];
}
return [
void 0,
void 0,
void 0
];
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/node/transform.js
var require_transform$1 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/node/transform.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformCallHierarchyItem = transformCallHierarchyItem;
exports.transformDiagnostic = transformDiagnostic$1;
exports.fillSourceFileText = fillSourceFileText;
exports.transformFileTextChanges = transformFileTextChanges;
exports.transformDocumentSpan = transformDocumentSpan;
exports.transformSpan = transformSpan;
exports.transformTextChange = transformTextChange;
exports.transformTextSpan = transformTextSpan;
exports.toSourceOffset = toSourceOffset;
exports.toSourceRanges = toSourceRanges;
exports.toSourceOffsets = toSourceOffsets;
exports.toGeneratedRange = toGeneratedRange;
exports.toGeneratedRanges = toGeneratedRanges;
exports.toGeneratedOffset = toGeneratedOffset;
exports.toGeneratedOffsets = toGeneratedOffsets;
exports.getMappingOffset = getMappingOffset;
const language_core_1$30 = require_language_core();
const utils_1$2 = require_utils();
const transformedDiagnostics = /* @__PURE__ */ new WeakMap();
const transformedSourceFile = /* @__PURE__ */ new WeakSet();
/**
* This file contains a number of facilities for transforming `ts.Diagnostic`s returned
* from the base TypeScript LanguageService, which reference locations in generated
* TS code (e.g. the TypeScript codegen'd from the script portion of a .vue file) into locations
* in the script portion of the .vue file.
*/
function transformCallHierarchyItem(language, item, fallbackToAnyMatch, filter) {
const span = transformSpan(language, item.file, item.span, fallbackToAnyMatch, filter);
const selectionSpan = transformSpan(language, item.file, item.selectionSpan, fallbackToAnyMatch, filter);
return {
...item,
file: (span === null || span === void 0 ? void 0 : span.fileName) ?? item.file,
span: (span === null || span === void 0 ? void 0 : span.textSpan) ?? {
start: 0,
length: 0
},
selectionSpan: (selectionSpan === null || selectionSpan === void 0 ? void 0 : selectionSpan.textSpan) ?? {
start: 0,
length: 0
}
};
}
function transformDiagnostic$1(language, diagnostic, program, isTsc) {
if (!transformedDiagnostics.has(diagnostic)) {
transformedDiagnostics.set(diagnostic, void 0);
const { relatedInformation } = diagnostic;
if (relatedInformation) diagnostic.relatedInformation = relatedInformation.map((d) => transformDiagnostic$1(language, d, program, isTsc)).filter((d) => !!d);
if (diagnostic.file !== void 0 && diagnostic.start !== void 0 && diagnostic.length !== void 0) {
const [serviceScript] = (0, utils_1$2.getServiceScript)(language, diagnostic.file.fileName);
if (serviceScript) {
const [sourceSpanFileName, sourceSpan] = transformTextSpan(void 0, language, serviceScript, {
start: diagnostic.start,
length: diagnostic.length
}, true, (data) => (0, language_core_1$30.shouldReportDiagnostics)(data, String(diagnostic.source), String(diagnostic.code))) ?? [];
const actualDiagnosticFile = sourceSpanFileName ? diagnostic.file.fileName === sourceSpanFileName ? diagnostic.file : program === null || program === void 0 ? void 0 : program.getSourceFile(sourceSpanFileName) : void 0;
if (sourceSpan && actualDiagnosticFile) {
if (isTsc) fillSourceFileText(language, diagnostic.file);
transformedDiagnostics.set(diagnostic, {
...diagnostic,
file: actualDiagnosticFile,
start: sourceSpan.start,
length: sourceSpan.length
});
}
} else transformedDiagnostics.set(diagnostic, diagnostic);
} else transformedDiagnostics.set(diagnostic, diagnostic);
}
return transformedDiagnostics.get(diagnostic);
}
function fillSourceFileText(language, sourceFile) {
if (transformedSourceFile.has(sourceFile)) return;
transformedSourceFile.add(sourceFile);
const [serviceScript] = (0, utils_1$2.getServiceScript)(language, sourceFile.fileName);
if (serviceScript && !serviceScript.preventLeadingOffset) {
const sourceScript = language.scripts.fromVirtualCode(serviceScript.code);
sourceFile.text = sourceScript.snapshot.getText(0, sourceScript.snapshot.getLength()) + sourceFile.text.substring(sourceScript.snapshot.getLength());
}
}
function transformFileTextChanges(language, changes, fallbackToAnyMatch, filter) {
const changesPerFile = {};
const newFiles = /* @__PURE__ */ new Set();
for (const fileChanges of changes) {
const [_, source$1] = (0, utils_1$2.getServiceScript)(language, fileChanges.fileName);
if (source$1) fileChanges.textChanges.forEach((c$1) => {
const { fileName, textSpan } = transformSpan(language, fileChanges.fileName, c$1.span, fallbackToAnyMatch, filter) ?? {};
if (fileName && textSpan) (changesPerFile[fileName] ?? (changesPerFile[fileName] = [])).push({
...c$1,
span: textSpan
});
});
else {
const list = changesPerFile[fileChanges.fileName] ?? (changesPerFile[fileChanges.fileName] = []);
fileChanges.textChanges.forEach((c$1) => {
list.push(c$1);
});
if (fileChanges.isNewFile) newFiles.add(fileChanges.fileName);
}
}
const result = [];
for (const fileName in changesPerFile) result.push({
fileName,
isNewFile: newFiles.has(fileName),
textChanges: changesPerFile[fileName]
});
return result;
}
function transformDocumentSpan(language, documentSpan, fallbackToAnyMatch, filter, shouldFallback) {
let textSpan = transformSpan(language, documentSpan.fileName, documentSpan.textSpan, fallbackToAnyMatch, filter);
if (!textSpan && shouldFallback) textSpan = {
fileName: documentSpan.fileName,
textSpan: {
start: 0,
length: 0
}
};
if (!textSpan) return;
const contextSpan = transformSpan(language, documentSpan.fileName, documentSpan.contextSpan, fallbackToAnyMatch, filter);
const originalTextSpan = transformSpan(language, documentSpan.originalFileName, documentSpan.originalTextSpan, fallbackToAnyMatch, filter);
const originalContextSpan = transformSpan(language, documentSpan.originalFileName, documentSpan.originalContextSpan, fallbackToAnyMatch, filter);
return {
...documentSpan,
fileName: textSpan.fileName,
textSpan: textSpan.textSpan,
contextSpan: contextSpan === null || contextSpan === void 0 ? void 0 : contextSpan.textSpan,
originalFileName: originalTextSpan === null || originalTextSpan === void 0 ? void 0 : originalTextSpan.fileName,
originalTextSpan: originalTextSpan === null || originalTextSpan === void 0 ? void 0 : originalTextSpan.textSpan,
originalContextSpan: originalContextSpan === null || originalContextSpan === void 0 ? void 0 : originalContextSpan.textSpan
};
}
function transformSpan(language, fileName, textSpan, fallbackToAnyMatch, filter) {
if (!fileName || !textSpan) return;
const [serviceScript] = (0, utils_1$2.getServiceScript)(language, fileName);
if (serviceScript) {
const [sourceSpanFileName, sourceSpan] = transformTextSpan(void 0, language, serviceScript, textSpan, fallbackToAnyMatch, filter) ?? [];
if (sourceSpan && sourceSpanFileName) return {
fileName: sourceSpanFileName,
textSpan: sourceSpan
};
} else return {
fileName,
textSpan
};
}
function transformTextChange(sourceScript, language, serviceScript, textChange, fallbackToAnyMatch, filter) {
const [sourceSpanFileName, sourceSpan] = transformTextSpan(sourceScript, language, serviceScript, textChange.span, fallbackToAnyMatch, filter) ?? [];
if (sourceSpan && sourceSpanFileName) return [sourceSpanFileName, {
newText: textChange.newText,
span: sourceSpan
}];
return void 0;
}
function transformTextSpan(sourceScript, language, serviceScript, textSpan, fallbackToAnyMatch, filter) {
const start = textSpan.start;
const end = textSpan.start + textSpan.length;
for (const [fileName, sourceStart, sourceEnd] of toSourceRanges(sourceScript, language, serviceScript, start, end, fallbackToAnyMatch, filter)) return [fileName, {
start: sourceStart,
length: sourceEnd - sourceStart
}];
}
function toSourceOffset(sourceScript, language, serviceScript, position, filter) {
for (const source$1 of toSourceOffsets(sourceScript, language, serviceScript, position, filter)) return source$1;
}
function* toSourceRanges(sourceScript, language, serviceScript, start, end, fallbackToAnyMatch, filter) {
if (sourceScript) {
const map$1 = language.maps.get(serviceScript.code, sourceScript);
for (const [sourceStart, sourceEnd] of map$1.toSourceRange(start - getMappingOffset(language, serviceScript), end - getMappingOffset(language, serviceScript), fallbackToAnyMatch, filter)) yield [
sourceScript.id,
sourceStart,
sourceEnd
];
} else for (const [sourceScript$1, map$1] of language.maps.forEach(serviceScript.code)) for (const [sourceStart, sourceEnd] of map$1.toSourceRange(start - getMappingOffset(language, serviceScript), end - getMappingOffset(language, serviceScript), fallbackToAnyMatch, filter)) yield [
sourceScript$1.id,
sourceStart,
sourceEnd
];
}
function* toSourceOffsets(sourceScript, language, serviceScript, position, filter) {
if (sourceScript) {
const map$1 = language.maps.get(serviceScript.code, sourceScript);
for (const [sourceOffset, mapping] of map$1.toSourceLocation(position - getMappingOffset(language, serviceScript))) if (filter(mapping.data)) yield [sourceScript.id, sourceOffset];
} else for (const [sourceScript$1, map$1] of language.maps.forEach(serviceScript.code)) for (const [sourceOffset, mapping] of map$1.toSourceLocation(position - getMappingOffset(language, serviceScript))) if (filter(mapping.data)) yield [sourceScript$1.id, sourceOffset];
}
function toGeneratedRange(language, serviceScript, sourceScript, start, end, filter) {
for (const result of toGeneratedRanges(language, serviceScript, sourceScript, start, end, filter)) return result;
}
function* toGeneratedRanges(language, serviceScript, sourceScript, start, end, filter) {
const map$1 = language.maps.get(serviceScript.code, sourceScript);
for (const [generateStart, generateEnd] of map$1.toGeneratedRange(start, end, true, filter)) yield [generateStart + getMappingOffset(language, serviceScript), generateEnd + getMappingOffset(language, serviceScript)];
}
function toGeneratedOffset(language, serviceScript, sourceScript, position, filter) {
for (const [generateOffset] of toGeneratedOffsets(language, serviceScript, sourceScript, position, filter)) return generateOffset;
}
function* toGeneratedOffsets(language, serviceScript, sourceScript, position, filter) {
const map$1 = language.maps.get(serviceScript.code, sourceScript);
for (const [generateOffset, mapping] of map$1.toGeneratedLocation(position)) if (filter(mapping.data)) yield [generateOffset + getMappingOffset(language, serviceScript), mapping];
}
function getMappingOffset(language, serviceScript) {
if (serviceScript.preventLeadingOffset) return 0;
const sourceScript = language.scripts.fromVirtualCode(serviceScript.code);
return sourceScript.snapshot.getLength();
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/node/proxyLanguageService.js
var require_proxyLanguageService = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@volar+typescript@2.4.23/node_modules/@volar/typescript/lib/node/proxyLanguageService.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.createProxyLanguageService = createProxyLanguageService;
const language_core_1$29 = require_language_core();
const dedupe_1 = require_dedupe$1();
const transform_1$16 = require_transform$1();
const utils_1$1 = require_utils();
const windowsPathReg = /\\/g;
/**
* Creates and returns a Proxy around the base TypeScript LanguageService.
*
* This is used by the Volar TypeScript Plugin (which can be created by `createLanguageServicePlugin`
* and `createAsyncLanguageServicePlugin`) as an adapter layer between the TypeScript Language Service
* plugin API (see https://github.com/microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin)
* and a Volar `Language`.
*
* Once the `initialize` method is called, the proxy will begin intercepting requests and
* enhancing the default behavior of the LanguageService with enhancements based on
* the Volar `Language` that has been passed to `initialize`.
*/
function createProxyLanguageService(languageService) {
const proxyCache = /* @__PURE__ */ new Map();
let getProxyMethod;
return {
initialize(language) {
getProxyMethod = (target, p) => {
switch (p) {
case "getNavigationTree": return getNavigationTree(language, target[p]);
case "getOutliningSpans": return getOutliningSpans(language, target[p]);
case "getFormattingEditsForDocument": return getFormattingEditsForDocument(language, target[p]);
case "getFormattingEditsForRange": return getFormattingEditsForRange(language, target[p]);
case "getFormattingEditsAfterKeystroke": return getFormattingEditsAfterKeystroke(language, target[p]);
case "getEditsForFileRename": return getEditsForFileRename(language, target[p]);
case "getLinkedEditingRangeAtPosition": return getLinkedEditingRangeAtPosition(language, target[p]);
case "prepareCallHierarchy": return prepareCallHierarchy(language, target[p]);
case "provideCallHierarchyIncomingCalls": return provideCallHierarchyIncomingCalls(language, target[p]);
case "provideCallHierarchyOutgoingCalls": return provideCallHierarchyOutgoingCalls(language, target[p]);
case "organizeImports": return organizeImports(language, target[p]);
case "getQuickInfoAtPosition": return getQuickInfoAtPosition(language, target[p]);
case "getSignatureHelpItems": return getSignatureHelpItems(language, target[p]);
case "getDocumentHighlights": return getDocumentHighlights(language, target[p]);
case "getApplicableRefactors": return getApplicableRefactors(language, target[p]);
case "getEditsForRefactor": return getEditsForRefactor(language, target[p]);
case "getCombinedCodeFix": return getCombinedCodeFix(language, target[p]);
case "getRenameInfo": return getRenameInfo(language, target[p]);
case "getCodeFixesAtPosition": return getCodeFixesAtPosition(language, target[p]);
case "getEncodedSemanticClassifications": return getEncodedSemanticClassifications(language, target[p]);
case "getSyntacticDiagnostics": return getSyntacticDiagnostics(language, languageService, target[p]);
case "getSemanticDiagnostics": return getSemanticDiagnostics(language, languageService, target[p]);
case "getSuggestionDiagnostics": return getSuggestionDiagnostics(language, languageService, target[p]);
case "getDefinitionAndBoundSpan": return getDefinitionAndBoundSpan(language, target[p]);
case "findReferences": return findReferences(language, target[p]);
case "getDefinitionAtPosition": return getDefinitionAtPosition(language, target[p]);
case "getTypeDefinitionAtPosition": return getTypeDefinitionAtPosition(language, target[p]);
case "getImplementationAtPosition": return getImplementationAtPosition(language, target[p]);
case "findRenameLocations": return findRenameLocations(language, target[p]);
case "getReferencesAtPosition": return getReferencesAtPosition(language, target[p]);
case "getCompletionsAtPosition": return getCompletionsAtPosition(language, target[p]);
case "getCompletionEntryDetails": return getCompletionEntryDetails(language, target[p]);
case "provideInlayHints": return provideInlayHints(language, target[p]);
case "getFileReferences": return getFileReferences(language, target[p]);
case "getNavigateToItems": return getNavigateToItems(language, target[p]);
}
};
},
proxy: new Proxy(languageService, {
get(target, p, receiver) {
if (getProxyMethod) {
if (!proxyCache.has(p)) proxyCache.set(p, getProxyMethod(target, p));
const proxyMethod = proxyCache.get(p);
if (proxyMethod) return proxyMethod;
}
return Reflect.get(target, p, receiver);
},
set(target, p, value, receiver) {
return Reflect.set(target, p, value, receiver);
}
})
};
}
function getNavigationTree(language, getNavigationTree$1) {
return (filePath) => {
const fileName = filePath.replace(windowsPathReg, "/");
const [serviceScript, targetScript] = (0, utils_1$1.getServiceScript)(language, fileName);
if (serviceScript || (targetScript === null || targetScript === void 0 ? void 0 : targetScript.associatedOnly)) {
const tree = getNavigationTree$1(targetScript.id);
tree.childItems = void 0;
return tree;
} else return getNavigationTree$1(fileName);
};
}
function getOutliningSpans(language, getOutliningSpans$1) {
return (filePath) => {
const fileName = filePath.replace(windowsPathReg, "/");
const [serviceScript, targetScript] = (0, utils_1$1.getServiceScript)(languag