From afd94eb6c02193ac8ad51907a5c08c02ccba3c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kat=20March=C3=A1n?= Date: Fri, 21 Mar 2025 11:23:56 -0700 Subject: [PATCH 1/3] fix(arborist): omit failed optional dependencies from installed deps, but keep them 'in the tree' Fixes: https://github.com/npm/cli/issues/4828 Fixes: https://github.com/npm/cli/issues/7961 Replaces: https://github.com/npm/cli/pull/8127 Replaces: https://github.com/npm/cli/pull/8077 When optional dependencies fail, we don't want to install them, for whatever reason. The way this "uninstallation" is done right now is by simply removing the dependencies from the ideal tree during reification. Unfortunately, this means that what gets saved to the "hidden lockfile" is the edited ideal tree as well, and when NPM runs next, it'll use that when regenerating the "real" package-lock. This PR tags failed optional deps such that they're still added to the "trash list" (and thus have their directories cleaned up by the reifier), but prevents Arborist from removing them altogether from the ideal tree (which is usually done by setting their parent to `null`, making them unreachable, and letting them get GC'd). --- .../arborist/lib/arborist/build-ideal-tree.js | 6 +++-- .../arborist/lib/arborist/isolated-reifier.js | 3 +++ .../arborist/lib/arborist/load-virtual.js | 1 + workspaces/arborist/lib/arborist/reify.js | 27 +++++++++++++++++-- workspaces/arborist/lib/node.js | 3 +++ workspaces/arborist/lib/shrinkwrap.js | 19 +++++++++++-- 6 files changed, 53 insertions(+), 6 deletions(-) diff --git a/workspaces/arborist/lib/arborist/build-ideal-tree.js b/workspaces/arborist/lib/arborist/build-ideal-tree.js index a28778bd69e99..a7e01fcf14801 100644 --- a/workspaces/arborist/lib/arborist/build-ideal-tree.js +++ b/workspaces/arborist/lib/arborist/build-ideal-tree.js @@ -809,7 +809,8 @@ This is a one-time fix-up, please be patient... const crackOpen = this.#complete && node !== this.idealTree && node.resolved && - (hasBundle || hasShrinkwrap) + (hasBundle || hasShrinkwrap) && + !node.ideallyInert if (crackOpen) { const Arborist = this.constructor const opt = { ...this.options } @@ -1527,7 +1528,7 @@ This is a one-time fix-up, please be patient... const set = optionalSet(node) for (const node of set) { - node.parent = null + node.ideallyInert = true } } } @@ -1548,6 +1549,7 @@ This is a one-time fix-up, please be patient... node.parent !== null && !node.isProjectRoot && !excludeNodes.has(node) + && !node.ideallyInert ) { this[_addNodeToTrashList](node) } diff --git a/workspaces/arborist/lib/arborist/isolated-reifier.js b/workspaces/arborist/lib/arborist/isolated-reifier.js index 4fbcd801fdf63..ff0bbd2418c73 100644 --- a/workspaces/arborist/lib/arborist/isolated-reifier.js +++ b/workspaces/arborist/lib/arborist/isolated-reifier.js @@ -100,6 +100,9 @@ module.exports = cls => class IsolatedReifier extends cls { } async externalProxy (result, node) { + if (node.ideallyInert) { + return + } await this.assignCommonProperties(node, result) if (node.hasShrinkwrap) { const dir = join( diff --git a/workspaces/arborist/lib/arborist/load-virtual.js b/workspaces/arborist/lib/arborist/load-virtual.js index 07c986853913e..96cd18302e994 100644 --- a/workspaces/arborist/lib/arborist/load-virtual.js +++ b/workspaces/arborist/lib/arborist/load-virtual.js @@ -267,6 +267,7 @@ module.exports = cls => class VirtualLoader extends cls { integrity: sw.integrity, resolved: consistentResolve(sw.resolved, this.path, path), pkg: sw, + ideallyInert: sw.ideallyInert, hasShrinkwrap: sw.hasShrinkwrap, dev, optional, diff --git a/workspaces/arborist/lib/arborist/reify.js b/workspaces/arborist/lib/arborist/reify.js index 7315ed7bcb1bc..ce1daec1a36a8 100644 --- a/workspaces/arborist/lib/arborist/reify.js +++ b/workspaces/arborist/lib/arborist/reify.js @@ -149,7 +149,7 @@ module.exports = cls => class Reifier extends cls { for (const path of this[_trashList]) { const loc = relpath(this.idealTree.realpath, path) const node = this.idealTree.inventory.get(loc) - if (node && node.root === this.idealTree) { + if (node && node.root === this.idealTree && !node.ideallyInert) { node.parent = null } } @@ -237,6 +237,18 @@ module.exports = cls => class Reifier extends cls { this.idealTree.meta.hiddenLockfile = true this.idealTree.meta.lockfileVersion = defaultLockfileVersion + // Preserve inertness for failed stuff. + if (this.actualTree) { + for (const [loc, actual] of this.actualTree.inventory.entries()) { + if (actual.ideallyInert) { + const ideal = this.idealTree.inventory.get(loc) + if (ideal) { + ideal.ideallyInert = true + } + } + } + } + this.actualTree = this.idealTree this.idealTree = null @@ -599,6 +611,9 @@ module.exports = cls => class Reifier extends cls { // retire the same path at the same time. const dirsChecked = new Set() return promiseAllRejectLate(leaves.map(async node => { + if (node.ideallyInert) { + return + } for (const d of walkUp(node.path)) { if (d === node.top.path) { break @@ -743,6 +758,10 @@ module.exports = cls => class Reifier extends cls { } async #extractOrLink (node) { + if (node.ideallyInert) { + return + } + const nm = resolve(node.parent.path, 'node_modules') await this.#validateNodeModules(nm) @@ -818,6 +837,7 @@ module.exports = cls => class Reifier extends cls { const set = optionalSet(node) for (node of set) { log.verbose('reify', 'failed optional dependency', node.path) + node.ideallyInert = true this[_addNodeToTrashList](node) } }) : p).then(() => node) @@ -1152,6 +1172,9 @@ module.exports = cls => class Reifier extends cls { this.#retiredUnchanged[retireFolder] = [] return promiseAllRejectLate(diff.unchanged.map(node => { + if (node.ideallyInert) { + return + } // no need to roll back links, since we'll just delete them anyway if (node.isLink) { return mkdir(dirname(node.path), { recursive: true, force: true }) @@ -1231,7 +1254,7 @@ module.exports = cls => class Reifier extends cls { // skip links that only live within node_modules as they are most // likely managed by packages we installed, we only want to rebuild // unchanged links we directly manage - const linkedFromRoot = node.parent === tree || node.target.fsTop === tree + const linkedFromRoot = (node.parent === tree && !node.ideallyInert) || node.target.fsTop === tree if (node.isLink && linkedFromRoot) { nodes.push(node) } diff --git a/workspaces/arborist/lib/node.js b/workspaces/arborist/lib/node.js index 7bf9bc1fd6b5e..d067fe393a3be 100644 --- a/workspaces/arborist/lib/node.js +++ b/workspaces/arborist/lib/node.js @@ -103,6 +103,7 @@ class Node { global = false, dummy = false, sourceReference = null, + ideallyInert = false, } = options // this object gives querySelectorAll somewhere to stash context about a node // while processing a query @@ -197,6 +198,8 @@ class Node { this.extraneous = false } + this.ideallyInert = ideallyInert + this.edgesIn = new Set() this.edgesOut = new CaseInsensitiveMap() diff --git a/workspaces/arborist/lib/shrinkwrap.js b/workspaces/arborist/lib/shrinkwrap.js index 11703fad4b925..83b9e1a30fea5 100644 --- a/workspaces/arborist/lib/shrinkwrap.js +++ b/workspaces/arborist/lib/shrinkwrap.js @@ -109,6 +109,7 @@ const nodeMetaKeys = [ 'inBundle', 'hasShrinkwrap', 'hasInstallScript', + 'ideallyInert', ] const metaFieldFromPkg = (pkg, key) => { @@ -135,11 +136,15 @@ const assertNoNewer = async (path, data, lockTime, dir, seen) => { const parent = isParent ? dir : resolve(dir, 'node_modules') const rel = relpath(path, dir) + const inert = data.packages[rel]?.ideallyInert + if (inert) { + return + } seen.add(rel) let entries if (dir === path) { entries = [{ name: 'node_modules', isDirectory: () => true }] - } else { + } else if (!inert) { const { mtime: dirTime } = await stat(dir) if (dirTime > lockTime) { throw new Error(`out of date, updated: ${rel}`) @@ -173,7 +178,7 @@ const assertNoNewer = async (path, data, lockTime, dir, seen) => { // assert that all the entries in the lockfile were seen for (const loc in data.packages) { - if (!seen.has(loc)) { + if (!seen.has(loc) && !data.packages[loc].ideallyInert) { throw new Error(`missing from node_modules: ${loc}`) } } @@ -783,6 +788,10 @@ class Shrinkwrap { // ok, I did my best! good luck! } + if (lock.ideallyInert) { + meta.ideallyInert = true + } + if (lock.bundled) { meta.inBundle = true } @@ -953,6 +962,12 @@ class Shrinkwrap { this.#buildLegacyLockfile(this.tree, this.data) } + if (!this.hiddenLockfile) { + for (const node of Object.values(this.data.packages)) { + delete node.ideallyInert + } + } + // lf version 1 = dependencies only // lf version 2 = dependencies and packages // lf version 3 = packages only From ff8423319c32045f2ba8457b469780d1667dac56 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Wed, 26 Mar 2025 08:29:44 -0700 Subject: [PATCH 2/3] chore(arborist): Update snapshots for --- .../arborist/build-ideal-tree.js.test.cjs | 148 +++- .../test/arborist/load-actual.js.test.cjs | 231 ------ .../test/arborist/reify.js.test.cjs | 761 +++++++++++++++++- .../tap-snapshots/test/link.js.test.cjs | 4 + .../tap-snapshots/test/node.js.test.cjs | 248 ++++++ .../tap-snapshots/test/shrinkwrap.js.test.cjs | 150 ++-- 6 files changed, 1191 insertions(+), 351 deletions(-) diff --git a/workspaces/arborist/tap-snapshots/test/arborist/build-ideal-tree.js.test.cjs b/workspaces/arborist/tap-snapshots/test/arborist/build-ideal-tree.js.test.cjs index 8b37abd84e1f6..855539521b9df 100644 --- a/workspaces/arborist/tap-snapshots/test/arborist/build-ideal-tree.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/arborist/build-ideal-tree.js.test.cjs @@ -77868,11 +77868,34 @@ ArboristNode { exports[`test/arborist/build-ideal-tree.js TAP optional dependency failures > optional-dep-enotarget 1`] = ` ArboristNode { + "children": Map { + "tap" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "error": "INVALID", + "from": "", + "name": "tap", + "spec": "9999.0000.9999", + "type": "optional", + }, + }, + "errors": Array [ + Object { + "code": "ETARGET", + }, + ], + "location": "node_modules/tap", + "name": "tap", + "optional": true, + "path": "{CWD}/test/fixtures/optional-dep-enotarget/node_modules/tap", + }, + }, "edgesOut": Map { "tap" => EdgeOut { + "error": "INVALID", "name": "tap", "spec": "9999.0000.9999", - "to": null, + "to": "node_modules/tap", "type": "optional", }, }, @@ -77887,11 +77910,32 @@ ArboristNode { exports[`test/arborist/build-ideal-tree.js TAP optional dependency failures > optional-dep-missing 1`] = ` ArboristNode { + "children": Map { + "@isaacs/this-does-not-exist-at-all" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/this-does-not-exist-at-all", + "spec": "*", + "type": "optional", + }, + }, + "errors": Array [ + Object { + "code": "E404", + }, + ], + "location": "node_modules/@isaacs/this-does-not-exist-at-all", + "name": "@isaacs/this-does-not-exist-at-all", + "optional": true, + "path": "{CWD}/test/fixtures/optional-dep-missing/node_modules/@isaacs/this-does-not-exist-at-all", + }, + }, "edgesOut": Map { "@isaacs/this-does-not-exist-at-all" => EdgeOut { "name": "@isaacs/this-does-not-exist-at-all", "spec": "*", - "to": null, + "to": "node_modules/@isaacs/this-does-not-exist-at-all", "type": "optional", }, }, @@ -77906,11 +77950,60 @@ ArboristNode { exports[`test/arborist/build-ideal-tree.js TAP optional dependency failures > optional-metadep-enotarget 1`] = ` ArboristNode { + "children": Map { + "@isaacs/prod-dep-enotarget" => ArboristNode { + "children": Map { + "tap" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "error": "INVALID", + "from": "node_modules/@isaacs/prod-dep-enotarget", + "name": "tap", + "spec": "9999.0000.9999", + "type": "prod", + }, + }, + "errors": Array [ + Object { + "code": "ETARGET", + }, + ], + "location": "node_modules/@isaacs/prod-dep-enotarget/node_modules/tap", + "name": "tap", + "optional": true, + "path": "{CWD}/test/fixtures/optional-metadep-enotarget/node_modules/@isaacs/prod-dep-enotarget/node_modules/tap", + }, + }, + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/prod-dep-enotarget", + "spec": "*", + "type": "optional", + }, + }, + "edgesOut": Map { + "tap" => EdgeOut { + "error": "INVALID", + "name": "tap", + "spec": "9999.0000.9999", + "to": "node_modules/@isaacs/prod-dep-enotarget/node_modules/tap", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/prod-dep-enotarget", + "name": "@isaacs/prod-dep-enotarget", + "optional": true, + "path": "{CWD}/test/fixtures/optional-metadep-enotarget/node_modules/@isaacs/prod-dep-enotarget", + "resolved": "https://registry.npmjs.org/@isaacs/prod-dep-enotarget/-/prod-dep-enotarget-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "@isaacs/prod-dep-enotarget" => EdgeOut { "name": "@isaacs/prod-dep-enotarget", "spec": "*", - "to": null, + "to": "node_modules/@isaacs/prod-dep-enotarget", "type": "optional", }, }, @@ -77924,11 +78017,58 @@ ArboristNode { exports[`test/arborist/build-ideal-tree.js TAP optional dependency failures > optional-metadep-missing 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-prod-dep-metadata-missing" => ArboristNode { + "children": Map { + "@isaacs/this-does-not-exist-at-all" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-metadata-missing", + "name": "@isaacs/this-does-not-exist-at-all", + "spec": "*", + "type": "prod", + }, + }, + "errors": Array [ + Object { + "code": "E404", + }, + ], + "location": "node_modules/@isaacs/testing-prod-dep-metadata-missing/node_modules/@isaacs/this-does-not-exist-at-all", + "name": "@isaacs/this-does-not-exist-at-all", + "optional": true, + "path": "{CWD}/test/fixtures/optional-metadep-missing/node_modules/@isaacs/testing-prod-dep-metadata-missing/node_modules/@isaacs/this-does-not-exist-at-all", + }, + }, + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-metadata-missing", + "spec": "*", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/this-does-not-exist-at-all" => EdgeOut { + "name": "@isaacs/this-does-not-exist-at-all", + "spec": "*", + "to": "node_modules/@isaacs/testing-prod-dep-metadata-missing/node_modules/@isaacs/this-does-not-exist-at-all", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-metadata-missing", + "name": "@isaacs/testing-prod-dep-metadata-missing", + "optional": true, + "path": "{CWD}/test/fixtures/optional-metadep-missing/node_modules/@isaacs/testing-prod-dep-metadata-missing", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-metadata-missing/-/testing-prod-dep-metadata-missing-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-metadata-missing" => EdgeOut { "name": "@isaacs/testing-prod-dep-metadata-missing", "spec": "*", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-metadata-missing", "type": "optional", }, }, diff --git a/workspaces/arborist/tap-snapshots/test/arborist/load-actual.js.test.cjs b/workspaces/arborist/tap-snapshots/test/arborist/load-actual.js.test.cjs index 35ba9f7cafa84..352836b44f5b8 100644 --- a/workspaces/arborist/tap-snapshots/test/arborist/load-actual.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/arborist/load-actual.js.test.cjs @@ -6161,237 +6161,6 @@ ArboristNode { } ` -exports[`test/arborist/load-actual.js TAP selflink > loaded tree 1`] = ` -ArboristNode { - "children": Map { - "@scope/y" => ArboristNode { - "edgesIn": Set { - EdgeIn { - "from": "", - "name": "@scope/y", - "spec": "*", - "type": "prod", - }, - }, - "edgesOut": Map { - "foo" => EdgeOut { - "name": "foo", - "spec": "*", - "to": "node_modules/foo", - "type": "prod", - }, - }, - "location": "node_modules/@scope/y", - "name": "@scope/y", - "path": "selflink/node_modules/@scope/y", - "version": "1.2.3", - }, - "@scope/z" => ArboristNode { - "children": Map { - "glob" => ArboristLink { - "dev": true, - "edgesIn": Set { - EdgeIn { - "from": "node_modules/@scope/z", - "name": "glob", - "spec": "4", - "type": "prod", - }, - }, - "extraneous": true, - "location": "node_modules/@scope/z/node_modules/glob", - "name": "glob", - "optional": true, - "path": "selflink/node_modules/@scope/z/node_modules/glob", - "peer": true, - "realpath": "selflink/node_modules/foo/node_modules/glob", - "resolved": "file:../../../foo/node_modules/glob", - "target": ArboristNode { - "children": Map { - "graceful-fs" => ArboristNode { - "dev": true, - "extraneous": true, - "location": "node_modules/foo/node_modules/glob/node_modules/graceful-fs", - "name": "graceful-fs", - "optional": true, - "path": "selflink/node_modules/foo/node_modules/glob/node_modules/graceful-fs", - "peer": true, - "version": "3.0.2", - }, - "inherits" => ArboristNode { - "dev": true, - "extraneous": true, - "location": "node_modules/foo/node_modules/glob/node_modules/inherits", - "name": "inherits", - "optional": true, - "path": "selflink/node_modules/foo/node_modules/glob/node_modules/inherits", - "peer": true, - "version": "2.0.1", - }, - "minimatch" => ArboristNode { - "children": Map { - "lru-cache" => ArboristNode { - "dev": true, - "extraneous": true, - "location": "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/lru-cache", - "name": "lru-cache", - "optional": true, - "path": "selflink/node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/lru-cache", - "peer": true, - "version": "2.5.0", - }, - "sigmund" => ArboristNode { - "dev": true, - "extraneous": true, - "location": "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/sigmund", - "name": "sigmund", - "optional": true, - "path": "selflink/node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/sigmund", - "peer": true, - "version": "1.0.0", - }, - }, - "dev": true, - "extraneous": true, - "location": "node_modules/foo/node_modules/glob/node_modules/minimatch", - "name": "minimatch", - "optional": true, - "path": "selflink/node_modules/foo/node_modules/glob/node_modules/minimatch", - "peer": true, - "version": "1.0.0", - }, - "once" => ArboristNode { - "dev": true, - "extraneous": true, - "location": "node_modules/foo/node_modules/glob/node_modules/once", - "name": "once", - "optional": true, - "path": "selflink/node_modules/foo/node_modules/glob/node_modules/once", - "peer": true, - "version": "1.3.0", - }, - }, - "edgesIn": Set { - EdgeIn { - "from": "node_modules/foo", - "name": "glob", - "spec": "4", - "type": "prod", - }, - }, - "location": "node_modules/foo/node_modules/glob", - "name": "glob", - "path": "selflink/node_modules/foo/node_modules/glob", - "version": "4.0.5", - }, - "version": "4.0.5", - }, - }, - "dev": true, - "edgesOut": Map { - "glob" => EdgeOut { - "name": "glob", - "spec": "4", - "to": "node_modules/@scope/z/node_modules/glob", - "type": "prod", - }, - }, - "extraneous": true, - "location": "node_modules/@scope/z", - "name": "@scope/z", - "optional": true, - "path": "selflink/node_modules/@scope/z", - "peer": true, - "version": "1.2.3", - }, - "foo" => ArboristNode { - "children": Map { - "glob" => ArboristNode { - "location": "node_modules/foo/node_modules/glob", - }, - "selflink" => ArboristLink { - "edgesIn": Set { - EdgeIn { - "from": "node_modules/foo", - "name": "selflink", - "spec": "*", - "type": "prod", - }, - }, - "location": "node_modules/foo/node_modules/selflink", - "name": "selflink", - "path": "selflink/node_modules/foo/node_modules/selflink", - "realpath": "selflink", - "resolved": "file:../../..", - "target": ArboristNode { - "location": "", - }, - "version": "1.2.3", - }, - }, - "edgesIn": Set { - EdgeIn { - "from": "", - "name": "foo", - "spec": "*", - "type": "prod", - }, - EdgeIn { - "from": "node_modules/@scope/y", - "name": "foo", - "spec": "*", - "type": "prod", - }, - }, - "edgesOut": Map { - "glob" => EdgeOut { - "name": "glob", - "spec": "4", - "to": "node_modules/foo/node_modules/glob", - "type": "prod", - }, - "selflink" => EdgeOut { - "name": "selflink", - "spec": "*", - "to": "node_modules/foo/node_modules/selflink", - "type": "prod", - }, - }, - "location": "node_modules/foo", - "name": "foo", - "path": "selflink/node_modules/foo", - "version": "1.2.3", - }, - }, - "edgesOut": Map { - "@scope/x" => EdgeOut { - "error": "MISSING", - "name": "@scope/x", - "spec": "*", - "to": null, - "type": "prod", - }, - "@scope/y" => EdgeOut { - "name": "@scope/y", - "spec": "*", - "to": "node_modules/@scope/y", - "type": "prod", - }, - "foo" => EdgeOut { - "name": "foo", - "spec": "*", - "to": "node_modules/foo", - "type": "prod", - }, - }, - "isProjectRoot": true, - "location": "", - "name": "selflink", - "path": "selflink", - "version": "1.2.3", -} -` - exports[`test/arborist/load-actual.js TAP shake out Link target timing issue > loaded tree 1`] = ` ArboristNode { "children": Map { diff --git a/workspaces/arborist/tap-snapshots/test/arborist/reify.js.test.cjs b/workspaces/arborist/tap-snapshots/test/arborist/reify.js.test.cjs index 797f102234f5d..b8bac9537ed9d 100644 --- a/workspaces/arborist/tap-snapshots/test/arborist/reify.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/arborist/reify.js.test.cjs @@ -1859,11 +1859,34 @@ exports[`test/arborist/reify.js TAP add spec * with semver prefix range gets upd exports[`test/arborist/reify.js TAP adding an unresolvable optional dep is OK > must match snapshot 1`] = ` ArboristNode { + "children": Map { + "abbrev" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "error": "INVALID", + "from": "", + "name": "abbrev", + "spec": "npm:null@999999", + "type": "optional", + }, + }, + "errors": Array [ + Object { + "code": "ETARGET", + }, + ], + "location": "node_modules/abbrev", + "name": "abbrev", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-adding-an-unresolvable-optional-dep-is-OK/node_modules/abbrev", + }, + }, "edgesOut": Map { "abbrev" => EdgeOut { + "error": "INVALID", "name": "abbrev", - "spec": "999999", - "to": null, + "spec": "npm:null@999999", + "to": "node_modules/abbrev", "type": "optional", }, }, @@ -2842,11 +2865,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP do not install optional deps with mismatched platform specifications > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "platform-specifying-test-package" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "platform-specifying-test-package", + "spec": "1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/platform-specifying-test-package", + "name": "platform-specifying-test-package", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-do-not-install-optional-deps-with-mismatched-platform-specifications/node_modules/platform-specifying-test-package", + "resolved": "https://registry.npmjs.org/platform-specifying-test-package/-/platform-specifying-test-package-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "platform-specifying-test-package" => EdgeOut { "name": "platform-specifying-test-package", "spec": "1.0.0", - "to": null, + "to": "node_modules/platform-specifying-test-package", "type": "optional", }, }, @@ -3320,11 +3361,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP fail to install optional deps with matched os and matched cpu and mismatched libc with os and cpu and libc options > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "platform-specifying-test-package" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "platform-specifying-test-package", + "spec": "1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/platform-specifying-test-package", + "name": "platform-specifying-test-package", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-fail-to-install-optional-deps-with-matched-os-and-matched-cpu-and-mismatched-libc-with-os-and-cpu-and-libc-options/node_modules/platform-specifying-test-package", + "resolved": "https://registry.npmjs.org/platform-specifying-test-package/-/platform-specifying-test-package-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "platform-specifying-test-package" => EdgeOut { "name": "platform-specifying-test-package", "spec": "1.0.0", - "to": null, + "to": "node_modules/platform-specifying-test-package", "type": "optional", }, }, @@ -3339,11 +3398,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP fail to install optional deps with matched os and mismatched cpu with os and cpu and libc options > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "platform-specifying-test-package" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "platform-specifying-test-package", + "spec": "1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/platform-specifying-test-package", + "name": "platform-specifying-test-package", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-fail-to-install-optional-deps-with-matched-os-and-mismatched-cpu-with-os-and-cpu-and-libc-options/node_modules/platform-specifying-test-package", + "resolved": "https://registry.npmjs.org/platform-specifying-test-package/-/platform-specifying-test-package-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "platform-specifying-test-package" => EdgeOut { "name": "platform-specifying-test-package", "spec": "1.0.0", - "to": null, + "to": "node_modules/platform-specifying-test-package", "type": "optional", }, }, @@ -3358,11 +3435,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP fail to install optional deps with mismatched os and matched cpu with os and cpu and libc options > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "platform-specifying-test-package" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "platform-specifying-test-package", + "spec": "1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/platform-specifying-test-package", + "name": "platform-specifying-test-package", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-fail-to-install-optional-deps-with-mismatched-os-and-matched-cpu-with-os-and-cpu-and-libc-options/node_modules/platform-specifying-test-package", + "resolved": "https://registry.npmjs.org/platform-specifying-test-package/-/platform-specifying-test-package-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "platform-specifying-test-package" => EdgeOut { "name": "platform-specifying-test-package", "spec": "1.0.0", - "to": null, + "to": "node_modules/platform-specifying-test-package", "type": "optional", }, }, @@ -17288,11 +17383,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-dep-allinstall-fail save=false > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-allinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-fail-allinstall", + "spec": "^1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/@isaacs/testing-fail-allinstall", + "name": "@isaacs/testing-fail-allinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-dep-allinstall-fail-save-false/node_modules/@isaacs/testing-fail-allinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-allinstall/-/testing-fail-allinstall-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "@isaacs/testing-fail-allinstall" => EdgeOut { "name": "@isaacs/testing-fail-allinstall", "spec": "^1.0.0", - "to": null, + "to": "node_modules/@isaacs/testing-fail-allinstall", "type": "optional", }, }, @@ -17307,11 +17420,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-dep-allinstall-fail save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-allinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-fail-allinstall", + "spec": "^1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/@isaacs/testing-fail-allinstall", + "name": "@isaacs/testing-fail-allinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-dep-allinstall-fail-save-true/node_modules/@isaacs/testing-fail-allinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-allinstall/-/testing-fail-allinstall-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "@isaacs/testing-fail-allinstall" => EdgeOut { "name": "@isaacs/testing-fail-allinstall", "spec": "^1.0.0", - "to": null, + "to": "node_modules/@isaacs/testing-fail-allinstall", "type": "optional", }, }, @@ -17326,11 +17457,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-dep-install-fail save=false > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-install" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-fail-install", + "spec": "^1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/@isaacs/testing-fail-install", + "name": "@isaacs/testing-fail-install", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-dep-install-fail-save-false/node_modules/@isaacs/testing-fail-install", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-install/-/testing-fail-install-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "@isaacs/testing-fail-install" => EdgeOut { "name": "@isaacs/testing-fail-install", "spec": "^1.0.0", - "to": null, + "to": "node_modules/@isaacs/testing-fail-install", "type": "optional", }, }, @@ -17345,11 +17494,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-dep-install-fail save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-install" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-fail-install", + "spec": "^1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/@isaacs/testing-fail-install", + "name": "@isaacs/testing-fail-install", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-dep-install-fail-save-true/node_modules/@isaacs/testing-fail-install", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-install/-/testing-fail-install-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "@isaacs/testing-fail-install" => EdgeOut { "name": "@isaacs/testing-fail-install", "spec": "^1.0.0", - "to": null, + "to": "node_modules/@isaacs/testing-fail-install", "type": "optional", }, }, @@ -17438,11 +17605,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-dep-preinstall-fail save=false > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-preinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-fail-preinstall", + "spec": "^1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/@isaacs/testing-fail-preinstall", + "name": "@isaacs/testing-fail-preinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-dep-preinstall-fail-save-false/node_modules/@isaacs/testing-fail-preinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-preinstall/-/testing-fail-preinstall-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "@isaacs/testing-fail-preinstall" => EdgeOut { "name": "@isaacs/testing-fail-preinstall", "spec": "^1.0.0", - "to": null, + "to": "node_modules/@isaacs/testing-fail-preinstall", "type": "optional", }, }, @@ -17457,11 +17642,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-dep-preinstall-fail save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-preinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-fail-preinstall", + "spec": "^1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/@isaacs/testing-fail-preinstall", + "name": "@isaacs/testing-fail-preinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-dep-preinstall-fail-save-true/node_modules/@isaacs/testing-fail-preinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-preinstall/-/testing-fail-preinstall-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "@isaacs/testing-fail-preinstall" => EdgeOut { "name": "@isaacs/testing-fail-preinstall", "spec": "^1.0.0", - "to": null, + "to": "node_modules/@isaacs/testing-fail-preinstall", "type": "optional", }, }, @@ -17476,11 +17679,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-dep-tgz-missing save=false > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-missing-tgz" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-missing-tgz", + "spec": "*", + "type": "optional", + }, + }, + "location": "node_modules/@isaacs/testing-missing-tgz", + "name": "@isaacs/testing-missing-tgz", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-dep-tgz-missing-save-false/node_modules/@isaacs/testing-missing-tgz", + "resolved": "https://registry.npmjs.org/@isaacs/testing-missing-tgz/-/testing-missing-tgz-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-missing-tgz" => EdgeOut { "name": "@isaacs/testing-missing-tgz", "spec": "*", - "to": null, + "to": "node_modules/@isaacs/testing-missing-tgz", "type": "optional", }, }, @@ -17495,11 +17716,29 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-dep-tgz-missing save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-missing-tgz" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-missing-tgz", + "spec": "^1.0.1", + "type": "optional", + }, + }, + "location": "node_modules/@isaacs/testing-missing-tgz", + "name": "@isaacs/testing-missing-tgz", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-dep-tgz-missing-save-true/node_modules/@isaacs/testing-missing-tgz", + "resolved": "https://registry.npmjs.org/@isaacs/testing-missing-tgz/-/testing-missing-tgz-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-missing-tgz" => EdgeOut { "name": "@isaacs/testing-missing-tgz", "spec": "^1.0.1", - "to": null, + "to": "node_modules/@isaacs/testing-missing-tgz", "type": "optional", }, }, @@ -17514,30 +17753,114 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-allinstall-fail save=false > expect resolving Promise 1`] = ` ArboristNode { - "edgesOut": Map { - "@isaacs/testing-prod-dep-allinstall-fail" => EdgeOut { - "name": "@isaacs/testing-prod-dep-allinstall-fail", - "spec": "*", - "to": null, - "type": "optional", - }, - }, - "isProjectRoot": true, - "location": "", - "name": "tap-testdir-reify-optional-dependency-failures-optional-metadep-allinstall-fail-save-false", - "packageName": "optional-metadep-allinstall-fail", - "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-allinstall-fail-save-false", - "version": "1.0.0", -} -` - -exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-allinstall-fail save=true > expect resolving Promise 1`] = ` + "children": Map { + "@isaacs/testing-fail-allinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-allinstall-fail", + "name": "@isaacs/testing-fail-allinstall", + "spec": "^1.0.0", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-fail-allinstall", + "name": "@isaacs/testing-fail-allinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-allinstall-fail-save-false/node_modules/@isaacs/testing-fail-allinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-allinstall/-/testing-fail-allinstall-1.0.0.tgz", + "version": "1.0.0", + }, + "@isaacs/testing-prod-dep-allinstall-fail" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-allinstall-fail", + "spec": "*", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-fail-allinstall" => EdgeOut { + "name": "@isaacs/testing-fail-allinstall", + "spec": "^1.0.0", + "to": "node_modules/@isaacs/testing-fail-allinstall", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-allinstall-fail", + "name": "@isaacs/testing-prod-dep-allinstall-fail", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-allinstall-fail-save-false/node_modules/@isaacs/testing-prod-dep-allinstall-fail", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-allinstall-fail/-/testing-prod-dep-allinstall-fail-1.0.1.tgz", + "version": "1.0.1", + }, + }, + "edgesOut": Map { + "@isaacs/testing-prod-dep-allinstall-fail" => EdgeOut { + "name": "@isaacs/testing-prod-dep-allinstall-fail", + "spec": "*", + "to": "node_modules/@isaacs/testing-prod-dep-allinstall-fail", + "type": "optional", + }, + }, + "isProjectRoot": true, + "location": "", + "name": "tap-testdir-reify-optional-dependency-failures-optional-metadep-allinstall-fail-save-false", + "packageName": "optional-metadep-allinstall-fail", + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-allinstall-fail-save-false", + "version": "1.0.0", +} +` + +exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-allinstall-fail save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-allinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-allinstall-fail", + "name": "@isaacs/testing-fail-allinstall", + "spec": "^1.0.0", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-fail-allinstall", + "name": "@isaacs/testing-fail-allinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-allinstall-fail-save-true/node_modules/@isaacs/testing-fail-allinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-allinstall/-/testing-fail-allinstall-1.0.0.tgz", + "version": "1.0.0", + }, + "@isaacs/testing-prod-dep-allinstall-fail" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-allinstall-fail", + "spec": "^1.0.1", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-fail-allinstall" => EdgeOut { + "name": "@isaacs/testing-fail-allinstall", + "spec": "^1.0.0", + "to": "node_modules/@isaacs/testing-fail-allinstall", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-allinstall-fail", + "name": "@isaacs/testing-prod-dep-allinstall-fail", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-allinstall-fail-save-true/node_modules/@isaacs/testing-prod-dep-allinstall-fail", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-allinstall-fail/-/testing-prod-dep-allinstall-fail-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-allinstall-fail" => EdgeOut { "name": "@isaacs/testing-prod-dep-allinstall-fail", "spec": "^1.0.1", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-allinstall-fail", "type": "optional", }, }, @@ -17552,11 +17875,53 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-install-fail save=false > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-install" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-install-fail", + "name": "@isaacs/testing-fail-install", + "spec": "^1.0.0", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-fail-install", + "name": "@isaacs/testing-fail-install", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-install-fail-save-false/node_modules/@isaacs/testing-fail-install", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-install/-/testing-fail-install-1.0.0.tgz", + "version": "1.0.0", + }, + "@isaacs/testing-prod-dep-install-fail" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-install-fail", + "spec": "*", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-fail-install" => EdgeOut { + "name": "@isaacs/testing-fail-install", + "spec": "^1.0.0", + "to": "node_modules/@isaacs/testing-fail-install", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-install-fail", + "name": "@isaacs/testing-prod-dep-install-fail", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-install-fail-save-false/node_modules/@isaacs/testing-prod-dep-install-fail", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-install-fail/-/testing-prod-dep-install-fail-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-install-fail" => EdgeOut { "name": "@isaacs/testing-prod-dep-install-fail", "spec": "*", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-install-fail", "type": "optional", }, }, @@ -17571,11 +17936,53 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-install-fail save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-install" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-install-fail", + "name": "@isaacs/testing-fail-install", + "spec": "^1.0.0", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-fail-install", + "name": "@isaacs/testing-fail-install", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-install-fail-save-true/node_modules/@isaacs/testing-fail-install", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-install/-/testing-fail-install-1.0.0.tgz", + "version": "1.0.0", + }, + "@isaacs/testing-prod-dep-install-fail" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-install-fail", + "spec": "^1.0.1", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-fail-install" => EdgeOut { + "name": "@isaacs/testing-fail-install", + "spec": "^1.0.0", + "to": "node_modules/@isaacs/testing-fail-install", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-install-fail", + "name": "@isaacs/testing-prod-dep-install-fail", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-install-fail-save-true/node_modules/@isaacs/testing-prod-dep-install-fail", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-install-fail/-/testing-prod-dep-install-fail-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-install-fail" => EdgeOut { "name": "@isaacs/testing-prod-dep-install-fail", "spec": "^1.0.1", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-install-fail", "type": "optional", }, }, @@ -17590,11 +17997,53 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-postinstall-fail save=false > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-postinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-postinstall-fail", + "name": "@isaacs/testing-fail-postinstall", + "spec": "^1.0.0", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-fail-postinstall", + "name": "@isaacs/testing-fail-postinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-postinstall-fail-save-false/node_modules/@isaacs/testing-fail-postinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-postinstall/-/testing-fail-postinstall-1.0.0.tgz", + "version": "1.0.0", + }, + "@isaacs/testing-prod-dep-postinstall-fail" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-postinstall-fail", + "spec": "*", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-fail-postinstall" => EdgeOut { + "name": "@isaacs/testing-fail-postinstall", + "spec": "^1.0.0", + "to": "node_modules/@isaacs/testing-fail-postinstall", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-postinstall-fail", + "name": "@isaacs/testing-prod-dep-postinstall-fail", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-postinstall-fail-save-false/node_modules/@isaacs/testing-prod-dep-postinstall-fail", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-postinstall-fail/-/testing-prod-dep-postinstall-fail-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-postinstall-fail" => EdgeOut { "name": "@isaacs/testing-prod-dep-postinstall-fail", "spec": "*", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-postinstall-fail", "type": "optional", }, }, @@ -17609,11 +18058,53 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-postinstall-fail save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-postinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-postinstall-fail", + "name": "@isaacs/testing-fail-postinstall", + "spec": "^1.0.0", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-fail-postinstall", + "name": "@isaacs/testing-fail-postinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-postinstall-fail-save-true/node_modules/@isaacs/testing-fail-postinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-postinstall/-/testing-fail-postinstall-1.0.0.tgz", + "version": "1.0.0", + }, + "@isaacs/testing-prod-dep-postinstall-fail" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-postinstall-fail", + "spec": "^1.0.1", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-fail-postinstall" => EdgeOut { + "name": "@isaacs/testing-fail-postinstall", + "spec": "^1.0.0", + "to": "node_modules/@isaacs/testing-fail-postinstall", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-postinstall-fail", + "name": "@isaacs/testing-prod-dep-postinstall-fail", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-postinstall-fail-save-true/node_modules/@isaacs/testing-prod-dep-postinstall-fail", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-postinstall-fail/-/testing-prod-dep-postinstall-fail-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-postinstall-fail" => EdgeOut { "name": "@isaacs/testing-prod-dep-postinstall-fail", "spec": "^1.0.1", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-postinstall-fail", "type": "optional", }, }, @@ -17628,11 +18119,53 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-preinstall-fail save=false > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-preinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-preinstall-fail", + "name": "@isaacs/testing-fail-preinstall", + "spec": "^1.0.0", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-fail-preinstall", + "name": "@isaacs/testing-fail-preinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-preinstall-fail-save-false/node_modules/@isaacs/testing-fail-preinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-preinstall/-/testing-fail-preinstall-1.0.0.tgz", + "version": "1.0.0", + }, + "@isaacs/testing-prod-dep-preinstall-fail" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-preinstall-fail", + "spec": "*", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-fail-preinstall" => EdgeOut { + "name": "@isaacs/testing-fail-preinstall", + "spec": "^1.0.0", + "to": "node_modules/@isaacs/testing-fail-preinstall", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-preinstall-fail", + "name": "@isaacs/testing-prod-dep-preinstall-fail", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-preinstall-fail-save-false/node_modules/@isaacs/testing-prod-dep-preinstall-fail", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-preinstall-fail/-/testing-prod-dep-preinstall-fail-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-preinstall-fail" => EdgeOut { "name": "@isaacs/testing-prod-dep-preinstall-fail", "spec": "*", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-preinstall-fail", "type": "optional", }, }, @@ -17647,11 +18180,53 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-preinstall-fail save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-fail-preinstall" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-preinstall-fail", + "name": "@isaacs/testing-fail-preinstall", + "spec": "^1.0.0", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-fail-preinstall", + "name": "@isaacs/testing-fail-preinstall", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-preinstall-fail-save-true/node_modules/@isaacs/testing-fail-preinstall", + "resolved": "https://registry.npmjs.org/@isaacs/testing-fail-preinstall/-/testing-fail-preinstall-1.0.0.tgz", + "version": "1.0.0", + }, + "@isaacs/testing-prod-dep-preinstall-fail" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-preinstall-fail", + "spec": "^1.0.1", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-fail-preinstall" => EdgeOut { + "name": "@isaacs/testing-fail-preinstall", + "spec": "^1.0.0", + "to": "node_modules/@isaacs/testing-fail-preinstall", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-preinstall-fail", + "name": "@isaacs/testing-prod-dep-preinstall-fail", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-preinstall-fail-save-true/node_modules/@isaacs/testing-prod-dep-preinstall-fail", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-preinstall-fail/-/testing-prod-dep-preinstall-fail-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-preinstall-fail" => EdgeOut { "name": "@isaacs/testing-prod-dep-preinstall-fail", "spec": "^1.0.1", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-preinstall-fail", "type": "optional", }, }, @@ -17666,11 +18241,53 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-tgz-missing save=false > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-missing-tgz" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-tgz-missing", + "name": "@isaacs/testing-missing-tgz", + "spec": "*", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-missing-tgz", + "name": "@isaacs/testing-missing-tgz", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-tgz-missing-save-false/node_modules/@isaacs/testing-missing-tgz", + "resolved": "https://registry.npmjs.org/@isaacs/testing-missing-tgz/-/testing-missing-tgz-1.0.1.tgz", + "version": "1.0.1", + }, + "@isaacs/testing-prod-dep-tgz-missing" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-tgz-missing", + "spec": "*", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-missing-tgz" => EdgeOut { + "name": "@isaacs/testing-missing-tgz", + "spec": "*", + "to": "node_modules/@isaacs/testing-missing-tgz", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-tgz-missing", + "name": "@isaacs/testing-prod-dep-tgz-missing", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-tgz-missing-save-false/node_modules/@isaacs/testing-prod-dep-tgz-missing", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-tgz-missing/-/testing-prod-dep-tgz-missing-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-tgz-missing" => EdgeOut { "name": "@isaacs/testing-prod-dep-tgz-missing", "spec": "*", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-tgz-missing", "type": "optional", }, }, @@ -17685,11 +18302,53 @@ ArboristNode { exports[`test/arborist/reify.js TAP optional dependency failures optional-metadep-tgz-missing save=true > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "@isaacs/testing-missing-tgz" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "node_modules/@isaacs/testing-prod-dep-tgz-missing", + "name": "@isaacs/testing-missing-tgz", + "spec": "*", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-missing-tgz", + "name": "@isaacs/testing-missing-tgz", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-tgz-missing-save-true/node_modules/@isaacs/testing-missing-tgz", + "resolved": "https://registry.npmjs.org/@isaacs/testing-missing-tgz/-/testing-missing-tgz-1.0.1.tgz", + "version": "1.0.1", + }, + "@isaacs/testing-prod-dep-tgz-missing" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "@isaacs/testing-prod-dep-tgz-missing", + "spec": "^1.0.1", + "type": "optional", + }, + }, + "edgesOut": Map { + "@isaacs/testing-missing-tgz" => EdgeOut { + "name": "@isaacs/testing-missing-tgz", + "spec": "*", + "to": "node_modules/@isaacs/testing-missing-tgz", + "type": "prod", + }, + }, + "location": "node_modules/@isaacs/testing-prod-dep-tgz-missing", + "name": "@isaacs/testing-prod-dep-tgz-missing", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-optional-dependency-failures-optional-metadep-tgz-missing-save-true/node_modules/@isaacs/testing-prod-dep-tgz-missing", + "resolved": "https://registry.npmjs.org/@isaacs/testing-prod-dep-tgz-missing/-/testing-prod-dep-tgz-missing-1.0.1.tgz", + "version": "1.0.1", + }, + }, "edgesOut": Map { "@isaacs/testing-prod-dep-tgz-missing" => EdgeOut { "name": "@isaacs/testing-prod-dep-tgz-missing", "spec": "^1.0.1", - "to": null, + "to": "node_modules/@isaacs/testing-prod-dep-tgz-missing", "type": "optional", }, }, @@ -33177,11 +33836,29 @@ exports[`test/arborist/reify.js TAP scoped registries > should preserve original exports[`test/arborist/reify.js TAP still do not install optional deps with mismatched platform specifications even when forced > expect resolving Promise 1`] = ` ArboristNode { + "children": Map { + "platform-specifying-test-package" => ArboristNode { + "edgesIn": Set { + EdgeIn { + "from": "", + "name": "platform-specifying-test-package", + "spec": "1.0.0", + "type": "optional", + }, + }, + "location": "node_modules/platform-specifying-test-package", + "name": "platform-specifying-test-package", + "optional": true, + "path": "{CWD}/test/arborist/tap-testdir-reify-still-do-not-install-optional-deps-with-mismatched-platform-specifications-even-when-forced/node_modules/platform-specifying-test-package", + "resolved": "https://registry.npmjs.org/platform-specifying-test-package/-/platform-specifying-test-package-1.0.0.tgz", + "version": "1.0.0", + }, + }, "edgesOut": Map { "platform-specifying-test-package" => EdgeOut { "name": "platform-specifying-test-package", "spec": "1.0.0", - "to": null, + "to": "node_modules/platform-specifying-test-package", "type": "optional", }, }, diff --git a/workspaces/arborist/tap-snapshots/test/link.js.test.cjs b/workspaces/arborist/tap-snapshots/test/link.js.test.cjs index 1978f7dd6f575..8687dca76769d 100644 --- a/workspaces/arborist/tap-snapshots/test/link.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/link.js.test.cjs @@ -16,6 +16,7 @@ Link { "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -46,6 +47,7 @@ exports[`test/link.js TAP > instantiate without providing target 1`] = ` "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -61,6 +63,7 @@ exports[`test/link.js TAP > instantiate without providing target 1`] = ` "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -105,6 +108,7 @@ exports[`test/link.js TAP > instantiate without providing target 1`] = ` "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, diff --git a/workspaces/arborist/tap-snapshots/test/node.js.test.cjs b/workspaces/arborist/tap-snapshots/test/node.js.test.cjs index c025e3509a150..773ff4646befc 100644 --- a/workspaces/arborist/tap-snapshots/test/node.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/node.js.test.cjs @@ -17,6 +17,7 @@ exports[`test/node.js TAP basic instantiation > just a lone root node 1`] = ` "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -207,6 +208,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -234,6 +236,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -278,6 +281,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -298,6 +302,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -338,6 +343,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -354,6 +360,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -385,6 +392,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -403,6 +411,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -431,6 +440,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -451,6 +461,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -490,6 +501,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -518,6 +530,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -534,6 +547,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -588,6 +602,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -608,6 +623,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -648,6 +664,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -664,6 +681,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -714,6 +732,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -752,6 +771,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -804,6 +824,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -823,6 +844,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -862,6 +884,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -894,6 +917,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -926,6 +950,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -958,6 +983,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -986,6 +1012,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -1022,6 +1049,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -1038,6 +1066,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -1099,6 +1128,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -1117,6 +1147,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -1155,6 +1186,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -1207,6 +1239,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -1226,6 +1259,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -1258,6 +1292,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -1297,6 +1332,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -1329,6 +1365,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -1361,6 +1398,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -1393,6 +1431,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -1421,6 +1460,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -1457,6 +1497,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -1473,6 +1514,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -1514,6 +1556,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -1552,6 +1595,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -1579,6 +1623,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -1625,6 +1670,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -1673,6 +1719,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -1725,6 +1772,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -1744,6 +1792,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -1783,6 +1832,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -1815,6 +1865,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -1847,6 +1898,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -1879,6 +1931,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -1907,6 +1960,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -1956,6 +2010,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -1984,6 +2039,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -2036,6 +2092,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -2055,6 +2112,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -2087,6 +2145,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -2126,6 +2185,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -2165,6 +2225,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -2197,6 +2258,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -2229,6 +2291,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -2261,6 +2324,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -2289,6 +2353,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -2335,6 +2400,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -2395,6 +2461,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -2414,6 +2481,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -2453,6 +2521,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -2485,6 +2554,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -2517,6 +2587,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -2549,6 +2620,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -2577,6 +2649,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -2619,6 +2692,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -2668,6 +2742,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -2708,6 +2783,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -2727,6 +2803,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -2759,6 +2836,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -2798,6 +2876,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -2830,6 +2909,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -2862,6 +2942,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -2894,6 +2975,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -2922,6 +3004,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -2964,6 +3047,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -3010,6 +3094,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -3070,6 +3155,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -3089,6 +3175,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -3125,6 +3212,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -3157,6 +3245,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -3189,6 +3278,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -3221,6 +3311,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -3249,6 +3340,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -3278,6 +3370,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -3319,6 +3412,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -3335,6 +3429,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -3396,6 +3491,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -3436,6 +3532,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -3455,6 +3552,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -3487,6 +3585,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -3523,6 +3622,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -3555,6 +3655,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -3587,6 +3688,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -3619,6 +3721,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -3647,6 +3750,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -3674,6 +3778,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -3703,6 +3808,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -3744,6 +3850,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -3760,6 +3867,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -3818,6 +3926,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -3878,6 +3987,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -3897,6 +4007,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -3933,6 +4044,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -3965,6 +4077,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -3997,6 +4110,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -4029,6 +4143,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -4057,6 +4172,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -4086,6 +4202,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -4127,6 +4244,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -4143,6 +4261,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -4204,6 +4323,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -4244,6 +4364,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -4263,6 +4384,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -4295,6 +4417,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -4331,6 +4454,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -4363,6 +4487,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -4395,6 +4520,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -4427,6 +4553,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -4455,6 +4582,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -4482,6 +4610,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -4511,6 +4640,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -4552,6 +4682,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -4568,6 +4699,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -4626,6 +4758,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -4664,6 +4797,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -4702,6 +4836,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -4754,6 +4889,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -4773,6 +4909,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -4812,6 +4949,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -4844,6 +4982,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -4876,6 +5015,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -4908,6 +5048,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -4936,6 +5077,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -4972,6 +5114,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -4988,6 +5131,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -5049,6 +5193,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -5067,6 +5212,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -5105,6 +5251,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -5157,6 +5304,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -5176,6 +5324,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -5208,6 +5357,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -5247,6 +5397,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -5279,6 +5430,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -5311,6 +5463,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -5343,6 +5496,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -5371,6 +5525,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -5407,6 +5562,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -5423,6 +5579,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -5464,6 +5621,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -5502,6 +5660,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -5529,6 +5688,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -5575,6 +5735,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -5623,6 +5784,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -5675,6 +5837,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -5694,6 +5857,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -5733,6 +5897,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -5765,6 +5930,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -5797,6 +5963,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -5829,6 +5996,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -5857,6 +6025,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -5906,6 +6075,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -5934,6 +6104,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -5986,6 +6157,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -6005,6 +6177,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -6037,6 +6210,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -6076,6 +6250,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -6115,6 +6290,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -6147,6 +6323,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -6179,6 +6356,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -6211,6 +6389,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -6239,6 +6418,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -6285,6 +6465,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -6345,6 +6526,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -6364,6 +6546,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -6403,6 +6586,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -6435,6 +6619,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -6467,6 +6652,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -6499,6 +6685,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -6527,6 +6714,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -6569,6 +6757,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -6618,6 +6807,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -6658,6 +6848,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -6677,6 +6868,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -6709,6 +6901,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -6748,6 +6941,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -6780,6 +6974,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -6812,6 +7007,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -6844,6 +7040,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -6872,6 +7069,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -6914,6 +7112,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "meta", "inventory": Inventory {}, @@ -6960,6 +7159,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -7020,6 +7220,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -7039,6 +7240,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -7075,6 +7277,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -7107,6 +7310,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -7139,6 +7343,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -7171,6 +7376,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -7199,6 +7405,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -7228,6 +7435,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -7269,6 +7477,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -7285,6 +7494,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -7346,6 +7556,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -7386,6 +7597,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -7405,6 +7617,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -7437,6 +7650,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -7473,6 +7687,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -7505,6 +7720,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -7537,6 +7753,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -7569,6 +7786,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -7597,6 +7815,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -7624,6 +7843,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -7653,6 +7873,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -7694,6 +7915,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -7710,6 +7932,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -7768,6 +7991,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -7828,6 +8052,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -7847,6 +8072,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -7883,6 +8109,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -7915,6 +8142,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -7947,6 +8175,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -7979,6 +8208,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -8007,6 +8237,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -8036,6 +8267,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -8077,6 +8309,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -8093,6 +8326,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -8154,6 +8388,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory { @@ -8194,6 +8429,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -8213,6 +8449,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to }, }, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "prod", "inventory": Inventory {}, @@ -8245,6 +8482,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, @@ -8281,6 +8519,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "bundled", "inventory": Inventory {}, @@ -8313,6 +8552,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "dev", "inventory": Inventory {}, @@ -8345,6 +8585,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "opt", "inventory": Inventory {}, @@ -8377,6 +8618,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "peer", "inventory": Inventory {}, @@ -8405,6 +8647,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "extraneous", "inventory": Inventory {}, @@ -8432,6 +8675,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -8461,6 +8705,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -8502,6 +8747,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "newMeta", "inventory": Inventory {}, @@ -8518,6 +8764,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": "metameta", "inventory": Inventory {}, @@ -8576,6 +8823,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "extraneous": true, "fsChildren": Set {}, "hasShrinkwrap": false, + "ideallyInert": false, "installLinks": false, "integrity": null, "inventory": Inventory {}, diff --git a/workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs b/workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs index e2fde91c439e3..f6f4aec4a18e9 100644 --- a/workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs @@ -2644,80 +2644,82 @@ Object { } ` -exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 1`] = ` -Object { - "lockfileVersion": 3, - "name": "selflink", - "packages": Object { - "": Object { - "dependencies": Object { - "@scope/x": "", - "@scope/y": "", - "foo": "", - }, - "name": "selflink", - "version": "1.2.3", - }, - "node_modules/@scope/y": Object { - "dependencies": Object { - "foo": "*", - }, - "version": "1.2.3", - }, - "node_modules/@scope/z": Object { - "dependencies": Object { - "glob": "4", - }, - "extraneous": true, - "version": "1.2.3", - }, - "node_modules/@scope/z/node_modules/glob": Object { - "link": true, - "resolved": "node_modules/foo/node_modules/glob", - }, - "node_modules/foo": Object { - "dependencies": Object { - "glob": "4", - "selflink": "*", - }, - "version": "1.2.3", - }, - "node_modules/foo/node_modules/glob": Object { - "version": "4.0.5", - }, - "node_modules/foo/node_modules/glob/node_modules/graceful-fs": Object { - "extraneous": true, - "version": "3.0.2", - }, - "node_modules/foo/node_modules/glob/node_modules/inherits": Object { - "extraneous": true, - "version": "2.0.1", - }, - "node_modules/foo/node_modules/glob/node_modules/minimatch": Object { - "extraneous": true, - "version": "1.0.0", - }, - "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/lru-cache": Object { - "extraneous": true, - "version": "2.5.0", - }, - "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/sigmund": Object { - "extraneous": true, - "version": "1.0.0", - }, - "node_modules/foo/node_modules/glob/node_modules/once": Object { - "extraneous": true, - "version": "1.3.0", - }, - "node_modules/foo/node_modules/selflink": Object { - "link": true, - "resolved": "", - }, - }, - "requires": true, - "version": "1.2.3", -} -` +<<<<<<< Conflict 1 of 1 +%%%%%%% Changes from base to side #1 + exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 1`] = ` + Object { + "lockfileVersion": 3, + "name": "selflink", + "packages": Object { + "": Object { + "dependencies": Object { + "@scope/x": "", + "@scope/y": "", + "foo": "", + }, + "name": "selflink", + "version": "1.2.3", + }, + "node_modules/@scope/y": Object { + "dependencies": Object { + "foo": "*", + }, + "version": "1.2.3", + }, + "node_modules/@scope/z": Object { + "dependencies": Object { + "glob": "4", + }, + "extraneous": true, + "version": "1.2.3", + }, + "node_modules/@scope/z/node_modules/glob": Object { + "link": true, + "resolved": "node_modules/foo/node_modules/glob", + }, + "node_modules/foo": Object { + "dependencies": Object { + "glob": "4", + "selflink": "*", + }, + "version": "1.2.3", + }, + "node_modules/foo/node_modules/glob": Object { + "version": "4.0.5", + }, + "node_modules/foo/node_modules/glob/node_modules/graceful-fs": Object { + "extraneous": true, + "version": "3.0.2", + }, + "node_modules/foo/node_modules/glob/node_modules/inherits": Object { + "extraneous": true, + "version": "2.0.1", + }, + "node_modules/foo/node_modules/glob/node_modules/minimatch": Object { + "extraneous": true, + "version": "1.0.0", + }, + "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/lru-cache": Object { + "extraneous": true, + "version": "2.5.0", + }, + "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/sigmund": Object { + "extraneous": true, + "version": "1.0.0", + }, + "node_modules/foo/node_modules/glob/node_modules/once": Object { + "extraneous": true, + "version": "1.3.0", + }, + "node_modules/foo/node_modules/selflink": Object { + "link": true, + "resolved": "", + }, + }, + "requires": true, + "version": "1.2.3", + } + ` exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 2`] = ` Object { From f36fd55489f277dbec80ade7b86841c1d372f47d Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Wed, 26 Mar 2025 09:29:51 -0700 Subject: [PATCH 3/3] chore(arborist): Adds test for shrinkwrap ideallyInert nodes --- workspaces/arborist/lib/shrinkwrap.js | 2 +- .../tap-snapshots/test/shrinkwrap.js.test.cjs | 173 ++++++++++-------- workspaces/arborist/test/arborist/reify.js | 5 +- .../node_modules/.package-lock.json | 19 ++ .../node_modules/abbrev/package.json | 21 +++ .../hidden-lockfile-inert/package.json | 5 + workspaces/arborist/test/shrinkwrap.js | 10 + 7 files changed, 157 insertions(+), 78 deletions(-) create mode 100644 workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/.package-lock.json create mode 100644 workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/abbrev/package.json create mode 100644 workspaces/arborist/test/fixtures/hidden-lockfile-inert/package.json diff --git a/workspaces/arborist/lib/shrinkwrap.js b/workspaces/arborist/lib/shrinkwrap.js index 83b9e1a30fea5..e4b159c568250 100644 --- a/workspaces/arborist/lib/shrinkwrap.js +++ b/workspaces/arborist/lib/shrinkwrap.js @@ -144,7 +144,7 @@ const assertNoNewer = async (path, data, lockTime, dir, seen) => { let entries if (dir === path) { entries = [{ name: 'node_modules', isDirectory: () => true }] - } else if (!inert) { + } else { const { mtime: dirTime } = await stat(dir) if (dirTime > lockTime) { throw new Error(`out of date, updated: ${rel}`) diff --git a/workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs b/workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs index f6f4aec4a18e9..a061ef5fbe493 100644 --- a/workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs @@ -654,6 +654,29 @@ Object { } ` +exports[`test/shrinkwrap.js TAP load a hidden lockfile with ideallyInert > must match snapshot 1`] = ` +Object { + "dependencies": Object {}, + "lockfileVersion": 3, + "name": "hidden-lockfile", + "packages": Object { + "": Object { + "dependencies": Object { + "abbrev": "^1.1.1", + }, + }, + "node_modules/abbrev": Object { + "ideallyInert": true, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "name": "abbrev", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "version": "1.1.1", + }, + }, + "requires": true, +} +` + exports[`test/shrinkwrap.js TAP load a legacy shrinkwrap without a package.json > did our best with what we had 1`] = ` Object { "dependencies": Object { @@ -2644,82 +2667,80 @@ Object { } ` -<<<<<<< Conflict 1 of 1 -%%%%%%% Changes from base to side #1 - exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 1`] = ` - Object { - "lockfileVersion": 3, - "name": "selflink", - "packages": Object { - "": Object { - "dependencies": Object { - "@scope/x": "", - "@scope/y": "", - "foo": "", - }, - "name": "selflink", - "version": "1.2.3", - }, - "node_modules/@scope/y": Object { - "dependencies": Object { - "foo": "*", - }, - "version": "1.2.3", - }, - "node_modules/@scope/z": Object { - "dependencies": Object { - "glob": "4", - }, - "extraneous": true, - "version": "1.2.3", - }, - "node_modules/@scope/z/node_modules/glob": Object { - "link": true, - "resolved": "node_modules/foo/node_modules/glob", - }, - "node_modules/foo": Object { - "dependencies": Object { - "glob": "4", - "selflink": "*", - }, - "version": "1.2.3", - }, - "node_modules/foo/node_modules/glob": Object { - "version": "4.0.5", - }, - "node_modules/foo/node_modules/glob/node_modules/graceful-fs": Object { - "extraneous": true, - "version": "3.0.2", - }, - "node_modules/foo/node_modules/glob/node_modules/inherits": Object { - "extraneous": true, - "version": "2.0.1", - }, - "node_modules/foo/node_modules/glob/node_modules/minimatch": Object { - "extraneous": true, - "version": "1.0.0", - }, - "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/lru-cache": Object { - "extraneous": true, - "version": "2.5.0", - }, - "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/sigmund": Object { - "extraneous": true, - "version": "1.0.0", - }, - "node_modules/foo/node_modules/glob/node_modules/once": Object { - "extraneous": true, - "version": "1.3.0", - }, - "node_modules/foo/node_modules/selflink": Object { - "link": true, - "resolved": "", - }, - }, - "requires": true, - "version": "1.2.3", - } - ` +exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 1`] = ` +Object { + "lockfileVersion": 3, + "name": "selflink", + "packages": Object { + "": Object { + "dependencies": Object { + "@scope/x": "", + "@scope/y": "", + "foo": "", + }, + "name": "selflink", + "version": "1.2.3", + }, + "node_modules/@scope/y": Object { + "dependencies": Object { + "foo": "*", + }, + "version": "1.2.3", + }, + "node_modules/@scope/z": Object { + "dependencies": Object { + "glob": "4", + }, + "extraneous": true, + "version": "1.2.3", + }, + "node_modules/@scope/z/node_modules/glob": Object { + "link": true, + "resolved": "node_modules/foo/node_modules/glob", + }, + "node_modules/foo": Object { + "dependencies": Object { + "glob": "4", + "selflink": "*", + }, + "version": "1.2.3", + }, + "node_modules/foo/node_modules/glob": Object { + "version": "4.0.5", + }, + "node_modules/foo/node_modules/glob/node_modules/graceful-fs": Object { + "extraneous": true, + "version": "3.0.2", + }, + "node_modules/foo/node_modules/glob/node_modules/inherits": Object { + "extraneous": true, + "version": "2.0.1", + }, + "node_modules/foo/node_modules/glob/node_modules/minimatch": Object { + "extraneous": true, + "version": "1.0.0", + }, + "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/lru-cache": Object { + "extraneous": true, + "version": "2.5.0", + }, + "node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/sigmund": Object { + "extraneous": true, + "version": "1.0.0", + }, + "node_modules/foo/node_modules/glob/node_modules/once": Object { + "extraneous": true, + "version": "1.3.0", + }, + "node_modules/foo/node_modules/selflink": Object { + "link": true, + "resolved": "", + }, + }, + "requires": true, + "version": "1.2.3", +} +` exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 2`] = ` Object { diff --git a/workspaces/arborist/test/arborist/reify.js b/workspaces/arborist/test/arborist/reify.js index 9c7b8b14506b5..63b6b1b353ef3 100644 --- a/workspaces/arborist/test/arborist/reify.js +++ b/workspaces/arborist/test/arborist/reify.js @@ -2592,7 +2592,10 @@ t.test('adding an unresolvable optional dep is OK', async t => { }) createRegistry(t, true) const tree = await reify(path, { add: ['abbrev'] }) - t.strictSame([...tree.children.values()], [], 'nothing actually added') + const children = [...tree.children.values()] + t.equal(children.length, 1, 'optional unresolved dep node added') + t.ok(children[0].ideallyInert, 'node is ideally inert') + t.throws(() => fs.statSync(path + '/node_modules/abbrev'), { code: 'ENOENT' }, 'optional dependency should not exist on disk') t.matchSnapshot(printTree(tree)) }) diff --git a/workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/.package-lock.json b/workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/.package-lock.json new file mode 100644 index 0000000000000..4d459d9712cb6 --- /dev/null +++ b/workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/.package-lock.json @@ -0,0 +1,19 @@ +{ + "name": "hidden-lockfile", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "abbrev": "^1.1.1" + } + }, + "node_modules/abbrev": { + "name": "abbrev", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "ideallyInert": true + } + } +} diff --git a/workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/abbrev/package.json b/workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/abbrev/package.json new file mode 100644 index 0000000000000..bf4e8015bba9d --- /dev/null +++ b/workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/abbrev/package.json @@ -0,0 +1,21 @@ +{ + "name": "abbrev", + "version": "1.1.1", + "description": "Like ruby's abbrev module, but in js", + "author": "Isaac Z. Schlueter ", + "main": "abbrev.js", + "scripts": { + "test": "tap test.js --100", + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --all; git push origin --tags" + }, + "repository": "http://github.com/isaacs/abbrev-js", + "license": "ISC", + "devDependencies": { + "tap": "^10.1" + }, + "files": [ + "abbrev.js" + ] +} diff --git a/workspaces/arborist/test/fixtures/hidden-lockfile-inert/package.json b/workspaces/arborist/test/fixtures/hidden-lockfile-inert/package.json new file mode 100644 index 0000000000000..3d7c4ee8c0db1 --- /dev/null +++ b/workspaces/arborist/test/fixtures/hidden-lockfile-inert/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "abbrev": "^1.1.1" + } +} diff --git a/workspaces/arborist/test/shrinkwrap.js b/workspaces/arborist/test/shrinkwrap.js index 5a52a44dfa860..bc0e56cf3928d 100644 --- a/workspaces/arborist/test/shrinkwrap.js +++ b/workspaces/arborist/test/shrinkwrap.js @@ -19,6 +19,7 @@ const emptyFixture = resolve(__dirname, 'fixtures/empty') const depTypesFixture = resolve(__dirname, 'fixtures/dev-deps') const badJsonFixture = resolve(__dirname, 'fixtures/testing-peer-deps-bad-sw') const hiddenLockfileFixture = resolve(__dirname, 'fixtures/hidden-lockfile') +const hiddenIdeallyInertLockfileFixture = resolve(__dirname, 'fixtures/hidden-lockfile-inert') const hidden = 'node_modules/.package-lock.json' const saxFixture = resolve(__dirname, 'fixtures/sax') @@ -864,6 +865,15 @@ t.test('load a hidden lockfile', async t => { t.equal(data.dependencies, undefined, 'deleted legacy metadata') }) +t.test('load a hidden lockfile with ideallyInert', async t => { + fs.utimesSync(resolve(hiddenIdeallyInertLockfileFixture, hidden), new Date(), new Date()) + const s = await Shrinkwrap.load({ + path: hiddenIdeallyInertLockfileFixture, + hiddenLockfile: true, + }) + t.matchSnapshot(s.data) +}) + t.test('load a fresh hidden lockfile', async t => { const sw = await Shrinkwrap.reset({ path: hiddenLockfileFixture,