@npmcli/arborist 5.0.3 → 5.0.4
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/arborist/build-ideal-tree.js +22 -2
- package/lib/arborist/load-virtual.js +3 -2
- package/lib/arborist/reify.js +1 -1
- package/lib/tracker.js +7 -3
- package/package.json +12 -14
|
@@ -355,6 +355,21 @@ Try using the package name instead, e.g:
|
|
|
355
355
|
})
|
|
356
356
|
|
|
357
357
|
.then(tree => {
|
|
358
|
+
// search the virtual tree for invalid edges, if any are found add their source to
|
|
359
|
+
// the depsQueue so that we'll fix it later
|
|
360
|
+
depth({
|
|
361
|
+
tree,
|
|
362
|
+
getChildren: (node) => [...node.edgesOut.values()].map(edge => edge.to),
|
|
363
|
+
filter: node => node,
|
|
364
|
+
visit: node => {
|
|
365
|
+
for (const edge of node.edgesOut.values()) {
|
|
366
|
+
if (!edge.valid) {
|
|
367
|
+
this[_depsQueue].push(node)
|
|
368
|
+
break // no need to continue the loop after the first hit
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
})
|
|
358
373
|
// null the virtual tree, because we're about to hack away at it
|
|
359
374
|
// if you want another one, load another copy.
|
|
360
375
|
this.idealTree = tree
|
|
@@ -743,6 +758,12 @@ This is a one-time fix-up, please be patient...
|
|
|
743
758
|
continue
|
|
744
759
|
}
|
|
745
760
|
|
|
761
|
+
// if the node's location isn't within node_modules then this is actually
|
|
762
|
+
// a link target, so skip it. the link node itself will be queued later.
|
|
763
|
+
if (!node.location.startsWith('node_modules')) {
|
|
764
|
+
continue
|
|
765
|
+
}
|
|
766
|
+
|
|
746
767
|
queue.push(async () => {
|
|
747
768
|
log.silly('inflate', node.location)
|
|
748
769
|
const { resolved, version, path, name, location, integrity } = node
|
|
@@ -750,8 +771,7 @@ This is a one-time fix-up, please be patient...
|
|
|
750
771
|
const useResolved = resolved && (
|
|
751
772
|
!version || resolved.startsWith('file:')
|
|
752
773
|
)
|
|
753
|
-
const id = useResolved ? resolved
|
|
754
|
-
: version || `file:${node.path}`
|
|
774
|
+
const id = useResolved ? resolved : version
|
|
755
775
|
const spec = npa.resolve(name, id, dirname(path))
|
|
756
776
|
const t = `idealTree:inflate:${location}`
|
|
757
777
|
this.addTracker(t)
|
|
@@ -79,7 +79,7 @@ module.exports = cls => class VirtualLoader extends cls {
|
|
|
79
79
|
async [loadRoot] (s) {
|
|
80
80
|
const pj = this.path + '/package.json'
|
|
81
81
|
const pkg = await rpj(pj).catch(() => s.data.packages['']) || {}
|
|
82
|
-
return this[loadWorkspaces](this[loadNode]('', pkg))
|
|
82
|
+
return this[loadWorkspaces](this[loadNode]('', pkg, true))
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
async [loadFromShrinkwrap] (s, root) {
|
|
@@ -264,7 +264,7 @@ module.exports = cls => class VirtualLoader extends cls {
|
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
[loadNode] (location, sw) {
|
|
267
|
+
[loadNode] (location, sw, loadOverrides) {
|
|
268
268
|
const p = this.virtualTree ? this.virtualTree.realpath : this.path
|
|
269
269
|
const path = resolve(p, location)
|
|
270
270
|
// shrinkwrap doesn't include package name unless necessary
|
|
@@ -290,6 +290,7 @@ module.exports = cls => class VirtualLoader extends cls {
|
|
|
290
290
|
optional,
|
|
291
291
|
devOptional,
|
|
292
292
|
peer,
|
|
293
|
+
loadOverrides,
|
|
293
294
|
})
|
|
294
295
|
// cast to boolean because they're undefined in the lock file when false
|
|
295
296
|
node.extraneous = !!sw.extraneous
|
package/lib/arborist/reify.js
CHANGED
|
@@ -1308,7 +1308,7 @@ module.exports = cls => class Reifier extends cls {
|
|
|
1308
1308
|
// to only names that are found in this list
|
|
1309
1309
|
const retrieveUpdatedNodes = names => {
|
|
1310
1310
|
const filterDirectDependencies = node =>
|
|
1311
|
-
!node.isRoot && node.resolveParent.isRoot
|
|
1311
|
+
!node.isRoot && node.resolveParent && node.resolveParent.isRoot
|
|
1312
1312
|
&& (!names || names.includes(node.name))
|
|
1313
1313
|
&& exactVersion(node) // skip update for exact ranges
|
|
1314
1314
|
|
package/lib/tracker.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
const _progress = Symbol('_progress')
|
|
2
2
|
const _onError = Symbol('_onError')
|
|
3
|
+
const _setProgress = Symbol('_setProgess')
|
|
3
4
|
const npmlog = require('npmlog')
|
|
4
5
|
|
|
5
6
|
module.exports = cls => class Tracker extends cls {
|
|
6
7
|
constructor (options = {}) {
|
|
7
8
|
super(options)
|
|
9
|
+
this[_setProgress] = !!options.progress
|
|
8
10
|
this[_progress] = new Map()
|
|
9
11
|
}
|
|
10
12
|
|
|
@@ -27,7 +29,7 @@ module.exports = cls => class Tracker extends cls {
|
|
|
27
29
|
// 1. no existing tracker, no subsection
|
|
28
30
|
// Create a new tracker from npmlog
|
|
29
31
|
// starts progress bar
|
|
30
|
-
if (this[_progress].size === 0) {
|
|
32
|
+
if (this[_setProgress] && this[_progress].size === 0) {
|
|
31
33
|
npmlog.enableProgress()
|
|
32
34
|
}
|
|
33
35
|
|
|
@@ -76,7 +78,7 @@ module.exports = cls => class Tracker extends cls {
|
|
|
76
78
|
|
|
77
79
|
// remove progress bar if all
|
|
78
80
|
// trackers are finished
|
|
79
|
-
if (this[_progress].size === 0) {
|
|
81
|
+
if (this[_setProgress] && this[_progress].size === 0) {
|
|
80
82
|
npmlog.disableProgress()
|
|
81
83
|
}
|
|
82
84
|
} else if (!hasTracker && subsection === null) {
|
|
@@ -92,7 +94,9 @@ module.exports = cls => class Tracker extends cls {
|
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
[_onError] (msg) {
|
|
95
|
-
|
|
97
|
+
if (this[_setProgress]) {
|
|
98
|
+
npmlog.disableProgress()
|
|
99
|
+
}
|
|
96
100
|
throw new Error(msg)
|
|
97
101
|
}
|
|
98
102
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@npmcli/arborist",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.4",
|
|
4
4
|
"description": "Manage node_modules trees",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@isaacs/string-locale-compare": "^1.1.0",
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
"walk-up-path": "^1.0.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@npmcli/
|
|
42
|
+
"@npmcli/eslint-config": "^3.0.1",
|
|
43
|
+
"@npmcli/template-oss": "3.2.2",
|
|
43
44
|
"benchmark": "^2.1.4",
|
|
44
45
|
"chalk": "^4.1.0",
|
|
45
46
|
"minify-registry-metadata": "^2.1.0",
|
|
@@ -57,24 +58,24 @@
|
|
|
57
58
|
"postversion": "npm publish",
|
|
58
59
|
"prepublishOnly": "git push origin --follow-tags",
|
|
59
60
|
"eslint": "eslint",
|
|
60
|
-
"lint": "eslint
|
|
61
|
+
"lint": "eslint \"**/*.js\"",
|
|
61
62
|
"lintfix": "npm run lint -- --fix",
|
|
62
63
|
"benchmark": "node scripts/benchmark.js",
|
|
63
64
|
"benchclean": "rm -rf scripts/benchmark/*/",
|
|
64
65
|
"npmclilint": "npmcli-lint",
|
|
65
|
-
"postlint": "
|
|
66
|
-
"template-
|
|
66
|
+
"postlint": "template-oss-check",
|
|
67
|
+
"template-oss-apply": "template-oss-apply --force"
|
|
67
68
|
},
|
|
68
69
|
"repository": {
|
|
69
70
|
"type": "git",
|
|
70
|
-
"url": "https://github.com/npm/cli",
|
|
71
|
+
"url": "https://github.com/npm/cli.git",
|
|
71
72
|
"directory": "workspaces/arborist"
|
|
72
73
|
},
|
|
73
74
|
"author": "GitHub Inc.",
|
|
74
75
|
"license": "ISC",
|
|
75
76
|
"files": [
|
|
76
|
-
"bin",
|
|
77
|
-
"lib"
|
|
77
|
+
"bin/",
|
|
78
|
+
"lib/"
|
|
78
79
|
],
|
|
79
80
|
"main": "lib/index.js",
|
|
80
81
|
"bin": {
|
|
@@ -96,13 +97,10 @@
|
|
|
96
97
|
"timeout": "360"
|
|
97
98
|
},
|
|
98
99
|
"engines": {
|
|
99
|
-
"node": "^12.13.0 || ^14.15.0 || >=16"
|
|
100
|
+
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
|
|
100
101
|
},
|
|
101
|
-
"eslintIgnore": [
|
|
102
|
-
"test/fixtures/",
|
|
103
|
-
"!test/fixtures/*.js"
|
|
104
|
-
],
|
|
105
102
|
"templateOSS": {
|
|
106
|
-
"
|
|
103
|
+
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
|
|
104
|
+
"version": "3.2.2"
|
|
107
105
|
}
|
|
108
106
|
}
|