astro-ghostcms/.pnpm-store/v3/files/03/8375a6e7d5bf49516d16d8d709c...

56 lines
2.4 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createPackageJsonCache = exports.canCreatePackageJsonCache = void 0;
function canCreatePackageJsonCache(ts) {
return 'createPackageJsonInfo' in ts && 'getDirectoryPath' in ts && 'combinePaths' in ts && 'tryFileExists' in ts && 'forEachAncestorDirectory' in ts;
}
exports.canCreatePackageJsonCache = canCreatePackageJsonCache;
function createPackageJsonCache(ts, host) {
const { createPackageJsonInfo, getDirectoryPath, combinePaths, tryFileExists, forEachAncestorDirectory } = ts;
const packageJsons = new Map();
const directoriesWithoutPackageJson = new Map();
return {
addOrUpdate,
// @ts-expect-error
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 => {
// @ts-expect-error
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;