forked from guacsec/trustify-da-javascript-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjavascript_npm.js
More file actions
42 lines (36 loc) · 1.21 KB
/
Copy pathjavascript_npm.js
File metadata and controls
42 lines (36 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import Base_javascript from './base_javascript.js';
export default class Javascript_npm extends Base_javascript {
_lockFileName() {
return "package-lock.json";
}
_cmdName() {
return "npm";
}
_listCmdArgs(includeTransitive) {
return ['ls', includeTransitive ? '--all' : '--depth=0', '--package-lock-only', '--omit=dev', '--json'];
}
_updateLockFileCmdArgs() {
return ['install', '--package-lock-only'];
}
_buildDependencyTree(includeTransitive, opts = {}) {
// npm ls --json returns a single tree rooted at the workspace root.
// When analyzing a workspace member, its deps are nested under the
// root's dependencies keyed by the member name — extract that subtree
// so downstream analysis sees only the member's dependencies.
const tree = super._buildDependencyTree(includeTransitive, opts);
const memberName = this._getManifest().name;
if (tree.name === memberName) {
return tree;
}
const memberEntry = tree.dependencies?.[memberName];
if (memberEntry) {
return {
name: memberName,
version: memberEntry.version || this._getManifest().version,
dependencies: memberEntry.dependencies,
optionalDependencies: memberEntry.optionalDependencies,
};
}
return tree;
}
}