astro-ghostcms/.pnpm-store/v3/files/62/5618e8df110371d28a59c47af6d...

50 lines
2.1 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createPackageJsonCache = void 0;
function createPackageJsonCache(ts, host) {
const { createPackageJsonInfo, getDirectoryPath, combinePaths, tryFileExists, forEachAncestorDirectory } = ts;
const packageJsons = new Map();
const directoriesWithoutPackageJson = new Map();
return {
addOrUpdate,
forEach: packageJsons.forEach.bind(packageJsons),
get: packageJsons.get.bind(packageJsons),
delete: fileName => {
packageJsons.delete(fileName);
directoriesWithoutPackageJson.set(getDirectoryPath(fileName), true);
},
getInDirectory: directory => {
return packageJsons.get(combinePaths(directory, "package.json")) || undefined;
},
directoryHasPackageJson,
searchDirectoryAndAncestors: directory => {
forEachAncestorDirectory(directory, (ancestor) => {
if (directoryHasPackageJson(ancestor) !== 3 /* Ternary.Maybe */) {
return true;
}
const packageJsonFileName = host.toPath(combinePaths(ancestor, "package.json"));
if (tryFileExists(host, packageJsonFileName)) {
addOrUpdate(packageJsonFileName);
}
else {
directoriesWithoutPackageJson.set(ancestor, true);
}
});
},
};
function addOrUpdate(fileName) {
const packageJsonInfo =
// Debug.checkDefined(
createPackageJsonInfo(fileName, host.host);
// );
packageJsons.set(fileName, packageJsonInfo);
directoriesWithoutPackageJson.delete(getDirectoryPath(fileName));
}
function directoryHasPackageJson(directory) {
return packageJsons.has(combinePaths(directory, "package.json")) ? -1 /* Ternary.True */ :
directoriesWithoutPackageJson.has(directory) ? 0 /* Ternary.False */ :
3 /* Ternary.Maybe */;
}
}
exports.createPackageJsonCache = createPackageJsonCache;