astro-ghostcms/.pnpm-store/v3/files/b8/c05ce62b2da4722844f6902bbc2...

106 lines
4.3 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getEmbeddedFilesByLevel = exports.eachEmbeddedDocument = exports.safeCall = exports.languageFeatureWorker = exports.documentFeatureWorker = void 0;
async function documentFeatureWorker(context, uri, valid, worker, transformResult, combineResult) {
return languageFeatureWorker(context, uri, () => void 0, function* (map) {
if (valid(map)) {
yield;
}
}, worker, transformResult, combineResult);
}
exports.documentFeatureWorker = documentFeatureWorker;
async function languageFeatureWorker(context, uri, getReadDocParams, eachVirtualDocParams, worker, transformResult, combineResult) {
const sourceFile = context.language.files.get(uri);
if (!sourceFile) {
return;
}
let results = [];
if (sourceFile.generated) {
for (const map of eachEmbeddedDocument(context, sourceFile.generated.code)) {
for (const mappedArg of eachVirtualDocParams(map)) {
for (const [serviceId, service] of Object.entries(context.services)) {
if (context.disabledServicePlugins.has(service[1])) {
continue;
}
const embeddedResult = await safeCall(() => worker(service, map.virtualFileDocument, mappedArg, map), 'service ' + serviceId + ' crashed on ' + map.virtualFileDocument.uri);
if (!embeddedResult) {
continue;
}
const result = transformResult(embeddedResult, map);
if (!result) {
continue;
}
results.push(result);
if (!combineResult) {
break;
}
}
}
}
}
else {
const document = context.documents.get(uri, sourceFile.languageId, sourceFile.snapshot);
const params = getReadDocParams();
for (const [serviceId, service] of Object.entries(context.services)) {
if (context.disabledServicePlugins.has(service[1])) {
continue;
}
const embeddedResult = await safeCall(() => worker(service, document, params, undefined), 'service ' + serviceId + ' crashed on ' + uri);
if (!embeddedResult) {
continue;
}
const result = transformResult(embeddedResult, undefined);
if (!result) {
continue;
}
results.push(result);
if (!combineResult) {
break;
}
}
}
if (combineResult && results.length > 0) {
return combineResult(results);
}
else if (results.length > 0) {
return results[0];
}
}
exports.languageFeatureWorker = languageFeatureWorker;
async function safeCall(cb, errorMsg) {
try {
return await cb();
}
catch (err) {
console.warn(errorMsg, err);
}
}
exports.safeCall = safeCall;
function* eachEmbeddedDocument(context, current, rootCode = current) {
for (const embeddedCode of current.embeddedCodes) {
yield* eachEmbeddedDocument(context, embeddedCode, rootCode);
}
for (const map of context.documents.getMaps(current)) {
const sourceFile = context.language.files.get(map.sourceFileDocument.uri);
if (sourceFile?.generated?.code === rootCode
&& !context.disabledVirtualFileUris.has(context.documents.getVirtualCodeUri(context.language.files.getByVirtualCode(current).id, current.id))) {
yield map;
}
}
}
exports.eachEmbeddedDocument = eachEmbeddedDocument;
function getEmbeddedFilesByLevel(context, sourceFileUri, rootFile, level) {
const embeddedFilesByLevel = [[rootFile]];
while (true) {
if (embeddedFilesByLevel.length > level) {
return embeddedFilesByLevel[level];
}
let nextLevel = [];
for (const file of embeddedFilesByLevel[embeddedFilesByLevel.length - 1]) {
nextLevel = nextLevel.concat(file.embeddedCodes.filter(file => !context.disabledVirtualFileUris.has(context.documents.getVirtualCodeUri(sourceFileUri, file.id))));
}
embeddedFilesByLevel.push(nextLevel);
}
}
exports.getEmbeddedFilesByLevel = getEmbeddedFilesByLevel;
//# sourceMappingURL=featureWorkers.js.map