@pnpm/reviewing.dependencies-hierarchy 1001.2.7 → 1001.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/lib/DependencyNode.d.ts +28 -0
- package/lib/DependencyNode.js +3 -0
- package/lib/DependencyNode.js.map +1 -0
- package/lib/buildDependenciesHierarchy.js +98 -68
- package/lib/buildDependenciesHierarchy.js.map +1 -1
- package/lib/buildDependenciesTree.d.ts +25 -0
- package/lib/buildDependenciesTree.js +184 -0
- package/lib/buildDependenciesTree.js.map +1 -0
- package/lib/buildDependencyGraph.d.ts +1 -1
- package/lib/buildDependencyGraph.js +2 -2
- package/lib/buildDependencyGraph.js.map +1 -1
- package/lib/buildDependentsTree.d.ts +46 -0
- package/lib/buildDependentsTree.js +311 -0
- package/lib/buildDependentsTree.js.map +1 -0
- package/lib/getPkgInfo.d.ts +1 -0
- package/lib/getPkgInfo.js +24 -35
- package/lib/getPkgInfo.js.map +1 -1
- package/lib/getTree.d.ts +13 -10
- package/lib/getTree.js +18 -7
- package/lib/getTree.js.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.js +5 -3
- package/lib/index.js.map +1 -1
- package/lib/peersSuffixHash.d.ts +1 -0
- package/lib/peersSuffixHash.js +15 -0
- package/lib/peersSuffixHash.js.map +1 -0
- package/lib/readManifestFromCafs.d.ts +10 -0
- package/lib/readManifestFromCafs.js +27 -0
- package/lib/readManifestFromCafs.js.map +1 -0
- package/lib/resolvePackagePath.d.ts +16 -0
- package/lib/resolvePackagePath.js +53 -0
- package/lib/resolvePackagePath.js.map +1 -0
- package/package.json +12 -10
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface DependencyNode {
|
|
2
|
+
alias: string;
|
|
3
|
+
circular?: true;
|
|
4
|
+
deduped?: true;
|
|
5
|
+
/**
|
|
6
|
+
* When `deduped` is true, the number of transitive dependencies that were
|
|
7
|
+
* elided because this subtree was already expanded elsewhere in the tree.
|
|
8
|
+
*/
|
|
9
|
+
dedupedDependenciesCount?: number;
|
|
10
|
+
/**
|
|
11
|
+
* Short hash of the peer dependency suffix in the depPath, used to
|
|
12
|
+
* distinguish deduped instances of the same package with different
|
|
13
|
+
* peer dependency resolutions.
|
|
14
|
+
*/
|
|
15
|
+
peersSuffixHash?: string;
|
|
16
|
+
dependencies?: DependencyNode[];
|
|
17
|
+
dev?: boolean;
|
|
18
|
+
isPeer: boolean;
|
|
19
|
+
isSkipped: boolean;
|
|
20
|
+
isMissing: boolean;
|
|
21
|
+
name: string;
|
|
22
|
+
optional?: true;
|
|
23
|
+
path: string;
|
|
24
|
+
resolved?: string;
|
|
25
|
+
searched?: true;
|
|
26
|
+
version: string;
|
|
27
|
+
searchMessage?: string;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyNode.js","sourceRoot":"","sources":["../src/DependencyNode.ts"],"names":[],"mappings":""}
|
|
@@ -57,16 +57,42 @@ async function buildDependenciesHierarchy(projectPaths, maybeOpts) {
|
|
|
57
57
|
onlyProjects: maybeOpts.onlyProjects,
|
|
58
58
|
registries,
|
|
59
59
|
search: maybeOpts.search,
|
|
60
|
-
showDedupedSearchMatches: maybeOpts.showDedupedSearchMatches,
|
|
60
|
+
showDedupedSearchMatches: maybeOpts.showDedupedSearchMatches ?? (maybeOpts.search != null),
|
|
61
61
|
skipped: new Set(modules?.skipped ?? []),
|
|
62
62
|
modulesDir,
|
|
63
63
|
virtualStoreDir: modules?.virtualStoreDir,
|
|
64
64
|
virtualStoreDirMaxLength: modules?.virtualStoreDirMaxLength ?? maybeOpts.virtualStoreDirMaxLength,
|
|
65
65
|
};
|
|
66
|
+
// Build the dependency graph ONCE for all importers and share a single
|
|
67
|
+
// MaterializationCache so that identical subtrees are only materialized once.
|
|
68
|
+
const allRootIds = [];
|
|
69
|
+
for (const projectPath of projectPaths) {
|
|
70
|
+
const importerId = (0, lockfile_fs_1.getLockfileImporterId)(opts.lockfileDir, projectPath);
|
|
71
|
+
if (lockfileToUse.importers[importerId]) {
|
|
72
|
+
allRootIds.push({ type: 'importer', importerId });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const sharedGraph = (0, buildDependencyGraph_js_1.buildDependencyGraph)(allRootIds, {
|
|
76
|
+
currentPackages: lockfileToUse.packages ?? {},
|
|
77
|
+
importers: lockfileToUse.importers,
|
|
78
|
+
include: opts.include,
|
|
79
|
+
lockfileDir: opts.lockfileDir,
|
|
80
|
+
});
|
|
81
|
+
const sharedMaterializationCache = new Map();
|
|
82
|
+
const sharedDepTypes = (0, lockfile_detect_dep_types_1.detectDepTypes)(lockfileToUse);
|
|
83
|
+
const ctx = {
|
|
84
|
+
currentLockfile: lockfileToUse,
|
|
85
|
+
wantedLockfile,
|
|
86
|
+
...opts,
|
|
87
|
+
graph: sharedGraph,
|
|
88
|
+
materializationCache: sharedMaterializationCache,
|
|
89
|
+
depTypes: sharedDepTypes,
|
|
90
|
+
};
|
|
91
|
+
const getHierarchy = dependenciesHierarchyForPackage.bind(null, ctx);
|
|
66
92
|
const pairs = await Promise.all(projectPaths.map(async (projectPath) => {
|
|
67
93
|
return [
|
|
68
94
|
projectPath,
|
|
69
|
-
await
|
|
95
|
+
await getHierarchy(projectPath),
|
|
70
96
|
];
|
|
71
97
|
}));
|
|
72
98
|
for (const [projectPath, dependenciesHierarchy] of pairs) {
|
|
@@ -74,7 +100,8 @@ async function buildDependenciesHierarchy(projectPaths, maybeOpts) {
|
|
|
74
100
|
}
|
|
75
101
|
return result;
|
|
76
102
|
}
|
|
77
|
-
async function dependenciesHierarchyForPackage(
|
|
103
|
+
async function dependenciesHierarchyForPackage(opts, projectPath) {
|
|
104
|
+
const { currentLockfile, wantedLockfile, graph, materializationCache, depTypes } = opts;
|
|
78
105
|
const importerId = (0, lockfile_fs_1.getLockfileImporterId)(opts.lockfileDir, projectPath);
|
|
79
106
|
if (!currentLockfile.importers[importerId])
|
|
80
107
|
return {};
|
|
@@ -82,40 +109,23 @@ async function dependenciesHierarchyForPackage(projectPath, currentLockfile, wan
|
|
|
82
109
|
? opts.modulesDir
|
|
83
110
|
: path_1.default.join(projectPath, opts.modulesDir ?? 'node_modules');
|
|
84
111
|
const savedDeps = getAllDirectDependencies(currentLockfile.importers[importerId]);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const
|
|
112
|
+
// When searching, unsaved deps are irrelevant — they aren't in the lockfile
|
|
113
|
+
// graph and can't have dependency subtrees showing paths to the search target.
|
|
114
|
+
const unsavedDeps = opts.search
|
|
115
|
+
? []
|
|
116
|
+
: ((await (0, read_modules_dir_1.readModulesDir)(modulesDir)) ?? []).filter((directDep) => !savedDeps[directDep]);
|
|
88
117
|
const currentPackages = currentLockfile.packages ?? {};
|
|
89
118
|
const wantedPackages = wantedLockfile?.packages ?? {};
|
|
90
119
|
const getTreeOpts = {
|
|
120
|
+
...opts,
|
|
91
121
|
currentPackages,
|
|
92
|
-
excludePeerDependencies: opts.excludePeerDependencies,
|
|
93
122
|
importers: currentLockfile.importers,
|
|
94
|
-
include: opts.include,
|
|
95
|
-
depTypes,
|
|
96
|
-
lockfileDir: opts.lockfileDir,
|
|
97
|
-
onlyProjects: opts.onlyProjects,
|
|
98
123
|
rewriteLinkVersionDir: projectPath,
|
|
99
124
|
maxDepth: opts.depth,
|
|
100
|
-
registries: opts.registries,
|
|
101
|
-
search: opts.search,
|
|
102
|
-
showDedupedSearchMatches: opts.showDedupedSearchMatches,
|
|
103
|
-
skipped: opts.skipped,
|
|
104
125
|
wantedPackages,
|
|
105
|
-
virtualStoreDir: opts.virtualStoreDir,
|
|
106
|
-
virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,
|
|
107
126
|
modulesDir,
|
|
108
127
|
};
|
|
109
128
|
const parentId = { type: 'importer', importerId };
|
|
110
|
-
// Build ONE shared graph and cache for the entire project, reused
|
|
111
|
-
// across all dependency fields and top-level deps.
|
|
112
|
-
const graph = (0, buildDependencyGraph_js_1.buildDependencyGraph)(parentId, {
|
|
113
|
-
currentPackages,
|
|
114
|
-
importers: currentLockfile.importers,
|
|
115
|
-
include: opts.include,
|
|
116
|
-
lockfileDir: opts.lockfileDir,
|
|
117
|
-
});
|
|
118
|
-
const materializationCache = new Map();
|
|
119
129
|
const getChildrenTree = (nodeId, parentDir) => (0, getTree_js_1.getTree)({ ...getTreeOpts, parentDir, graph, materializationCache }, nodeId);
|
|
120
130
|
const result = {};
|
|
121
131
|
for (const dependenciesField of types_1.DEPENDENCIES_FIELDS.sort().filter(dependenciesField => opts.include[dependenciesField])) {
|
|
@@ -153,17 +163,30 @@ async function dependenciesHierarchyForPackage(projectPath, currentLockfile, wan
|
|
|
153
163
|
if (opts.onlyProjects && nodeId?.type !== 'importer') {
|
|
154
164
|
continue;
|
|
155
165
|
}
|
|
156
|
-
|
|
166
|
+
let treeResult;
|
|
167
|
+
if (nodeId == null) {
|
|
157
168
|
if ((opts.search != null) && !searchMatch)
|
|
158
169
|
continue;
|
|
159
170
|
newEntry = packageInfo;
|
|
160
171
|
}
|
|
161
172
|
else {
|
|
162
|
-
|
|
163
|
-
if (
|
|
173
|
+
treeResult = getChildrenTree(nodeId, packageInfo.path);
|
|
174
|
+
if (treeResult.deduped) {
|
|
175
|
+
// This subtree was already materialized for a previous importer.
|
|
176
|
+
const showDeduped = opts.search == null || Boolean(searchMatch) ||
|
|
177
|
+
Boolean(opts.showDedupedSearchMatches && treeResult.hasSearchMatch);
|
|
178
|
+
if (showDeduped) {
|
|
179
|
+
newEntry = packageInfo;
|
|
180
|
+
if (treeResult.count > 0) {
|
|
181
|
+
newEntry.deduped = true;
|
|
182
|
+
newEntry.dedupedDependenciesCount = treeResult.count;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else if (treeResult.nodes.length > 0) {
|
|
164
187
|
newEntry = {
|
|
165
188
|
...packageInfo,
|
|
166
|
-
dependencies,
|
|
189
|
+
dependencies: treeResult.nodes,
|
|
167
190
|
};
|
|
168
191
|
}
|
|
169
192
|
else if ((opts.search == null) || searchMatch) {
|
|
@@ -177,49 +200,56 @@ async function dependenciesHierarchyForPackage(projectPath, currentLockfile, wan
|
|
|
177
200
|
newEntry.searchMessage = searchMatch;
|
|
178
201
|
}
|
|
179
202
|
}
|
|
203
|
+
else if (newEntry.deduped && opts.showDedupedSearchMatches && treeResult?.hasSearchMatch) {
|
|
204
|
+
newEntry.searched = true;
|
|
205
|
+
if (treeResult.searchMessages.length > 0) {
|
|
206
|
+
newEntry.searchMessage = treeResult.searchMessages.join('\n');
|
|
207
|
+
}
|
|
208
|
+
}
|
|
180
209
|
result[dependenciesField].push(newEntry);
|
|
181
210
|
}
|
|
182
211
|
}
|
|
183
212
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
catch {
|
|
192
|
-
// if error happened. The package is not a link
|
|
193
|
-
const pkg = await (0, read_package_json_1.safeReadPackageJsonFromDir)(pkgPath);
|
|
194
|
-
version = pkg?.version ?? 'undefined';
|
|
195
|
-
}
|
|
196
|
-
const pkg = {
|
|
197
|
-
alias: unsavedDep,
|
|
198
|
-
isMissing: false,
|
|
199
|
-
isPeer: false,
|
|
200
|
-
isSkipped: false,
|
|
201
|
-
name: unsavedDep,
|
|
202
|
-
path: pkgPath,
|
|
203
|
-
version,
|
|
204
|
-
};
|
|
205
|
-
const searchMatch = opts.search?.({
|
|
206
|
-
alias: pkg.alias,
|
|
207
|
-
name: pkg.name,
|
|
208
|
-
version: pkg.version,
|
|
209
|
-
readManifest: () => (0, read_package_json_1.readPackageJsonFromDirSync)(pkgPath),
|
|
210
|
-
});
|
|
211
|
-
if ((opts.search != null) && !searchMatch)
|
|
212
|
-
return;
|
|
213
|
-
const newEntry = pkg;
|
|
214
|
-
if (searchMatch) {
|
|
215
|
-
newEntry.searched = true;
|
|
216
|
-
if (typeof searchMatch === 'string') {
|
|
217
|
-
newEntry.searchMessage = searchMatch;
|
|
213
|
+
if (unsavedDeps.length > 0)
|
|
214
|
+
await Promise.all(unsavedDeps.map(async (unsavedDep) => {
|
|
215
|
+
let pkgPath = path_1.default.join(modulesDir, unsavedDep);
|
|
216
|
+
let version;
|
|
217
|
+
try {
|
|
218
|
+
pkgPath = await (0, resolve_link_target_1.default)(pkgPath);
|
|
219
|
+
version = `link:${(0, normalize_path_1.default)(path_1.default.relative(projectPath, pkgPath))}`;
|
|
218
220
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
221
|
+
catch {
|
|
222
|
+
// if error happened. The package is not a link
|
|
223
|
+
const pkg = await (0, read_package_json_1.safeReadPackageJsonFromDir)(pkgPath);
|
|
224
|
+
version = pkg?.version ?? 'undefined';
|
|
225
|
+
}
|
|
226
|
+
const pkg = {
|
|
227
|
+
alias: unsavedDep,
|
|
228
|
+
isMissing: false,
|
|
229
|
+
isPeer: false,
|
|
230
|
+
isSkipped: false,
|
|
231
|
+
name: unsavedDep,
|
|
232
|
+
path: pkgPath,
|
|
233
|
+
version,
|
|
234
|
+
};
|
|
235
|
+
const searchMatch = opts.search?.({
|
|
236
|
+
alias: pkg.alias,
|
|
237
|
+
name: pkg.name,
|
|
238
|
+
version: pkg.version,
|
|
239
|
+
readManifest: () => (0, read_package_json_1.readPackageJsonFromDirSync)(pkgPath),
|
|
240
|
+
});
|
|
241
|
+
if ((opts.search != null) && !searchMatch)
|
|
242
|
+
return;
|
|
243
|
+
const newEntry = pkg;
|
|
244
|
+
if (searchMatch) {
|
|
245
|
+
newEntry.searched = true;
|
|
246
|
+
if (typeof searchMatch === 'string') {
|
|
247
|
+
newEntry.searchMessage = searchMatch;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
result.unsavedDependencies = result.unsavedDependencies ?? [];
|
|
251
|
+
result.unsavedDependencies.push(newEntry);
|
|
252
|
+
}));
|
|
223
253
|
return result;
|
|
224
254
|
}
|
|
225
255
|
function getAllDirectDependencies(projectSnapshot) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildDependenciesHierarchy.js","sourceRoot":"","sources":["../src/buildDependenciesHierarchy.ts"],"names":[],"mappings":";;;;;AAgCA,
|
|
1
|
+
{"version":3,"file":"buildDependenciesHierarchy.js","sourceRoot":"","sources":["../src/buildDependenciesHierarchy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type DependenciesField, type Finder, type Registries } from '@pnpm/types';
|
|
2
|
+
import { type DependencyNode } from './DependencyNode.js';
|
|
3
|
+
export interface DependenciesTree {
|
|
4
|
+
dependencies?: DependencyNode[];
|
|
5
|
+
devDependencies?: DependencyNode[];
|
|
6
|
+
optionalDependencies?: DependencyNode[];
|
|
7
|
+
unsavedDependencies?: DependencyNode[];
|
|
8
|
+
}
|
|
9
|
+
export declare function buildDependenciesTree(projectPaths: string[] | undefined, maybeOpts: {
|
|
10
|
+
depth: number;
|
|
11
|
+
excludePeerDependencies?: boolean;
|
|
12
|
+
include?: {
|
|
13
|
+
[dependenciesField in DependenciesField]: boolean;
|
|
14
|
+
};
|
|
15
|
+
registries?: Registries;
|
|
16
|
+
onlyProjects?: boolean;
|
|
17
|
+
search?: Finder;
|
|
18
|
+
showDedupedSearchMatches?: boolean;
|
|
19
|
+
lockfileDir: string;
|
|
20
|
+
checkWantedLockfileOnly?: boolean;
|
|
21
|
+
modulesDir?: string;
|
|
22
|
+
virtualStoreDirMaxLength: number;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
[projectDir: string]: DependenciesTree;
|
|
25
|
+
}>;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildDependenciesTree = buildDependenciesTree;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const lockfile_fs_1 = require("@pnpm/lockfile.fs");
|
|
9
|
+
const lockfile_detect_dep_types_1 = require("@pnpm/lockfile.detect-dep-types");
|
|
10
|
+
const modules_yaml_1 = require("@pnpm/modules-yaml");
|
|
11
|
+
const normalize_registries_1 = require("@pnpm/normalize-registries");
|
|
12
|
+
const read_modules_dir_1 = require("@pnpm/read-modules-dir");
|
|
13
|
+
const read_package_json_1 = require("@pnpm/read-package-json");
|
|
14
|
+
const types_1 = require("@pnpm/types");
|
|
15
|
+
const normalize_path_1 = __importDefault(require("normalize-path"));
|
|
16
|
+
const realpath_missing_1 = __importDefault(require("realpath-missing"));
|
|
17
|
+
const resolve_link_target_1 = __importDefault(require("resolve-link-target"));
|
|
18
|
+
const buildDependencyGraph_js_1 = require("./buildDependencyGraph.js");
|
|
19
|
+
const getTree_js_1 = require("./getTree.js");
|
|
20
|
+
async function buildDependenciesTree(projectPaths, maybeOpts) {
|
|
21
|
+
if (!maybeOpts?.lockfileDir) {
|
|
22
|
+
throw new TypeError('opts.lockfileDir is required');
|
|
23
|
+
}
|
|
24
|
+
const modulesDir = await (0, realpath_missing_1.default)(path_1.default.join(maybeOpts.lockfileDir, maybeOpts.modulesDir ?? 'node_modules'));
|
|
25
|
+
const modules = await (0, modules_yaml_1.readModulesManifest)(modulesDir);
|
|
26
|
+
const registries = (0, normalize_registries_1.normalizeRegistries)({
|
|
27
|
+
...maybeOpts?.registries,
|
|
28
|
+
...modules?.registries,
|
|
29
|
+
});
|
|
30
|
+
const internalPnpmDir = path_1.default.join(modulesDir, '.pnpm');
|
|
31
|
+
const currentLockfile = await (0, lockfile_fs_1.readCurrentLockfile)(internalPnpmDir, { ignoreIncompatible: false });
|
|
32
|
+
const wantedLockfile = await (0, lockfile_fs_1.readWantedLockfile)(maybeOpts.lockfileDir, { ignoreIncompatible: false });
|
|
33
|
+
if (projectPaths == null) {
|
|
34
|
+
projectPaths = Object.keys(wantedLockfile?.importers ?? {})
|
|
35
|
+
.map((id) => path_1.default.join(maybeOpts.lockfileDir, id));
|
|
36
|
+
}
|
|
37
|
+
const result = {};
|
|
38
|
+
const lockfileToUse = maybeOpts.checkWantedLockfileOnly ? wantedLockfile : currentLockfile;
|
|
39
|
+
if (!lockfileToUse) {
|
|
40
|
+
for (const projectPath of projectPaths) {
|
|
41
|
+
result[projectPath] = {};
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
const opts = {
|
|
46
|
+
depth: maybeOpts.depth || 0,
|
|
47
|
+
excludePeerDependencies: maybeOpts.excludePeerDependencies,
|
|
48
|
+
include: maybeOpts.include ?? {
|
|
49
|
+
dependencies: true,
|
|
50
|
+
devDependencies: true,
|
|
51
|
+
optionalDependencies: true,
|
|
52
|
+
},
|
|
53
|
+
lockfileDir: maybeOpts.lockfileDir,
|
|
54
|
+
checkWantedLockfileOnly: maybeOpts.checkWantedLockfileOnly,
|
|
55
|
+
onlyProjects: maybeOpts.onlyProjects,
|
|
56
|
+
registries,
|
|
57
|
+
search: maybeOpts.search,
|
|
58
|
+
showDedupedSearchMatches: maybeOpts.showDedupedSearchMatches ?? (maybeOpts.search != null),
|
|
59
|
+
skipped: new Set(modules?.skipped ?? []),
|
|
60
|
+
storeDir: modules?.storeDir,
|
|
61
|
+
modulesDir,
|
|
62
|
+
virtualStoreDir: modules?.virtualStoreDir,
|
|
63
|
+
virtualStoreDirMaxLength: modules?.virtualStoreDirMaxLength ?? maybeOpts.virtualStoreDirMaxLength,
|
|
64
|
+
};
|
|
65
|
+
// Build the dependency graph ONCE for all importers and share a single
|
|
66
|
+
// MaterializationCache so that identical subtrees are only materialized once.
|
|
67
|
+
const allRootIds = [];
|
|
68
|
+
for (const projectPath of projectPaths) {
|
|
69
|
+
const importerId = (0, lockfile_fs_1.getLockfileImporterId)(opts.lockfileDir, projectPath);
|
|
70
|
+
if (lockfileToUse.importers[importerId]) {
|
|
71
|
+
allRootIds.push({ type: 'importer', importerId });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const sharedGraph = (0, buildDependencyGraph_js_1.buildDependencyGraph)(allRootIds, {
|
|
75
|
+
currentPackages: lockfileToUse.packages ?? {},
|
|
76
|
+
importers: lockfileToUse.importers,
|
|
77
|
+
include: opts.include,
|
|
78
|
+
lockfileDir: opts.lockfileDir,
|
|
79
|
+
});
|
|
80
|
+
const sharedMaterializationCache = new Map();
|
|
81
|
+
const sharedDepTypes = (0, lockfile_detect_dep_types_1.detectDepTypes)(lockfileToUse);
|
|
82
|
+
const ctx = {
|
|
83
|
+
currentLockfile: lockfileToUse,
|
|
84
|
+
wantedLockfile,
|
|
85
|
+
...opts,
|
|
86
|
+
graph: sharedGraph,
|
|
87
|
+
materializationCache: sharedMaterializationCache,
|
|
88
|
+
depTypes: sharedDepTypes,
|
|
89
|
+
};
|
|
90
|
+
const getHierarchy = dependenciesHierarchyForPackage.bind(null, ctx);
|
|
91
|
+
const pairs = await Promise.all(projectPaths.map(async (projectPath) => {
|
|
92
|
+
return [
|
|
93
|
+
projectPath,
|
|
94
|
+
await getHierarchy(projectPath),
|
|
95
|
+
];
|
|
96
|
+
}));
|
|
97
|
+
for (const [projectPath, dependenciesHierarchy] of pairs) {
|
|
98
|
+
result[projectPath] = dependenciesHierarchy;
|
|
99
|
+
}
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
async function dependenciesHierarchyForPackage(opts, projectPath) {
|
|
103
|
+
const { currentLockfile, wantedLockfile } = opts;
|
|
104
|
+
const importerId = (0, lockfile_fs_1.getLockfileImporterId)(opts.lockfileDir, projectPath);
|
|
105
|
+
if (!currentLockfile.importers[importerId])
|
|
106
|
+
return {};
|
|
107
|
+
const modulesDir = opts.modulesDir && path_1.default.isAbsolute(opts.modulesDir)
|
|
108
|
+
? opts.modulesDir
|
|
109
|
+
: path_1.default.join(projectPath, opts.modulesDir ?? 'node_modules');
|
|
110
|
+
const currentPackages = currentLockfile.packages ?? {};
|
|
111
|
+
const wantedPackages = wantedLockfile?.packages ?? {};
|
|
112
|
+
// Build a map from alias → dependency field for post-categorization.
|
|
113
|
+
const result = {};
|
|
114
|
+
const fieldMap = new Map();
|
|
115
|
+
for (const field of types_1.DEPENDENCIES_FIELDS.sort().filter(f => opts.include[f])) {
|
|
116
|
+
result[field] = [];
|
|
117
|
+
const fieldDeps = currentLockfile.importers[importerId][field] ?? {};
|
|
118
|
+
for (const alias in fieldDeps) {
|
|
119
|
+
fieldMap.set(alias, field);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const parentId = { type: 'importer', importerId };
|
|
123
|
+
// Materialize the tree rooted at this importer in a single getTree call.
|
|
124
|
+
// materializeChildren handles all dedup, search, and circular detection.
|
|
125
|
+
// The depth is incremented by 1 because the importer itself is one level;
|
|
126
|
+
// opts.depth controls how deep *below* the direct dependencies we go.
|
|
127
|
+
const nodes = (0, getTree_js_1.getTree)({
|
|
128
|
+
...opts,
|
|
129
|
+
currentPackages,
|
|
130
|
+
importers: currentLockfile.importers,
|
|
131
|
+
rewriteLinkVersionDir: projectPath,
|
|
132
|
+
maxDepth: opts.depth + 1,
|
|
133
|
+
wantedPackages,
|
|
134
|
+
modulesDir,
|
|
135
|
+
}, parentId);
|
|
136
|
+
// Categorize the materialized nodes into their dependency fields.
|
|
137
|
+
for (const node of nodes) {
|
|
138
|
+
const field = fieldMap.get(node.alias);
|
|
139
|
+
if (field != null) {
|
|
140
|
+
result[field].push(node);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Handle unsaved dependencies (packages in node_modules but not in lockfile).
|
|
144
|
+
// When searching, unsaved deps are irrelevant — they aren't in the lockfile
|
|
145
|
+
// graph and can't have dependency subtrees showing paths to the search target.
|
|
146
|
+
if (!opts.search) {
|
|
147
|
+
const savedDeps = getAllDirectDependencies(currentLockfile.importers[importerId]);
|
|
148
|
+
const unsavedDeps = ((await (0, read_modules_dir_1.readModulesDir)(modulesDir)) ?? []).filter((directDep) => !savedDeps[directDep]);
|
|
149
|
+
if (unsavedDeps.length > 0)
|
|
150
|
+
await Promise.all(unsavedDeps.map(async (unsavedDep) => {
|
|
151
|
+
let pkgPath = path_1.default.join(modulesDir, unsavedDep);
|
|
152
|
+
let version;
|
|
153
|
+
try {
|
|
154
|
+
pkgPath = await (0, resolve_link_target_1.default)(pkgPath);
|
|
155
|
+
version = `link:${(0, normalize_path_1.default)(path_1.default.relative(projectPath, pkgPath))}`;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// if error happened. The package is not a link
|
|
159
|
+
const pkg = await (0, read_package_json_1.safeReadPackageJsonFromDir)(pkgPath);
|
|
160
|
+
version = pkg?.version ?? 'undefined';
|
|
161
|
+
}
|
|
162
|
+
const pkg = {
|
|
163
|
+
alias: unsavedDep,
|
|
164
|
+
isMissing: false,
|
|
165
|
+
isPeer: false,
|
|
166
|
+
isSkipped: false,
|
|
167
|
+
name: unsavedDep,
|
|
168
|
+
path: pkgPath,
|
|
169
|
+
version,
|
|
170
|
+
};
|
|
171
|
+
result.unsavedDependencies = result.unsavedDependencies ?? [];
|
|
172
|
+
result.unsavedDependencies.push(pkg);
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
function getAllDirectDependencies(projectSnapshot) {
|
|
178
|
+
return {
|
|
179
|
+
...projectSnapshot.dependencies,
|
|
180
|
+
...projectSnapshot.devDependencies,
|
|
181
|
+
...projectSnapshot.optionalDependencies,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=buildDependenciesTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildDependenciesTree.js","sourceRoot":"","sources":["../src/buildDependenciesTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ interface DependencyGraphNode {
|
|
|
16
16
|
export interface DependencyGraph {
|
|
17
17
|
nodes: Map<string, DependencyGraphNode>;
|
|
18
18
|
}
|
|
19
|
-
export declare function buildDependencyGraph(
|
|
19
|
+
export declare function buildDependencyGraph(rootIds: TreeNodeId[], opts: {
|
|
20
20
|
currentPackages: PackageSnapshots;
|
|
21
21
|
importers: Record<string, ProjectSnapshot>;
|
|
22
22
|
include: {
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.buildDependencyGraph = buildDependencyGraph;
|
|
4
4
|
const getTreeNodeChildId_js_1 = require("./getTreeNodeChildId.js");
|
|
5
5
|
const TreeNodeId_js_1 = require("./TreeNodeId.js");
|
|
6
|
-
function buildDependencyGraph(
|
|
6
|
+
function buildDependencyGraph(rootIds, opts) {
|
|
7
7
|
const graph = { nodes: new Map() };
|
|
8
|
-
const queue = [
|
|
8
|
+
const queue = [...rootIds];
|
|
9
9
|
let queueIdx = 0;
|
|
10
10
|
const visited = new Set();
|
|
11
11
|
while (queueIdx < queue.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildDependencyGraph.js","sourceRoot":"","sources":["../src/buildDependencyGraph.ts"],"names":[],"mappings":";;AAuBA,oDA4EC;AAlGD,mEAA4D;AAC5D,mDAAsE;AAqBtE,SAAgB,oBAAoB,CAClC,
|
|
1
|
+
{"version":3,"file":"buildDependencyGraph.js","sourceRoot":"","sources":["../src/buildDependencyGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type LockfileObject } from '@pnpm/lockfile.fs';
|
|
2
|
+
import { type DependenciesField, type DependencyManifest, type Finder, type Registries } from '@pnpm/types';
|
|
3
|
+
export interface DependentNode {
|
|
4
|
+
name: string;
|
|
5
|
+
displayName?: string;
|
|
6
|
+
version: string;
|
|
7
|
+
dependents?: DependentNode[];
|
|
8
|
+
circular?: true;
|
|
9
|
+
deduped?: true;
|
|
10
|
+
/** Short hash distinguishing peer-dep variants of the same name@version */
|
|
11
|
+
peersSuffixHash?: string;
|
|
12
|
+
/** For importer leaf nodes: which dep field */
|
|
13
|
+
depField?: DependenciesField;
|
|
14
|
+
}
|
|
15
|
+
export interface DependentsTree {
|
|
16
|
+
name: string;
|
|
17
|
+
displayName?: string;
|
|
18
|
+
version: string;
|
|
19
|
+
/** Resolved filesystem path to this package */
|
|
20
|
+
path?: string;
|
|
21
|
+
/** Short hash distinguishing peer-dep variants of the same name@version */
|
|
22
|
+
peersSuffixHash?: string;
|
|
23
|
+
/** Message returned by the finder function, if any */
|
|
24
|
+
searchMessage?: string;
|
|
25
|
+
dependents: DependentNode[];
|
|
26
|
+
}
|
|
27
|
+
export interface ImporterInfo {
|
|
28
|
+
name: string;
|
|
29
|
+
version: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function buildDependentsTree(packages: string[], projectPaths: string[], opts: {
|
|
32
|
+
lockfileDir: string;
|
|
33
|
+
include?: {
|
|
34
|
+
[field in DependenciesField]?: boolean;
|
|
35
|
+
};
|
|
36
|
+
modulesDir?: string;
|
|
37
|
+
registries?: Registries;
|
|
38
|
+
finders?: Finder[];
|
|
39
|
+
importerInfoMap: Map<string, ImporterInfo>;
|
|
40
|
+
lockfile: LockfileObject;
|
|
41
|
+
nameFormatter?: (info: {
|
|
42
|
+
name: string;
|
|
43
|
+
version: string;
|
|
44
|
+
manifest: DependencyManifest;
|
|
45
|
+
}) => string | undefined;
|
|
46
|
+
}): Promise<DependentsTree[]>;
|