51 lines
2.1 KiB
Plaintext
51 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,
|
||
|
// @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;
|