app-builder-lib 26.2.0 → 26.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/asar/asarUtil.js +78 -10
- package/out/asar/asarUtil.js.map +1 -1
- package/out/asar/unpackDetector.js +1 -3
- package/out/asar/unpackDetector.js.map +1 -1
- package/out/codeSign/macCodeSign.js +2 -1
- package/out/codeSign/macCodeSign.js.map +1 -1
- package/out/electron/search-module.js +1 -1
- package/out/electron/search-module.js.map +1 -1
- package/out/fileMatcher.js +1 -1
- package/out/fileMatcher.js.map +1 -1
- package/out/node-module-collector/bunNodeModulesCollector.d.ts +11 -0
- package/out/node-module-collector/bunNodeModulesCollector.js +22 -0
- package/out/node-module-collector/bunNodeModulesCollector.js.map +1 -0
- package/out/node-module-collector/index.d.ts +21 -6
- package/out/node-module-collector/index.js +93 -32
- package/out/node-module-collector/index.js.map +1 -1
- package/out/node-module-collector/moduleCache.d.ts +21 -0
- package/out/node-module-collector/moduleCache.js +16 -0
- package/out/node-module-collector/moduleCache.js.map +1 -0
- package/out/node-module-collector/nodeModulesCollector.d.ts +50 -14
- package/out/node-module-collector/nodeModulesCollector.js +239 -70
- package/out/node-module-collector/nodeModulesCollector.js.map +1 -1
- package/out/node-module-collector/npmNodeModulesCollector.d.ts +10 -3
- package/out/node-module-collector/npmNodeModulesCollector.js +100 -13
- package/out/node-module-collector/npmNodeModulesCollector.js.map +1 -1
- package/out/node-module-collector/packageManager.d.ts +8 -6
- package/out/node-module-collector/packageManager.js +73 -29
- package/out/node-module-collector/packageManager.js.map +1 -1
- package/out/node-module-collector/pnpmNodeModulesCollector.d.ts +4 -4
- package/out/node-module-collector/pnpmNodeModulesCollector.js +49 -23
- package/out/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
- package/out/node-module-collector/types.d.ts +25 -1
- package/out/node-module-collector/types.js.map +1 -1
- package/out/node-module-collector/yarnBerryNodeModulesCollector.d.ts +15 -0
- package/out/node-module-collector/yarnBerryNodeModulesCollector.js +93 -0
- package/out/node-module-collector/yarnBerryNodeModulesCollector.js.map +1 -0
- package/out/node-module-collector/yarnNodeModulesCollector.d.ts +12 -2
- package/out/node-module-collector/yarnNodeModulesCollector.js +234 -5
- package/out/node-module-collector/yarnNodeModulesCollector.js.map +1 -1
- package/out/options/winOptions.d.ts +2 -1
- package/out/options/winOptions.js.map +1 -1
- package/out/packager.d.ts +6 -1
- package/out/packager.js +12 -5
- package/out/packager.js.map +1 -1
- package/out/publish/PublishManager.js +2 -2
- package/out/publish/PublishManager.js.map +1 -1
- package/out/targets/AppxTarget.js +1 -1
- package/out/targets/AppxTarget.js.map +1 -1
- package/out/targets/MsiTarget.js +1 -1
- package/out/targets/MsiTarget.js.map +1 -1
- package/out/targets/nsis/NsisTarget.js +2 -2
- package/out/targets/nsis/NsisTarget.js.map +1 -1
- package/out/targets/nsis/nsisUtil.js +1 -1
- package/out/targets/nsis/nsisUtil.js.map +1 -1
- package/out/targets/tools.js +12 -12
- package/out/targets/tools.js.map +1 -1
- package/out/util/appFileCopier.js +18 -10
- package/out/util/appFileCopier.js.map +1 -1
- package/out/util/macosIconComposer.js +11 -4
- package/out/util/macosIconComposer.js.map +1 -1
- package/out/util/yarn.d.ts +4 -2
- package/out/util/yarn.js +34 -24
- package/out/util/yarn.js.map +1 -1
- package/out/version.d.ts +1 -1
- package/out/version.js +1 -1
- package/out/version.js.map +1 -1
- package/out/winPackager.d.ts +1 -1
- package/out/winPackager.js +26 -9
- package/out/winPackager.js.map +1 -1
- package/package.json +9 -9
- package/scheme.json +1 -1
|
@@ -1,9 +1,24 @@
|
|
|
1
|
+
import { CancellationToken, Nullish } from "builder-util-runtime";
|
|
2
|
+
import { TmpDir } from "temp-file";
|
|
1
3
|
import { NpmNodeModulesCollector } from "./npmNodeModulesCollector";
|
|
4
|
+
import { getPackageManagerCommand, PM } from "./packageManager";
|
|
2
5
|
import { PnpmNodeModulesCollector } from "./pnpmNodeModulesCollector";
|
|
3
|
-
import { PM, getPackageManagerCommand } from "./packageManager";
|
|
4
6
|
import { NodeModuleInfo } from "./types";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
export declare function
|
|
9
|
-
export
|
|
7
|
+
import { YarnNodeModulesCollector } from "./yarnNodeModulesCollector";
|
|
8
|
+
import { Lazy } from "lazy-val";
|
|
9
|
+
export { getPackageManagerCommand, PM };
|
|
10
|
+
export declare function getCollectorByPackageManager(pm: PM, rootDir: string, tempDirManager: TmpDir): NpmNodeModulesCollector | PnpmNodeModulesCollector | YarnNodeModulesCollector;
|
|
11
|
+
export declare function getNodeModules(pm: PM, { rootDir, tempDirManager, cancellationToken, packageName, }: {
|
|
12
|
+
rootDir: string;
|
|
13
|
+
tempDirManager: TmpDir;
|
|
14
|
+
cancellationToken: CancellationToken;
|
|
15
|
+
packageName: string;
|
|
16
|
+
}): Promise<NodeModuleInfo[]>;
|
|
17
|
+
export declare const determinePackageManagerEnv: ({ projectDir, appDir, workspaceRoot }: {
|
|
18
|
+
projectDir: string;
|
|
19
|
+
appDir: string;
|
|
20
|
+
workspaceRoot: string | Nullish;
|
|
21
|
+
}) => Lazy<{
|
|
22
|
+
pm: PM;
|
|
23
|
+
workspaceRoot: Promise<string | undefined>;
|
|
24
|
+
}>;
|
|
@@ -1,54 +1,115 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.determinePackageManagerEnv = exports.PM = exports.getPackageManagerCommand = void 0;
|
|
4
4
|
exports.getCollectorByPackageManager = getCollectorByPackageManager;
|
|
5
5
|
exports.getNodeModules = getNodeModules;
|
|
6
|
-
exports.detectPackageManager = detectPackageManager;
|
|
7
6
|
const npmNodeModulesCollector_1 = require("./npmNodeModulesCollector");
|
|
8
|
-
const pnpmNodeModulesCollector_1 = require("./pnpmNodeModulesCollector");
|
|
9
|
-
const yarnNodeModulesCollector_1 = require("./yarnNodeModulesCollector");
|
|
10
7
|
const packageManager_1 = require("./packageManager");
|
|
11
|
-
Object.defineProperty(exports, "PM", { enumerable: true, get: function () { return packageManager_1.PM; } });
|
|
12
8
|
Object.defineProperty(exports, "getPackageManagerCommand", { enumerable: true, get: function () { return packageManager_1.getPackageManagerCommand; } });
|
|
13
|
-
|
|
9
|
+
Object.defineProperty(exports, "PM", { enumerable: true, get: function () { return packageManager_1.PM; } });
|
|
10
|
+
const pnpmNodeModulesCollector_1 = require("./pnpmNodeModulesCollector");
|
|
11
|
+
const yarnBerryNodeModulesCollector_1 = require("./yarnBerryNodeModulesCollector");
|
|
12
|
+
const yarnNodeModulesCollector_1 = require("./yarnNodeModulesCollector");
|
|
13
|
+
const bunNodeModulesCollector_1 = require("./bunNodeModulesCollector");
|
|
14
|
+
const lazy_val_1 = require("lazy-val");
|
|
15
|
+
const builder_util_1 = require("builder-util");
|
|
16
|
+
const fs = require("fs-extra");
|
|
17
|
+
const path = require("path");
|
|
18
|
+
function getCollectorByPackageManager(pm, rootDir, tempDirManager) {
|
|
14
19
|
switch (pm) {
|
|
15
20
|
case packageManager_1.PM.PNPM:
|
|
16
|
-
if (await pnpmNodeModulesCollector_1.PnpmNodeModulesCollector.isPnpmProjectHoisted(rootDir)) {
|
|
17
|
-
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir, tempDirManager);
|
|
18
|
-
}
|
|
19
21
|
return new pnpmNodeModulesCollector_1.PnpmNodeModulesCollector(rootDir, tempDirManager);
|
|
20
|
-
case packageManager_1.PM.NPM:
|
|
21
|
-
case packageManager_1.PM.BUN:
|
|
22
|
-
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir, tempDirManager);
|
|
23
22
|
case packageManager_1.PM.YARN:
|
|
24
23
|
return new yarnNodeModulesCollector_1.YarnNodeModulesCollector(rootDir, tempDirManager);
|
|
25
|
-
|
|
24
|
+
case packageManager_1.PM.YARN_BERRY:
|
|
25
|
+
return new yarnBerryNodeModulesCollector_1.YarnBerryNodeModulesCollector(rootDir, tempDirManager);
|
|
26
|
+
case packageManager_1.PM.BUN:
|
|
27
|
+
return new bunNodeModulesCollector_1.BunNodeModulesCollector(rootDir, tempDirManager);
|
|
28
|
+
case packageManager_1.PM.NPM:
|
|
26
29
|
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir, tempDirManager);
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
|
-
|
|
30
|
-
const collector =
|
|
31
|
-
return collector.getNodeModules();
|
|
32
|
+
function getNodeModules(pm, { rootDir, tempDirManager, cancellationToken, packageName, }) {
|
|
33
|
+
const collector = getCollectorByPackageManager(pm, rootDir, tempDirManager);
|
|
34
|
+
return collector.getNodeModules({ cancellationToken, packageName });
|
|
32
35
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
const determinePackageManagerEnv = ({ projectDir, appDir, workspaceRoot }) => new lazy_val_1.Lazy(async () => {
|
|
37
|
+
const availableDirs = [projectDir, appDir, workspaceRoot].filter((it) => it != null);
|
|
38
|
+
const pm = await (0, packageManager_1.detectPackageManager)(availableDirs);
|
|
39
|
+
const root = await findWorkspaceRoot(pm.pm, projectDir);
|
|
40
|
+
if (root != null) {
|
|
41
|
+
// re-detect package manager from workspace root, this seems particularly necessary for pnpm workspaces
|
|
42
|
+
const actualPm = await (0, packageManager_1.detectPackageManager)([root]);
|
|
43
|
+
return {
|
|
44
|
+
pm: actualPm.pm,
|
|
45
|
+
workspaceRoot: Promise.resolve(actualPm.resolvedDirectory),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
pm: pm.pm,
|
|
50
|
+
workspaceRoot: Promise.resolve(pm.resolvedDirectory),
|
|
40
51
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
52
|
+
});
|
|
53
|
+
exports.determinePackageManagerEnv = determinePackageManagerEnv;
|
|
54
|
+
async function findWorkspaceRoot(pm, cwd) {
|
|
55
|
+
let command;
|
|
56
|
+
switch (pm) {
|
|
57
|
+
case packageManager_1.PM.PNPM:
|
|
58
|
+
command = { command: "pnpm", args: ["--workspace-root", "exec", "pwd"] };
|
|
59
|
+
break;
|
|
60
|
+
case packageManager_1.PM.YARN_BERRY:
|
|
61
|
+
command = { command: "yarn", args: ["config", "get", "workspaceRoot"] };
|
|
62
|
+
break;
|
|
63
|
+
case packageManager_1.PM.YARN: {
|
|
64
|
+
command = { command: "yarn", args: ["workspaces", "info", "--silent"] };
|
|
65
|
+
break;
|
|
45
66
|
}
|
|
67
|
+
case packageManager_1.PM.BUN:
|
|
68
|
+
command = { command: "bun", args: ["pm", "ls", "--json"] };
|
|
69
|
+
break;
|
|
70
|
+
case packageManager_1.PM.NPM:
|
|
71
|
+
default:
|
|
72
|
+
command = { command: "npm", args: ["prefix", "-w"] };
|
|
73
|
+
break;
|
|
46
74
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
75
|
+
const output = await (0, builder_util_1.spawn)(command.command, command.args, { cwd, stdio: ["ignore", "pipe", "ignore"] })
|
|
76
|
+
.then(it => {
|
|
77
|
+
const out = it === null || it === void 0 ? void 0 : it.trim();
|
|
78
|
+
if (pm === packageManager_1.PM.YARN) {
|
|
79
|
+
JSON.parse(out); // if JSON valid, workspace detected
|
|
80
|
+
return findNearestWithWorkspacesField(cwd);
|
|
81
|
+
}
|
|
82
|
+
else if (pm === packageManager_1.PM.BUN) {
|
|
83
|
+
const json = JSON.parse(out);
|
|
84
|
+
if (Array.isArray(json) && json.length > 0) {
|
|
85
|
+
return findNearestWithWorkspacesField(cwd);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return !(out === null || out === void 0 ? void 0 : out.length) || out === "undefined" ? undefined : out;
|
|
89
|
+
})
|
|
90
|
+
.catch(() => findNearestWithWorkspacesField(cwd));
|
|
91
|
+
builder_util_1.log.debug({ root: output || cwd }, output ? "workspace root detected" : "workspace root not detected, using project root");
|
|
92
|
+
return output;
|
|
93
|
+
}
|
|
94
|
+
async function findNearestWithWorkspacesField(dir) {
|
|
95
|
+
let current = dir;
|
|
96
|
+
while (true) {
|
|
97
|
+
const pkgPath = path.join(current, "package.json");
|
|
98
|
+
try {
|
|
99
|
+
const pkg = JSON.parse(await fs.readFile(pkgPath, "utf8"));
|
|
100
|
+
if (pkg.workspaces) {
|
|
101
|
+
return current;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// ignore
|
|
106
|
+
}
|
|
107
|
+
const parent = path.dirname(current);
|
|
108
|
+
if (parent === current) {
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
current = parent;
|
|
50
112
|
}
|
|
51
|
-
|
|
52
|
-
return packageManager_1.PM.NPM;
|
|
113
|
+
return undefined;
|
|
53
114
|
}
|
|
54
115
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node-module-collector/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node-module-collector/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { CancellationToken, Nullish } from \"builder-util-runtime\"\nimport { TmpDir } from \"temp-file\"\nimport { NpmNodeModulesCollector } from \"./npmNodeModulesCollector\"\nimport { detectPackageManager, getPackageManagerCommand, PM } from \"./packageManager\"\nimport { PnpmNodeModulesCollector } from \"./pnpmNodeModulesCollector\"\nimport { NodeModuleInfo } from \"./types\"\nimport { YarnBerryNodeModulesCollector } from \"./yarnBerryNodeModulesCollector\"\nimport { YarnNodeModulesCollector } from \"./yarnNodeModulesCollector\"\nimport { BunNodeModulesCollector } from \"./bunNodeModulesCollector\"\nimport { Lazy } from \"lazy-val\"\nimport { spawn, log } from \"builder-util\"\nimport * as fs from \"fs-extra\"\nimport * as path from \"path\"\n\nexport { getPackageManagerCommand, PM }\n\nexport function getCollectorByPackageManager(pm: PM, rootDir: string, tempDirManager: TmpDir) {\n switch (pm) {\n case PM.PNPM:\n return new PnpmNodeModulesCollector(rootDir, tempDirManager)\n case PM.YARN:\n return new YarnNodeModulesCollector(rootDir, tempDirManager)\n case PM.YARN_BERRY:\n return new YarnBerryNodeModulesCollector(rootDir, tempDirManager)\n case PM.BUN:\n return new BunNodeModulesCollector(rootDir, tempDirManager)\n case PM.NPM:\n return new NpmNodeModulesCollector(rootDir, tempDirManager)\n }\n}\n\nexport function getNodeModules(\n pm: PM,\n {\n rootDir,\n tempDirManager,\n cancellationToken,\n packageName,\n }: {\n rootDir: string\n tempDirManager: TmpDir\n cancellationToken: CancellationToken\n packageName: string\n }\n): Promise<NodeModuleInfo[]> {\n const collector = getCollectorByPackageManager(pm, rootDir, tempDirManager)\n return collector.getNodeModules({ cancellationToken, packageName })\n}\n\nexport const determinePackageManagerEnv = ({ projectDir, appDir, workspaceRoot }: { projectDir: string; appDir: string; workspaceRoot: string | Nullish }) =>\n new Lazy(async () => {\n const availableDirs = [projectDir, appDir, workspaceRoot].filter((it): it is string => it != null)\n const pm = await detectPackageManager(availableDirs)\n const root = await findWorkspaceRoot(pm.pm, projectDir)\n if (root != null) {\n // re-detect package manager from workspace root, this seems particularly necessary for pnpm workspaces\n const actualPm = await detectPackageManager([root])\n return {\n pm: actualPm.pm,\n workspaceRoot: Promise.resolve(actualPm.resolvedDirectory),\n }\n }\n return {\n pm: pm.pm,\n workspaceRoot: Promise.resolve(pm.resolvedDirectory),\n }\n })\n\nasync function findWorkspaceRoot(pm: PM, cwd: string): Promise<string | undefined> {\n let command: { command: string; args: string[] } | undefined\n\n switch (pm) {\n case PM.PNPM:\n command = { command: \"pnpm\", args: [\"--workspace-root\", \"exec\", \"pwd\"] }\n break\n\n case PM.YARN_BERRY:\n command = { command: \"yarn\", args: [\"config\", \"get\", \"workspaceRoot\"] }\n break\n\n case PM.YARN: {\n command = { command: \"yarn\", args: [\"workspaces\", \"info\", \"--silent\"] }\n break\n }\n\n case PM.BUN:\n command = { command: \"bun\", args: [\"pm\", \"ls\", \"--json\"] }\n break\n\n case PM.NPM:\n default:\n command = { command: \"npm\", args: [\"prefix\", \"-w\"] }\n break\n }\n\n const output = await spawn(command.command, command.args, { cwd, stdio: [\"ignore\", \"pipe\", \"ignore\"] })\n .then(it => {\n const out = it?.trim()\n if (pm === PM.YARN) {\n JSON.parse(out) // if JSON valid, workspace detected\n return findNearestWithWorkspacesField(cwd)\n } else if (pm === PM.BUN) {\n const json = JSON.parse(out)\n if (Array.isArray(json) && json.length > 0) {\n return findNearestWithWorkspacesField(cwd)\n }\n }\n return !out?.length || out === \"undefined\" ? undefined : out\n })\n .catch(() => findNearestWithWorkspacesField(cwd))\n\n log.debug({ root: output || cwd }, output ? \"workspace root detected\" : \"workspace root not detected, using project root\")\n return output\n}\n\nasync function findNearestWithWorkspacesField(dir: string): Promise<string | undefined> {\n let current = dir\n while (true) {\n const pkgPath = path.join(current, \"package.json\")\n try {\n const pkg = JSON.parse(await fs.readFile(pkgPath, \"utf8\"))\n if (pkg.workspaces) {\n return current\n }\n } catch {\n // ignore\n }\n const parent = path.dirname(current)\n if (parent === current) {\n break\n }\n current = parent\n }\n return undefined\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import { PackageJson } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Unified cache for all file system and module resolution operations
|
|
5
|
+
*/
|
|
6
|
+
export type ModuleCache = {
|
|
7
|
+
/** Cache for package.json contents (readJson/require) */
|
|
8
|
+
packageJson: Map<string, PackageJson>;
|
|
9
|
+
/** Cache for resolved real paths (realpath) */
|
|
10
|
+
realPath: Map<string, string>;
|
|
11
|
+
/** Cache for file/directory existence checks */
|
|
12
|
+
exists: Map<string, boolean>;
|
|
13
|
+
/** Cache for lstat results */
|
|
14
|
+
lstat: Map<string, fs.Stats>;
|
|
15
|
+
/** Cache for require.resolve results (key: "packageName::fromDir") */
|
|
16
|
+
requireResolve: Map<string, string | null>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new empty ModuleCache instance
|
|
20
|
+
*/
|
|
21
|
+
export declare function createModuleCache(): ModuleCache;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createModuleCache = createModuleCache;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a new empty ModuleCache instance
|
|
6
|
+
*/
|
|
7
|
+
function createModuleCache() {
|
|
8
|
+
return {
|
|
9
|
+
packageJson: new Map(),
|
|
10
|
+
realPath: new Map(),
|
|
11
|
+
exists: new Map(),
|
|
12
|
+
lstat: new Map(),
|
|
13
|
+
requireResolve: new Map(),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=moduleCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleCache.js","sourceRoot":"","sources":["../../src/node-module-collector/moduleCache.ts"],"names":[],"mappings":";;AAsBA,8CAQC;AAXD;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO;QACL,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,MAAM,EAAE,IAAI,GAAG,EAAE;QACjB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,cAAc,EAAE,IAAI,GAAG,EAAE;KAC1B,CAAA;AACH,CAAC","sourcesContent":["import * as fs from \"fs\"\nimport { PackageJson } from \"./types\"\n\n/**\n * Unified cache for all file system and module resolution operations\n */\nexport type ModuleCache = {\n /** Cache for package.json contents (readJson/require) */\n packageJson: Map<string, PackageJson>\n /** Cache for resolved real paths (realpath) */\n realPath: Map<string, string>\n /** Cache for file/directory existence checks */\n exists: Map<string, boolean>\n /** Cache for lstat results */\n lstat: Map<string, fs.Stats>\n /** Cache for require.resolve results (key: \"packageName::fromDir\") */\n requireResolve: Map<string, string | null>\n}\n\n/**\n * Creates a new empty ModuleCache instance\n */\nexport function createModuleCache(): ModuleCache {\n return {\n packageJson: new Map(),\n realPath: new Map(),\n exists: new Map(),\n lstat: new Map(),\n requireResolve: new Map(),\n }\n}\n"]}
|
|
@@ -1,27 +1,63 @@
|
|
|
1
|
-
import type { NodeModuleInfo, DependencyGraph, Dependency } from "./types";
|
|
2
1
|
import { TmpDir } from "builder-util";
|
|
2
|
+
import { CancellationToken } from "builder-util-runtime";
|
|
3
|
+
import * as fs from "fs-extra";
|
|
4
|
+
import { Lazy } from "lazy-val";
|
|
5
|
+
import { type ModuleCache } from "./moduleCache";
|
|
3
6
|
import { PM } from "./packageManager";
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
import type { Dependency, DependencyGraph, NodeModuleInfo, PackageJson } from "./types";
|
|
8
|
+
export declare abstract class NodeModulesCollector<ProdDepType extends Dependency<ProdDepType, OptionalDepType>, OptionalDepType> {
|
|
9
|
+
protected readonly rootDir: string;
|
|
6
10
|
private readonly tempDirManager;
|
|
7
11
|
private nodeModules;
|
|
8
|
-
protected allDependencies: Map<string,
|
|
12
|
+
protected allDependencies: Map<string, ProdDepType>;
|
|
9
13
|
protected productionGraph: DependencyGraph;
|
|
14
|
+
protected pkgJsonCache: Map<string, string>;
|
|
15
|
+
protected memoResolvedModules: Map<string, Promise<string | null>>;
|
|
16
|
+
private importMetaResolve;
|
|
17
|
+
protected cache: ModuleCache;
|
|
18
|
+
protected isHoisted: Lazy<boolean>;
|
|
19
|
+
protected appPkgJson: Lazy<PackageJson>;
|
|
10
20
|
constructor(rootDir: string, tempDirManager: TmpDir);
|
|
11
|
-
getNodeModules(
|
|
21
|
+
getNodeModules({ cancellationToken, packageName }: {
|
|
22
|
+
cancellationToken: CancellationToken;
|
|
23
|
+
packageName: string;
|
|
24
|
+
}): Promise<NodeModuleInfo[]>;
|
|
12
25
|
abstract readonly installOptions: {
|
|
13
26
|
manager: PM;
|
|
14
27
|
lockfile: string;
|
|
15
28
|
};
|
|
16
29
|
protected abstract getArgs(): string[];
|
|
17
|
-
protected abstract parseDependenciesTree(jsonBlob: string):
|
|
18
|
-
protected abstract extractProductionDependencyGraph(tree: Dependency<
|
|
19
|
-
protected abstract collectAllDependencies(tree: Dependency<
|
|
20
|
-
protected getDependenciesTree(): Promise<
|
|
21
|
-
protected
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
protected abstract parseDependenciesTree(jsonBlob: string): Promise<ProdDepType>;
|
|
31
|
+
protected abstract extractProductionDependencyGraph(tree: Dependency<ProdDepType, OptionalDepType>, dependencyId: string): Promise<void>;
|
|
32
|
+
protected abstract collectAllDependencies(tree: Dependency<ProdDepType, OptionalDepType>, appPackageName: string): Promise<void>;
|
|
33
|
+
protected getDependenciesTree(pm: PM): Promise<ProdDepType>;
|
|
34
|
+
protected existsMemoized(filePath: string): Promise<boolean>;
|
|
35
|
+
protected readJsonMemoized(filePath: string): Promise<PackageJson>;
|
|
36
|
+
protected lstatMemoized(filePath: string): Promise<fs.Stats>;
|
|
37
|
+
protected realpathMemoized(filePath: string): Promise<string>;
|
|
38
|
+
protected resolvePath(filePath: string): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Resolves a package to its filesystem location using Node.js module resolution.
|
|
41
|
+
* Returns the directory containing the package, not the package.json path.
|
|
42
|
+
*/
|
|
43
|
+
protected resolvePackageDir(packageName: string, fromDir: string): Promise<string | null>;
|
|
44
|
+
protected requireMemoized(pkgPath: string): PackageJson;
|
|
45
|
+
protected existsSyncMemoized(filePath: string): boolean;
|
|
46
|
+
protected cacheKey(pkg: ProdDepType): string;
|
|
47
|
+
protected packageVersionString(pkg: ProdDepType): string;
|
|
48
|
+
/**
|
|
49
|
+
* Parse a dependency identifier like "@scope/pkg@1.2.3" or "pkg@1.2.3"
|
|
50
|
+
*/
|
|
51
|
+
protected parseNameVersion(identifier: string): {
|
|
52
|
+
name: string;
|
|
53
|
+
version: string;
|
|
54
|
+
};
|
|
55
|
+
protected getTreeFromWorkspaces(tree: ProdDepType, packageName: string): Promise<ProdDepType>;
|
|
56
|
+
private transformToHoisterTree;
|
|
24
57
|
private _getNodeModules;
|
|
25
|
-
|
|
26
|
-
|
|
58
|
+
asyncExec(command: string, args: string[], cwd?: string): Promise<{
|
|
59
|
+
stdout: string | undefined;
|
|
60
|
+
stderr: string | undefined;
|
|
61
|
+
}>;
|
|
62
|
+
streamCollectorCommandToFile(command: string, args: string[], cwd: string, tempOutputFile: string): Promise<void>;
|
|
27
63
|
}
|