@arkts/language-server
Version:
ArkTS Language Server.
1,175 lines (1,157 loc) • 1.31 MB
JavaScript
import { __commonJS, __esm, __export, __require, __toCommonJS, __toDynamicImportESM, __toESM, require_typescript as require_typescript$1 } from "./typescript-B2VoCBU6.mjs";
import { createRequire } from "node:module";
import process$1 from "node:process";
import * as path$1 from "node:path";
import path, { sep } from "node:path";
import { formatWithOptions } from "node:util";
import * as fs$1 from "node:fs";
import fs from "node:fs";
//#region ../../node_modules/.pnpm/muggle-string@0.4.1/node_modules/muggle-string/out/binarySearch.js
var require_binarySearch$1 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/muggle-string@0.4.1/node_modules/muggle-string/out/binarySearch.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
function binarySearch$1(offsets, start) {
let low = 0;
let high = offsets.length - 1;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
const midValue = offsets[mid];
if (midValue < start) low = mid + 1;
else if (midValue > start) high = mid - 1;
else {
low = mid;
high = mid;
break;
}
}
return Math.max(Math.min(low, high, offsets.length - 1), 0);
}
exports.binarySearch = binarySearch$1;
}) });
//#endregion
//#region ../../node_modules/.pnpm/muggle-string@0.4.1/node_modules/muggle-string/out/track.js
var require_track = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/muggle-string@0.4.1/node_modules/muggle-string/out/track.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
let tracking = true;
let stackOffset = 0;
function setTracking(value) {
tracking = value;
}
exports.setTracking = setTracking;
function offsetStack() {
stackOffset++;
}
exports.offsetStack = offsetStack;
function resetOffsetStack() {
stackOffset--;
}
exports.resetOffsetStack = resetOffsetStack;
function track(segments, stacks = []) {
return [new Proxy(segments, { get(target, prop, receiver) {
if (tracking) {
if (prop === "push") return push;
if (prop === "pop") return pop;
if (prop === "shift") return shift;
if (prop === "unshift") return unshift;
if (prop === "splice") return splice;
if (prop === "sort") return sort$3;
if (prop === "reverse") return reverse;
}
return Reflect.get(target, prop, receiver);
} }), stacks];
function push(...items) {
stacks.push({
stack: getStack(),
length: items.length
});
return segments.push(...items);
}
function pop() {
if (stacks.length) {
const last$1 = stacks[stacks.length - 1];
if (last$1.length > 1) last$1.length--;
else stacks.pop();
}
return segments.pop();
}
function shift() {
if (stacks.length) {
const first = stacks[0];
if (first.length > 1) first.length--;
else stacks.shift();
}
return segments.shift();
}
function unshift(...items) {
stacks.unshift({
stack: getStack(),
length: items.length
});
return segments.unshift(...items);
}
function splice(start, deleteCount, ...items) {
if (deleteCount === void 0) deleteCount = segments.length - start;
let _stackStart = 0;
let operateIndex;
for (let i$1 = 0; i$1 < stacks.length; i$1++) {
const stack = stacks[i$1];
const stackStart = _stackStart;
_stackStart = stackStart + stack.length;
if (start >= stackStart) {
operateIndex = i$1 + 1;
const originalLength = stack.length;
stack.length = start - stackStart;
stacks.splice(operateIndex, 0, {
stack: stack.stack,
length: originalLength - stack.length
});
break;
}
}
if (operateIndex === void 0) throw new Error("Invalid splice operation");
let _deleteCount = deleteCount;
for (let i$1 = operateIndex; i$1 < stacks.length; i$1++) {
const stack = stacks[i$1];
while (_deleteCount > 0 && stack.length > 0) {
stack.length--;
_deleteCount--;
}
if (_deleteCount === 0) break;
}
stacks.splice(operateIndex, 0, {
stack: getStack(),
length: items.length
});
return segments.splice(start, deleteCount, ...items);
}
function sort$3(compareFn) {
stacks.splice(0, stacks.length, {
stack: getStack(),
length: segments.length
});
return segments.sort(compareFn);
}
function reverse() {
stacks.splice(0, stacks.length, {
stack: getStack(),
length: segments.length
});
return segments.reverse();
}
}
exports.track = track;
function getStack() {
let source = (/* @__PURE__ */ new Error()).stack.split("\n")[3 + stackOffset].trim();
if (source.endsWith(")")) source = source.slice(source.lastIndexOf("(") + 1, -1);
else source = source.slice(source.lastIndexOf(" ") + 1);
return source;
}
exports.getStack = getStack;
}) });
//#endregion
//#region ../../node_modules/.pnpm/muggle-string@0.4.1/node_modules/muggle-string/out/types.js
var require_types$3 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/muggle-string@0.4.1/node_modules/muggle-string/out/types.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
}) });
//#endregion
//#region ../../node_modules/.pnpm/muggle-string@0.4.1/node_modules/muggle-string/out/index.js
var require_out$1 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/muggle-string@0.4.1/node_modules/muggle-string/out/index.js": ((exports) => {
var __createBinding$12 = exports && exports.__createBinding || (Object.create ? (function(o$1, 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$1, k2, desc);
}) : (function(o$1, m, k, k2) {
if (k2 === void 0) k2 = k;
o$1[k2] = m[k];
}));
var __exportStar$12 = exports && exports.__exportStar || function(m, exports$1) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding$12(exports$1, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.replaceRange = exports.replaceSourceRange = exports.replaceAll = exports.replace = exports.create = exports.toString = exports.getLength = void 0;
const binarySearch_1$1 = require_binarySearch$1();
const track_1 = require_track();
__exportStar$12(require_types$3(), exports);
__exportStar$12(require_track(), exports);
function getLength(segments) {
let length = 0;
for (const segment of segments) length += typeof segment == "string" ? segment.length : segment[0].length;
return length;
}
exports.getLength = getLength;
function toString$1(segments) {
return segments.map((s$1) => typeof s$1 === "string" ? s$1 : s$1[0]).join("");
}
exports.toString = toString$1;
function create$5(source) {
return [[
source,
void 0,
0
]];
}
exports.create = create$5;
function replace(segments, pattern, ...replacers) {
const match = toString$1(segments).match(pattern);
if (match && match.index !== void 0) {
const startOffset = match.index;
const endOffset = startOffset + match[0].length;
(0, track_1.offsetStack)();
replaceRange(segments, startOffset, endOffset, ...replacers.map((replacer) => typeof replacer === "function" ? replacer(match[0]) : replacer));
(0, track_1.resetOffsetStack)();
}
}
exports.replace = replace;
function replaceAll(segments, pattern, ...replacers) {
const str = toString$1(segments);
const allMatch = str.matchAll(pattern);
let length = str.length;
let lengthDiff = 0;
for (const match of allMatch) if (match.index !== void 0) {
const startOffset = match.index + lengthDiff;
const endOffset = startOffset + match[0].length;
(0, track_1.offsetStack)();
replaceRange(segments, startOffset, endOffset, ...replacers.map((replacer) => typeof replacer === "function" ? replacer(match[0]) : replacer));
(0, track_1.resetOffsetStack)();
const newLength = getLength(segments);
lengthDiff += newLength - length;
length = newLength;
}
}
exports.replaceAll = replaceAll;
function replaceSourceRange(segments, source, startOffset, endOffset, ...newSegments) {
for (const segment of segments) {
if (typeof segment === "string") continue;
if (segment[1] === source) {
const segmentStart = segment[2];
const segmentEnd = segment[2] + segment[0].length;
if (segmentStart <= startOffset && segmentEnd >= endOffset) {
const inserts = [];
if (startOffset > segmentStart) inserts.push(trimSegmentEnd(segment, startOffset - segmentStart));
for (const newSegment of newSegments) inserts.push(newSegment);
if (endOffset < segmentEnd) inserts.push(trimSegmentStart(segment, endOffset - segmentEnd));
combineStrings(inserts);
(0, track_1.offsetStack)();
segments.splice(segments.indexOf(segment), 1, ...inserts);
(0, track_1.resetOffsetStack)();
return true;
}
}
}
return false;
}
exports.replaceSourceRange = replaceSourceRange;
function replaceRange(segments, startOffset, endOffset, ...newSegments) {
const offsets = toOffsets(segments);
const startIndex = (0, binarySearch_1$1.binarySearch)(offsets, startOffset);
const endIndex = (0, binarySearch_1$1.binarySearch)(offsets, endOffset);
const startSegment = segments[startIndex];
const endSegment = segments[endIndex];
const startSegmentStart = offsets[startIndex];
const endSegmentStart = offsets[endIndex];
const endSegmentEnd = offsets[endIndex] + (typeof endSegment === "string" ? endSegment.length : endSegment[0].length);
const inserts = [];
if (startOffset > startSegmentStart) inserts.push(trimSegmentEnd(startSegment, startOffset - startSegmentStart));
for (const newSegment of newSegments) inserts.push(newSegment);
if (endOffset < endSegmentEnd) inserts.push(trimSegmentStart(endSegment, endOffset - endSegmentStart));
combineStrings(inserts);
(0, track_1.offsetStack)();
segments.splice(startIndex, endIndex - startIndex + 1, ...inserts);
(0, track_1.resetOffsetStack)();
}
exports.replaceRange = replaceRange;
function combineStrings(segments) {
for (let i$1 = segments.length - 1; i$1 >= 1; i$1--) if (typeof segments[i$1] === "string" && typeof segments[i$1 - 1] === "string") {
segments[i$1 - 1] = segments[i$1 - 1] + segments[i$1];
(0, track_1.offsetStack)();
segments.splice(i$1, 1);
(0, track_1.resetOffsetStack)();
}
}
function trimSegmentEnd(segment, trimEnd) {
if (typeof segment === "string") return segment.slice(0, trimEnd);
return [segment[0].slice(0, trimEnd), ...segment.slice(1)];
}
function trimSegmentStart(segment, trimStart) {
if (typeof segment === "string") return segment.slice(trimStart);
if (trimStart < 0) trimStart += segment[0].length;
return [
segment[0].slice(trimStart),
segment[1],
segment[2] + trimStart,
...segment.slice(3)
];
}
function toOffsets(segments) {
const offsets = [];
let offset = 0;
for (const segment of segments) {
offsets.push(offset);
offset += typeof segment == "string" ? segment.length : segment[0].length;
}
return offsets;
}
}) });
//#endregion
//#region ../../node_modules/.pnpm/ts-macro@0.3.6/node_modules/ts-macro/dist/index.js
var import_out = /* @__PURE__ */ __toESM(require_out$1(), 1);
const t$5 = (e, t$6) => (Array.isArray(e) && (typeof e[1] == `number` && e.splice(1, 0, t$6), typeof e.at(-1) != `object` && e.push(l)), e);
function n(n$1, r$1, i$1, ...a$1) {
return import_out.replaceSourceRange(n$1, void 0, r$1, i$1, ...a$1.map((e) => t$5(e)));
}
function r(n$1, r$1, i$1, a$1, ...o$1) {
return import_out.replaceSourceRange(n$1, r$1, i$1, a$1, ...o$1.map((e) => t$5(e, r$1)));
}
function i(t$6) {
return import_out.toString(t$6);
}
function a(t$6) {
return import_out.getLength(t$6);
}
function o(n$1, r$1, ...i$1) {
return import_out.replace(n$1, r$1, ...i$1.map((e) => typeof e == `function` ? e : t$5(e)));
}
function s(n$1, r$1, ...i$1) {
return import_out.replaceAll(n$1, r$1, ...i$1.map((e) => typeof e == `function` ? e : t$5(e)));
}
function c(e, c$1) {
return new Proxy(e, { get: (l$1, u$1, d$1) => u$1 === `replaceRange` ? (t$6, i$1, ...a$1) => c$1 ? r(e, c$1, t$6, i$1, ...a$1) : n(e, t$6, i$1, ...a$1) : u$1 === `replace` ? (t$6, ...n$1) => o(e, t$6, ...n$1) : u$1 === `replaceAll` ? (t$6, ...n$1) => s(e, t$6, ...n$1) : u$1 === `toString` ? () => i(e) : u$1 === `getLength` ? () => a(e) : u$1 === `push` ? (...n$1) => e.push(...n$1.map((e$1) => t$5(e$1, c$1))) : u$1 === `unshift` ? (...n$1) => e.unshift(...n$1.map((e$1) => t$5(e$1, c$1))) : u$1 === `splice` ? (n$1, r$1, ...i$1) => e.splice(n$1, r$1, ...i$1.map((e$1) => t$5(e$1, c$1))) : Reflect.get(l$1, u$1, d$1) });
}
const l = {
completion: !0,
format: !0,
navigation: !0,
semantic: !0,
structure: !0,
verification: !0
};
var u = class {
id;
mappings;
embeddedCodes = [];
_codes = [];
codes = c(this._codes);
snapshot;
source;
linkedCodeMappings = [];
lang = `tsx`;
constructor(e, t$6, n$1 = `typescriptreact`, r$1 = []) {
this.filePath = e, this.ast = t$6, this.languageId = n$1, this.plugins = r$1, this.lang = n$1 === `typescriptreact` ? `tsx` : `ts`, this.id = `root_${this.lang}`, this.codes.push([
t$6.text,
void 0,
0,
l
]);
for (let e$1 of this.plugins) try {
var _e$resolveVirtualCode;
(_e$resolveVirtualCode = e$1.resolveVirtualCode) === null || _e$resolveVirtualCode === void 0 || _e$resolveVirtualCode.call(e$1, this);
} catch (t$7) {
console.error(`[${e$1.name}]:`, t$7);
}
this.mappings = d(this.codes);
let a$1 = i(this.codes);
this.snapshot = {
getLength: () => a$1.length,
getText: (e$1, t$7) => a$1.slice(e$1, t$7),
getChangeRange() {}
};
}
};
function d(e) {
let n$1 = 0, r$1 = [];
for (let i$1 of e) typeof i$1 == `string` ? n$1 += i$1.length : (t$5(i$1), r$1.push({
sourceOffsets: [i$1[2]],
generatedOffsets: [n$1],
lengths: [i$1[0].length],
data: i$1[3]
}), n$1 += i$1[0].length);
return r$1;
}
//#endregion
//#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$12) {
switch (path$12.split(".").pop()) {
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;
function binarySearch(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$1, fromLengths, toLengths = fromLengths) {
if (!fromOffsets.every((value, index) => index === 0 || fromOffsets[index - 1] <= value)) {
for (let i$1 = 0; i$1 < fromOffsets.length; i$1++) {
const fromOffset = fromOffsets[i$1];
const fromLength = fromLengths[i$1];
if (start >= fromOffset && start <= fromOffset + fromLength) {
const toLength = toLengths[i$1];
const toOffset$1 = toOffsets$1[i$1];
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$1[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 });
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$1 = start; i$1 <= end; i$1++) for (const mapping of memo.mappings[i$1]) {
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) {
const offsetsSet = /* @__PURE__ */ new Set();
for (const mapping of this.mappings) for (let i$1 = 0; i$1 < mapping[key].length; i$1++) {
offsetsSet.add(mapping[key][i$1]);
offsetsSet.add(mapping[key][i$1] + getLengths(mapping, key)[i$1]);
}
const offsets = [...offsetsSet].sort((a$1, b) => a$1 - b);
const mappings = offsets.map(() => /* @__PURE__ */ new Set());
for (const mapping of this.mappings) for (let i$1 = 0; i$1 < mapping[key].length; i$1++) {
const startIndex = (0, binarySearch_1.binarySearch)(offsets, mapping[key][i$1]).match;
const endIndex = (0, binarySearch_1.binarySearch)(offsets, mapping[key][i$1] + getLengths(mapping, key)[i$1]).match;
for (let i$2 = startIndex; i$2 <= endIndex; i$2++) mappings[i$2].add(mapping);
}
return {
offsets,
mappings
};
}
};
exports.SourceMap = SourceMap;
function getLengths(mapping, key) {
return key == "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 = /* @__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$1, 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$1, k2, desc);
}) : (function(o$1, m, k, k2) {
if (k2 === void 0) k2 = k;
o$1[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, 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, 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;
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 });
const source_map_1$1 = require_source_map();
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 });
var FileMap = class extends Map {
constructor(caseSensitive) {
super();
this.caseSensitive = caseSensitive;
this.originalFileNames = /* @__PURE__ */ new Map();
}
keys() {
return this.originalFileNames.values();
}
get(key) {
return super.get(this.normalizeId(key));
}
has(key) {
return super.has(this.normalizeId(key));
}
set(key, value) {
this.originalFileNames.set(this.normalizeId(key), key);
return super.set(this.normalizeId(key), value);
}
delete(key) {
this.originalFileNames.delete(this.normalizeId(key));
return super.delete(this.normalizeId(key));
}
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$1, 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$1, k2, desc);
}) : (function(o$1, m, k, k2) {
if (k2 === void 0) k2 = k;
o$1[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();
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();
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$1) => transformDiagnostic$1(language, d$1, program, isTsc)).filter((d$1) => !!d$1);
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] = (0, utils_1$2.getServiceScript)(language, fileChanges.fileName);
if (source) fileChanges.textChanges.forEach((c$1) => {
const { fileName, textSpan } = transformSpan(language, fileChanges.fileName, c$1.span, fallbackToAnyMatch, filter) ?? {};
if (fileName && textSpan) (changesPerFile[fileName] ?? (changesPerFile[file