Files
ry.kazcloud.dev/node_modules/@volar/language-service/lib/utils/featureWorkers.js
Ryan Kazokas d181f77fb2
All checks were successful
Build and Push / build (push) Successful in 55s
Updates dockerfile
2026-02-16 15:09:37 -05:00

168 lines
6.9 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.documentFeatureWorker = documentFeatureWorker;
exports.languageFeatureWorker = languageFeatureWorker;
exports.safeCall = safeCall;
exports.forEachEmbeddedDocument = forEachEmbeddedDocument;
exports.getSourceRange = getSourceRange;
exports.getGeneratedRange = getGeneratedRange;
exports.getSourceRanges = getSourceRanges;
exports.getGeneratedRanges = getGeneratedRanges;
exports.getSourcePositions = getSourcePositions;
exports.getGeneratedPositions = getGeneratedPositions;
exports.getLinkedCodePositions = getLinkedCodePositions;
function documentFeatureWorker(context, uri, valid, worker, transformResult, combineResult) {
return languageFeatureWorker(context, uri, () => void 0, function* (map) {
if (valid(map)) {
yield;
}
}, worker, transformResult, combineResult);
}
async function languageFeatureWorker(context, uri, getRealDocParams, eachVirtualDocParams, worker, transformResult, combineResult) {
let sourceScript;
const decoded = context.decodeEmbeddedDocumentUri(uri);
if (decoded) {
sourceScript = context.language.scripts.get(decoded[0]);
}
else {
sourceScript = context.language.scripts.get(uri);
}
if (!sourceScript) {
return;
}
let results = [];
if (decoded) {
const virtualCode = sourceScript.generated?.embeddedCodes.get(decoded[1]);
if (virtualCode) {
const docs = [
context.documents.get(sourceScript.id, sourceScript.languageId, sourceScript.snapshot),
context.documents.get(uri, virtualCode.languageId, virtualCode.snapshot),
context.language.maps.get(virtualCode, sourceScript),
];
await docsWorker(docs, false);
}
}
else if (sourceScript.generated) {
for (const docs of forEachEmbeddedDocument(context, sourceScript, sourceScript.generated.root)) {
if (results.length && !combineResult) {
continue;
}
await docsWorker(docs, true);
}
}
else {
const document = context.documents.get(uri, sourceScript.languageId, sourceScript.snapshot);
const params = getRealDocParams();
for (const [pluginIndex, plugin] of Object.entries(context.plugins)) {
if (context.disabledServicePlugins.has(plugin[1])) {
continue;
}
const embeddedResult = await safeCall(() => worker(plugin, document, params, undefined), `Language service plugin "${plugin[0].name}" (${pluginIndex}) failed to provide document feature for ${document.uri}.`);
if (!embeddedResult) {
continue;
}
const result = transformResult(embeddedResult, undefined);
if (!result) {
continue;
}
results.push(result);
if (!combineResult) {
break;
}
}
}
if (combineResult && results.length > 0) {
const combined = combineResult(results);
return combined;
}
else if (results.length > 0) {
return results[0];
}
async function docsWorker(docs, transform) {
for (const mappedArg of eachVirtualDocParams(docs)) {
if (results.length && !combineResult) {
continue;
}
for (const [pluginIndex, plugin] of Object.entries(context.plugins)) {
if (context.disabledServicePlugins.has(plugin[1])) {
continue;
}
if (results.length && !combineResult) {
continue;
}
const embeddedResult = await safeCall(() => worker(plugin, docs[1], mappedArg, docs), `Language service plugin "${plugin[0].name}" (${pluginIndex}) failed to provide document feature for ${docs[1].uri}.`);
if (!embeddedResult) {
continue;
}
if (transform) {
const mappedResult = transformResult(embeddedResult, docs);
if (mappedResult) {
results.push(mappedResult);
}
}
else {
results.push(embeddedResult);
}
}
}
}
}
async function safeCall(cb, errorMsg) {
try {
return await cb();
}
catch (err) {
console.warn(errorMsg, err);
}
}
function* forEachEmbeddedDocument(context, sourceScript, current) {
if (current.embeddedCodes) {
for (const embeddedCode of current.embeddedCodes) {
yield* forEachEmbeddedDocument(context, sourceScript, embeddedCode);
}
}
const embeddedDocumentUri = context.encodeEmbeddedDocumentUri(sourceScript.id, current.id);
if (!context.disabledEmbeddedDocumentUris.get(embeddedDocumentUri)) {
yield [
context.documents.get(sourceScript.id, sourceScript.languageId, sourceScript.snapshot),
context.documents.get(embeddedDocumentUri, current.languageId, current.snapshot),
context.language.maps.get(current, sourceScript),
];
}
}
function getSourceRange(docs, range, filter) {
for (const result of getSourceRanges(docs, range, filter)) {
return result;
}
}
function getGeneratedRange(docs, range, filter) {
for (const result of getGeneratedRanges(docs, range, filter)) {
return result;
}
}
function* getSourceRanges([sourceDocument, embeddedDocument, map], range, filter) {
for (const [mappedStart, mappedEnd] of map.toSourceRange(embeddedDocument.offsetAt(range.start), embeddedDocument.offsetAt(range.end), true, filter)) {
yield { start: sourceDocument.positionAt(mappedStart), end: sourceDocument.positionAt(mappedEnd) };
}
}
function* getGeneratedRanges([sourceDocument, embeddedDocument, map], range, filter) {
for (const [mappedStart, mappedEnd] of map.toGeneratedRange(sourceDocument.offsetAt(range.start), sourceDocument.offsetAt(range.end), true, filter)) {
yield { start: embeddedDocument.positionAt(mappedStart), end: embeddedDocument.positionAt(mappedEnd) };
}
}
function* getSourcePositions([sourceDocument, embeddedDocument, map], position, filter = () => true) {
for (const mapped of map.toSourceLocation(embeddedDocument.offsetAt(position), filter)) {
yield sourceDocument.positionAt(mapped[0]);
}
}
function* getGeneratedPositions([sourceDocument, embeddedDocument, map], position, filter = () => true) {
for (const mapped of map.toGeneratedLocation(sourceDocument.offsetAt(position), filter)) {
yield embeddedDocument.positionAt(mapped[0]);
}
}
function* getLinkedCodePositions(document, linkedMap, posotion) {
for (const linkedPosition of linkedMap.getLinkedOffsets(document.offsetAt(posotion))) {
yield document.positionAt(linkedPosition);
}
}
//# sourceMappingURL=featureWorkers.js.map