Compare commits

...

2 Commits

Author SHA1 Message Date
Sam Maddock
73f6452fec Update lib/node/asar-fs-wrapper.ts 2025-03-18 11:24:35 -04:00
Shelley Vohr
b5feaf9ba7 fix: asar handling of package.json 2025-03-18 10:33:46 +01:00

View File

@@ -979,8 +979,8 @@ export const wrapFsWithAsar = (fs: Record<string, any>) => {
return files;
};
const modBinding = internalBinding('modules');
const { readPackageJSON } = modBinding;
const moduleBinding = internalBinding('modules');
const { readPackageJSON } = moduleBinding;
internalBinding('modules').readPackageJSON = (
jsonPath: string,
isESM: boolean,
@@ -1000,6 +1000,36 @@ export const wrapFsWithAsar = (fs: Record<string, any>) => {
return readPackageJSON(realPath, isESM, base, specifier);
};
const { getNearestParentPackageJSON } = moduleBinding;
internalBinding('modules').getNearestParentPackageJSON = (checkPath: string) => {
const pathInfo = splitPath(checkPath);
if (!pathInfo.isAsar) return getNearestParentPackageJSON(checkPath);
const { asarPath, filePath } = pathInfo;
const archive = getOrCreateArchive(asarPath);
if (!archive) return undefined;
const realPath = archive.copyFileOut(filePath);
if (!realPath) return undefined;
return getNearestParentPackageJSON(realPath);
};
const { getNearestParentPackageJSONType } = moduleBinding;
internalBinding('modules').getNearestParentPackageJSONType = (checkPath: string) => {
const pathInfo = splitPath(checkPath);
if (!pathInfo.isAsar) return getNearestParentPackageJSONType(checkPath);
const { asarPath, filePath } = pathInfo;
const archive = getOrCreateArchive(asarPath);
if (!archive) return undefined;
const realPath = archive.copyFileOut(filePath);
if (!realPath) return undefined;
return getNearestParentPackageJSONType(realPath);
};
const { internalModuleStat } = binding;
internalBinding('fs').internalModuleStat = (receiver: unknown, pathArgument: string) => {
const pathInfo = splitPath(pathArgument);