astro-ghostcms/.pnpm-store/v3/files/3d/905ba5ac48bcfcba4f36dae4034...

35 lines
2.0 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useProgramFromProjectService = void 0;
const minimatch_1 = require("minimatch");
const createProjectProgram_1 = require("./create-program/createProjectProgram");
const shared_1 = require("./create-program/shared");
function useProgramFromProjectService({ allowDefaultProjectForFiles, service }, parseSettings, hasFullTypeInformation) {
const filePath = (0, shared_1.getCanonicalFileName)(parseSettings.filePath);
const opened = service.openClientFile((0, shared_1.ensureAbsolutePath)(filePath, service.host.getCurrentDirectory()), parseSettings.codeFullText,
/* scriptKind */ undefined, parseSettings.tsconfigRootDir);
if (hasFullTypeInformation) {
if (opened.configFileName) {
if (filePathMatchedBy(filePath, allowDefaultProjectForFiles)) {
throw new Error(`${filePath} was included by allowDefaultProjectForFiles but also was found in the project service. Consider removing it from allowDefaultProjectForFiles.`);
}
}
else if (!filePathMatchedBy(filePath, allowDefaultProjectForFiles)) {
throw new Error(`${filePath} was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProjectForFiles.`);
}
}
const scriptInfo = service.getScriptInfo(filePath);
const program = service
.getDefaultProjectForFile(scriptInfo.fileName, true)
.getLanguageService(/*ensureSynchronized*/ true)
.getProgram();
if (!program) {
return undefined;
}
return (0, createProjectProgram_1.createProjectProgram)(parseSettings, [program]);
}
exports.useProgramFromProjectService = useProgramFromProjectService;
function filePathMatchedBy(filePath, allowDefaultProjectForFiles) {
return !!allowDefaultProjectForFiles?.some(pattern => (0, minimatch_1.minimatch)(filePath, pattern));
}
//# sourceMappingURL=useProgramFromProjectService.js.map