diff --git a/.github/ISSUE_TEMPLATE/bug_7.md b/.github/ISSUE_TEMPLATE/bug_7.md
deleted file mode 100644
index cd995b62d2bbc..0000000000000
--- a/.github/ISSUE_TEMPLATE/bug_7.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-name: 🐞 Bug v7
-about: File a bug/issue against v7.x
-title: '[BUG]
'
-labels: Bug, Needs Triage, Release 7.x
-assignees: ''
-
----
-
-
-
-### Current Behavior:
-
-
-### Expected Behavior:
-
-
-### Steps To Reproduce:
-
-
-### Environment:
-
diff --git a/.github/ISSUE_TEMPLATE/bug_7.yml b/.github/ISSUE_TEMPLATE/bug_7.yml
new file mode 100644
index 0000000000000..455177d277a5c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_7.yml
@@ -0,0 +1,49 @@
+name: 🐞 Bug v7
+description: File a bug/issue against v7.x
+title: "[BUG] "
+labels: [Bug, Needs Triage, Release 7.x]
+body:
+- type: checkboxes
+ attributes:
+ label: Is there an existing issue for this?
+ description: Please [search here](https://github.com/npm/cli/issues) to see if an issue already exists for your problem.
+ options:
+ - label: I have searched the existing issues
+ required: true
+- type: textarea
+ attributes:
+ label: Current Behavior
+ description: A clear & concise description of what you're experiencing.
+ validations:
+ required: false
+- type: textarea
+ attributes:
+ label: Expected Behavior
+ description: A clear & concise description of what you expected to happen.
+ validations:
+ required: false
+- type: textarea
+ attributes:
+ label: Steps To Reproduce
+ description: Steps to reproduce the behavior.
+ value: |
+ 1. In this environment...
+ 2. With this config...
+ 3. Run '...'
+ 4. See error...
+ validations:
+ required: false
+- type: textarea
+ attributes:
+ label: Environment
+ description: |
+ examples:
+ - **OS**: Ubuntu 20.04
+ - **Node**: 13.14.0
+ - **npm**: 7.6.3
+ value: |
+ - OS:
+ - Node:
+ - npm:
+ validations:
+ required: false
diff --git a/AUTHORS b/AUTHORS
index 3c3d13b2369ba..3186985b8e3cb 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -774,3 +774,5 @@ Felipe Santos
Luigi Pinca
Marco Sirabella
wangsai
+Luke Hefson
+mrmlnc
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 02d66dfc323f4..bed0f87c2b80c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,53 @@
+## v7.12.1 (2021-05-10)
+
+### BUG FIXES
+
+* [`de49f58f5`](https://github.com/npm/cli/commit/de49f58f55dc2ac3a5057cd492a43c32ae41381e)
+ [#3216](https://github.com/npm/cli/issues/3216)
+ fix(contributing): link to proper cli repo
+ ([@mrmlnc](https://github.com/mrmlnc))
+* [`1d092144e`](https://github.com/npm/cli/commit/1d092144eaaabff63ac8424b40b2286822be7677)
+ [#3203](https://github.com/npm/cli/issues/3203)
+ fix(packages): locale-agnostic string sorting
+ ([@isaacs](https://github.com/isaacs))
+* [`0696fca13`](https://github.com/npm/cli/commit/0696fca13d10726e04ca97ff50eef7bd7455a3ab)
+ [#3209](https://github.com/npm/cli/issues/3209)
+ fix(view): fix non-registry specs
+ ([@wraithgar](https://github.com/wraithgar))
+* [`71ac93597`](https://github.com/npm/cli/commit/71ac935976390e4fd05987ff510049f82bc6e2a9)
+ [#3206](https://github.com/npm/cli/issues/3206)
+ chore(github): Convert md issue template to yaml
+ ([@lukehefson](https://github.com/lukehefson))
+* [`6fb386d3b`](https://github.com/npm/cli/commit/6fb386d3bfbaa8e4771ff87a08de1f3aa6f9b34d)
+ [#3201](https://github.com/npm/cli/issues/3201)
+ fix(tests): increase test fuzziness
+ ([@wraithgar](https://github.com/wraithgar))
+* [`f3a662fcd`](https://github.com/npm/cli/commit/f3a662fcd869653f9753aef3d40cc96ed28ed509)
+ [#3211](https://github.com/npm/cli/issues/3211)
+ fix(tests): use config defaults
+ ([@wraithgar](https://github.com/wraithgar))
+
+### DEPENDENCIES
+
+* [`285976fd1`](https://github.com/npm/cli/commit/285976fd12f037f59da47307d98df7ebda5278d9)
+ `@npmcli/arborist@2.4.4`
+ * fix(reify): properly save spec if prerelease
+* [`f9f24d17c`](https://github.com/npm/cli/commit/f9f24d17c29c421de3c9b82c6b98a40268aeb920)
+ `libnpmexec@1.1.1`
+ * fix(add): Specify 'en' locale to String.localeCompare
+* [`cb9f17499`](https://github.com/npm/cli/commit/cb9f174996dbb4779a1be82890564f9abffb11f4)
+ `glob@7.1.7`
+ * force 'en' locale in string sorting
+* [`24b4e4a41`](https://github.com/npm/cli/commit/24b4e4a41b451db3de381fac6b719149db14c288)
+ `ignore-walk@3.0.4`
+ * Avoid locale-specific sorting issues
+* [`1eb7e5c7d`](https://github.com/npm/cli/commit/1eb7e5c7d466293b472c2506c64e5a89ec84ac2f)
+ `@npmcli/arborist@2.4.3`
+ * guard against locale-specific sorting
+* [`a6a826067`](https://github.com/npm/cli/commit/a6a826067cb46c711521772c2d0158257d54400a)
+ `npm-packlist@2.2.2`:
+ * fix(sort): avoid locale-dependent sorting issues
+
## v7.12.0 (2021-05-06)
### FEATURES
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6821da895b3b5..558ce2a839b23 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -9,7 +9,7 @@ All interactions in the **npm** organization on GitHub are considered to be cove
**1. Clone this repository...**
```bash
-$ git clone git@github.com:npm/cli.git
+$ git clone git@github.com:npm/cli.git npm
```
**2. Navigate into project & install development-specific dependencies...**
diff --git a/lib/config.js b/lib/config.js
index f53d7e5ae271b..4b3ac58736508 100644
--- a/lib/config.js
+++ b/lib/config.js
@@ -199,7 +199,7 @@ class Config extends BaseCommand {
; Configs like \`///:_authToken\` are auth that is restricted
; to the registry host specified.
-${data.split('\n').sort((a, b) => a.localeCompare(b)).join('\n').trim()}
+${data.split('\n').sort((a, b) => a.localeCompare(b, 'en')).join('\n').trim()}
;;;;
; all available options shown below with default values
@@ -227,7 +227,7 @@ ${defData}
if (where === 'default' && !long)
continue
- const keys = Object.keys(data).sort((a, b) => a.localeCompare(b))
+ const keys = Object.keys(data).sort((a, b) => a.localeCompare(b, 'en'))
if (!keys.length)
continue
diff --git a/lib/help.js b/lib/help.js
index 589819eb02a45..e9aade5215a8c 100644
--- a/lib/help.js
+++ b/lib/help.js
@@ -77,7 +77,7 @@ class Help extends BaseCommand {
if (aManNumber !== bManNumber)
return aManNumber - bManNumber
- return a.localeCompare(b)
+ return a.localeCompare(b, 'en')
})
const man = mans[0]
diff --git a/lib/ls.js b/lib/ls.js
index ccd8b2ff9dea7..9fa5fddd53f82 100644
--- a/lib/ls.js
+++ b/lib/ls.js
@@ -443,7 +443,7 @@ const augmentNodesWithMetadata = ({
}
const sortAlphabetically = (a, b) =>
- a.pkgid.localeCompare(b.pkgid)
+ a.pkgid.localeCompare(b.pkgid, 'en')
const humanOutput = ({ color, result, seenItems, unicode }) => {
// we need to traverse the entire tree in order to determine which items
diff --git a/lib/outdated.js b/lib/outdated.js
index 9b656d2aeede4..a436059e9e2da 100644
--- a/lib/outdated.js
+++ b/lib/outdated.js
@@ -68,7 +68,7 @@ class Outdated extends BaseCommand {
}))
// sorts list alphabetically
- const outdated = this.list.sort((a, b) => a.name.localeCompare(b.name))
+ const outdated = this.list.sort((a, b) => a.name.localeCompare(b.name, 'en'))
// return if no outdated packages
if (outdated.length === 0 && !this.npm.config.get('json'))
@@ -149,7 +149,7 @@ class Outdated extends BaseCommand {
: edge.dev ? 'devDependencies'
: 'dependencies'
- for (const omitType of this.npm.config.get('omit') || []) {
+ for (const omitType of this.npm.config.get('omit')) {
if (node[omitType])
return
}
diff --git a/lib/utils/completion/installed-deep.js b/lib/utils/completion/installed-deep.js
index b65c17e41d743..2430688612cd4 100644
--- a/lib/utils/completion/installed-deep.js
+++ b/lib/utils/completion/installed-deep.js
@@ -16,7 +16,7 @@ const installedDeep = async (npm) => {
})
.filter(i => (i.depth - 1) <= depth)
.sort((a, b) => a.depth - b.depth)
- .sort((a, b) => a.depth === b.depth ? a.name.localeCompare(b.name) : 0)
+ .sort((a, b) => a.depth === b.depth ? a.name.localeCompare(b.name, 'en') : 0)
const res = new Set()
const gArb = new Arborist({ global: true, path: resolve(npm.globalDir, '..') })
diff --git a/lib/utils/config/describe-all.js b/lib/utils/config/describe-all.js
index ab3f3a63ea751..5fb785f08310d 100644
--- a/lib/utils/config/describe-all.js
+++ b/lib/utils/config/describe-all.js
@@ -7,7 +7,7 @@ const describeAll = () => {
const sort = ([keya, {deprecated: depa}], [keyb, {deprecated: depb}]) => {
return depa && !depb ? 1
: !depa && depb ? -1
- : keya.localeCompare(keyb)
+ : keya.localeCompare(keyb, 'en')
}
return Object.entries(definitions).sort(sort)
.map(([key, def]) => def.describe())
diff --git a/lib/utils/npm-usage.js b/lib/utils/npm-usage.js
index bc397cb4d95e6..ddb0bab0bc9a2 100644
--- a/lib/utils/npm-usage.js
+++ b/lib/utils/npm-usage.js
@@ -62,7 +62,7 @@ const usages = (npm) => {
maxLen = Math.max(maxLen, c.length)
return set
}, [])
- .sort((a, b) => a[0].localeCompare(b[0]))
+ .sort((a, b) => a[0].localeCompare(b[0], 'en'))
.map(([c, usage]) => `\n ${c}${' '.repeat(maxLen - c.length + 1)}${
(usage.split('\n').join('\n' + ' '.repeat(maxLen + 5)))}`)
.join('\n')
diff --git a/lib/utils/tar.js b/lib/utils/tar.js
index 887c40a0f6ebe..9e7c3329530ee 100644
--- a/lib/utils/tar.js
+++ b/lib/utils/tar.js
@@ -76,7 +76,7 @@ const getContents = async (manifest, tarball) => {
})
const comparator = (a, b) => {
- return a.path.localeCompare(b.path, undefined, {
+ return a.path.localeCompare(b.path, 'en', {
sensitivity: 'case',
numeric: true,
})
@@ -84,7 +84,7 @@ const getContents = async (manifest, tarball) => {
const isUpper = (str) => {
const ch = str.charAt(0)
- return ch >= 'A' && ch <= 'Z'
+ return ch === ch.toUpperCase()
}
const uppers = files.filter(file => isUpper(file.path))
diff --git a/lib/view.js b/lib/view.js
index 91b32e2fd38fa..9cc1aed914488 100644
--- a/lib/view.js
+++ b/lib/view.js
@@ -202,7 +202,10 @@ class View extends BaseCommand {
const spec = npa(pkg)
// get the data about this package
- let version = spec.rawSpec || this.npm.config.get('tag')
+ let version = this.npm.config.get('tag')
+ // rawSpec is the git url if this is from git
+ if (spec.type !== 'git' && spec.rawSpec)
+ version = spec.rawSpec
const pckmnt = await packument(spec, opts)
diff --git a/node_modules/@npmcli/arborist/CHANGELOG.md b/node_modules/@npmcli/arborist/CHANGELOG.md
deleted file mode 100644
index 3cd36d027b631..0000000000000
--- a/node_modules/@npmcli/arborist/CHANGELOG.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# CHANGELOG
-
-## 2.0
-
-* BREAKING CHANGE: root node is now included in inventory
-* All parent/target/fsParent/etc. references set in `root` setter, rather
- than the hodgepodge of setters that existed before.
-* `treeCheck` function added, to enforce strict correctness guarantees when
- `ARBORIST_DEBUG=1` in the environment (on by default in Arborist tests).
-
-## 1.0
-
-* Release for npm v7 beta
-* Fully functional
-
-## 0.0
-
-* Proof of concept
-* Before this, it was [`read-package-tree`](http://npm.im/read-package-tree)
diff --git a/node_modules/@npmcli/arborist/bin/license.js b/node_modules/@npmcli/arborist/bin/license.js
index 4083ddc695d46..89d0d879036b0 100644
--- a/node_modules/@npmcli/arborist/bin/license.js
+++ b/node_modules/@npmcli/arborist/bin/license.js
@@ -22,7 +22,7 @@ a.loadVirtual().then(tree => {
set.push([tree.inventory.query('license', license).size, license])
for (const [count, license] of set.sort((a, b) =>
- a[1] && b[1] ? b[0] - a[0] || a[1].localeCompare(b[1])
+ a[1] && b[1] ? b[0] - a[0] || a[1].localeCompare(b[1], 'en')
: a[1] ? -1
: b[1] ? 1
: 0))
diff --git a/node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js b/node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js
index 25113cbedff39..f78a43319be8c 100644
--- a/node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js
+++ b/node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js
@@ -75,7 +75,7 @@ const addSingle = ({pkg, spec, saveBundle, saveType, log}) => {
// keep it sorted, keep it unique
const bd = new Set(pkg.bundleDependencies || [])
bd.add(spec.name)
- pkg.bundleDependencies = [...bd].sort((a, b) => a.localeCompare(b))
+ pkg.bundleDependencies = [...bd].sort((a, b) => a.localeCompare(b, 'en'))
}
}
diff --git a/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js b/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js
index 6176707c3c651..ade9bbf1a152f 100644
--- a/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js
+++ b/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js
@@ -764,7 +764,7 @@ This is a one-time fix-up, please be patient...
// sort physically shallower deps up to the front of the queue,
// because they'll affect things deeper in, then alphabetical
this[_depsQueue].sort((a, b) =>
- (a.depth - b.depth) || a.path.localeCompare(b.path))
+ (a.depth - b.depth) || a.path.localeCompare(b.path, 'en'))
const node = this[_depsQueue].shift()
const bd = node.package.bundleDependencies
@@ -902,7 +902,7 @@ This is a one-time fix-up, please be patient...
}
const placed = tasks
- .sort((a, b) => a.edge.name.localeCompare(b.edge.name))
+ .sort((a, b) => a.edge.name.localeCompare(b.edge.name, 'en'))
.map(({ edge, dep }) => this[_placeDep](dep, node, edge))
const promises = []
@@ -1147,7 +1147,7 @@ This is a one-time fix-up, please be patient...
// we typically only install non-optional peers, but we have to
// factor them into the peerSet so that we can avoid conflicts
.filter(e => e.peer && !(e.valid && e.to))
- .sort(({name: a}, {name: b}) => a.localeCompare(b))
+ .sort(({name: a}, {name: b}) => a.localeCompare(b, 'en'))
for (const edge of peerEdges) {
// already placed this one, and we're happy with it.
diff --git a/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js b/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js
index 2a222249d7a48..a98ed23b2a458 100644
--- a/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js
+++ b/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js
@@ -159,12 +159,12 @@ module.exports = cls => class VirtualLoader extends cls {
...depsToEdges('peerOptional', peerOptional),
...lockWS,
].sort(([atype, aname], [btype, bname]) =>
- atype.localeCompare(btype) || aname.localeCompare(bname))
+ atype.localeCompare(btype, 'en') || aname.localeCompare(bname, 'en'))
const rootEdges = [...root.edgesOut.values()]
.map(e => [e.type, e.name, e.spec])
.sort(([atype, aname], [btype, bname]) =>
- atype.localeCompare(btype) || aname.localeCompare(bname))
+ atype.localeCompare(btype, 'en') || aname.localeCompare(bname, 'en'))
if (rootEdges.length !== lockEdges.length) {
// something added or removed
diff --git a/node_modules/@npmcli/arborist/lib/arborist/rebuild.js b/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
index 390d3ce42aecd..7cba1da00008a 100644
--- a/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
+++ b/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
@@ -14,7 +14,7 @@ const {
} = require('@npmcli/node-gyp')
const boolEnv = b => b ? '1' : ''
-const sortNodes = (a, b) => (a.depth - b.depth) || a.path.localeCompare(b.path)
+const sortNodes = (a, b) => (a.depth - b.depth) || a.path.localeCompare(b.path, 'en')
const _build = Symbol('build')
const _resetQueues = Symbol('resetQueues')
diff --git a/node_modules/@npmcli/arborist/lib/arborist/reify.js b/node_modules/@npmcli/arborist/lib/arborist/reify.js
index f7731e1c90da0..b09a9e0fe16d7 100644
--- a/node_modules/@npmcli/arborist/lib/arborist/reify.js
+++ b/node_modules/@npmcli/arborist/lib/arborist/reify.js
@@ -972,8 +972,15 @@ module.exports = cls => class Reifier extends cls {
// would allow versions outside the requested range. Tags and
// specific versions save with the save-prefix.
const isRange = (subSpec || req).type === 'range'
- const range = !isRange || subset(prefixRange, spec, { loose: true })
- ? prefixRange : spec
+
+ let range = spec
+ if (
+ !isRange ||
+ spec === '*' ||
+ subset(prefixRange, spec, { loose: true })
+ )
+ range = prefixRange
+
const pname = child.packageName
const alias = name !== pname
newSpec = alias ? `npm:${pname}@${range}` : range
diff --git a/node_modules/@npmcli/arborist/lib/audit-report.js b/node_modules/@npmcli/arborist/lib/audit-report.js
index 9a0178c59c9e6..76387cde1d66a 100644
--- a/node_modules/@npmcli/arborist/lib/audit-report.js
+++ b/node_modules/@npmcli/arborist/lib/audit-report.js
@@ -78,7 +78,7 @@ class AuditReport extends Map {
}
obj.vulnerabilities = vulnerabilities
- .sort(([a], [b]) => a.localeCompare(b))
+ .sort(([a], [b]) => a.localeCompare(b, 'en'))
.reduce((set, [name, vuln]) => {
set[name] = vuln
return set
diff --git a/node_modules/@npmcli/arborist/lib/printable.js b/node_modules/@npmcli/arborist/lib/printable.js
index e611f55a4bd63..ce764071dc62a 100644
--- a/node_modules/@npmcli/arborist/lib/printable.js
+++ b/node_modules/@npmcli/arborist/lib/printable.js
@@ -46,14 +46,14 @@ class ArboristNode {
// edgesOut sorted by name
if (tree.edgesOut.size) {
this.edgesOut = new Map([...tree.edgesOut.entries()]
- .sort(([a], [b]) => a.localeCompare(b))
+ .sort(([a], [b]) => a.localeCompare(b, 'en'))
.map(([name, edge]) => [name, new EdgeOut(edge)]))
}
// edgesIn sorted by location
if (tree.edgesIn.size) {
this.edgesIn = new Set([...tree.edgesIn]
- .sort((a, b) => a.from.location.localeCompare(b.from.location))
+ .sort((a, b) => a.from.location.localeCompare(b.from.location, 'en'))
.map(edge => new EdgeIn(edge)))
}
@@ -65,14 +65,14 @@ class ArboristNode {
// fsChildren sorted by path
if (tree.fsChildren.size) {
this.fsChildren = new Set([...tree.fsChildren]
- .sort(({path: a}, {path: b}) => a.localeCompare(b))
+ .sort(({path: a}, {path: b}) => a.localeCompare(b, 'en'))
.map(tree => printableTree(tree, path)))
}
// children sorted by name
if (tree.children.size) {
this.children = new Map([...tree.children.entries()]
- .sort(([a], [b]) => a.localeCompare(b))
+ .sort(([a], [b]) => a.localeCompare(b, 'en'))
.map(([name, tree]) => [name, printableTree(tree, path)]))
}
}
diff --git a/node_modules/@npmcli/arborist/lib/shrinkwrap.js b/node_modules/@npmcli/arborist/lib/shrinkwrap.js
index d9065ffa0258f..cff9f09633dfc 100644
--- a/node_modules/@npmcli/arborist/lib/shrinkwrap.js
+++ b/node_modules/@npmcli/arborist/lib/shrinkwrap.js
@@ -844,7 +844,7 @@ class Shrinkwrap {
/* istanbul ignore next - sort calling order is indeterminate */
return aloc.length > bloc.length ? 1
: bloc.length > aloc.length ? -1
- : aloc[aloc.length - 1].localeCompare(bloc[bloc.length - 1])
+ : aloc[aloc.length - 1].localeCompare(bloc[bloc.length - 1], 'en')
})[0]
const res = consistentResolve(node.resolved, this.path, this.path, true)
diff --git a/node_modules/@npmcli/arborist/lib/update-root-package-json.js b/node_modules/@npmcli/arborist/lib/update-root-package-json.js
index 4a88707b9c479..57ec414248756 100644
--- a/node_modules/@npmcli/arborist/lib/update-root-package-json.js
+++ b/node_modules/@npmcli/arborist/lib/update-root-package-json.js
@@ -18,7 +18,7 @@ const orderDeps = (pkg) => {
for (const type of depTypes) {
if (pkg && pkg[type]) {
pkg[type] = Object.keys(pkg[type])
- .sort((a, b) => a.localeCompare(b))
+ .sort((a, b) => a.localeCompare(b, 'en'))
.reduce((res, key) => {
res[key] = pkg[type][key]
return res
diff --git a/node_modules/@npmcli/arborist/lib/vuln.js b/node_modules/@npmcli/arborist/lib/vuln.js
index 2561bc80646cf..5b1d1dc1ab83d 100644
--- a/node_modules/@npmcli/arborist/lib/vuln.js
+++ b/node_modules/@npmcli/arborist/lib/vuln.js
@@ -106,12 +106,12 @@ class Vuln {
vulnerableVersions: undefined,
id: undefined,
}).sort((a, b) =>
- String(a.source || a).localeCompare(String(b.source || b))),
+ String(a.source || a).localeCompare(String(b.source || b, 'en'))),
effects: [...this.effects].map(v => v.name)
- .sort(/* istanbul ignore next */(a, b) => a.localeCompare(b)),
+ .sort(/* istanbul ignore next */(a, b) => a.localeCompare(b, 'en')),
range: this.simpleRange,
nodes: [...this.nodes].map(n => n.location)
- .sort(/* istanbul ignore next */(a, b) => a.localeCompare(b)),
+ .sort(/* istanbul ignore next */(a, b) => a.localeCompare(b, 'en')),
fixAvailable: this[_fixAvailable],
}
}
diff --git a/node_modules/@npmcli/arborist/lib/yarn-lock.js b/node_modules/@npmcli/arborist/lib/yarn-lock.js
index 14c7691f1bd42..e237cc5c6a461 100644
--- a/node_modules/@npmcli/arborist/lib/yarn-lock.js
+++ b/node_modules/@npmcli/arborist/lib/yarn-lock.js
@@ -34,7 +34,7 @@ const {breadth} = require('treeverse')
// sort a key/value object into a string of JSON stringified keys and vals
const sortKV = obj => Object.keys(obj)
- .sort((a, b) => a.localeCompare(b))
+ .sort((a, b) => a.localeCompare(b, 'en'))
.map(k => ` ${JSON.stringify(k)} ${JSON.stringify(obj[k])}`)
.join('\n')
@@ -165,7 +165,7 @@ class YarnLock {
toString () {
return prefix + [...new Set([...this.entries.values()])]
.map(e => e.toString())
- .sort((a, b) => a.localeCompare(b)).join('\n\n') + '\n'
+ .sort((a, b) => a.localeCompare(b, 'en')).join('\n\n') + '\n'
}
fromTree (tree) {
@@ -175,7 +175,7 @@ class YarnLock {
tree,
visit: node => this.addEntryFromNode(node),
getChildren: node => [...node.children.values(), ...node.fsChildren]
- .sort((a, b) => a.depth - b.depth || a.name.localeCompare(b.name)),
+ .sort((a, b) => a.depth - b.depth || a.name.localeCompare(b.name, 'en')),
})
return this
}
@@ -183,7 +183,7 @@ class YarnLock {
addEntryFromNode (node) {
const specs = [...node.edgesIn]
.map(e => `${node.name}@${e.spec}`)
- .sort((a, b) => a.localeCompare(b))
+ .sort((a, b) => a.localeCompare(b, 'en'))
// Note:
// yarn will do excessive duplication in a case like this:
@@ -309,7 +309,7 @@ class YarnLockEntry {
toString () {
// sort objects to the bottom, then alphabetical
return ([...this[_specs]]
- .sort((a, b) => a.localeCompare(b))
+ .sort((a, b) => a.localeCompare(b, 'en'))
.map(JSON.stringify).join(', ') +
':\n' +
Object.getOwnPropertyNames(this)
@@ -318,7 +318,7 @@ class YarnLockEntry {
(a, b) =>
/* istanbul ignore next - sort call order is unpredictable */
(typeof this[a] === 'object') === (typeof this[b] === 'object')
- ? a.localeCompare(b)
+ ? a.localeCompare(b, 'en')
: typeof this[a] === 'object' ? 1 : -1)
.map(prop =>
typeof this[prop] !== 'object'
diff --git a/node_modules/@npmcli/arborist/package.json b/node_modules/@npmcli/arborist/package.json
index ebc84f6fc32a9..bbe87d8bf97ad 100644
--- a/node_modules/@npmcli/arborist/package.json
+++ b/node_modules/@npmcli/arborist/package.json
@@ -1,6 +1,6 @@
{
"name": "@npmcli/arborist",
- "version": "2.4.2",
+ "version": "2.4.4",
"description": "Manage node_modules trees",
"dependencies": {
"@npmcli/installed-package-contents": "^1.0.7",
@@ -14,7 +14,7 @@
"cacache": "^15.0.3",
"common-ancestor-path": "^1.0.1",
"json-parse-even-better-errors": "^2.3.1",
- "json-stringify-nice": "^1.1.2",
+ "json-stringify-nice": "^1.1.4",
"mkdirp-infer-owner": "^2.0.0",
"npm-install-checks": "^4.0.0",
"npm-package-arg": "^8.1.0",
@@ -40,9 +40,8 @@
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1",
"minify-registry-metadata": "^2.1.0",
- "mutate-fs": "^2.1.1",
- "tap": "^15.0.4",
- "tcompare": "^3.0.4"
+ "tap": "^15.0.9",
+ "tcompare": "^5.0.6"
},
"scripts": {
"test": "npm run test-only --",
@@ -74,11 +73,13 @@
"bin": {
"arborist": "bin/index.js"
},
+ "//": "sk test-env locale to catch locale-specific sorting",
"tap": {
"after": "test/fixtures/cleanup.js",
"coverage-map": "map.js",
"test-env": [
- "NODE_OPTIONS=--no-warnings"
+ "NODE_OPTIONS=--no-warnings",
+ "LC_ALL=sk"
],
"node-arg": [
"--no-warnings",
diff --git a/node_modules/glob/README.md b/node_modules/glob/README.md
index 0916a48255cd6..2dde30a597d77 100644
--- a/node_modules/glob/README.md
+++ b/node_modules/glob/README.md
@@ -7,7 +7,7 @@ Match files using the patterns the shell uses, like stars and stuff.
This is a glob implementation in JavaScript. It uses the `minimatch`
library to do its matching.
-![](logo/glob.png)
+![a fun cartoon logo made of glob characters](logo/glob.png)
## Usage
diff --git a/node_modules/glob/common.js b/node_modules/glob/common.js
index 66651bb3aac65..d14157a0aec8a 100644
--- a/node_modules/glob/common.js
+++ b/node_modules/glob/common.js
@@ -1,5 +1,3 @@
-exports.alphasort = alphasort
-exports.alphasorti = alphasorti
exports.setopts = setopts
exports.ownProp = ownProp
exports.makeAbs = makeAbs
@@ -17,12 +15,8 @@ var minimatch = require("minimatch")
var isAbsolute = require("path-is-absolute")
var Minimatch = minimatch.Minimatch
-function alphasorti (a, b) {
- return a.toLowerCase().localeCompare(b.toLowerCase())
-}
-
function alphasort (a, b) {
- return a.localeCompare(b)
+ return a.localeCompare(b, 'en')
}
function setupIgnores (self, options) {
@@ -150,7 +144,7 @@ function finish (self) {
all = Object.keys(all)
if (!self.nosort)
- all = all.sort(self.nocase ? alphasorti : alphasort)
+ all = all.sort(alphasort)
// at *some* point we statted all of these
if (self.mark) {
diff --git a/node_modules/glob/glob.js b/node_modules/glob/glob.js
index 58dec0f6c2bd0..dc27aef10b344 100644
--- a/node_modules/glob/glob.js
+++ b/node_modules/glob/glob.js
@@ -51,8 +51,6 @@ var assert = require('assert')
var isAbsolute = require('path-is-absolute')
var globSync = require('./sync.js')
var common = require('./common.js')
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
var setopts = common.setopts
var ownProp = common.ownProp
var inflight = require('inflight')
diff --git a/node_modules/glob/package.json b/node_modules/glob/package.json
index 6477c3070cb14..b345ae1e9fd83 100644
--- a/node_modules/glob/package.json
+++ b/node_modules/glob/package.json
@@ -2,7 +2,7 @@
"author": "Isaac Z. Schlueter (http://blog.izs.me/)",
"name": "glob",
"description": "a little globber",
- "version": "7.1.6",
+ "version": "7.1.7",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-glob.git"
@@ -27,13 +27,18 @@
"devDependencies": {
"mkdirp": "0",
"rimraf": "^2.2.8",
- "tap": "^12.0.1",
+ "tap": "^15.0.6",
"tick": "0.0.6"
},
+ "tap": {
+ "before": "test/00-setup.js",
+ "after": "test/zz-cleanup.js",
+ "jobs": 1
+ },
"scripts": {
"prepublish": "npm run benchclean",
"profclean": "rm -f v8.log profile.txt",
- "test": "tap test/*.js --cov",
+ "test": "tap",
"test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js",
"bench": "bash benchmark.sh",
"prof": "bash prof.sh && cat profile.txt",
diff --git a/node_modules/glob/sync.js b/node_modules/glob/sync.js
index c952134baa7ec..10b0ed2c0026b 100644
--- a/node_modules/glob/sync.js
+++ b/node_modules/glob/sync.js
@@ -11,8 +11,6 @@ var path = require('path')
var assert = require('assert')
var isAbsolute = require('path-is-absolute')
var common = require('./common.js')
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
var setopts = common.setopts
var ownProp = common.ownProp
var childrenIgnored = common.childrenIgnored
diff --git a/node_modules/ignore-walk/index.js b/node_modules/ignore-walk/index.js
index eec6851804a99..c01d57de2a039 100644
--- a/node_modules/ignore-walk/index.js
+++ b/node_modules/ignore-walk/index.js
@@ -23,7 +23,7 @@ class Walker extends EE {
}
sort (a, b) {
- return a.localeCompare(b)
+ return a.localeCompare(b, 'en')
}
emit (ev, data) {
diff --git a/node_modules/ignore-walk/package.json b/node_modules/ignore-walk/package.json
index 99d2c2e64de9d..7d48b977e0702 100644
--- a/node_modules/ignore-walk/package.json
+++ b/node_modules/ignore-walk/package.json
@@ -1,13 +1,13 @@
{
"name": "ignore-walk",
- "version": "3.0.3",
+ "version": "3.0.4",
"description": "Nested/recursive `.gitignore`/`.npmignore` parsing and filtering.",
"main": "index.js",
"devDependencies": {
"mkdirp": "^0.5.1",
"mutate-fs": "^1.1.0",
"rimraf": "^2.6.1",
- "tap": "^14.6.9"
+ "tap": "^15.0.6"
},
"scripts": {
"test": "tap",
@@ -36,6 +36,9 @@
"minimatch": "^3.0.4"
},
"tap": {
+ "test-env": "LC_ALL=sk",
+ "before": "test/00-setup.js",
+ "after": "test/zz-cleanup.js",
"jobs": 1
}
}
diff --git a/node_modules/json-stringify-nice/index.js b/node_modules/json-stringify-nice/index.js
index 2c722a752c685..36557bb055f01 100644
--- a/node_modules/json-stringify-nice/index.js
+++ b/node_modules/json-stringify-nice/index.js
@@ -5,7 +5,7 @@ const compare = (ak, bk, prefKeys) =>
: prefKeys.includes(bk) && !prefKeys.includes(ak) ? 1
: prefKeys.includes(ak) && prefKeys.includes(bk)
? prefKeys.indexOf(ak) - prefKeys.indexOf(bk)
- : ak.localeCompare(bk)
+ : ak.localeCompare(bk, 'en')
const sort = (replacer, seen) => (key, val) => {
const prefKeys = Array.isArray(replacer) ? replacer : []
diff --git a/node_modules/json-stringify-nice/package.json b/node_modules/json-stringify-nice/package.json
index ea4f486c5e0b0..c9663290ee4bc 100644
--- a/node_modules/json-stringify-nice/package.json
+++ b/node_modules/json-stringify-nice/package.json
@@ -1,21 +1,34 @@
{
"name": "json-stringify-nice",
- "version": "1.1.3",
+ "version": "1.1.4",
"description": "Stringify an object sorting scalars before objects, and defaulting to 2-space indent",
"author": "Isaac Z. Schlueter (https://izs.me)",
"license": "ISC",
"scripts": {
"test": "tap",
+ "posttest": "npm run lint",
"snap": "tap",
+ "postsnap": "npm run lintfix",
+ "eslint": "eslint",
+ "lint": "npm run eslint -- index.js test/**/*.js",
+ "lintfix": "npm run lint -- --fix",
"preversion": "npm test",
"postversion": "npm publish",
"postpublish": "git push origin --follow-tags"
},
"tap": {
+ "test-env": [
+ "LC_ALL=sk"
+ ],
"check-coverage": true
},
"devDependencies": {
- "tap": "^14.9.2"
+ "eslint": "^7.25.0",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-promise": "^5.1.0",
+ "eslint-plugin-standard": "^5.0.0",
+ "tap": "^15.0.6"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
diff --git a/node_modules/libnpmexec/CHANGELOG.md b/node_modules/libnpmexec/CHANGELOG.md
deleted file mode 100644
index 28cb71028868e..0000000000000
--- a/node_modules/libnpmexec/CHANGELOG.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Changelog
-
-## v1.1.0
-
-- Add add walk up dir lookup logic to satisfy local bins,
-similar to `@npmcli/run-script`
-
-## v1.0.1
-
-- Fix `scriptShell` option name.
-
-## v1.0.0
-
-- Initial implementation, moves the code that used to live in the **npm cli**,
-ref: https://github.com/npm/cli/blob/release/v7.10.0/lib/exec.js into this
-separate module, providing a programmatic API to the **npm exec** functionality.
-
diff --git a/node_modules/libnpmexec/lib/cache-install-dir.js b/node_modules/libnpmexec/lib/cache-install-dir.js
index 1bee28989bf76..9e30d62a1e102 100644
--- a/node_modules/libnpmexec/lib/cache-install-dir.js
+++ b/node_modules/libnpmexec/lib/cache-install-dir.js
@@ -12,7 +12,7 @@ const cacheInstallDir = ({ cache, packages }) => {
const getHash = (packages) =>
crypto.createHash('sha512')
- .update(packages.sort((a, b) => a.localeCompare(b)).join('\n'))
+ .update(packages.sort((a, b) => a.localeCompare(b, 'en')).join('\n'))
.digest('hex')
.slice(0, 16)
diff --git a/node_modules/libnpmexec/lib/index.js b/node_modules/libnpmexec/lib/index.js
index 0bab753f9fda1..a48c654bf6a4f 100644
--- a/node_modules/libnpmexec/lib/index.js
+++ b/node_modules/libnpmexec/lib/index.js
@@ -143,7 +143,7 @@ const exec = async (opts) => {
},
}))
.map(mani => mani._from)
- .sort((a, b) => a.localeCompare(b))
+ .sort((a, b) => a.localeCompare(b, 'en'))
// no need to install if already present
if (add.length) {
diff --git a/node_modules/libnpmexec/package.json b/node_modules/libnpmexec/package.json
index bc5c0483a7de7..c113ac6d0a607 100644
--- a/node_modules/libnpmexec/package.json
+++ b/node_modules/libnpmexec/package.json
@@ -1,6 +1,6 @@
{
"name": "libnpmexec",
- "version": "1.1.0",
+ "version": "1.1.1",
"files": [
"lib"
],
diff --git a/node_modules/npm-packlist/bin/index.js b/node_modules/npm-packlist/bin/index.js
index f06feffd9b55a..40811db7d32e7 100755
--- a/node_modules/npm-packlist/bin/index.js
+++ b/node_modules/npm-packlist/bin/index.js
@@ -12,13 +12,14 @@ process.argv.slice(2).forEach(arg => {
dirs.push(arg)
})
-const sort = list => doSort ? list.sort((a, b) => a.localeCompare(b)) : list
+const sort = list => doSort ? list.sort((a, b) => a.localeCompare(b, 'en')) : list
const packlist = require('../')
if (!dirs.length)
console.log(sort(packlist.sync({ path: process.cwd() })).join('\n'))
-else
+else {
dirs.forEach(path => {
console.log(`> ${path}`)
console.log(sort(packlist.sync({ path })).join('\n'))
})
+}
diff --git a/node_modules/npm-packlist/index.js b/node_modules/npm-packlist/index.js
index 12b51316c5e27..f498fa008ceca 100644
--- a/node_modules/npm-packlist/index.js
+++ b/node_modules/npm-packlist/index.js
@@ -29,7 +29,7 @@ const normalizePackageBin = require('npm-normalize-package-bin')
const packageMustHaveFileNames = 'readme|copying|license|licence'
const packageMustHaves = `@(${packageMustHaveFileNames}){,.*[^~$]}`
-const packageMustHavesRE = new RegExp(`^(${packageMustHaveFileNames})(\\..*[^~\$])?$`, 'i')
+const packageMustHavesRE = new RegExp(`^(${packageMustHaveFileNames})(\\..*[^~$])?$`, 'i')
const fs = require('fs')
const glob = require('glob')
@@ -75,13 +75,11 @@ const npmWalker = Class => class Walker extends Class {
'package.json',
'.npmignore',
'.gitignore',
- packageNecessaryRules
+ packageNecessaryRules,
]
opt.includeEmpty = false
opt.path = opt.path || process.cwd()
- const dirName = path.basename(opt.path)
- const parentName = path.basename(path.dirname(opt.path))
// only follow links in the root node_modules folder, because if those
// folders are included, it's because they're bundled, and bundles
@@ -89,7 +87,7 @@ const npmWalker = Class => class Walker extends Class {
// This regexp tests to see that we're either a node_modules folder,
// or a @scope within a node_modules folder, in the root's node_modules
// hierarchy (ie, not in test/foo/node_modules/ or something).
- const followRe = /^(?:\/node_modules\/(?:@[^\/]+\/[^\/]+|[^\/]+)\/)*\/node_modules(?:\/@[^\/]+)?$/
+ const followRe = /^(?:\/node_modules\/(?:@[^/]+\/[^/]+|[^/]+)\/)*\/node_modules(?:\/@[^/]+)?$/
const rootPath = opt.parent ? opt.parent.root : opt.path
const followTestPath = opt.path.replace(/\\/g, '/').substr(rootPath.length)
opt.follow = followRe.test(followTestPath)
@@ -103,10 +101,10 @@ const npmWalker = Class => class Walker extends Class {
this.bundled = opt.bundled || []
this.bundledScopes = Array.from(new Set(
this.bundled.filter(f => /^@/.test(f))
- .map(f => f.split('/')[0])))
+ .map(f => f.split('/')[0])))
const rules = defaultRules.join('\n') + '\n'
this.packageJsonCache = opt.packageJsonCache || new Map()
- super.onReadIgnoreFile(rootBuiltinRules, rules, _=>_)
+ super.onReadIgnoreFile(rootBuiltinRules, rules, _ => _)
} else {
this.bundled = []
this.bundledScopes = []
@@ -128,9 +126,8 @@ const npmWalker = Class => class Walker extends Class {
// to be in the state the user wants to include them, and
// a package.json somewhere else might be a template or
// test or something else entirely.
- if (this.parent || !entries.includes('package.json')) {
+ if (this.parent || !entries.includes('package.json'))
return super.onReaddir(entries)
- }
// when the cache has been seeded with the root manifest,
// we must respect that (it may differ from the filesystem)
@@ -140,9 +137,8 @@ const npmWalker = Class => class Walker extends Class {
const pkg = this.packageJsonCache.get(ig)
// fall back to filesystem when seeded manifest is invalid
- if (!pkg || typeof pkg !== 'object') {
+ if (!pkg || typeof pkg !== 'object')
return this.readPackageJson(entries)
- }
// feels wonky, but this ensures package bin is _always_
// normalized, as well as guarding against invalid JSON
@@ -174,7 +170,7 @@ const npmWalker = Class => class Walker extends Class {
'/package.json',
'/npm-shrinkwrap.json',
'!/package-lock.json',
- packageMustHaves,
+ packageMustHaves
)
return files
}
@@ -232,9 +228,8 @@ const npmWalker = Class => class Walker extends Class {
return this.emit('error', er)
results[i] = { negate, fileList }
- if (--n === 0) {
+ if (--n === 0)
processResults(results)
- }
}
const processResults = results => {
for (const {negate, fileList} of results) {
@@ -272,7 +267,7 @@ const npmWalker = Class => class Walker extends Class {
filterEntry (entry, partial) {
// get the partial path from the root of the walk
const p = this.path.substr(this.root.length + 1)
- const pkgre = /^node_modules\/(@[^\/]+\/?[^\/]+|[^\/]+)(\/.*)?$/
+ const pkgre = /^node_modules\/(@[^/]+\/?[^/]+|[^/]+)(\/.*)?$/
const isRoot = !this.parent
const pkg = isRoot && pkgre.test(entry) ?
entry.replace(pkgre, '$1') : null
@@ -282,7 +277,7 @@ const npmWalker = Class => class Walker extends Class {
return (
// if we're in a bundled package, check with the parent.
/^node_modules($|\/)/i.test(p) ? this.parent.filterEntry(
- this.basename + '/' + entry, partial)
+ this.basename + '/' + entry, partial)
// if package is bundled, all files included
// also include @scope dirs for bundled scoped deps
@@ -290,8 +285,8 @@ const npmWalker = Class => class Walker extends Class {
// However, this only matters if we're in the root.
// node_modules folders elsewhere, like lib/node_modules,
// should be included normally unless ignored.
- : pkg ? -1 !== this.bundled.indexOf(pkg) ||
- -1 !== this.bundledScopes.indexOf(pkg)
+ : pkg ? this.bundled.indexOf(pkg) !== -1 ||
+ this.bundledScopes.indexOf(pkg) !== -1
// only walk top node_modules if we want to bundle something
: rootNM ? !!this.bundled.length
@@ -307,10 +302,10 @@ const npmWalker = Class => class Walker extends Class {
? true
// package-lock never included
- : isRoot && entry === 'package-lock.json' ? false
+ : isRoot && entry === 'package-lock.json' ? false
- // otherwise, follow ignore-walk's logic
- : super.filterEntry(entry, partial)
+ // otherwise, follow ignore-walk's logic
+ : super.filterEntry(entry, partial)
)
}
@@ -453,12 +448,11 @@ const sort = (a, b) => {
const basea = path.basename(a).toLowerCase()
const baseb = path.basename(b).toLowerCase()
- return exta.localeCompare(extb) ||
- basea.localeCompare(baseb) ||
- a.localeCompare(b)
+ return exta.localeCompare(extb, 'en') ||
+ basea.localeCompare(baseb, 'en') ||
+ a.localeCompare(b, 'en')
}
-
module.exports = walk
walk.sync = walkSync
walk.Walker = Walker
diff --git a/node_modules/npm-packlist/package.json b/node_modules/npm-packlist/package.json
index e909559bdb204..49fa947547b6c 100644
--- a/node_modules/npm-packlist/package.json
+++ b/node_modules/npm-packlist/package.json
@@ -1,6 +1,6 @@
{
"name": "npm-packlist",
- "version": "2.2.0",
+ "version": "2.2.2",
"description": "Get a list of the files to add from a folder into an npm package",
"directories": {
"test": "test"
@@ -19,21 +19,34 @@
"index.js"
],
"devDependencies": {
+ "eslint": "^7.25.0",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-promise": "^5.1.0",
+ "eslint-plugin-standard": "^5.0.0",
"mutate-fs": "^2.1.1",
"tap": "^15.0.6"
},
"scripts": {
"test": "tap",
+ "posttest": "npm run lint",
"snap": "tap",
+ "postsnap": "npm run lintfix",
"preversion": "npm test",
"postversion": "npm publish",
- "prepublishOnly": "git push origin --follow-tags"
+ "prepublishOnly": "git push origin --follow-tags",
+ "eslint": "eslint",
+ "lint": "npm run eslint -- index.js bin/index.js \"test/**/*.js\"",
+ "lintfix": "npm run lint -- --fix"
},
"repository": {
"type": "git",
"url": "git+https://github.com/npm/npm-packlist.git"
},
"tap": {
+ "test-env": [
+ "LC_ALL=sk"
+ ],
"check-coverage": true,
"nyc-arg": [
"--include=index.js",
diff --git a/package-lock.json b/package-lock.json
index a1664057fbddd..26d2536dcf081 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "npm",
- "version": "7.12.0",
+ "version": "7.12.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "npm",
- "version": "7.12.0",
+ "version": "7.12.1",
"bundleDependencies": [
"@npmcli/arborist",
"@npmcli/ci-detect",
@@ -78,7 +78,7 @@
],
"license": "Artistic-2.0",
"dependencies": {
- "@npmcli/arborist": "^2.4.2",
+ "@npmcli/arborist": "^2.4.4",
"@npmcli/ci-detect": "^1.2.0",
"@npmcli/config": "^2.2.0",
"@npmcli/run-script": "^1.8.5",
@@ -93,7 +93,7 @@
"cli-columns": "^3.1.2",
"cli-table3": "^0.6.0",
"columnify": "~1.5.4",
- "glob": "^7.1.4",
+ "glob": "^7.1.7",
"graceful-fs": "^4.2.6",
"hosted-git-info": "^4.0.2",
"ini": "^2.0.0",
@@ -103,7 +103,7 @@
"leven": "^3.1.0",
"libnpmaccess": "^4.0.2",
"libnpmdiff": "^2.0.4",
- "libnpmexec": "^1.1.0",
+ "libnpmexec": "^1.1.1",
"libnpmfund": "^1.0.2",
"libnpmhook": "^6.0.2",
"libnpmorg": "^2.0.2",
@@ -153,7 +153,7 @@
"devDependencies": {
"@mdx-js/mdx": "^1.6.22",
"cmark-gfm": "^0.8.5",
- "eslint": "^7.25.0",
+ "eslint": "^7.26.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.1.0",
@@ -161,7 +161,7 @@
"jsdom": "^16.5.2",
"licensee": "^8.1.0",
"marked-man": "^0.7.0",
- "tap": "^15.0.6",
+ "tap": "^15.0.9",
"yaml": "^1.10.2"
},
"engines": {
@@ -532,9 +532,9 @@
"dev": true
},
"node_modules/@eslint/eslintrc": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz",
- "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz",
+ "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
@@ -712,9 +712,9 @@
}
},
"node_modules/@npmcli/arborist": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.4.2.tgz",
- "integrity": "sha512-QrsMrRWzO1D2EmPQheyPz1yRnnmln6vPe4SujV4cRF0v9qIAQbD8M0dMH6K3y+w/2X3t7vg5lx20LHXsbcu7lw==",
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.4.4.tgz",
+ "integrity": "sha512-mqZvcPCWT6gSSYxs08aKvXmECXh9fP85q1pUIY/jDkaQ58QTRy6F7XrUQr7F77jXpYfpYKPUi6RhpuSpOXCITA==",
"inBundle": true,
"dependencies": {
"@npmcli/installed-package-contents": "^1.0.7",
@@ -728,7 +728,7 @@
"cacache": "^15.0.3",
"common-ancestor-path": "^1.0.1",
"json-parse-even-better-errors": "^2.3.1",
- "json-stringify-nice": "^1.1.2",
+ "json-stringify-nice": "^1.1.4",
"mkdirp-infer-owner": "^2.0.0",
"npm-install-checks": "^4.0.0",
"npm-package-arg": "^8.1.0",
@@ -2495,13 +2495,13 @@
}
},
"node_modules/eslint": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.25.0.tgz",
- "integrity": "sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz",
+ "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==",
"dev": true,
"dependencies": {
"@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.0",
+ "@eslint/eslintrc": "^0.4.1",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -3398,9 +3398,9 @@
"dev": true
},
"node_modules/glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"inBundle": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -3774,9 +3774,9 @@
}
},
"node_modules/ignore-walk": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
- "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
+ "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
"inBundle": true,
"dependencies": {
"minimatch": "^3.0.4"
@@ -4495,9 +4495,9 @@
"dev": true
},
"node_modules/json-stringify-nice": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.3.tgz",
- "integrity": "sha512-w8+cZZFgcPtFkZTmkA1UpRH0GXXfpeuc/cClNkQjLt9JoQd8cBFSyB8J1WWjJrthIYViHobwnh3jA4z5X2LdGA==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz",
+ "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==",
"inBundle": true,
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -4626,9 +4626,9 @@
}
},
"node_modules/libnpmexec": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/libnpmexec/-/libnpmexec-1.1.0.tgz",
- "integrity": "sha512-OWpsPWtD6CAn66JouyjBfhQ9eS1mAtXgZXXd1SoAyUP3Mol+ao9IJ2THcJQcgX96keVmZkUA11uJS5ZNEd9DwA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/libnpmexec/-/libnpmexec-1.1.1.tgz",
+ "integrity": "sha512-uw6H2dzC6F6fdq7lAxfzXPimHCJ3/g6ycFKcv2Q2QXuNZ94EDmNPpMO6f4mwiC5F6Lyy/WK0IL7AZwRhmSvUdQ==",
"inBundle": true,
"dependencies": {
"@npmcli/arborist": "^2.3.0",
@@ -5428,9 +5428,9 @@
}
},
"node_modules/npm-packlist": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.0.tgz",
- "integrity": "sha512-d3da2MEaYliq7h+PNOHqUhlQjRm0M6gNPi6yHsZYzsCj6bLqUTWCC+JMzW/u9Aaxu8i4F1AA0eJUPUSoFU5izA==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz",
+ "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==",
"inBundle": true,
"dependencies": {
"glob": "^7.1.6",
@@ -7364,9 +7364,9 @@
}
},
"node_modules/tap": {
- "version": "15.0.6",
- "resolved": "https://registry.npmjs.org/tap/-/tap-15.0.6.tgz",
- "integrity": "sha512-f3LaBSGgXkwTh17Lj4H4DxKIl4BrDZlmxWHtLVGwl8vx+XxNKvf0qMbeFLVhsVTRVz9E5yTaSUweB00YcO+TMw==",
+ "version": "15.0.9",
+ "resolved": "https://registry.npmjs.org/tap/-/tap-15.0.9.tgz",
+ "integrity": "sha512-bqY5SxEqYKRd37PIUfKBf9HMs/hklyl/fGXkuStr9rYTIGa0/icpSLsm6IVOmx2qT0/TliPNJ6OvS5kddJYHdg==",
"bundleDependencies": [
"ink",
"treport",
@@ -7398,8 +7398,8 @@
"tap-mocha-reporter": "^5.0.0",
"tap-parser": "^10.0.1",
"tap-yaml": "^1.0.0",
- "tcompare": "^5.0.4",
- "treport": "^2.0.1",
+ "tcompare": "^5.0.6",
+ "treport": "^2.0.2",
"which": "^2.0.2"
},
"bin": {
@@ -7495,26 +7495,26 @@
}
},
"node_modules/tap/node_modules/@babel/compat-data": {
- "version": "7.13.12",
+ "version": "7.14.0",
"dev": true,
"inBundle": true,
"license": "MIT"
},
"node_modules/tap/node_modules/@babel/core": {
- "version": "7.13.14",
+ "version": "7.14.0",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.9",
- "@babel/helper-compilation-targets": "^7.13.13",
- "@babel/helper-module-transforms": "^7.13.14",
- "@babel/helpers": "^7.13.10",
- "@babel/parser": "^7.13.13",
+ "@babel/generator": "^7.14.0",
+ "@babel/helper-compilation-targets": "^7.13.16",
+ "@babel/helper-module-transforms": "^7.14.0",
+ "@babel/helpers": "^7.14.0",
+ "@babel/parser": "^7.14.0",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.13",
- "@babel/types": "^7.13.14",
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -7531,12 +7531,12 @@
}
},
"node_modules/tap/node_modules/@babel/generator": {
- "version": "7.13.9",
+ "version": "7.14.1",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.13.0",
+ "@babel/types": "^7.14.1",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -7551,12 +7551,12 @@
}
},
"node_modules/tap/node_modules/@babel/helper-compilation-targets": {
- "version": "7.13.13",
+ "version": "7.13.16",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.13.12",
+ "@babel/compat-data": "^7.13.15",
"@babel/helper-validator-option": "^7.12.17",
"browserslist": "^4.14.5",
"semver": "^6.3.0"
@@ -7604,7 +7604,7 @@
}
},
"node_modules/tap/node_modules/@babel/helper-module-transforms": {
- "version": "7.13.14",
+ "version": "7.14.0",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -7613,10 +7613,10 @@
"@babel/helper-replace-supers": "^7.13.12",
"@babel/helper-simple-access": "^7.13.12",
"@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/helper-validator-identifier": "^7.12.11",
+ "@babel/helper-validator-identifier": "^7.14.0",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.13",
- "@babel/types": "^7.13.14"
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
}
},
"node_modules/tap/node_modules/@babel/helper-optimise-call-expression": {
@@ -7665,7 +7665,7 @@
}
},
"node_modules/tap/node_modules/@babel/helper-validator-identifier": {
- "version": "7.12.11",
+ "version": "7.14.0",
"dev": true,
"inBundle": true,
"license": "MIT"
@@ -7677,29 +7677,29 @@
"license": "MIT"
},
"node_modules/tap/node_modules/@babel/helpers": {
- "version": "7.13.10",
+ "version": "7.14.0",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
}
},
"node_modules/tap/node_modules/@babel/highlight": {
- "version": "7.13.10",
+ "version": "7.14.0",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.12.11",
+ "@babel/helper-validator-identifier": "^7.14.0",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"node_modules/tap/node_modules/@babel/parser": {
- "version": "7.13.13",
+ "version": "7.14.1",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -7751,7 +7751,7 @@
}
},
"node_modules/tap/node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.13.0",
+ "version": "7.13.17",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -7802,29 +7802,28 @@
}
},
"node_modules/tap/node_modules/@babel/traverse": {
- "version": "7.13.13",
+ "version": "7.14.0",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.9",
+ "@babel/generator": "^7.14.0",
"@babel/helper-function-name": "^7.12.13",
"@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.13.13",
- "@babel/types": "^7.13.13",
+ "@babel/parser": "^7.14.0",
+ "@babel/types": "^7.14.0",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"node_modules/tap/node_modules/@babel/types": {
- "version": "7.13.14",
+ "version": "7.14.1",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
+ "@babel/helper-validator-identifier": "^7.14.0",
"to-fast-properties": "^2.0.0"
}
},
@@ -7835,7 +7834,7 @@
"license": "MIT"
},
"node_modules/tap/node_modules/@types/react": {
- "version": "16.14.5",
+ "version": "16.14.6",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -7921,7 +7920,7 @@
}
},
"node_modules/tap/node_modules/balanced-match": {
- "version": "1.0.0",
+ "version": "1.0.2",
"dev": true,
"inBundle": true,
"license": "MIT"
@@ -7937,16 +7936,16 @@
}
},
"node_modules/tap/node_modules/browserslist": {
- "version": "4.16.3",
+ "version": "4.16.6",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001181",
- "colorette": "^1.2.1",
- "electron-to-chromium": "^1.3.649",
+ "caniuse-lite": "^1.0.30001219",
+ "colorette": "^1.2.2",
+ "electron-to-chromium": "^1.3.723",
"escalade": "^3.1.1",
- "node-releases": "^1.1.70"
+ "node-releases": "^1.1.71"
},
"bin": {
"browserslist": "cli.js"
@@ -7993,7 +7992,7 @@
}
},
"node_modules/tap/node_modules/caniuse-lite": {
- "version": "1.0.30001204",
+ "version": "1.0.30001223",
"dev": true,
"inBundle": true,
"license": "CC-BY-4.0"
@@ -8102,7 +8101,7 @@
}
},
"node_modules/tap/node_modules/csstype": {
- "version": "3.0.7",
+ "version": "3.0.8",
"dev": true,
"inBundle": true,
"license": "MIT"
@@ -8125,7 +8124,7 @@
}
},
"node_modules/tap/node_modules/electron-to-chromium": {
- "version": "1.3.703",
+ "version": "1.3.727",
"dev": true,
"inBundle": true,
"license": "ISC"
@@ -8219,7 +8218,7 @@
}
},
"node_modules/tap/node_modules/glob": {
- "version": "7.1.6",
+ "version": "7.1.7",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -8463,12 +8462,6 @@
"node": ">=8"
}
},
- "node_modules/tap/node_modules/lodash": {
- "version": "4.17.21",
- "dev": true,
- "inBundle": true,
- "license": "MIT"
- },
"node_modules/tap/node_modules/lodash.throttle": {
"version": "4.1.1",
"dev": true,
@@ -9091,7 +9084,7 @@
}
},
"node_modules/tap/node_modules/treport": {
- "version": "2.0.1",
+ "version": "2.0.2",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -9398,9 +9391,9 @@
}
},
"node_modules/tcompare": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.4.tgz",
- "integrity": "sha512-worXBcrmLoFu9oJYAKznjPE89APTEXk/XCazuDuSQfK1EqX3bpLPW3cY/RQucbcc7mW+yKW0duujsuFlU7dRCA==",
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.6.tgz",
+ "integrity": "sha512-OvO7omN/wkdsKzmOqr3sQFfLbghs/2X5mwSkcfgRiXZshfPnTsAs3IRf1RixR/Pff26qG/r9ogcZMpV0YdeGXg==",
"dev": true,
"dependencies": {
"diff": "^4.0.2"
@@ -10693,9 +10686,9 @@
"dev": true
},
"@eslint/eslintrc": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz",
- "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz",
+ "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
@@ -10830,9 +10823,9 @@
"dev": true
},
"@npmcli/arborist": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.4.2.tgz",
- "integrity": "sha512-QrsMrRWzO1D2EmPQheyPz1yRnnmln6vPe4SujV4cRF0v9qIAQbD8M0dMH6K3y+w/2X3t7vg5lx20LHXsbcu7lw==",
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.4.4.tgz",
+ "integrity": "sha512-mqZvcPCWT6gSSYxs08aKvXmECXh9fP85q1pUIY/jDkaQ58QTRy6F7XrUQr7F77jXpYfpYKPUi6RhpuSpOXCITA==",
"requires": {
"@npmcli/installed-package-contents": "^1.0.7",
"@npmcli/map-workspaces": "^1.0.2",
@@ -10845,7 +10838,7 @@
"cacache": "^15.0.3",
"common-ancestor-path": "^1.0.1",
"json-parse-even-better-errors": "^2.3.1",
- "json-stringify-nice": "^1.1.2",
+ "json-stringify-nice": "^1.1.4",
"mkdirp-infer-owner": "^2.0.0",
"npm-install-checks": "^4.0.0",
"npm-package-arg": "^8.1.0",
@@ -12159,13 +12152,13 @@
}
},
"eslint": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.25.0.tgz",
- "integrity": "sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz",
+ "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==",
"dev": true,
"requires": {
"@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.0",
+ "@eslint/eslintrc": "^0.4.1",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -12839,9 +12832,9 @@
"dev": true
},
"glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -13097,9 +13090,9 @@
"dev": true
},
"ignore-walk": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
- "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
+ "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
"requires": {
"minimatch": "^3.0.4"
}
@@ -13602,9 +13595,9 @@
"dev": true
},
"json-stringify-nice": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.3.tgz",
- "integrity": "sha512-w8+cZZFgcPtFkZTmkA1UpRH0GXXfpeuc/cClNkQjLt9JoQd8cBFSyB8J1WWjJrthIYViHobwnh3jA4z5X2LdGA=="
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz",
+ "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw=="
},
"json-stringify-safe": {
"version": "5.0.1",
@@ -13694,9 +13687,9 @@
}
},
"libnpmexec": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/libnpmexec/-/libnpmexec-1.1.0.tgz",
- "integrity": "sha512-OWpsPWtD6CAn66JouyjBfhQ9eS1mAtXgZXXd1SoAyUP3Mol+ao9IJ2THcJQcgX96keVmZkUA11uJS5ZNEd9DwA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/libnpmexec/-/libnpmexec-1.1.1.tgz",
+ "integrity": "sha512-uw6H2dzC6F6fdq7lAxfzXPimHCJ3/g6ycFKcv2Q2QXuNZ94EDmNPpMO6f4mwiC5F6Lyy/WK0IL7AZwRhmSvUdQ==",
"requires": {
"@npmcli/arborist": "^2.3.0",
"@npmcli/ci-detect": "^1.3.0",
@@ -14300,9 +14293,9 @@
}
},
"npm-packlist": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.0.tgz",
- "integrity": "sha512-d3da2MEaYliq7h+PNOHqUhlQjRm0M6gNPi6yHsZYzsCj6bLqUTWCC+JMzW/u9Aaxu8i4F1AA0eJUPUSoFU5izA==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz",
+ "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==",
"requires": {
"glob": "^7.1.6",
"ignore-walk": "^3.0.3",
@@ -15751,9 +15744,9 @@
}
},
"tap": {
- "version": "15.0.6",
- "resolved": "https://registry.npmjs.org/tap/-/tap-15.0.6.tgz",
- "integrity": "sha512-f3LaBSGgXkwTh17Lj4H4DxKIl4BrDZlmxWHtLVGwl8vx+XxNKvf0qMbeFLVhsVTRVz9E5yTaSUweB00YcO+TMw==",
+ "version": "15.0.9",
+ "resolved": "https://registry.npmjs.org/tap/-/tap-15.0.9.tgz",
+ "integrity": "sha512-bqY5SxEqYKRd37PIUfKBf9HMs/hklyl/fGXkuStr9rYTIGa0/icpSLsm6IVOmx2qT0/TliPNJ6OvS5kddJYHdg==",
"dev": true,
"requires": {
"@types/react": "^16.9.23",
@@ -15780,8 +15773,8 @@
"tap-mocha-reporter": "^5.0.0",
"tap-parser": "^10.0.1",
"tap-yaml": "^1.0.0",
- "tcompare": "^5.0.4",
- "treport": "^2.0.1",
+ "tcompare": "^5.0.6",
+ "treport": "^2.0.2",
"which": "^2.0.2"
},
"dependencies": {
@@ -15794,24 +15787,24 @@
}
},
"@babel/compat-data": {
- "version": "7.13.12",
+ "version": "7.14.0",
"bundled": true,
"dev": true
},
"@babel/core": {
- "version": "7.13.14",
+ "version": "7.14.0",
"bundled": true,
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.9",
- "@babel/helper-compilation-targets": "^7.13.13",
- "@babel/helper-module-transforms": "^7.13.14",
- "@babel/helpers": "^7.13.10",
- "@babel/parser": "^7.13.13",
+ "@babel/generator": "^7.14.0",
+ "@babel/helper-compilation-targets": "^7.13.16",
+ "@babel/helper-module-transforms": "^7.14.0",
+ "@babel/helpers": "^7.14.0",
+ "@babel/parser": "^7.14.0",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.13",
- "@babel/types": "^7.13.14",
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -15821,11 +15814,11 @@
}
},
"@babel/generator": {
- "version": "7.13.9",
+ "version": "7.14.1",
"bundled": true,
"dev": true,
"requires": {
- "@babel/types": "^7.13.0",
+ "@babel/types": "^7.14.1",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -15839,11 +15832,11 @@
}
},
"@babel/helper-compilation-targets": {
- "version": "7.13.13",
+ "version": "7.13.16",
"bundled": true,
"dev": true,
"requires": {
- "@babel/compat-data": "^7.13.12",
+ "@babel/compat-data": "^7.13.15",
"@babel/helper-validator-option": "^7.12.17",
"browserslist": "^4.14.5",
"semver": "^6.3.0"
@@ -15884,7 +15877,7 @@
}
},
"@babel/helper-module-transforms": {
- "version": "7.13.14",
+ "version": "7.14.0",
"bundled": true,
"dev": true,
"requires": {
@@ -15892,10 +15885,10 @@
"@babel/helper-replace-supers": "^7.13.12",
"@babel/helper-simple-access": "^7.13.12",
"@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/helper-validator-identifier": "^7.12.11",
+ "@babel/helper-validator-identifier": "^7.14.0",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.13",
- "@babel/types": "^7.13.14"
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
}
},
"@babel/helper-optimise-call-expression": {
@@ -15939,7 +15932,7 @@
}
},
"@babel/helper-validator-identifier": {
- "version": "7.12.11",
+ "version": "7.14.0",
"bundled": true,
"dev": true
},
@@ -15949,27 +15942,27 @@
"dev": true
},
"@babel/helpers": {
- "version": "7.13.10",
+ "version": "7.14.0",
"bundled": true,
"dev": true,
"requires": {
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.14.0"
}
},
"@babel/highlight": {
- "version": "7.13.10",
+ "version": "7.14.0",
"bundled": true,
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
+ "@babel/helper-validator-identifier": "^7.14.0",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
- "version": "7.13.13",
+ "version": "7.14.1",
"bundled": true,
"dev": true
},
@@ -16002,7 +15995,7 @@
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.13.0",
+ "version": "7.13.17",
"bundled": true,
"dev": true,
"requires": {
@@ -16040,27 +16033,26 @@
}
},
"@babel/traverse": {
- "version": "7.13.13",
+ "version": "7.14.0",
"bundled": true,
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.9",
+ "@babel/generator": "^7.14.0",
"@babel/helper-function-name": "^7.12.13",
"@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.13.13",
- "@babel/types": "^7.13.13",
+ "@babel/parser": "^7.14.0",
+ "@babel/types": "^7.14.0",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.13.14",
+ "version": "7.14.1",
"bundled": true,
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
+ "@babel/helper-validator-identifier": "^7.14.0",
"to-fast-properties": "^2.0.0"
}
},
@@ -16070,7 +16062,7 @@
"dev": true
},
"@types/react": {
- "version": "16.14.5",
+ "version": "16.14.6",
"bundled": true,
"dev": true,
"requires": {
@@ -16126,7 +16118,7 @@
"dev": true
},
"balanced-match": {
- "version": "1.0.0",
+ "version": "1.0.2",
"bundled": true,
"dev": true
},
@@ -16140,15 +16132,15 @@
}
},
"browserslist": {
- "version": "4.16.3",
+ "version": "4.16.6",
"bundled": true,
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001181",
- "colorette": "^1.2.1",
- "electron-to-chromium": "^1.3.649",
+ "caniuse-lite": "^1.0.30001219",
+ "colorette": "^1.2.2",
+ "electron-to-chromium": "^1.3.723",
"escalade": "^3.1.1",
- "node-releases": "^1.1.70"
+ "node-releases": "^1.1.71"
}
},
"caller-callsite": {
@@ -16173,7 +16165,7 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001204",
+ "version": "1.0.30001223",
"bundled": true,
"dev": true
},
@@ -16255,7 +16247,7 @@
}
},
"csstype": {
- "version": "3.0.7",
+ "version": "3.0.8",
"bundled": true,
"dev": true
},
@@ -16268,7 +16260,7 @@
}
},
"electron-to-chromium": {
- "version": "1.3.703",
+ "version": "1.3.727",
"bundled": true,
"dev": true
},
@@ -16327,7 +16319,7 @@
"dev": true
},
"glob": {
- "version": "7.1.6",
+ "version": "7.1.7",
"bundled": true,
"dev": true,
"requires": {
@@ -16488,11 +16480,6 @@
"p-locate": "^4.1.0"
}
},
- "lodash": {
- "version": "4.17.21",
- "bundled": true,
- "dev": true
- },
"lodash.throttle": {
"version": "4.1.1",
"bundled": true,
@@ -16909,7 +16896,7 @@
"dev": true
},
"treport": {
- "version": "2.0.1",
+ "version": "2.0.2",
"bundled": true,
"dev": true,
"requires": {
@@ -17180,9 +17167,9 @@
}
},
"tcompare": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.4.tgz",
- "integrity": "sha512-worXBcrmLoFu9oJYAKznjPE89APTEXk/XCazuDuSQfK1EqX3bpLPW3cY/RQucbcc7mW+yKW0duujsuFlU7dRCA==",
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.6.tgz",
+ "integrity": "sha512-OvO7omN/wkdsKzmOqr3sQFfLbghs/2X5mwSkcfgRiXZshfPnTsAs3IRf1RixR/Pff26qG/r9ogcZMpV0YdeGXg==",
"dev": true,
"requires": {
"diff": "^4.0.2"
diff --git a/package.json b/package.json
index 7360d8f9640d8..70f94838882b7 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "version": "7.12.0",
+ "version": "7.12.1",
"name": "npm",
"description": "a package manager for JavaScript",
"keywords": [
@@ -42,7 +42,7 @@
"./package.json": "./package.json"
},
"dependencies": {
- "@npmcli/arborist": "^2.4.2",
+ "@npmcli/arborist": "^2.4.4",
"@npmcli/ci-detect": "^1.2.0",
"@npmcli/config": "^2.2.0",
"@npmcli/run-script": "^1.8.5",
@@ -57,7 +57,7 @@
"cli-columns": "^3.1.2",
"cli-table3": "^0.6.0",
"columnify": "~1.5.4",
- "glob": "^7.1.4",
+ "glob": "^7.1.7",
"graceful-fs": "^4.2.6",
"hosted-git-info": "^4.0.2",
"ini": "^2.0.0",
@@ -67,7 +67,7 @@
"leven": "^3.1.0",
"libnpmaccess": "^4.0.2",
"libnpmdiff": "^2.0.4",
- "libnpmexec": "^1.1.0",
+ "libnpmexec": "^1.1.1",
"libnpmfund": "^1.0.2",
"libnpmhook": "^6.0.2",
"libnpmorg": "^2.0.2",
@@ -182,7 +182,7 @@
"devDependencies": {
"@mdx-js/mdx": "^1.6.22",
"cmark-gfm": "^0.8.5",
- "eslint": "^7.25.0",
+ "eslint": "^7.26.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.1.0",
@@ -190,7 +190,7 @@
"jsdom": "^16.5.2",
"licensee": "^8.1.0",
"marked-man": "^0.7.0",
- "tap": "^15.0.6",
+ "tap": "^15.0.9",
"yaml": "^1.10.2"
},
"scripts": {
@@ -216,6 +216,9 @@
"Remove the 'files' below once we're done porting old tests over"
],
"tap": {
+ "test-env": [
+ "LC_ALL=sk"
+ ],
"color": 1,
"files": "test/{lib,bin}",
"coverage-map": "test/coverage-map.js",
diff --git a/scripts/bundle-and-gitignore-deps.js b/scripts/bundle-and-gitignore-deps.js
index 0aedec7811ec6..691deb91661ea 100644
--- a/scripts/bundle-and-gitignore-deps.js
+++ b/scripts/bundle-and-gitignore-deps.js
@@ -18,9 +18,9 @@ arb.loadVirtual().then(tree => {
bundle.push(node.name)
}
}
- pkg.bundleDependencies = bundle.sort((a, b) => a.localeCompare(b))
+ pkg.bundleDependencies = bundle.sort((a, b) => a.localeCompare(b, 'en'))
- const ignores = shouldIgnore.sort((a, b) => a.localeCompare(b))
+ const ignores = shouldIgnore.sort((a, b) => a.localeCompare(b, 'en'))
.map(i => `/${i}`)
.join('\n')
const ignoreData = `# Automatically generated to ignore dev deps
diff --git a/scripts/config-doc.js b/scripts/config-doc.js
index 9bb4628898028..8d829490608be 100644
--- a/scripts/config-doc.js
+++ b/scripts/config-doc.js
@@ -35,8 +35,8 @@ const addShorthands = doc => {
const body = Object.entries(shorthands)
.sort(([shorta, expansiona], [shortb, expansionb]) => {
// sort by what they're short FOR
- return expansiona.join(' ').localeCompare(expansionb.join(' ')) ||
- shorta.localeCompare(shortb)
+ return expansiona.join(' ').localeCompare(expansionb.join(' '), 'en') ||
+ shorta.localeCompare(shortb, 'en')
})
.map(([short, expansion]) => {
const dash = short.length === 1 ? '-' : '--'
diff --git a/tap-snapshots/test/lib/config.js.test.cjs b/tap-snapshots/test/lib/config.js.test.cjs
index d62969145d1d9..84418ec2e816d 100644
--- a/tap-snapshots/test/lib/config.js.test.cjs
+++ b/tap-snapshots/test/lib/config.js.test.cjs
@@ -88,6 +88,9 @@ exports[`test/lib/config.js TAP config edit > should write config file 2`] = `
exports[`test/lib/config.js TAP config get no args > should list configs on config get no args 1`] = `
; "cli" config from command line options
+cat = true
+chai = true
+dog = true
editor = "vi"
global = false
json = false
@@ -109,6 +112,9 @@ init.version = "1.0.0"
; "cli" config from command line options
+cat = true
+chai = true
+dog = true
editor = "vi"
global = false
json = false
@@ -118,6 +124,9 @@ long = true
exports[`test/lib/config.js TAP config list > should list configs 1`] = `
; "cli" config from command line options
+cat = true
+chai = true
+dog = true
editor = "vi"
global = false
json = false
@@ -132,6 +141,9 @@ long = false
exports[`test/lib/config.js TAP config list overrides > should list overridden configs 1`] = `
; "cli" config from command line options
+cat = true
+chai = true
+dog = true
editor = "vi"
global = false
init.author.name = "Bar"
diff --git a/tap-snapshots/test/lib/ls.js.test.cjs b/tap-snapshots/test/lib/ls.js.test.cjs
index 3e4137aa82e51..04f0be31f5803 100644
--- a/tap-snapshots/test/lib/ls.js.test.cjs
+++ b/tap-snapshots/test/lib/ls.js.test.cjs
@@ -47,8 +47,8 @@ test-npm-ls-ignore-missing-optional@1.2.3 {project}
exports[`test/lib/ls.js TAP ls --depth=0 > should output tree containing only top-level dependencies 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls---depth-0
-+-- foo@1.0.0
-\`-- lorem@1.0.0
++-- chai@1.0.0
+\`-- foo@1.0.0
`
@@ -64,7 +64,7 @@ exports[`test/lib/ls.js TAP ls --dev > should output tree containing dev deps 1`
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls---dev
\`-- dev-dep@1.0.0
\`-- foo@1.0.0
- \`-- bar@1.0.0
+ \`-- dog@1.0.0
`
@@ -78,10 +78,10 @@ exports[`test/lib/ls.js TAP ls --long --depth=0 > should output tree containing
test-npm-ls@1.0.0
| {CWD}/tap-testdir-ls-ls---long---depth-0
|
++-- chai@1.0.0
+|
+-- dev-dep@1.0.0
| A DEV dep kind of dep
-+-- lorem@1.0.0
-|
+-- optional-dep@1.0.0
| Maybe a dep?
+-- peer-dep@1.0.0
@@ -95,21 +95,21 @@ exports[`test/lib/ls.js TAP ls --long > should output tree info with description
test-npm-ls@1.0.0
| {CWD}/tap-testdir-ls-ls---long
|
++-- chai@1.0.0
+|
+-- dev-dep@1.0.0
| | A DEV dep kind of dep
| \`-- foo@1.0.0
| |
-| \`-- bar@1.0.0
+| \`-- dog@1.0.0
|
-+-- lorem@1.0.0
-|
+-- optional-dep@1.0.0
| Maybe a dep?
+-- peer-dep@1.0.0
| Peer-dep description here
\`-- prod-dep@1.0.0
| A PROD dep kind of dep
- \`-- bar@2.0.0
+ \`-- dog@2.0.0
A dep that bars
`
@@ -118,37 +118,37 @@ exports[`test/lib/ls.js TAP ls --only=development > should output tree containin
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls---only-development
\`-- dev-dep@1.0.0
\`-- foo@1.0.0
- \`-- bar@1.0.0
+ \`-- dog@1.0.0
`
exports[`test/lib/ls.js TAP ls --only=prod > should output tree containing only prod deps 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls---only-prod
-+-- lorem@1.0.0
++-- chai@1.0.0
+-- optional-dep@1.0.0
\`-- prod-dep@1.0.0
- \`-- bar@2.0.0
+ \`-- dog@2.0.0
`
exports[`test/lib/ls.js TAP ls --parseable --depth=0 > should output tree containing only top-level dependencies 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---depth-0
+{CWD}/tap-testdir-ls-ls---parseable---depth-0/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable---depth-0/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable---depth-0/node_modules/lorem
`
exports[`test/lib/ls.js TAP ls --parseable --depth=1 > should output parseable containing top-level deps and their deps only 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---depth-1
+{CWD}/tap-testdir-ls-ls---parseable---depth-1/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable---depth-1/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable---depth-1/node_modules/lorem
-{CWD}/tap-testdir-ls-ls---parseable---depth-1/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable---depth-1/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable --dev > should output tree containing dev deps 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---dev
{CWD}/tap-testdir-ls-ls---parseable---dev/node_modules/dev-dep
{CWD}/tap-testdir-ls-ls---parseable---dev/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable---dev/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable---dev/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable --link > should output tree containing linked deps 1`] = `
@@ -158,8 +158,8 @@ exports[`test/lib/ls.js TAP ls --parseable --link > should output tree containin
exports[`test/lib/ls.js TAP ls --parseable --long --depth=0 > should output tree containing top-level deps with descriptions 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---long---depth-0:test-npm-ls@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long---depth-0/node_modules/chai:chai@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long---depth-0/node_modules/dev-dep:dev-dep@1.0.0
-{CWD}/tap-testdir-ls-ls---parseable---long---depth-0/node_modules/lorem:lorem@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long---depth-0/node_modules/optional-dep:optional-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long---depth-0/node_modules/peer-dep:peer-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long---depth-0/node_modules/prod-dep:prod-dep@1.0.0
@@ -167,64 +167,64 @@ exports[`test/lib/ls.js TAP ls --parseable --long --depth=0 > should output tree
exports[`test/lib/ls.js TAP ls --parseable --long > should output tree info with descriptions 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---long:test-npm-ls@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/chai:chai@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/dev-dep:dev-dep@1.0.0
-{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/lorem:lorem@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/optional-dep:optional-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/peer-dep:peer-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/prod-dep:prod-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/foo:foo@1.0.0
-{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/prod-dep/node_modules/bar:bar@2.0.0
-{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/bar:bar@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/prod-dep/node_modules/dog:dog@2.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long/node_modules/dog:dog@1.0.0
`
exports[`test/lib/ls.js TAP ls --parseable --long missing/invalid/extraneous > should output parseable result containing EXTRANEOUS/INVALID labels 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---long-missing-invalid-extraneous:test-npm-ls@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long-missing-invalid-extraneous/node_modules/chai:chai@1.0.0:EXTRANEOUS
{CWD}/tap-testdir-ls-ls---parseable---long-missing-invalid-extraneous/node_modules/foo:foo@1.0.0:INVALID
-{CWD}/tap-testdir-ls-ls---parseable---long-missing-invalid-extraneous/node_modules/lorem:lorem@1.0.0:EXTRANEOUS
-{CWD}/tap-testdir-ls-ls---parseable---long-missing-invalid-extraneous/node_modules/bar:bar@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long-missing-invalid-extraneous/node_modules/dog:dog@1.0.0
`
exports[`test/lib/ls.js TAP ls --parseable --long print symlink target location > should output parseable results with symlink targets 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location:test-npm-ls@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/chai:chai@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/dev-dep:dev-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/linked-dep:linked-dep@1.0.0:{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/linked-dep
-{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/lorem:lorem@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/optional-dep:optional-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/peer-dep:peer-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/prod-dep:prod-dep@1.0.0
{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/foo:foo@1.0.0
-{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/prod-dep/node_modules/bar:bar@2.0.0
-{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/bar:bar@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/prod-dep/node_modules/dog:dog@2.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long-print-symlink-target-location/node_modules/dog:dog@1.0.0
`
exports[`test/lib/ls.js TAP ls --parseable --long with extraneous deps > should output long parseable output with extraneous info 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---long-with-extraneous-deps:test-npm-ls@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long-with-extraneous-deps/node_modules/chai:chai@1.0.0:EXTRANEOUS
{CWD}/tap-testdir-ls-ls---parseable---long-with-extraneous-deps/node_modules/foo:foo@1.0.0
-{CWD}/tap-testdir-ls-ls---parseable---long-with-extraneous-deps/node_modules/lorem:lorem@1.0.0:EXTRANEOUS
-{CWD}/tap-testdir-ls-ls---parseable---long-with-extraneous-deps/node_modules/bar:bar@1.0.0
+{CWD}/tap-testdir-ls-ls---parseable---long-with-extraneous-deps/node_modules/dog:dog@1.0.0
`
exports[`test/lib/ls.js TAP ls --parseable --only=development > should output tree containing only development deps 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---only-development
{CWD}/tap-testdir-ls-ls---parseable---only-development/node_modules/dev-dep
{CWD}/tap-testdir-ls-ls---parseable---only-development/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable---only-development/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable---only-development/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable --only=prod > should output tree containing only prod deps 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---only-prod
-{CWD}/tap-testdir-ls-ls---parseable---only-prod/node_modules/lorem
+{CWD}/tap-testdir-ls-ls---parseable---only-prod/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable---only-prod/node_modules/optional-dep
{CWD}/tap-testdir-ls-ls---parseable---only-prod/node_modules/prod-dep
-{CWD}/tap-testdir-ls-ls---parseable---only-prod/node_modules/prod-dep/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable---only-prod/node_modules/prod-dep/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable --production > should output tree containing production deps 1`] = `
{CWD}/tap-testdir-ls-ls---parseable---production
-{CWD}/tap-testdir-ls-ls---parseable---production/node_modules/lorem
+{CWD}/tap-testdir-ls-ls---parseable---production/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable---production/node_modules/optional-dep
{CWD}/tap-testdir-ls-ls---parseable---production/node_modules/prod-dep
-{CWD}/tap-testdir-ls-ls---parseable---production/node_modules/prod-dep/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable---production/node_modules/prod-dep/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable cycle deps > should print tree output omitting deduped ref 1`] = `
@@ -235,8 +235,8 @@ exports[`test/lib/ls.js TAP ls --parseable cycle deps > should print tree output
exports[`test/lib/ls.js TAP ls --parseable default --depth value should be 0 > should output parseable output containing only top-level dependencies 1`] = `
{CWD}/tap-testdir-ls-ls---parseable-default---depth-value-should-be-0
+{CWD}/tap-testdir-ls-ls---parseable-default---depth-value-should-be-0/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable-default---depth-value-should-be-0/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable-default---depth-value-should-be-0/node_modules/lorem
`
exports[`test/lib/ls.js TAP ls --parseable empty location > should print empty result 1`] = `
@@ -245,9 +245,9 @@ exports[`test/lib/ls.js TAP ls --parseable empty location > should print empty r
exports[`test/lib/ls.js TAP ls --parseable extraneous deps > should output containing problems info 1`] = `
{CWD}/tap-testdir-ls-ls---parseable-extraneous-deps
+{CWD}/tap-testdir-ls-ls---parseable-extraneous-deps/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable-extraneous-deps/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable-extraneous-deps/node_modules/lorem
-{CWD}/tap-testdir-ls-ls---parseable-extraneous-deps/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable-extraneous-deps/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable from and resolved properties > should not be printed in tree output 1`] = `
@@ -268,23 +268,23 @@ exports[`test/lib/ls.js TAP ls --parseable json read problems > should print emp
exports[`test/lib/ls.js TAP ls --parseable missing package.json > should output parseable missing name/version of top-level package 1`] = `
{CWD}/tap-testdir-ls-ls---parseable-missing-package.json
-{CWD}/tap-testdir-ls-ls---parseable-missing-package.json/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable-missing-package.json/node_modules/chai
+{CWD}/tap-testdir-ls-ls---parseable-missing-package.json/node_modules/dog
{CWD}/tap-testdir-ls-ls---parseable-missing-package.json/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable-missing-package.json/node_modules/lorem
`
exports[`test/lib/ls.js TAP ls --parseable missing/invalid/extraneous > should output parseable containing top-level deps and their deps only 1`] = `
{CWD}/tap-testdir-ls-ls---parseable-missing-invalid-extraneous
+{CWD}/tap-testdir-ls-ls---parseable-missing-invalid-extraneous/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable-missing-invalid-extraneous/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable-missing-invalid-extraneous/node_modules/lorem
-{CWD}/tap-testdir-ls-ls---parseable-missing-invalid-extraneous/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable-missing-invalid-extraneous/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable no args > should output parseable representation of dependencies structure 1`] = `
{CWD}/tap-testdir-ls-ls---parseable-no-args
+{CWD}/tap-testdir-ls-ls---parseable-no-args/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable-no-args/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable-no-args/node_modules/lorem
-{CWD}/tap-testdir-ls-ls---parseable-no-args/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable-no-args/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable resolved points to git ref > should output tree containing git refs 1`] = `
@@ -294,26 +294,26 @@ exports[`test/lib/ls.js TAP ls --parseable resolved points to git ref > should o
exports[`test/lib/ls.js TAP ls --parseable unmet optional dep > should output parseable with empty entry for missing optional deps 1`] = `
{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep
+{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/dev-dep
-{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/lorem
{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/optional-dep
{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/peer-dep
{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/prod-dep
{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/prod-dep/node_modules/bar
-{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/prod-dep/node_modules/dog
+{CWD}/tap-testdir-ls-ls---parseable-unmet-optional-dep/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable unmet peer dep > should output parseable signaling missing peer dep in problems 1`] = `
{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep
+{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/chai
{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/dev-dep
-{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/lorem
{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/optional-dep
{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/peer-dep
{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/prod-dep
{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/foo
-{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/prod-dep/node_modules/bar
-{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/prod-dep/node_modules/dog
+{CWD}/tap-testdir-ls-ls---parseable-unmet-peer-dep/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable using aliases > should output tree containing aliases 1`] = `
@@ -322,11 +322,11 @@ exports[`test/lib/ls.js TAP ls --parseable using aliases > should output tree co
`
exports[`test/lib/ls.js TAP ls --parseable with filter arg > should output parseable contaning only occurrences of filtered by package 1`] = `
-{CWD}/tap-testdir-ls-ls---parseable-with-filter-arg/node_modules/lorem
+{CWD}/tap-testdir-ls-ls---parseable-with-filter-arg/node_modules/chai
`
exports[`test/lib/ls.js TAP ls --parseable with filter arg nested dep > should output parseable contaning only occurrences of filtered package 1`] = `
-{CWD}/tap-testdir-ls-ls---parseable-with-filter-arg-nested-dep/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable-with-filter-arg-nested-dep/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --parseable with missing filter arg > should output parseable output containing no dependencies info 1`] = `
@@ -334,16 +334,16 @@ exports[`test/lib/ls.js TAP ls --parseable with missing filter arg > should outp
`
exports[`test/lib/ls.js TAP ls --parseable with multiple filter args > should output parseable contaning only occurrences of multiple filtered packages and their ancestors 1`] = `
-{CWD}/tap-testdir-ls-ls---parseable-with-multiple-filter-args/node_modules/lorem
-{CWD}/tap-testdir-ls-ls---parseable-with-multiple-filter-args/node_modules/bar
+{CWD}/tap-testdir-ls-ls---parseable-with-multiple-filter-args/node_modules/chai
+{CWD}/tap-testdir-ls-ls---parseable-with-multiple-filter-args/node_modules/dog
`
exports[`test/lib/ls.js TAP ls --production > should output tree containing production deps 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls---production
-+-- lorem@1.0.0
++-- chai@1.0.0
+-- optional-dep@1.0.0
\`-- prod-dep@1.0.0
- \`-- bar@2.0.0
+ \`-- dog@2.0.0
`
@@ -355,10 +355,10 @@ npm-broken-resolved-field-test@1.0.0 {CWD}/tap-testdir-ls-ls-broken-resolved-fie
exports[`test/lib/ls.js TAP ls colored output > should output tree containing color info 1`] = `
[0mtest-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-colored-output[0m
+[0m+-- chai@1.0.0 [32m[40mextraneous[49m[39m[0m
[0m+-- foo@1.0.0 [31m[40minvalid[49m[39m[0m
-[0m| \`-- bar@1.0.0[0m
-[0m+-- [31m[40mUNMET DEPENDENCY[49m[39m ipsum@^1.0.0[0m
-[0m\`-- lorem@1.0.0 [32m[40mextraneous[49m[39m[0m
+[0m| \`-- dog@1.0.0[0m
+[0m\`-- [31m[40mUNMET DEPENDENCY[49m[39m ipsum@^1.0.0[0m
[0m[0m
`
@@ -388,8 +388,8 @@ test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-deduped-missing-dep
exports[`test/lib/ls.js TAP ls default --depth value should be 0 > should output tree containing only top-level dependencies 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-default---depth-value-should-be-0
-+-- foo@1.0.0
-\`-- lorem@1.0.0
++-- chai@1.0.0
+\`-- foo@1.0.0
`
@@ -401,9 +401,9 @@ exports[`test/lib/ls.js TAP ls empty location > should print empty result 1`] =
exports[`test/lib/ls.js TAP ls extraneous deps > should output containing problems info 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-extraneous-deps
-+-- foo@1.0.0
-| \`-- bar@1.0.0
-\`-- lorem@1.0.0 extraneous
++-- chai@1.0.0 extraneous
+\`-- foo@1.0.0
+ \`-- dog@1.0.0
`
@@ -461,14 +461,14 @@ exports[`test/lib/ls.js TAP ls invalid deduped dep > should output tree signalin
exports[`test/lib/ls.js TAP ls invalid peer dep > should output tree signaling mismatching peer dep in problems 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-invalid-peer-dep
++-- chai@1.0.0
+-- dev-dep@1.0.0
| \`-- foo@1.0.0
-| \`-- bar@1.0.0
-+-- lorem@1.0.0
+| \`-- dog@1.0.0
+-- optional-dep@1.0.0
+-- peer-dep@1.0.0 invalid
\`-- prod-dep@1.0.0
- \`-- bar@2.0.0
+ \`-- dog@2.0.0
`
@@ -494,27 +494,27 @@ filter-by-child-of-missing-dep@1.0.0 {CWD}/tap-testdir-ls-ls-loading-a-tree-cont
exports[`test/lib/ls.js TAP ls missing package.json > should output tree missing name/version of top-level package 1`] = `
{CWD}/tap-testdir-ls-ls-missing-package.json
-+-- bar@1.0.0 extraneous
-+-- foo@1.0.0 extraneous
-| \`-- bar@1.0.0 deduped
-\`-- lorem@1.0.0 extraneous
++-- chai@1.0.0 extraneous
++-- dog@1.0.0 extraneous
+\`-- foo@1.0.0 extraneous
+ \`-- dog@1.0.0 deduped
`
exports[`test/lib/ls.js TAP ls missing/invalid/extraneous > should output tree containing missing, invalid, extraneous labels 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-missing-invalid-extraneous
++-- chai@1.0.0 extraneous
+-- foo@1.0.0 invalid
-| \`-- bar@1.0.0
-+-- UNMET DEPENDENCY ipsum@^1.0.0
-\`-- lorem@1.0.0 extraneous
+| \`-- dog@1.0.0
+\`-- UNMET DEPENDENCY ipsum@^1.0.0
`
exports[`test/lib/ls.js TAP ls no args > should output tree representation of dependencies structure 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-no-args
-+-- foo@1.0.0
-| \`-- bar@1.0.0
-\`-- lorem@1.0.0
++-- chai@1.0.0
+\`-- foo@1.0.0
+ \`-- dog@1.0.0
`
@@ -534,15 +534,15 @@ test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-resolved-points-to-git-ref
exports[`test/lib/ls.js TAP ls unmet optional dep > should output tree with empty entry for missing optional deps 1`] = `
[0mtest-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-unmet-optional-dep[0m
+[0m+-- chai@1.0.0[0m
[0m+-- dev-dep@1.0.0[0m
[0m| \`-- foo@1.0.0[0m
-[0m| \`-- bar@1.0.0[0m
-[0m+-- lorem@1.0.0[0m
+[0m| \`-- dog@1.0.0[0m
[0m+-- [33m[40mUNMET OPTIONAL DEPENDENCY[49m[39m missing-optional-dep@^1.0.0[0m
[0m+-- optional-dep@1.0.0 [31m[40minvalid[49m[39m[0m
[0m+-- peer-dep@1.0.0[0m
[0m\`-- prod-dep@1.0.0[0m
-[0m \`-- bar@2.0.0[0m
+[0m \`-- dog@2.0.0[0m
[0m[0m
`
@@ -586,14 +586,14 @@ test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-with-dot-filter-arg
exports[`test/lib/ls.js TAP ls with filter arg > should output tree contaning only occurrences of filtered by package and colored output 1`] = `
[0mtest-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-with-filter-arg[0m
-[0m\`-- [33m[40mlorem@1.0.0[49m[39m[0m
+[0m\`-- [33m[40mchai@1.0.0[49m[39m[0m
[0m[0m
`
exports[`test/lib/ls.js TAP ls with filter arg nested dep > should output tree contaning only occurrences of filtered package and its ancestors 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-with-filter-arg-nested-dep
\`-- foo@1.0.0
- \`-- bar@1.0.0
+ \`-- dog@1.0.0
`
@@ -605,9 +605,9 @@ test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-with-missing-filter-arg
exports[`test/lib/ls.js TAP ls with multiple filter args > should output tree contaning only occurrences of multiple filtered packages and their ancestors 1`] = `
test-npm-ls@1.0.0 {CWD}/tap-testdir-ls-ls-with-multiple-filter-args
-+-- foo@1.0.0
-| \`-- bar@1.0.0
-\`-- lorem@1.0.0
++-- chai@1.0.0
+\`-- foo@1.0.0
+ \`-- dog@1.0.0
`
diff --git a/tap-snapshots/test/lib/outdated.js.test.cjs b/tap-snapshots/test/lib/outdated.js.test.cjs
index e57d7110b2275..fdb25e90eb8c3 100644
--- a/tap-snapshots/test/lib/outdated.js.test.cjs
+++ b/tap-snapshots/test/lib/outdated.js.test.cjs
@@ -7,38 +7,38 @@
'use strict'
exports[`test/lib/outdated.js TAP should display outdated deps outdated --all > must match snapshot 1`] = `
-Package Current Wanted Latest Location Depended by
-alpha 1.0.0 1.0.1 1.0.1 node_modules/alpha tap-testdir-outdated-should-display-outdated-deps
-beta 1.0.0 1.0.1 1.0.1 node_modules/beta tap-testdir-outdated-should-display-outdated-deps
-gamma 1.0.1 1.0.1 2.0.0 node_modules/gamma tap-testdir-outdated-should-display-outdated-deps
-theta MISSING 1.0.1 1.0.1 - tap-testdir-outdated-should-display-outdated-deps
+Package Current Wanted Latest Location Depended by
+cat 1.0.0 1.0.1 1.0.1 node_modules/cat tap-testdir-outdated-should-display-outdated-deps
+chai 1.0.0 1.0.1 1.0.1 node_modules/chai tap-testdir-outdated-should-display-outdated-deps
+dog 1.0.1 1.0.1 2.0.0 node_modules/dog tap-testdir-outdated-should-display-outdated-deps
+theta MISSING 1.0.1 1.0.1 - tap-testdir-outdated-should-display-outdated-deps
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated --json --long > must match snapshot 1`] = `
{
- "alpha": {
+ "cat": {
"current": "1.0.0",
"wanted": "1.0.1",
"latest": "1.0.1",
"dependent": "tap-testdir-outdated-should-display-outdated-deps",
- "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/alpha",
+ "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/cat",
"type": "dependencies"
},
- "beta": {
+ "chai": {
"current": "1.0.0",
"wanted": "1.0.1",
"latest": "1.0.1",
"dependent": "tap-testdir-outdated-should-display-outdated-deps",
- "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/beta",
+ "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/chai",
"type": "peerDependencies"
},
- "gamma": {
+ "dog": {
"current": "1.0.1",
"wanted": "1.0.1",
"latest": "2.0.0",
"dependent": "tap-testdir-outdated-should-display-outdated-deps",
- "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/gamma",
+ "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/dog",
"type": "dependencies"
},
"theta": {
@@ -53,26 +53,26 @@ exports[`test/lib/outdated.js TAP should display outdated deps outdated --json -
exports[`test/lib/outdated.js TAP should display outdated deps outdated --json > must match snapshot 1`] = `
{
- "alpha": {
+ "cat": {
"current": "1.0.0",
"wanted": "1.0.1",
"latest": "1.0.1",
"dependent": "tap-testdir-outdated-should-display-outdated-deps",
- "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/alpha"
+ "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/cat"
},
- "beta": {
+ "chai": {
"current": "1.0.0",
"wanted": "1.0.1",
"latest": "1.0.1",
"dependent": "tap-testdir-outdated-should-display-outdated-deps",
- "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/beta"
+ "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/chai"
},
- "gamma": {
+ "dog": {
"current": "1.0.1",
"wanted": "1.0.1",
"latest": "2.0.0",
"dependent": "tap-testdir-outdated-should-display-outdated-deps",
- "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/gamma"
+ "location": "{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/dog"
},
"theta": {
"wanted": "1.0.1",
@@ -84,71 +84,71 @@ exports[`test/lib/outdated.js TAP should display outdated deps outdated --json >
exports[`test/lib/outdated.js TAP should display outdated deps outdated --long > must match snapshot 1`] = `
-Package Current Wanted Latest Location Depended by Package Type Homepage
-alpha 1.0.0 1.0.1 1.0.1 node_modules/alpha tap-testdir-outdated-should-display-outdated-deps dependencies
-beta 1.0.0 1.0.1 1.0.1 node_modules/beta tap-testdir-outdated-should-display-outdated-deps peerDependencies
-gamma 1.0.1 1.0.1 2.0.0 node_modules/gamma tap-testdir-outdated-should-display-outdated-deps dependencies
-theta MISSING 1.0.1 1.0.1 - tap-testdir-outdated-should-display-outdated-deps dependencies
+Package Current Wanted Latest Location Depended by Package Type Homepage
+cat 1.0.0 1.0.1 1.0.1 node_modules/cat tap-testdir-outdated-should-display-outdated-deps dependencies
+chai 1.0.0 1.0.1 1.0.1 node_modules/chai tap-testdir-outdated-should-display-outdated-deps peerDependencies
+dog 1.0.1 1.0.1 2.0.0 node_modules/dog tap-testdir-outdated-should-display-outdated-deps dependencies
+theta MISSING 1.0.1 1.0.1 - tap-testdir-outdated-should-display-outdated-deps dependencies
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated --omit=dev --omit=peer > must match snapshot 1`] = `
-[4mPackage[24m [4mCurrent[24m [4mWanted[24m [4mLatest[24m [4mLocation[24m [4mDepended by[24m
-[31malpha[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/alpha tap-testdir-outdated-should-display-outdated-deps
-[33mgamma[39m 1.0.1 [32m1.0.1[39m [35m2.0.0[39m node_modules/gamma tap-testdir-outdated-should-display-outdated-deps
-[31mtheta[39m MISSING [32m1.0.1[39m [35m1.0.1[39m - tap-testdir-outdated-should-display-outdated-deps
+[4mPackage[24m [4mCurrent[24m [4mWanted[24m [4mLatest[24m [4mLocation[24m [4mDepended by[24m
+[31mcat[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/cat tap-testdir-outdated-should-display-outdated-deps
+[33mdog[39m 1.0.1 [32m1.0.1[39m [35m2.0.0[39m node_modules/dog tap-testdir-outdated-should-display-outdated-deps
+[31mtheta[39m MISSING [32m1.0.1[39m [35m1.0.1[39m - tap-testdir-outdated-should-display-outdated-deps
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated --omit=dev > must match snapshot 1`] = `
-[4mPackage[24m [4mCurrent[24m [4mWanted[24m [4mLatest[24m [4mLocation[24m [4mDepended by[24m
-[31malpha[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/alpha tap-testdir-outdated-should-display-outdated-deps
-[31mbeta[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/beta tap-testdir-outdated-should-display-outdated-deps
-[33mgamma[39m 1.0.1 [32m1.0.1[39m [35m2.0.0[39m node_modules/gamma tap-testdir-outdated-should-display-outdated-deps
-[31mtheta[39m MISSING [32m1.0.1[39m [35m1.0.1[39m - tap-testdir-outdated-should-display-outdated-deps
+[4mPackage[24m [4mCurrent[24m [4mWanted[24m [4mLatest[24m [4mLocation[24m [4mDepended by[24m
+[31mcat[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/cat tap-testdir-outdated-should-display-outdated-deps
+[31mchai[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/chai tap-testdir-outdated-should-display-outdated-deps
+[33mdog[39m 1.0.1 [32m1.0.1[39m [35m2.0.0[39m node_modules/dog tap-testdir-outdated-should-display-outdated-deps
+[31mtheta[39m MISSING [32m1.0.1[39m [35m1.0.1[39m - tap-testdir-outdated-should-display-outdated-deps
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated --omit=prod > must match snapshot 1`] = `
-[4mPackage[24m [4mCurrent[24m [4mWanted[24m [4mLatest[24m [4mLocation[24m [4mDepended by[24m
-[31malpha[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/alpha tap-testdir-outdated-should-display-outdated-deps
-[31mbeta[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/beta tap-testdir-outdated-should-display-outdated-deps
-[33mgamma[39m 1.0.1 [32m1.0.1[39m [35m2.0.0[39m node_modules/gamma tap-testdir-outdated-should-display-outdated-deps
+[4mPackage[24m [4mCurrent[24m [4mWanted[24m [4mLatest[24m [4mLocation[24m [4mDepended by[24m
+[31mcat[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/cat tap-testdir-outdated-should-display-outdated-deps
+[31mchai[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/chai tap-testdir-outdated-should-display-outdated-deps
+[33mdog[39m 1.0.1 [32m1.0.1[39m [35m2.0.0[39m node_modules/dog tap-testdir-outdated-should-display-outdated-deps
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated --parseable --long > must match snapshot 1`] = `
-{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/alpha:alpha@1.0.1:alpha@1.0.0:alpha@1.0.1:tap-testdir-outdated-should-display-outdated-deps:dependencies:
-{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/beta:beta@1.0.1:beta@1.0.0:beta@1.0.1:tap-testdir-outdated-should-display-outdated-deps:peerDependencies:
-{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/gamma:gamma@1.0.1:gamma@1.0.1:gamma@2.0.0:tap-testdir-outdated-should-display-outdated-deps:dependencies:
+{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/cat:cat@1.0.1:cat@1.0.0:cat@1.0.1:tap-testdir-outdated-should-display-outdated-deps:dependencies:
+{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/chai:chai@1.0.1:chai@1.0.0:chai@1.0.1:tap-testdir-outdated-should-display-outdated-deps:peerDependencies:
+{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/dog:dog@1.0.1:dog@1.0.1:dog@2.0.0:tap-testdir-outdated-should-display-outdated-deps:dependencies:
:theta@1.0.1:MISSING:theta@1.0.1:tap-testdir-outdated-should-display-outdated-deps:dependencies:
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated --parseable > must match snapshot 1`] = `
-{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/alpha:alpha@1.0.1:alpha@1.0.0:alpha@1.0.1:tap-testdir-outdated-should-display-outdated-deps
-{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/beta:beta@1.0.1:beta@1.0.0:beta@1.0.1:tap-testdir-outdated-should-display-outdated-deps
-{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/gamma:gamma@1.0.1:gamma@1.0.1:gamma@2.0.0:tap-testdir-outdated-should-display-outdated-deps
+{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/cat:cat@1.0.1:cat@1.0.0:cat@1.0.1:tap-testdir-outdated-should-display-outdated-deps
+{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/chai:chai@1.0.1:chai@1.0.0:chai@1.0.1:tap-testdir-outdated-should-display-outdated-deps
+{CWD}/test/lib/tap-testdir-outdated-should-display-outdated-deps/node_modules/dog:dog@1.0.1:dog@1.0.1:dog@2.0.0:tap-testdir-outdated-should-display-outdated-deps
:theta@1.0.1:MISSING:theta@1.0.1:tap-testdir-outdated-should-display-outdated-deps
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated > must match snapshot 1`] = `
-[4mPackage[24m [4mCurrent[24m [4mWanted[24m [4mLatest[24m [4mLocation[24m [4mDepended by[24m
-[31malpha[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/alpha tap-testdir-outdated-should-display-outdated-deps
-[31mbeta[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/beta tap-testdir-outdated-should-display-outdated-deps
-[33mgamma[39m 1.0.1 [32m1.0.1[39m [35m2.0.0[39m node_modules/gamma tap-testdir-outdated-should-display-outdated-deps
-[31mtheta[39m MISSING [32m1.0.1[39m [35m1.0.1[39m - tap-testdir-outdated-should-display-outdated-deps
+[4mPackage[24m [4mCurrent[24m [4mWanted[24m [4mLatest[24m [4mLocation[24m [4mDepended by[24m
+[31mcat[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/cat tap-testdir-outdated-should-display-outdated-deps
+[31mchai[39m 1.0.0 [32m1.0.1[39m [35m1.0.1[39m node_modules/chai tap-testdir-outdated-should-display-outdated-deps
+[33mdog[39m 1.0.1 [32m1.0.1[39m [35m2.0.0[39m node_modules/dog tap-testdir-outdated-should-display-outdated-deps
+[31mtheta[39m MISSING [32m1.0.1[39m [35m1.0.1[39m - tap-testdir-outdated-should-display-outdated-deps
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated global > must match snapshot 1`] = `
-Package Current Wanted Latest Location Depended by
-alpha 1.0.0 1.0.1 1.0.1 node_modules/alpha global
+Package Current Wanted Latest Location Depended by
+cat 1.0.0 1.0.1 1.0.1 node_modules/cat global
`
exports[`test/lib/outdated.js TAP should display outdated deps outdated specific dep > must match snapshot 1`] = `
-Package Current Wanted Latest Location Depended by
-alpha 1.0.0 1.0.1 1.0.1 node_modules/alpha tap-testdir-outdated-should-display-outdated-deps
+Package Current Wanted Latest Location Depended by
+cat 1.0.0 1.0.1 1.0.1 node_modules/cat tap-testdir-outdated-should-display-outdated-deps
`
diff --git a/tap-snapshots/test/lib/utils/tar.js.test.cjs b/tap-snapshots/test/lib/utils/tar.js.test.cjs
index 5c3813dd8db43..d132d7af6e6f9 100644
--- a/tap-snapshots/test/lib/utils/tar.js.test.cjs
+++ b/tap-snapshots/test/lib/utils/tar.js.test.cjs
@@ -11,6 +11,9 @@ exports[`test/lib/utils/tar.js TAP should log tarball contents > must match snap
package: my-cool-pkg@1.0.0
=== Tarball Contents ===
+4B cat
+4B chai
+4B dog
97B package.json
=== Bundled Dependencies ===
@@ -20,14 +23,14 @@ bundle-dep
name: my-cool-pkg
version: 1.0.0
filename: my-cool-pkg-1.0.0.tgz
-package size: 216 B
-unpacked size: 101 B
-shasum: a604258e06adecec0b18f48e901c5802f19f7dab
-integrity: sha512-fnN6NmI8DerTt[...]6rH17jx7OIFig==
+package size: 274 B
+unpacked size: 113 B
+shasum: cd0dfccff77dff944eb761854bc0b0497d974f67
+integrity: sha512-qeFip1jH05vkW[...]zHSdMdPpYogMA==
bundled deps: 1
bundled files: 0
-own files: 2
-total files: 2
+own files: 5
+total files: 5
`
diff --git a/tap-snapshots/test/lib/view.js.test.cjs b/tap-snapshots/test/lib/view.js.test.cjs
index 1cdf356356af9..9aafe50e41896 100644
--- a/tap-snapshots/test/lib/view.js.test.cjs
+++ b/tap-snapshots/test/lib/view.js.test.cjs
@@ -80,7 +80,7 @@ dist
.unpackedSize:[33m1[39m B
dist-tags:
-
+[1m[32mlatest[39m[22m: 1.0.0
published [33ma year ago[39m
`
@@ -97,18 +97,50 @@ dist
.unpackedSize:[33m1[39m B
dist-tags:
-
+[1m[32mlatest[39m[22m: 1.0.0
published [33ma year ago[39m
`
+exports[`test/lib/view.js TAP should log package info package from git > must match snapshot 1`] = `
+
+
+[4m[1m[32mgreen[39m@[32m1.0.0[39m[22m[24m | [32mACME[39m | deps: [36m2[39m | versions: [33m2[39m
+green is a very important color
+
+[1m[31mDEPRECATED[39m[22m!! - true
+
+keywords:[33mcolors[39m, [33mgreen[39m, [33mcrayola[39m
+
+bin:[33mgreen[39m
+
+dist
+.tarball:[36mhttp://hm.green.com/1.0.0.tgz[39m
+.shasum:[33m123[39m
+.integrity:[33m---[39m
+.unpackedSize:[33m1[39m B
+
+dependencies:
+[33mred[39m: 1.0.0
+[33myellow[39m: 1.0.0
+
+maintainers:
+-[33mclaudia[39m <[36mc@yellow.com[39m>
+-[33misaacs[39m <[36mi@yellow.com[39m>
+
+dist-tags:
+[1m[32mlatest[39m[22m: 1.0.0
+`
+
exports[`test/lib/view.js TAP should log package info package with --json and semver range > must match snapshot 1`] = `
[
{
"_npmUser": "claudia ",
"name": "cyan",
- "dist-tags": {},
+ "dist-tags": {
+ "latest": "1.0.0"
+ },
"versions": [
"1.0.0",
"1.0.1"
@@ -125,7 +157,9 @@ exports[`test/lib/view.js TAP should log package info package with --json and se
{
"_npmUser": "claudia ",
"name": "cyan",
- "dist-tags": {},
+ "dist-tags": {
+ "latest": "1.0.0"
+ },
"versions": [
"1.0.0",
"1.0.1"
@@ -249,7 +283,7 @@ dist
.unpackedSize:[33m1[39m B
dist-tags:
-
+[1m[32mlatest[39m[22m: 1.0.0
published by [33mclaudia[39m <[36mclaudia@cyan.com[39m>
`
@@ -266,7 +300,7 @@ dist
.unpackedSize:[33m1[39m B
dist-tags:
-
+[1m[32mlatest[39m[22m: 1.0.0
published [33ma year ago[39m
`
diff --git a/test/fixtures/mock-npm.js b/test/fixtures/mock-npm.js
index 01f482bde291b..aa8d44020ee36 100644
--- a/test/fixtures/mock-npm.js
+++ b/test/fixtures/mock-npm.js
@@ -2,6 +2,8 @@
// npm.config You still need a separate flatOptions but this is the first step
// to eventually just using npm itself
+const realConfig = require('../../lib/utils/config')
+
const mockLog = {
clearProgress: () => {},
disableProgress: () => {},
@@ -25,10 +27,10 @@ const mockNpm = (base = {}) => {
config: {
// for now just set `find` to what config.find should return
// this works cause `find` is not an existing config entry
- find: (k) => config[k],
- get: (k) => config[k],
+ find: (k) => ({...realConfig.defaults, ...config})[k],
+ get: (k) => ({...realConfig.defaults, ...config})[k],
set: (k, v) => config[k] = v,
- list: [config]
+ list: [{ ...realConfig.defaults, ...config}]
},
}
}
diff --git a/test/lib/config.js b/test/lib/config.js
index 155ad0bcfb1b4..6c04293137af9 100644
--- a/test/lib/config.js
+++ b/test/lib/config.js
@@ -49,6 +49,9 @@ const cliConfig = {
json: false,
long: false,
global: false,
+ cat: true,
+ chai: true,
+ dog: true,
}
const npm = {
@@ -197,6 +200,9 @@ t.test('config list --json', t => {
json: true,
long: false,
global: false,
+ cat: true,
+ chai: true,
+ dog: true,
},
'should list configs usin json'
)
diff --git a/test/lib/dist-tag.js b/test/lib/dist-tag.js
index 701bdc6e48c35..6bc17168cdce0 100644
--- a/test/lib/dist-tag.js
+++ b/test/lib/dist-tag.js
@@ -68,10 +68,9 @@ const DistTag = t.mock('../../lib/dist-tag.js', {
},
})
+const config = {}
const npm = mockNpm({
- config: {
- global: false,
- },
+ config,
output: msg => {
result = result ? [result, msg].join('\n') : msg
},
@@ -349,6 +348,10 @@ t.test('add using valid semver range as name', (t) => {
t.test('add missing args', (t) => {
npm.prefix = t.testdir({})
+ config.tag = ''
+ t.teardown(() => {
+ delete config.tag
+ })
distTag.exec(['add', '@scoped/another@7.7.7'], (err) => {
t.matchSnapshot(err, 'should exit usage error message')
t.end()
diff --git a/test/lib/exec.js b/test/lib/exec.js
index 3d2da32a76675..33e30e24f84e0 100644
--- a/test/lib/exec.js
+++ b/test/lib/exec.js
@@ -601,7 +601,7 @@ t.test('run command with 2 packages, need install, verify sort', t => {
for (const packages of cases) {
t.test(packages.join(', '), t => {
config.package = packages
- const add = packages.map(p => `${p}@`).sort((a, b) => a.localeCompare(b))
+ const add = packages.map(p => `${p}@`).sort((a, b) => a.localeCompare(b, 'en'))
const path = t.testdir()
const installDir = resolve('cache-dir/_npx/07de77790e5f40f2')
npm.localPrefix = path
@@ -756,7 +756,7 @@ t.test('prompt when installs are needed if not already present and shell is a TT
config.package = packages
config.yes = undefined
- const add = packages.map(p => `${p}@`).sort((a, b) => a.localeCompare(b))
+ const add = packages.map(p => `${p}@`).sort((a, b) => a.localeCompare(b, 'en'))
const path = t.testdir()
const installDir = resolve('cache-dir/_npx/07de77790e5f40f2')
npm.localPrefix = path
@@ -825,7 +825,7 @@ t.test('skip prompt when installs are needed if not already present and shell is
config.package = packages
config.yes = undefined
- const add = packages.map(p => `${p}@`).sort((a, b) => a.localeCompare(b))
+ const add = packages.map(p => `${p}@`).sort((a, b) => a.localeCompare(b, 'en'))
const path = t.testdir()
const installDir = resolve('cache-dir/_npx/07de77790e5f40f2')
npm.localPrefix = path
@@ -892,7 +892,7 @@ t.test('skip prompt when installs are needed if not already present and shell is
config.package = packages
config.yes = undefined
- const add = packages.map(p => `${p}@`).sort((a, b) => a.localeCompare(b))
+ const add = packages.map(p => `${p}@`).sort((a, b) => a.localeCompare(b, 'en'))
const path = t.testdir()
const installDir = resolve('cache-dir/_npx/f7fbba6e0636f890')
npm.localPrefix = path
diff --git a/test/lib/link.js b/test/lib/link.js
index 34c533fb72cd5..d3e66185280ae 100644
--- a/test/lib/link.js
+++ b/test/lib/link.js
@@ -27,7 +27,7 @@ const printLinks = async (opts) => {
const arb = new Arborist(opts)
const tree = await arb.loadActual()
const linkedItems = [...tree.inventory.values()]
- .sort((a, b) => a.pkgid.localeCompare(b.pkgid))
+ .sort((a, b) => a.pkgid.localeCompare(b.pkgid, 'en'))
for (const item of linkedItems) {
if (item.target)
res += `${item.path} -> ${item.target.path}\n`
diff --git a/test/lib/load-all-commands.js b/test/lib/load-all-commands.js
index 8267cd5437ec8..935019756e282 100644
--- a/test/lib/load-all-commands.js
+++ b/test/lib/load-all-commands.js
@@ -15,7 +15,7 @@ t.test('load each command', t => {
npm.load((er) => {
t.notOk(er)
npm.config.set('usage', true)
- for (const cmd of cmdList.sort((a, b) => a.localeCompare(b))) {
+ for (const cmd of cmdList.sort((a, b) => a.localeCompare(b, 'en'))) {
t.test(cmd, t => {
const impl = npm.commands[cmd]
if (impl.completion)
diff --git a/test/lib/ls.js b/test/lib/ls.js
index 6eeaf0ad671bc..276a06180f654 100644
--- a/test/lib/ls.js
+++ b/test/lib/ls.js
@@ -21,19 +21,19 @@ const simpleNmFixture = {
name: 'foo',
version: '1.0.0',
dependencies: {
- bar: '^1.0.0',
+ dog: '^1.0.0',
},
}),
},
- bar: {
+ dog: {
'package.json': JSON.stringify({
- name: 'bar',
+ name: 'dog',
version: '1.0.0',
}),
},
- lorem: {
+ chai: {
'package.json': JSON.stringify({
- name: 'lorem',
+ name: 'chai',
version: '1.0.0',
}),
},
@@ -58,13 +58,13 @@ const diffDepTypesNmFixture = {
description: 'A PROD dep kind of dep',
version: '1.0.0',
dependencies: {
- bar: '^2.0.0',
+ dog: '^2.0.0',
},
}),
node_modules: {
- bar: {
+ dog: {
'package.json': JSON.stringify({
- name: 'bar',
+ name: 'dog',
description: 'A dep that bars',
version: '2.0.0',
}),
@@ -132,7 +132,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -181,12 +181,12 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
})
- ls.exec(['lorem'], (err) => {
+ ls.exec(['chai'], (err) => {
t.error(err, 'npm ls')
t.matchSnapshot(redactCwd(result), 'should output tree contaning only occurrences of filtered by package and colored output')
npm.color = false
@@ -224,12 +224,12 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
})
- ls.exec(['bar'], (err) => {
+ ls.exec(['dog'], (err) => {
t.error(err, 'npm ls')
t.matchSnapshot(redactCwd(result), 'should output tree contaning only occurrences of filtered package and its ancestors')
t.end()
@@ -243,7 +243,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
ipsum: '^1.0.0',
},
}),
@@ -257,7 +257,7 @@ t.test('ls', (t) => {
},
},
})
- ls.exec(['bar@*', 'lorem@1.0.0'], (err) => {
+ ls.exec(['dog@*', 'chai@1.0.0'], (err) => {
t.error(err, 'npm ls')
t.matchSnapshot(redactCwd(result), 'should output tree contaning only occurrences of multiple filtered packages and their ancestors')
t.end()
@@ -271,7 +271,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -298,7 +298,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -321,7 +321,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -412,9 +412,9 @@ t.test('ls', (t) => {
t.equal(err.code, 'ELSPROBLEMS', 'should have error code')
t.equal(
redactCwd(err.message).replace(/\r\n/g, '\n'),
+ 'extraneous: chai@1.0.0 {CWD}/tap-testdir-ls-ls-missing-invalid-extraneous/node_modules/chai\n' +
'invalid: foo@1.0.0 {CWD}/tap-testdir-ls-ls-missing-invalid-extraneous/node_modules/foo\n' +
- 'missing: ipsum@^1.0.0, required by test-npm-ls@1.0.0\n' +
- 'extraneous: lorem@1.0.0 {CWD}/tap-testdir-ls-ls-missing-invalid-extraneous/node_modules/lorem',
+ 'missing: ipsum@^1.0.0, required by test-npm-ls@1.0.0',
'should log missing/invalid/extraneous errors'
)
t.matchSnapshot(redactCwd(result), 'should output tree containing missing, invalid, extraneous labels')
@@ -451,7 +451,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -480,7 +480,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -509,7 +509,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
'linked-dep': '^1.0.0',
},
devDependencies: {
@@ -584,7 +584,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -613,7 +613,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -642,7 +642,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -673,7 +673,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -723,7 +723,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -835,7 +835,7 @@ t.test('ls', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -1243,7 +1243,7 @@ t.test('ls', (t) => {
dependencies: {
a: {
version: '1.0.1',
- resolved: 'foo@bar://b8f3a2fc0c3bb8ffd8b0d0072cc6b5a3667e963c',
+ resolved: 'foo@dog://b8f3a2fc0c3bb8ffd8b0d0072cc6b5a3667e963c',
integrity: 'sha512-8AN9lNCcBt5Xeje7fMEEpp5K3rgcAzIpTtAjYb/YMUYu8SbIVF6wz0WqACDVKvpQOUcSfNHZQNLNmue0QSwXOQ==',
},
},
@@ -1544,7 +1544,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -1592,12 +1592,12 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
})
- ls.exec(['lorem'], (err) => {
+ ls.exec(['chai'], (err) => {
t.error(err, 'npm ls')
t.matchSnapshot(redactCwd(result), 'should output parseable contaning only occurrences of filtered by package')
t.end()
@@ -1611,12 +1611,12 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
})
- ls.exec(['bar'], (err) => {
+ ls.exec(['dog'], (err) => {
t.error(err, 'npm ls')
t.matchSnapshot(redactCwd(result), 'should output parseable contaning only occurrences of filtered package')
t.end()
@@ -1630,7 +1630,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
ipsum: '^1.0.0',
},
}),
@@ -1644,7 +1644,7 @@ t.test('ls --parseable', (t) => {
},
},
})
- ls.exec(['bar@*', 'lorem@1.0.0'], (err) => {
+ ls.exec(['dog@*', 'chai@1.0.0'], (err) => {
t.error(err, 'npm ls')
t.matchSnapshot(redactCwd(result), 'should output parseable contaning only occurrences of multiple filtered packages and their ancestors')
t.end()
@@ -1658,7 +1658,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -1685,7 +1685,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -1708,7 +1708,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -1731,7 +1731,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -1772,7 +1772,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -1801,7 +1801,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -1830,7 +1830,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
'linked-dep': '^1.0.0',
},
devDependencies: {
@@ -1869,7 +1869,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -1898,7 +1898,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -1927,7 +1927,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -1995,7 +1995,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
'linked-dep': '^1.0.0',
},
devDependencies: {
@@ -2037,7 +2037,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -2087,7 +2087,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -2114,7 +2114,7 @@ t.test('ls --parseable', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -2463,7 +2463,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -2479,12 +2479,12 @@ t.test('ls --json', (t) => {
foo: {
version: '1.0.0',
dependencies: {
- bar: {
+ dog: {
version: '1.0.0',
},
},
},
- lorem: {
+ chai: {
version: '1.0.0',
},
},
@@ -2505,16 +2505,16 @@ t.test('ls --json', (t) => {
jsonParse(result),
{
problems: [
- 'extraneous: bar@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/bar',
+ 'extraneous: chai@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/chai',
+ 'extraneous: dog@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/dog',
'extraneous: foo@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/foo',
- 'extraneous: lorem@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/lorem',
],
dependencies: {
- bar: {
+ dog: {
version: '1.0.0',
extraneous: true,
problems: [
- 'extraneous: bar@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/bar',
+ 'extraneous: dog@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/dog',
],
},
foo: {
@@ -2524,16 +2524,16 @@ t.test('ls --json', (t) => {
'extraneous: foo@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/foo',
],
dependencies: {
- bar: {
+ dog: {
version: '1.0.0',
},
},
},
- lorem: {
+ chai: {
version: '1.0.0',
extraneous: true,
problems: [
- 'extraneous: lorem@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/lorem',
+ 'extraneous: chai@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-package.json/node_modules/chai',
],
},
},
@@ -2563,22 +2563,22 @@ t.test('ls --json', (t) => {
name: 'test-npm-ls',
version: '1.0.0',
problems: [
- 'extraneous: lorem@1.0.0 {CWD}/tap-testdir-ls-ls---json-extraneous-deps/node_modules/lorem',
+ 'extraneous: chai@1.0.0 {CWD}/tap-testdir-ls-ls---json-extraneous-deps/node_modules/chai',
],
dependencies: {
foo: {
version: '1.0.0',
dependencies: {
- bar: {
+ dog: {
version: '1.0.0',
},
},
},
- lorem: {
+ chai: {
version: '1.0.0',
extraneous: true,
problems: [
- 'extraneous: lorem@1.0.0 {CWD}/tap-testdir-ls-ls---json-extraneous-deps/node_modules/lorem',
+ 'extraneous: chai@1.0.0 {CWD}/tap-testdir-ls-ls---json-extraneous-deps/node_modules/chai',
],
},
},
@@ -2597,8 +2597,8 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- bar: '^1.0.0',
- lorem: '^1.0.0',
+ dog: '^1.0.0',
+ chai: '^1.0.0',
ipsum: '^1.0.0',
},
}),
@@ -2638,12 +2638,12 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
})
- ls.exec(['lorem'], (err) => {
+ ls.exec(['chai'], (err) => {
t.error(err, 'npm ls')
t.same(
jsonParse(result),
@@ -2651,7 +2651,7 @@ t.test('ls --json', (t) => {
name: 'test-npm-ls',
version: '1.0.0',
dependencies: {
- lorem: {
+ chai: {
version: '1.0.0',
},
},
@@ -2674,12 +2674,12 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
})
- ls.exec(['bar'], (err) => {
+ ls.exec(['dog'], (err) => {
t.error(err, 'npm ls')
t.same(
jsonParse(result),
@@ -2690,7 +2690,7 @@ t.test('ls --json', (t) => {
foo: {
version: '1.0.0',
dependencies: {
- bar: {
+ dog: {
version: '1.0.0',
},
},
@@ -2710,7 +2710,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
ipsum: '^1.0.0',
},
}),
@@ -2724,7 +2724,7 @@ t.test('ls --json', (t) => {
},
},
})
- ls.exec(['bar@*', 'lorem@1.0.0'], (err) => {
+ ls.exec(['dog@*', 'chai@1.0.0'], (err) => {
t.error(err, 'npm ls')
t.same(
jsonParse(result),
@@ -2735,12 +2735,12 @@ t.test('ls --json', (t) => {
foo: {
version: '1.0.0',
dependencies: {
- bar: {
+ dog: {
version: '1.0.0',
},
},
},
- lorem: {
+ chai: {
version: '1.0.0',
},
},
@@ -2758,7 +2758,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -2792,7 +2792,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -2808,7 +2808,7 @@ t.test('ls --json', (t) => {
foo: {
version: '1.0.0',
},
- lorem: {
+ chai: {
version: '1.0.0',
},
},
@@ -2830,7 +2830,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -2846,7 +2846,7 @@ t.test('ls --json', (t) => {
foo: {
version: '1.0.0',
},
- lorem: {
+ chai: {
version: '1.0.0',
},
},
@@ -2868,7 +2868,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
foo: '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
}),
...simpleNmFixture,
@@ -2884,12 +2884,12 @@ t.test('ls --json', (t) => {
foo: {
version: '1.0.0',
dependencies: {
- bar: {
+ dog: {
version: '1.0.0',
},
},
},
- lorem: {
+ chai: {
version: '1.0.0',
},
},
@@ -2922,9 +2922,9 @@ t.test('ls --json', (t) => {
name: 'test-npm-ls',
version: '1.0.0',
problems: [
+ 'extraneous: chai@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-invalid-extraneous/node_modules/chai',
'invalid: foo@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-invalid-extraneous/node_modules/foo',
'missing: ipsum@^1.0.0, required by test-npm-ls@1.0.0',
- 'extraneous: lorem@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-invalid-extraneous/node_modules/lorem',
],
dependencies: {
foo: {
@@ -2934,16 +2934,16 @@ t.test('ls --json', (t) => {
'invalid: foo@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-invalid-extraneous/node_modules/foo',
],
dependencies: {
- bar: {
+ dog: {
version: '1.0.0',
},
},
},
- lorem: {
+ chai: {
version: '1.0.0',
extraneous: true,
problems: [
- 'extraneous: lorem@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-invalid-extraneous/node_modules/lorem',
+ 'extraneous: chai@1.0.0 {CWD}/tap-testdir-ls-ls---json-missing-invalid-extraneous/node_modules/chai',
],
},
ipsum: {
@@ -2969,7 +2969,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -2995,7 +2995,7 @@ t.test('ls --json', (t) => {
dependencies: {
foo: {
version: '1.0.0',
- dependencies: { bar: { version: '1.0.0' } },
+ dependencies: { dog: { version: '1.0.0' } },
},
},
},
@@ -3016,7 +3016,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -3042,7 +3042,7 @@ t.test('ls --json', (t) => {
dependencies: {
foo: {
version: '1.0.0',
- dependencies: { bar: { version: '1.0.0' } },
+ dependencies: { dog: { version: '1.0.0' } },
},
},
},
@@ -3063,7 +3063,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
'linked-dep': '^1.0.0',
},
devDependencies: {
@@ -3115,7 +3115,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -3136,9 +3136,9 @@ t.test('ls --json', (t) => {
name: 'test-npm-ls',
version: '1.0.0',
dependencies: {
- lorem: { version: '1.0.0' },
+ chai: { version: '1.0.0' },
'optional-dep': { version: '1.0.0' },
- 'prod-dep': { version: '1.0.0', dependencies: { bar: { version: '2.0.0' } } },
+ 'prod-dep': { version: '1.0.0', dependencies: { dog: { version: '2.0.0' } } },
},
},
'should output json containing production deps'
@@ -3156,7 +3156,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -3177,9 +3177,9 @@ t.test('ls --json', (t) => {
name: 'test-npm-ls',
version: '1.0.0',
dependencies: {
- lorem: { version: '1.0.0' },
+ chai: { version: '1.0.0' },
'optional-dep': { version: '1.0.0' },
- 'prod-dep': { version: '1.0.0', dependencies: { bar: { version: '2.0.0' } } },
+ 'prod-dep': { version: '1.0.0', dependencies: { dog: { version: '2.0.0' } } },
},
},
'should output json containing only prod deps'
@@ -3326,7 +3326,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -3367,21 +3367,21 @@ t.test('ls --json', (t) => {
name: 'foo',
version: '1.0.0',
dependencies: {
- bar: {
- name: 'bar',
+ dog: {
+ name: 'dog',
version: '1.0.0',
- _id: 'bar@1.0.0',
+ _id: 'dog@1.0.0',
devDependencies: {},
peerDependencies: {},
_dependencies: {},
- path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/bar',
+ path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/dog',
extraneous: false,
},
},
_id: 'foo@1.0.0',
devDependencies: {},
peerDependencies: {},
- _dependencies: { bar: '^1.0.0' },
+ _dependencies: { dog: '^1.0.0' },
path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/foo',
extraneous: false,
},
@@ -3393,14 +3393,14 @@ t.test('ls --json', (t) => {
path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/dev-dep',
extraneous: false,
},
- lorem: {
- name: 'lorem',
+ chai: {
+ name: 'chai',
version: '1.0.0',
- _id: 'lorem@1.0.0',
+ _id: 'chai@1.0.0',
devDependencies: {},
peerDependencies: {},
_dependencies: {},
- path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/lorem',
+ path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/chai',
extraneous: false,
},
'optional-dep': {
@@ -3419,22 +3419,22 @@ t.test('ls --json', (t) => {
description: 'A PROD dep kind of dep',
version: '1.0.0',
dependencies: {
- bar: {
- name: 'bar',
+ dog: {
+ name: 'dog',
description: 'A dep that bars',
version: '2.0.0',
- _id: 'bar@2.0.0',
+ _id: 'dog@2.0.0',
devDependencies: {},
peerDependencies: {},
_dependencies: {},
- path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/prod-dep/node_modules/bar',
+ path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/prod-dep/node_modules/dog',
extraneous: false,
},
},
_id: 'prod-dep@1.0.0',
devDependencies: {},
peerDependencies: {},
- _dependencies: { bar: '^2.0.0' },
+ _dependencies: { dog: '^2.0.0' },
path: '{CWD}/tap-testdir-ls-ls---json---long/node_modules/prod-dep',
extraneous: false,
},
@@ -3443,7 +3443,7 @@ t.test('ls --json', (t) => {
optionalDependencies: { 'optional-dep': '^1.0.0' },
peerDependencies: { 'peer-dep': '^1.0.0' },
_id: 'test-npm-ls@1.0.0',
- _dependencies: { 'prod-dep': '^1.0.0', lorem: '^1.0.0', 'optional-dep': '^1.0.0' },
+ _dependencies: { 'prod-dep': '^1.0.0', chai: '^1.0.0', 'optional-dep': '^1.0.0' },
path: '{CWD}/tap-testdir-ls-ls---json---long',
extraneous: false,
},
@@ -3464,7 +3464,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -3507,14 +3507,14 @@ t.test('ls --json', (t) => {
path: '{CWD}/tap-testdir-ls-ls---json---long---depth-0/node_modules/dev-dep',
extraneous: false,
},
- lorem: {
- name: 'lorem',
+ chai: {
+ name: 'chai',
version: '1.0.0',
- _id: 'lorem@1.0.0',
+ _id: 'chai@1.0.0',
devDependencies: {},
peerDependencies: {},
_dependencies: {},
- path: '{CWD}/tap-testdir-ls-ls---json---long---depth-0/node_modules/lorem',
+ path: '{CWD}/tap-testdir-ls-ls---json---long---depth-0/node_modules/chai',
extraneous: false,
},
'optional-dep': {
@@ -3535,7 +3535,7 @@ t.test('ls --json', (t) => {
_id: 'prod-dep@1.0.0',
devDependencies: {},
peerDependencies: {},
- _dependencies: { bar: '^2.0.0' },
+ _dependencies: { dog: '^2.0.0' },
path: '{CWD}/tap-testdir-ls-ls---json---long---depth-0/node_modules/prod-dep',
extraneous: false,
},
@@ -3544,7 +3544,7 @@ t.test('ls --json', (t) => {
optionalDependencies: { 'optional-dep': '^1.0.0' },
peerDependencies: { 'peer-dep': '^1.0.0' },
_id: 'test-npm-ls@1.0.0',
- _dependencies: { 'prod-dep': '^1.0.0', lorem: '^1.0.0', 'optional-dep': '^1.0.0' },
+ _dependencies: { 'prod-dep': '^1.0.0', chai: '^1.0.0', 'optional-dep': '^1.0.0' },
path: '{CWD}/tap-testdir-ls-ls---json---long---depth-0',
extraneous: false,
},
@@ -3598,7 +3598,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -3635,13 +3635,13 @@ t.test('ls --json', (t) => {
dependencies: {
foo: {
version: '1.0.0',
- dependencies: { bar: { version: '1.0.0' } },
+ dependencies: { dog: { version: '1.0.0' } },
},
},
},
- lorem: { version: '1.0.0' },
+ chai: { version: '1.0.0' },
'optional-dep': { version: '1.0.0' },
- 'prod-dep': { version: '1.0.0', dependencies: { bar: { version: '2.0.0' } } },
+ 'prod-dep': { version: '1.0.0', dependencies: { dog: { version: '2.0.0' } } },
},
},
'should output json signaling missing peer dep in problems'
@@ -3657,7 +3657,7 @@ t.test('ls --json', (t) => {
version: '1.0.0',
dependencies: {
'prod-dep': '^1.0.0',
- lorem: '^1.0.0',
+ chai: '^1.0.0',
},
devDependencies: {
'dev-dep': '^1.0.0',
@@ -3699,12 +3699,12 @@ t.test('ls --json', (t) => {
dependencies: {
foo: {
version: '1.0.0',
- dependencies: { bar: { version: '1.0.0' } },
+ dependencies: { dog: { version: '1.0.0' } },
},
},
},
- lorem: { version: '1.0.0' },
- 'prod-dep': { version: '1.0.0', dependencies: { bar: { version: '2.0.0' } } },
+ chai: { version: '1.0.0' },
+ 'prod-dep': { version: '1.0.0', dependencies: { dog: { version: '2.0.0' } } },
'missing-optional-dep': {}, // missing optional dep has an empty entry in json output
},
},
diff --git a/test/lib/outdated.js b/test/lib/outdated.js
index 605853056a000..f7d572821275f 100644
--- a/test/lib/outdated.js
+++ b/test/lib/outdated.js
@@ -3,8 +3,8 @@ const mockNpm = require('../fixtures/mock-npm')
const packument = spec => {
const mocks = {
- alpha: {
- name: 'alpha',
+ cat: {
+ name: 'cat',
'dist-tags': {
latest: '1.0.1',
},
@@ -12,13 +12,13 @@ const packument = spec => {
'1.0.1': {
version: '1.0.1',
dependencies: {
- gamma: '2.0.0',
+ dog: '2.0.0',
},
},
},
},
- beta: {
- name: 'beta',
+ chai: {
+ name: 'chai',
'dist-tags': {
latest: '1.0.1',
},
@@ -28,8 +28,8 @@ const packument = spec => {
},
},
},
- gamma: {
- name: 'gamma',
+ dog: {
+ name: 'dog',
'dist-tags': {
latest: '2.0.0',
},
@@ -74,9 +74,9 @@ const output = (msg) => {
const globalDir = t.testdir({
node_modules: {
- alpha: {
+ cat: {
'package.json': JSON.stringify({
- name: 'alpha',
+ name: 'cat',
version: '1.0.0',
}, null, 2),
},
@@ -116,8 +116,8 @@ t.test('should display outdated deps', t => {
name: 'delta',
version: '1.0.0',
dependencies: {
- alpha: '^1.0.0',
- gamma: '^1.0.0',
+ cat: '^1.0.0',
+ dog: '^1.0.0',
theta: '^1.0.0',
},
devDependencies: {
@@ -127,36 +127,36 @@ t.test('should display outdated deps', t => {
lorem: '^1.0.0',
},
peerDependencies: {
- beta: '^1.0.0',
+ chai: '^1.0.0',
},
}, null, 2),
node_modules: {
- alpha: {
+ cat: {
'package.json': JSON.stringify({
- name: 'alpha',
+ name: 'cat',
version: '1.0.0',
dependencies: {
- gamma: '2.0.0',
+ dog: '2.0.0',
},
}, null, 2),
node_modules: {
- gamma: {
+ dog: {
'package.json': JSON.stringify({
- name: 'gamma',
+ name: 'dog',
version: '2.0.0',
}, null, 2),
},
},
},
- beta: {
+ chai: {
'package.json': JSON.stringify({
- name: 'beta',
+ name: 'chai',
version: '1.0.0',
}, null, 2),
},
- gamma: {
+ dog: {
'package.json': JSON.stringify({
- name: 'gamma',
+ name: 'dog',
version: '1.0.1',
}, null, 2),
},
@@ -307,7 +307,7 @@ t.test('should display outdated deps', t => {
config: {
global: false,
},
- }).exec(['alpha'], () => {
+ }).exec(['cat'], () => {
t.matchSnapshot(logs)
t.end()
})
@@ -322,13 +322,13 @@ t.test('should return if no outdated deps', t => {
name: 'delta',
version: '1.0.0',
dependencies: {
- alpha: '^1.0.0',
+ cat: '^1.0.0',
},
}, null, 2),
node_modules: {
- alpha: {
+ cat: {
'package.json': JSON.stringify({
- name: 'alpha',
+ name: 'cat',
version: '1.0.1',
}, null, 2),
},
@@ -376,7 +376,7 @@ t.test('should skip missing non-prod deps', t => {
name: 'delta',
version: '1.0.0',
devDependencies: {
- beta: '^1.0.0',
+ chai: '^1.0.0',
},
}, null, 2),
node_modules: {},
@@ -396,13 +396,13 @@ t.test('should skip invalid pkg ranges', t => {
name: 'delta',
version: '1.0.0',
dependencies: {
- alpha: '>=^2',
+ cat: '>=^2',
},
}, null, 2),
node_modules: {
- alpha: {
+ cat: {
'package.json': JSON.stringify({
- name: 'alpha',
+ name: 'cat',
version: '1.0.0',
}, null, 2),
},
@@ -421,13 +421,13 @@ t.test('should skip git specs', t => {
name: 'delta',
version: '1.0.0',
dependencies: {
- alpha: 'github:username/foo',
+ cat: 'github:username/foo',
},
}, null, 2),
node_modules: {
- alpha: {
+ cat: {
'package.json': JSON.stringify({
- name: 'alpha',
+ name: 'cat',
version: '1.0.0',
}, null, 2),
},
diff --git a/test/lib/utils/cleanup-log-files.js b/test/lib/utils/cleanup-log-files.js
index 61240b7b523de..e97cf36b55dec 100644
--- a/test/lib/utils/cleanup-log-files.js
+++ b/test/lib/utils/cleanup-log-files.js
@@ -71,7 +71,7 @@ t.test('rimraf fail', t => {
const warnings = []
const warn = (...warning) => warnings.push(basename(warning[2]))
return cleanup(cache, 3, warn).then(() => {
- t.strictSame(warnings.sort((a, b) => a.localeCompare(b)), [
+ t.strictSame(warnings.sort((a, b) => a.localeCompare(b, 'en')), [
'1-debug.log',
'2-debug.log',
])
diff --git a/test/lib/utils/completion/installed-deep.js b/test/lib/utils/completion/installed-deep.js
index ba14798bbec18..21e77a568bd8a 100644
--- a/test/lib/utils/completion/installed-deep.js
+++ b/test/lib/utils/completion/installed-deep.js
@@ -63,6 +63,15 @@ const fixture = {
'package.json': JSON.stringify({
name: 'c',
version: '1.0.0',
+ dependencies: {
+ ch: '1.0.0',
+ },
+ }),
+ },
+ ch: {
+ 'package.json': JSON.stringify({
+ name: 'ch',
+ version: '1.0.0',
}),
},
d: {
@@ -160,8 +169,8 @@ t.test('get list of package names', async t => {
['foo', '-g'],
['a-bar', '-g'],
'a', 'b', 'c',
- 'd', 'e', 'f',
- 'g', 'bb',
+ 'ch', 'd', 'e',
+ 'f', 'g', 'bb',
],
'should return list of package names and global flag'
)
@@ -211,9 +220,9 @@ t.test('limit depth', async t => {
['bar', '-g'],
['foo', '-g'],
'a', 'b',
- 'c', 'd',
- 'e', 'f',
- 'g',
+ 'c', 'ch',
+ 'd', 'e',
+ 'f', 'g',
],
'should print only packages up to the specified depth'
)
diff --git a/test/lib/utils/tar.js b/test/lib/utils/tar.js
index 5758442fcb6f6..2662d47ace486 100644
--- a/test/lib/utils/tar.js
+++ b/test/lib/utils/tar.js
@@ -26,6 +26,9 @@ t.test('should log tarball contents', async (t) => {
'bundle-dep',
],
}, null, 2),
+ cat: 'meow',
+ chai: 'blub',
+ dog: 'woof',
node_modules: {
'bundle-dep': 'toto',
},
diff --git a/test/lib/utils/update-notifier.js b/test/lib/utils/update-notifier.js
index 1735b31057b14..ad4d407728f93 100644
--- a/test/lib/utils/update-notifier.js
+++ b/test/lib/utils/update-notifier.js
@@ -145,15 +145,15 @@ t.test('situations in which we do not notify', t => {
})
t.test('only check weekly for GA releases', async t => {
- // the 10 is fuzz factor for test environment
- STAT_MTIME = Date.now() - (1000 * 60 * 60 * 24 * 7) + 10
+ // One week (plus five minutes to account for test environment fuzziness)
+ STAT_MTIME = Date.now() - (1000 * 60 * 60 * 24 * 7) + (1000 * 60 * 5)
t.equal(await updateNotifier(npm), null)
t.strictSame(MANIFEST_REQUEST, [], 'no requests for manifests')
})
t.test('only check daily for betas', async t => {
- // the 10 is fuzz factor for test environment
- STAT_MTIME = Date.now() - (1000 * 60 * 60 * 24) + 10
+ // One day (plus five minutes to account for test environment fuzziness)
+ STAT_MTIME = Date.now() - (1000 * 60 * 60 * 24) + (1000 * 60 * 5)
t.equal(await updateNotifier({ ...npm, version: HAVE_BETA }), null)
t.strictSame(MANIFEST_REQUEST, [], 'no requests for manifests')
})
diff --git a/test/lib/view.js b/test/lib/view.js
index eb2beb9ff5864..4544d7d5d1a94 100644
--- a/test/lib/view.js
+++ b/test/lib/view.js
@@ -34,7 +34,9 @@ const packument = (nv, opts) => {
},
blue: {
name: 'blue',
- 'dist-tags': {},
+ 'dist-tags': {
+ latest: '1.0.0',
+ },
time: {
'1.0.0': '2019-08-06T16:21:09.842Z',
},
@@ -59,7 +61,9 @@ const packument = (nv, opts) => {
email: 'claudia@cyan.com',
},
name: 'cyan',
- 'dist-tags': {},
+ 'dist-tags': {
+ latest: '1.0.0',
+ },
versions: {
'1.0.0': {
version: '1.0.0',
@@ -236,6 +240,8 @@ const packument = (nv, opts) => {
},
},
}
+ if (nv.type === 'git')
+ return mocks[nv.hosted.project]
return mocks[nv.name]
}
@@ -248,7 +254,7 @@ t.test('should log package info', t => {
},
})
const npm = mockNpm({
- config: { global: false },
+ config: { unicode: false },
})
const view = new View(npm)
@@ -258,7 +264,10 @@ t.test('should log package info', t => {
},
})
const jsonNpm = mockNpm({
- config: { json: true },
+ config: {
+ json: true,
+ tag: 'latest',
+ },
})
const viewJson = new ViewJson(jsonNpm)
@@ -268,13 +277,17 @@ t.test('should log package info', t => {
},
})
const unicodeNpm = mockNpm({
- config: {
- global: false,
- unicode: true,
- },
+ config: { unicode: true },
})
const viewUnicode = new ViewUnicode(unicodeNpm)
+ t.test('package from git', t => {
+ view.exec(['https://github.com/npm/green'], () => {
+ t.matchSnapshot(logs)
+ t.end()
+ })
+ })
+
t.test('package with license, bugs, repository and other fields', t => {
view.exec(['green@1.0.0'], () => {
t.matchSnapshot(logs)
@@ -358,7 +371,6 @@ t.test('should log info of package in current working dir', t => {
prefix: testDir,
config: {
tag: '1.0.0',
- global: false,
},
})
const view = new View(npm)
@@ -388,8 +400,8 @@ t.test('should log info by field name', t => {
})
const jsonNpm = mockNpm({
config: {
+ tag: 'latest',
json: true,
- global: false,
},
})
@@ -400,9 +412,7 @@ t.test('should log info by field name', t => {
packument,
},
})
- const npm = mockNpm({
- config: { global: false },
- })
+ const npm = mockNpm()
const view = new View(npm)
t.test('readme', t => {
@@ -474,7 +484,10 @@ t.test('should log info by field name', t => {
t.test('throw error if global mode', (t) => {
const View = t.mock('../../lib/view.js')
const npm = mockNpm({
- config: { global: true },
+ config: {
+ global: true,
+ tag: 'latest',
+ },
})
const view = new View(npm)
view.exec([], (err) => {
@@ -489,7 +502,6 @@ t.test('throw ENOENT error if package.json misisng', (t) => {
const View = t.mock('../../lib/view.js')
const npm = mockNpm({
prefix: testDir,
- config: { global: false },
})
const view = new View(npm)
view.exec([], (err) => {
@@ -506,7 +518,6 @@ t.test('throw EJSONPARSE error if package.json not json', (t) => {
const View = t.mock('../../lib/view.js')
const npm = mockNpm({
prefix: testDir,
- config: { global: false },
})
const view = new View(npm)
view.exec([], (err) => {
@@ -523,7 +534,6 @@ t.test('throw error if package.json has no name', (t) => {
const View = t.mock('../../lib/view.js')
const npm = mockNpm({
prefix: testDir,
- config: { global: false },
})
const view = new View(npm)
view.exec([], (err) => {
@@ -541,7 +551,6 @@ t.test('throws when unpublished', (t) => {
const npm = mockNpm({
config: {
tag: '1.0.1',
- global: false,
},
})
const view = new View(npm)
@@ -581,6 +590,7 @@ t.test('workspaces', t => {
},
})
const config = {
+ unicode: false,
tag: 'latest',
}
let warnMsg
@@ -684,7 +694,6 @@ t.test('completion', async t => {
const npm = mockNpm({
config: {
tag: '1.0.1',
- global: false,
},
})
const view = new View(npm)
@@ -700,7 +709,6 @@ t.test('no registry completion', async t => {
const npm = mockNpm({
config: {
tag: '1.0.1',
- global: false,
},
})
const view = new View(npm)