diff --git a/docs/content/using-npm/dependency-selectors.md b/docs/content/using-npm/dependency-selectors.md index 29ce2b82f7eed..5fb20bad5f80f 100644 --- a/docs/content/using-npm/dependency-selectors.md +++ b/docs/content/using-npm/dependency-selectors.md @@ -61,6 +61,7 @@ The [`npm query`](/commands/npm-query) commmand exposes a new dependency selecto - `:semver(, [selector], [function])` match a valid [`node-semver`](https://github.com/npm/node-semver) version or range to a selector - `:path()` [glob](https://www.npmjs.com/package/glob) matching based on dependencies path relative to the project - `:type()` [based on currently recognized types](https://github.com/npm/npm-package-arg#result-object) +- `:outdated()` when a dependency is outdated ##### `:semver(, [selector], [function])` @@ -78,6 +79,28 @@ Some examples: - `:semver(16.0.0, :attr(engines, [node]))` returns every node which has an `engines.node` property satisfying the version `16.0.0` - `:semver(1.0.0, [version], lt)` every node with a `version` less than `1.0.0` +##### `:outdated()` + +The `:outdated` pseudo selector retrieves data from the registry and returns information about which of your dependencies are outdated. The type parameter may be one of the following: + +- `any` (default) a version exists that is greater than the current one +- `in-range` a version exists that is greater than the current one, and satisfies at least one if its dependents +- `out-of-range` a version exists that is greater than the current one, does not satisfy at least one of its dependents +- `major` a version exists that is a semver major greater than the current one +- `minor` a version exists that is a semver minor greater than the current one +- `patch` a version exists that is a semver patch greater than the current one + +In addition to the filtering performed by the pseudo selector, some extra data is added to the resulting objects. The following data can be found under the `queryContext` property of each node. + +- `versions` an array of every available version of the given node +- `outdated.inRange` an array of objects, each with a `from` and `versions`, where `from` is the on-disk location of the node that depends on the current node and `versions` is an array of all available versions that satisfies that dependency. This is only populated if `:outdated(in-range)` is used. +- `outdated.outOfRange` an array of objects, identical in shape to `inRange`, but where the `versions` array is every available version that does not satisfy the dependency. This is only populated if `:outdated(out-of-range)` is used. + +Some examples: + +- `:root > :outdated(major)` returns every direct dependency that has a new semver major release +- `.prod:outdated(in-range)` returns production dependencies that have a new release that satisfies at least one of its edges in + #### [Attribute Selectors](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors) The attribute selector evaluates the key/value pairs in `package.json` if they are `String`s. diff --git a/lib/commands/query.js b/lib/commands/query.js index 231329b19b5c8..5f05ab3164d7c 100644 --- a/lib/commands/query.js +++ b/lib/commands/query.js @@ -21,6 +21,7 @@ class QuerySelectorItem { this.inBundle = node.target.inBundle this.deduped = this.from.length > 1 this.overridden = node.overridden + this.queryContext = node.queryContext for (const edge of node.target.edgesIn) { this.from.push(edge.from.location) } @@ -63,7 +64,7 @@ class Query extends BaseCommand { } const arb = new Arborist(opts) const tree = await arb.loadActual(opts) - const items = await tree.querySelectorAll(args[0]) + const items = await tree.querySelectorAll(args[0], this.npm.flatOptions) this.buildResponse(items) this.npm.output(this.parsedResponse) @@ -84,7 +85,7 @@ class Query extends BaseCommand { items = await tree.querySelectorAll(args[0]) } else { const [workspace] = await tree.querySelectorAll(`.workspace:path(${workspacePath})`) - items = await workspace.target.querySelectorAll(args[0]) + items = await workspace.target.querySelectorAll(args[0], this.npm.flatOptions) } this.buildResponse(items) } diff --git a/node_modules/@npmcli/query/lib/index.js b/node_modules/@npmcli/query/lib/index.js index 44f539ee0a125..09cff0f591d4d 100644 --- a/node_modules/@npmcli/query/lib/index.js +++ b/node_modules/@npmcli/query/lib/index.js @@ -168,6 +168,13 @@ const fixupPaths = astNode => { astNode.nodes.length = 0 } +const fixupOutdated = astNode => { + if (astNode.nodes.length) { + astNode.outdatedKind = String(astNode.nodes[0]) + astNode.nodes.length = 0 + } +} + // a few of the supported ast nodes need to be tweaked in order to properly be // interpreted as proper arborist query selectors, namely semver ranges from // both ids and :semver pseudo-class selectors need to be translated from what @@ -196,6 +203,8 @@ const transformAst = selector => { return fixupSemverSpecs(nextAstNode) case ':type': return fixupTypes(nextAstNode) + case ':outdated': + return fixupOutdated(nextAstNode) } }) } diff --git a/node_modules/@npmcli/query/package.json b/node_modules/@npmcli/query/package.json index 610d0b7189182..1e2ce917cef75 100644 --- a/node_modules/@npmcli/query/package.json +++ b/node_modules/@npmcli/query/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/query", - "version": "1.2.0", + "version": "2.0.0", "description": "npm query parser and tools", "main": "lib/index.js", "scripts": { @@ -9,9 +9,6 @@ "postlint": "template-oss-check", "template-oss-apply": "template-oss-apply --force", "lintfix": "npm run lint -- --fix", - "preversion": "npm test", - "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags", "snap": "tap", "posttest": "npm run lint" }, @@ -38,15 +35,15 @@ "lib/" ], "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "3.5.0" + "version": "4.3.2" }, "devDependencies": { "@npmcli/eslint-config": "^3.0.1", - "@npmcli/template-oss": "3.5.0", + "@npmcli/template-oss": "4.3.2", "tap": "^16.2.0" }, "dependencies": { @@ -57,5 +54,11 @@ "repository": { "type": "git", "url": "https://github.com/npm/query.git" + }, + "tap": { + "nyc-arg": [ + "--exclude", + "tap-snapshots/**" + ] } } diff --git a/package-lock.json b/package-lock.json index 2fabe79b6bbf4..069cf6dc0bd53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2334,16 +2334,16 @@ } }, "node_modules/@npmcli/query": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-1.2.0.tgz", - "integrity": "sha512-uWglsUM3PjBLgTSmZ3/vygeGdvWEIZ3wTUnzGFbprC/RtvQSaT+GAXu1DXmSFj2bD3oOZdcRm1xdzsV2z1YWdw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-2.0.0.tgz", + "integrity": "sha512-ef3fUALbojBvtCi6wpogwnrtChBcK8Pdso5Vbz2EU0cud7VW1jcMGqwSNeSMU8V4cjpqVgudKQ+dosKO7N903g==", "dependencies": { "npm-package-arg": "^9.1.0", "postcss-selector-parser": "^6.0.10", "semver": "^7.3.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/run-script": { @@ -13875,7 +13875,7 @@ "@npmcli/name-from-folder": "^1.0.1", "@npmcli/node-gyp": "^2.0.0", "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", + "@npmcli/query": "^2.0.0", "@npmcli/run-script": "^4.1.3", "bin-links": "^3.0.3", "cacache": "^16.1.3", diff --git a/tap-snapshots/test/lib/commands/query.js.test.cjs b/tap-snapshots/test/lib/commands/query.js.test.cjs index d827b62eef740..9ad6e2e38084e 100644 --- a/tap-snapshots/test/lib/commands/query.js.test.cjs +++ b/tap-snapshots/test/lib/commands/query.js.test.cjs @@ -23,7 +23,8 @@ exports[`test/lib/commands/query.js TAP global > should return global package 1` "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} } ] ` @@ -53,7 +54,8 @@ exports[`test/lib/commands/query.js TAP include-workspace-root > should return w "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} }, { "name": "c", @@ -69,7 +71,8 @@ exports[`test/lib/commands/query.js TAP include-workspace-root > should return w "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} } ] ` @@ -90,7 +93,8 @@ exports[`test/lib/commands/query.js TAP linked node > should return linked node "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} } ] ` @@ -116,7 +120,8 @@ exports[`test/lib/commands/query.js TAP recursive tree > should return everythin "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} }, { "pkgid": "a@", @@ -131,7 +136,8 @@ exports[`test/lib/commands/query.js TAP recursive tree > should return everythin "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} }, { "pkgid": "b@", @@ -146,7 +152,8 @@ exports[`test/lib/commands/query.js TAP recursive tree > should return everythin "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} } ] ` @@ -175,7 +182,8 @@ exports[`test/lib/commands/query.js TAP simple query > should return root object "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} }, { "pkgid": "a@", @@ -190,7 +198,8 @@ exports[`test/lib/commands/query.js TAP simple query > should return root object "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} }, { "pkgid": "b@", @@ -205,7 +214,8 @@ exports[`test/lib/commands/query.js TAP simple query > should return root object "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} } ] ` @@ -226,7 +236,8 @@ exports[`test/lib/commands/query.js TAP workspace query > should return workspac "dev": false, "inBundle": false, "deduped": false, - "overridden": false + "overridden": false, + "queryContext": {} } ] ` diff --git a/workspaces/arborist/lib/node.js b/workspaces/arborist/lib/node.js index 60ce3eda0eb42..b90a2acf8f8ae 100644 --- a/workspaces/arborist/lib/node.js +++ b/workspaces/arborist/lib/node.js @@ -103,6 +103,9 @@ class Node { dummy = false, sourceReference = null, } = options + // this object gives querySelectorAll somewhere to stash context about a node + // while processing a query + this.queryContext = {} // true if part of a global install this[_global] = global @@ -1455,8 +1458,8 @@ class Node { // maybe accept both string value or array of strings // seems to be what dom API does - querySelectorAll (query) { - return querySelectorAll(this, query) + querySelectorAll (query, opts) { + return querySelectorAll(this, query, opts) } toJSON () { diff --git a/workspaces/arborist/lib/query-selector-all.js b/workspaces/arborist/lib/query-selector-all.js index 64b280d58a23a..87a67bbed1885 100644 --- a/workspaces/arborist/lib/query-selector-all.js +++ b/workspaces/arborist/lib/query-selector-all.js @@ -6,6 +6,7 @@ const localeCompare = require('@isaacs/string-locale-compare')('en') const log = require('proc-log') const minimatch = require('minimatch') const npa = require('npm-package-arg') +const pacote = require('pacote') const semver = require('semver') // handle results for parsed query asts, results are stored in a map that has a @@ -16,6 +17,7 @@ class Results { #currentAstSelector #initialItems #inventory + #outdatedCache = new Map() #pendingCombinator #results = new Map() #targetNode @@ -28,6 +30,9 @@ class Results { this.currentResults = this.#initialItems + // We get this when first called and need to pass it to pacote + this.flatOptions = opts.flatOptions || {} + // reset by rootAstNode walker this.currentAstNode = opts.rootAstNode } @@ -58,6 +63,7 @@ class Results { if (firstParsed) { return this.#initialItems } + if (this.currentAstNode.prev().type === 'combinator') { return this.#inventory } @@ -125,7 +131,7 @@ class Results { } // pseudo selectors (prefixed with :) - pseudoType () { + async pseudoType () { const pseudoFn = `${this.currentAstNode.value.slice(1)}Pseudo` if (!this[pseudoFn]) { throw Object.assign( @@ -134,7 +140,7 @@ class Results { { code: 'EQUERYNOPSEUDO' } ) } - const nextResults = this[pseudoFn]() + const nextResults = await this[pseudoFn]() this.processPendingCombinator(nextResults) } @@ -195,11 +201,12 @@ class Results { return this.initialItems.filter(node => node.extraneous) } - hasPseudo () { + async hasPseudo () { const found = [] for (const item of this.initialItems) { - const res = retrieveNodesFromParsedAst({ - // This is the one time initialItems differs from inventory + // This is the one time initialItems differs from inventory + const res = await retrieveNodesFromParsedAst({ + flatOptions: this.flatOptions, initialItems: [item], inventory: this.#inventory, rootAstNode: this.currentAstNode.nestedNode, @@ -225,8 +232,9 @@ class Results { return found } - isPseudo () { - const res = retrieveNodesFromParsedAst({ + async isPseudo () { + const res = await retrieveNodesFromParsedAst({ + flatOptions: this.flatOptions, initialItems: this.initialItems, inventory: this.#inventory, rootAstNode: this.currentAstNode.nestedNode, @@ -251,8 +259,9 @@ class Results { }, []) } - notPseudo () { - const res = retrieveNodesFromParsedAst({ + async notPseudo () { + const res = await retrieveNodesFromParsedAst({ + flatOptions: this.flatOptions, initialItems: this.initialItems, inventory: this.#inventory, rootAstNode: this.currentAstNode.nestedNode, @@ -422,6 +431,135 @@ class Results { dedupedPseudo () { return this.initialItems.filter(node => node.target.edgesIn.size > 1) } + + async outdatedPseudo () { + const { outdatedKind = 'any' } = this.currentAstNode + + // filter the initialItems + // NOTE: this uses a Promise.all around a map without in-line concurrency handling + // since the only async action taken is retrieving the packument, which is limited + // based on the max-sockets config in make-fetch-happen + const initialResults = await Promise.all(this.initialItems.map(async (node) => { + // the root can't be outdated, skip it + if (node.isProjectRoot) { + return false + } + + // we cache the promise representing the full versions list, this helps reduce the + // number of requests we send by keeping population of the cache in a single tick + // making it less likely that multiple requests for the same package will be inflight + if (!this.#outdatedCache.has(node.name)) { + this.#outdatedCache.set(node.name, getPackageVersions(node.name, this.flatOptions)) + } + const availableVersions = await this.#outdatedCache.get(node.name) + + // we attach _all_ versions to the queryContext to allow consumers to do their own + // filtering and comparisons + node.queryContext.versions = availableVersions + + // next we further reduce the set to versions that are greater than the current one + const greaterVersions = availableVersions.filter((available) => { + return semver.gt(available, node.version) + }) + + // no newer versions than the current one, drop this node from the result set + if (!greaterVersions.length) { + return false + } + + // if we got here, we know that newer versions exist, if the kind is 'any' we're done + if (outdatedKind === 'any') { + return node + } + + // look for newer versions that differ from current by a specific part of the semver version + if (['major', 'minor', 'patch'].includes(outdatedKind)) { + // filter the versions greater than our current one based on semver.diff + const filteredVersions = greaterVersions.filter((version) => { + return semver.diff(node.version, version) === outdatedKind + }) + + // no available versions are of the correct diff type + if (!filteredVersions.length) { + return false + } + + return node + } + + // look for newer versions that satisfy at least one edgeIn to this node + if (outdatedKind === 'in-range') { + const inRangeContext = [] + for (const edge of node.edgesIn) { + const inRangeVersions = greaterVersions.filter((version) => { + return semver.satisfies(version, edge.spec) + }) + + // this edge has no in-range candidates, just move on + if (!inRangeVersions.length) { + continue + } + + inRangeContext.push({ + from: edge.from.location, + versions: inRangeVersions, + }) + } + + // if we didn't find at least one match, drop this node + if (!inRangeContext.length) { + return false + } + + // now add to the context each version that is in-range for each edgeIn + node.queryContext.outdated = { + ...node.queryContext.outdated, + inRange: inRangeContext, + } + + return node + } + + // look for newer versions that _do not_ satisfy at least one edgeIn + if (outdatedKind === 'out-of-range') { + const outOfRangeContext = [] + for (const edge of node.edgesIn) { + const outOfRangeVersions = greaterVersions.filter((version) => { + return !semver.satisfies(version, edge.spec) + }) + + // this edge has no out-of-range candidates, skip it + if (!outOfRangeVersions.length) { + continue + } + + outOfRangeContext.push({ + from: edge.from.location, + versions: outOfRangeVersions, + }) + } + + // if we didn't add at least one thing to the context, this node is not a match + if (!outOfRangeContext.length) { + return false + } + + // attach the out-of-range context to the node + node.queryContext.outdated = { + ...node.queryContext.outdated, + outOfRange: outOfRangeContext, + } + + return node + } + + // any other outdatedKind is unknown and will never match + return false + })) + + // return an array with the holes for non-matching nodes removed + return initialResults.filter(Boolean) + } } // operators for attribute selectors @@ -622,7 +760,41 @@ const combinators = { }, } -const retrieveNodesFromParsedAst = (opts) => { +// get a list of available versions of a package filtered to respect --before +// NOTE: this runs over each node and should not throw +const getPackageVersions = async (name, opts) => { + let packument + try { + packument = await pacote.packument(name, { + ...opts, + fullMetadata: false, // we only need the corgi + }) + } catch (err) { + // if the fetch fails, log a warning and pretend there are no versions + log.warn('query', `could not retrieve packument for ${name}: ${err.message}`) + return [] + } + + // start with a sorted list of all versions (lowest first) + let candidates = Object.keys(packument.versions).sort(semver.compare) + + // if the packument has a time property, and the user passed a before flag, then + // we filter this list down to only those versions that existed before the specified date + if (packument.time && opts.before) { + candidates = candidates.filter((version) => { + // this version isn't found in the times at all, drop it + if (!packument.time[version]) { + return false + } + + return Date.parse(packument.time[version]) <= opts.before + }) + } + + return candidates +} + +const retrieveNodesFromParsedAst = async (opts) => { // when we first call this it's the parsed query. all other times it's // results.currentNode.nestedNode const rootAstNode = opts.rootAstNode @@ -633,7 +805,13 @@ const retrieveNodesFromParsedAst = (opts) => { const results = new Results(opts) + const astNodeQueue = new Set() + // walk is sync, so we have to build up our async functions and then await them later rootAstNode.walk((nextAstNode) => { + astNodeQueue.add(nextAstNode) + }) + + for (const nextAstNode of astNodeQueue) { // This is the only place we reset currentAstNode results.currentAstNode = nextAstNode const updateFn = `${results.currentAstNode.type}Type` @@ -643,23 +821,24 @@ const retrieveNodesFromParsedAst = (opts) => { { code: 'EQUERYNOSELECTOR' } ) } - results[updateFn]() - }) + await results[updateFn]() + } return results.collect(rootAstNode) } // We are keeping this async in the event that we do add async operators, we // won't have to have a breaking change on this function signature. -const querySelectorAll = async (targetNode, query) => { +const querySelectorAll = async (targetNode, query, flatOptions) => { // This never changes ever we just pass it around. But we can't scope it to // this whole file if we ever want to support concurrent calls to this // function. const inventory = [...targetNode.root.inventory.values()] // res is a Set of items returned for each parsed css ast selector - const res = retrieveNodesFromParsedAst({ + const res = await retrieveNodesFromParsedAst({ initialItems: inventory, inventory, + flatOptions, rootAstNode: parser(query), targetNode, }) diff --git a/workspaces/arborist/package.json b/workspaces/arborist/package.json index 4c685676da09a..58a156da8ce6b 100644 --- a/workspaces/arborist/package.json +++ b/workspaces/arborist/package.json @@ -11,7 +11,7 @@ "@npmcli/name-from-folder": "^1.0.1", "@npmcli/node-gyp": "^2.0.0", "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", + "@npmcli/query": "^2.0.0", "@npmcli/run-script": "^4.1.3", "bin-links": "^3.0.3", "cacache": "^16.1.3", diff --git a/workspaces/arborist/tap-snapshots/test/link.js.test.cjs b/workspaces/arborist/tap-snapshots/test/link.js.test.cjs index 71d4414c33c56..adffc182b23b0 100644 --- a/workspaces/arborist/tap-snapshots/test/link.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/link.js.test.cjs @@ -26,6 +26,7 @@ Link { "optional": true, "path": "/home/user/some/other/path", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/some/kind/of/path", "sourceReference": null, "tops": Set {}, @@ -70,6 +71,7 @@ exports[`test/link.js TAP > instantiate without providing target 1`] = ` "optional": true, "path": "/home/user/projects/some/kind/of/path", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/some/kind/of/path", "resolved": null, "sourceReference": null, @@ -83,6 +85,7 @@ exports[`test/link.js TAP > instantiate without providing target 1`] = ` "optional": true, "path": "/home/user/some/other/path", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/some/kind/of/path", "sourceReference": null, "tops": Set { @@ -109,6 +112,7 @@ exports[`test/link.js TAP > instantiate without providing target 1`] = ` "optional": true, "path": "/home/user/projects/some/kind/of/path", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/some/kind/of/path", "resolved": null, "sourceReference": null, diff --git a/workspaces/arborist/tap-snapshots/test/node.js.test.cjs b/workspaces/arborist/tap-snapshots/test/node.js.test.cjs index 08705aca6f8eb..5c7918a762364 100644 --- a/workspaces/arborist/tap-snapshots/test/node.js.test.cjs +++ b/workspaces/arborist/tap-snapshots/test/node.js.test.cjs @@ -42,6 +42,7 @@ exports[`test/node.js TAP basic instantiation > just a lone root node 1`] = ` }, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -215,6 +216,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/foo", "sourceReference": null, "tops": Set {}, @@ -239,6 +241,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/unknown", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/unknown", "sourceReference": null, "tops": Set {}, @@ -299,6 +302,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/foo", "sourceReference": null, "tops": Set {}, @@ -309,6 +313,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/foo", "resolved": null, "sourceReference": null, @@ -350,6 +355,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/unknown", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/unknown", "sourceReference": null, "tops": Set {}, @@ -360,6 +366,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/unknown", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/unknown", "resolved": null, "sourceReference": null, @@ -395,6 +402,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/foo", "sourceReference": null, "tops": Set {}, @@ -439,6 +447,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/foo", "sourceReference": null, "tops": Set {}, @@ -449,6 +458,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/foo", "resolved": null, "sourceReference": null, @@ -474,6 +484,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/unknown", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/unknown", "sourceReference": null, "tops": Set {}, @@ -514,6 +525,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/unknown", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/unknown", "sourceReference": null, "tops": Set {}, @@ -524,6 +536,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/unknown", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/unknown", "resolved": null, "sourceReference": null, @@ -537,6 +550,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root", "resolved": null, "sourceReference": null, @@ -581,6 +595,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/foo", "sourceReference": null, "tops": Set {}, @@ -591,6 +606,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/foo", "resolved": null, "sourceReference": null, @@ -632,6 +648,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/node_modules/unknown", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/unknown", "sourceReference": null, "tops": Set {}, @@ -642,6 +659,7 @@ exports[`test/node.js TAP set workspaces > should setup edges out for each works "optional": true, "path": "/home/user/projects/workspaces_root/unknown", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/workspaces_root/unknown", "resolved": null, "sourceReference": null, @@ -678,6 +696,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -713,6 +732,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -763,6 +783,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -780,6 +801,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -817,6 +839,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -847,6 +870,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -877,6 +901,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -907,6 +932,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -933,6 +959,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -982,6 +1009,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -992,6 +1020,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -1057,6 +1086,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -1092,6 +1122,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -1142,6 +1173,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -1159,6 +1191,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -1189,6 +1222,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -1226,6 +1260,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -1256,6 +1291,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -1286,6 +1322,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -1316,6 +1353,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -1342,6 +1380,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -1391,6 +1430,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -1401,6 +1441,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -1428,6 +1469,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -1463,6 +1505,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -1488,6 +1531,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -1500,6 +1544,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -1529,6 +1574,7 @@ exports[`test/node.js TAP testing with dep tree with meta > add new meta under p "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -1575,6 +1621,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -1625,6 +1672,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -1642,6 +1690,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -1679,6 +1728,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -1709,6 +1759,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -1739,6 +1790,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -1769,6 +1821,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -1795,6 +1848,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -1870,6 +1924,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -1920,6 +1975,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -1937,6 +1993,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -1967,6 +2024,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -2004,6 +2062,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -2041,6 +2100,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -2071,6 +2131,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -2101,6 +2162,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -2131,6 +2193,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -2157,6 +2220,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -2170,6 +2234,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -2199,6 +2264,7 @@ exports[`test/node.js TAP testing with dep tree with meta > initial load with so "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -2257,6 +2323,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -2274,6 +2341,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -2311,6 +2379,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -2341,6 +2410,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -2371,6 +2441,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -2401,6 +2472,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -2427,6 +2499,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -2467,6 +2540,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -2554,6 +2628,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -2571,6 +2646,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -2601,6 +2677,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -2638,6 +2715,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -2668,6 +2746,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -2698,6 +2777,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -2728,6 +2808,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -2754,6 +2835,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -2794,6 +2876,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -2807,6 +2890,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -2836,6 +2920,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move meta to top lev "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -2894,6 +2979,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -2911,6 +2997,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -2945,6 +3032,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -2975,6 +3063,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -3005,6 +3094,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -3035,6 +3125,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -3061,6 +3152,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -3088,6 +3180,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -3141,6 +3234,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -3151,6 +3245,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -3238,6 +3333,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -3255,6 +3351,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -3285,6 +3382,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -3319,6 +3417,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -3349,6 +3448,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -3379,6 +3479,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -3409,6 +3510,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -3435,6 +3537,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -3460,6 +3563,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -3486,6 +3590,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -3539,6 +3644,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -3549,6 +3655,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -3562,6 +3669,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -3591,6 +3699,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -3649,6 +3758,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -3666,6 +3776,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -3700,6 +3811,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -3730,6 +3842,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -3760,6 +3873,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -3790,6 +3904,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -3816,6 +3931,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -3843,6 +3959,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -3896,6 +4013,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -3906,6 +4024,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -3993,6 +4112,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -4010,6 +4130,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -4040,6 +4161,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -4074,6 +4196,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -4104,6 +4227,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -4134,6 +4258,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -4164,6 +4289,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -4190,6 +4316,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -4215,6 +4342,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -4241,6 +4369,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -4294,6 +4423,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -4304,6 +4434,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -4317,6 +4448,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -4346,6 +4478,7 @@ exports[`test/node.js TAP testing with dep tree with meta > move new meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -4382,6 +4515,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -4417,6 +4551,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -4467,6 +4602,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -4484,6 +4620,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -4521,6 +4658,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -4551,6 +4689,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -4581,6 +4720,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -4611,6 +4751,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -4637,6 +4778,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -4686,6 +4828,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -4696,6 +4839,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -4761,6 +4905,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -4796,6 +4941,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -4846,6 +4992,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -4863,6 +5010,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -4893,6 +5041,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -4930,6 +5079,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -4960,6 +5110,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -4990,6 +5141,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -5020,6 +5172,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -5046,6 +5199,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -5095,6 +5249,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -5105,6 +5260,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -5132,6 +5288,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -5167,6 +5324,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -5192,6 +5350,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -5204,6 +5363,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -5233,6 +5393,7 @@ exports[`test/node.js TAP testing with dep tree without meta > add new meta unde "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -5279,6 +5440,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -5329,6 +5491,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -5346,6 +5509,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -5383,6 +5547,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -5413,6 +5578,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -5443,6 +5609,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -5473,6 +5640,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -5499,6 +5667,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -5574,6 +5743,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -5624,6 +5794,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -5641,6 +5812,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -5671,6 +5843,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -5708,6 +5881,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -5745,6 +5919,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -5775,6 +5950,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -5805,6 +5981,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -5835,6 +6012,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -5861,6 +6039,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -5874,6 +6053,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -5903,6 +6083,7 @@ exports[`test/node.js TAP testing with dep tree without meta > initial load with "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -5961,6 +6142,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -5978,6 +6160,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -6015,6 +6198,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -6045,6 +6229,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -6075,6 +6260,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -6105,6 +6291,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -6131,6 +6318,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -6171,6 +6359,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -6258,6 +6447,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -6275,6 +6465,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -6305,6 +6496,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -6342,6 +6534,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -6372,6 +6565,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -6402,6 +6596,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -6432,6 +6627,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -6458,6 +6654,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -6498,6 +6695,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "meta", "sourceReference": null, @@ -6511,6 +6709,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -6540,6 +6739,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move meta to top "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -6598,6 +6798,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -6615,6 +6816,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -6649,6 +6851,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -6679,6 +6882,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -6709,6 +6913,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -6739,6 +6944,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -6765,6 +6971,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -6792,6 +6999,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -6845,6 +7053,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -6855,6 +7064,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -6942,6 +7152,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -6959,6 +7170,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -6989,6 +7201,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -7023,6 +7236,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -7053,6 +7267,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -7083,6 +7298,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -7113,6 +7329,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -7139,6 +7356,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -7164,6 +7382,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -7190,6 +7409,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -7243,6 +7463,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -7253,6 +7474,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -7266,6 +7488,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -7295,6 +7518,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -7353,6 +7577,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -7370,6 +7595,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -7404,6 +7630,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -7434,6 +7661,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -7464,6 +7692,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -7494,6 +7723,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -7520,6 +7750,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -7547,6 +7778,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -7600,6 +7832,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -7610,6 +7843,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -7697,6 +7931,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -7714,6 +7949,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod", "resolved": "prod", "sourceReference": null, @@ -7744,6 +7980,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, @@ -7778,6 +8015,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/bundled", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/bundled", "resolved": "bundled", "sourceReference": null, @@ -7808,6 +8046,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/dev", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/dev", "resolved": "dev", "sourceReference": null, @@ -7838,6 +8077,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/optional", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/optional", "resolved": "opt", "sourceReference": null, @@ -7868,6 +8108,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/peer", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/peer", "resolved": "peer", "sourceReference": null, @@ -7894,6 +8135,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/extraneous", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/extraneous", "resolved": "extraneous", "sourceReference": null, @@ -7919,6 +8161,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -7945,6 +8188,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -7998,6 +8242,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta/node_modules/metameta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "sourceReference": null, "tops": Set {}, @@ -8008,6 +8253,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/meta", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/meta", "resolved": "newMeta", "sourceReference": null, @@ -8021,6 +8267,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root", "resolved": null, "sourceReference": null, @@ -8050,6 +8297,7 @@ exports[`test/node.js TAP testing with dep tree without meta > move new meta to "optional": true, "path": "/home/user/projects/root/node_modules/prod/foo", "peer": true, + "queryContext": Object {}, "realpath": "/home/user/projects/root/node_modules/prod/foo", "resolved": null, "sourceReference": null, diff --git a/workspaces/arborist/test/query-selector-all.js b/workspaces/arborist/test/query-selector-all.js index 6ad5a69565e67..2adf526dee9a2 100644 --- a/workspaces/arborist/test/query-selector-all.js +++ b/workspaces/arborist/test/query-selector-all.js @@ -1,5 +1,6 @@ 'use strict' +const nock = require('nock') const t = require('tap') const Arborist = require('..') @@ -7,8 +8,8 @@ const q = require('../lib/query-selector-all.js') // test helper that spits out pkgid for readability // and deduplicates link/target from results -const querySelectorAll = async (tree, query) => { - const res = await q(tree, query) +const querySelectorAll = async (tree, query, options) => { + const res = await q(tree, query, options) return [...new Set(res.map(i => i.pkgid))] } @@ -36,6 +37,76 @@ t.test('query-selector-all', async t => { └── recur@1.0.0 (recursive production dep of recur, deduped) */ + + const now = Date.now() + const today = new Date(now) + const yesterday = new Date(now - (1000 * 60 * 60 * 24)) + const dayBeforeYesterday = new Date(now - (1000 * 60 * 60 * 24 * 2)) + // @npmcli/abbrev is deliberately left out of this list to cover the case when + // fetching a packument fails + const packumentStubs = { + a: { + '1.0.0': today, + }, + abbrev: { + '1.1.1': dayBeforeYesterday, + '1.2.0': yesterday, + }, + b: { + '1.0.0': today, + }, + bar: { + '1.4.0': dayBeforeYesterday, + '2.0.0': today, + }, + baz: { + // undefined for coverage in --before mode + '1.0.0': undefined, + '1.0.1': yesterday, + }, + 'dash-separated-pkg': { + '1.0.0': dayBeforeYesterday, + '2.0.0': yesterday, + }, + dasher: { + '2.0.0': today, + }, + foo: { + '2.2.2': today, + }, + lorem: { + '1.0.0': today, + }, + moo: { + '3.0.0': today, + }, + recur: { + '1.0.0': today, + }, + sive: { + '1.0.0': today, + }, + } + + nock.disableNetConnect() + t.teardown(() => { + nock.enableNetConnect() + }) + + for (const [pkg, versions] of Object.entries(packumentStubs)) { + nock('https://registry.npmjs.org') + .persist() + .get(`/${pkg}`) + .reply(200, { + time: Object.entries(versions).reduce((final, [version, time]) => { + return { ...final, [version]: time } + }, {}), + versions: Object.keys(versions).reduce((final, next) => { + return { ...final, [next]: {} } + }, {}), + }) + } + const path = t.testdir({ node_modules: { '@npmcli': { @@ -288,13 +359,22 @@ t.test('query-selector-all', async t => { ], ':scope > *') const runSpecParsing = async testCase => { - for (const [selector, expected] of testCase) { - t.test(selector, async t => { - const res = await querySelectorAll(tree, selector) + for (const [selector, expected, options = {}] of testCase) { + let title = selector + if (options.before) { + const friendlyTime = options.before === today + ? 'today' + : options.before === yesterday + ? 'yesterday' + : options.before + title += ` before ${friendlyTime}` + } + t.test(title, async t => { + const res = await querySelectorAll(tree, selector, options) t.same( res, expected, - selector + title ) }) } @@ -668,6 +748,68 @@ t.test('query-selector-all', async t => { 'moo@3.0.0', ]], + // outdated pseudo + [':outdated', [ + 'abbrev@1.1.1', // 1.2.0 is available + 'baz@1.0.0', // 1.0.1 is available + 'dash-separated-pkg@1.0.0', // 2.0.0 is available + 'bar@1.4.0', // 2.0.0 is available + ]], + [':outdated(any)', [ + 'abbrev@1.1.1', // 1.2.0 is available + 'baz@1.0.0', // 1.0.1 is available + 'dash-separated-pkg@1.0.0', // 2.0.0 is available + 'bar@1.4.0', // 2.0.0 is available + ]], + [':outdated(major)', [ + 'dash-separated-pkg@1.0.0', // 2.0.0 is available + 'bar@1.4.0', // 2.0.0 is available + ]], + [':outdated(minor)', [ + 'abbrev@1.1.1', // 1.2.0 is available + ]], + [':outdated(patch)', [ + 'baz@1.0.0', // 1.0.1 is available + ]], + [':outdated(in-range)', [ + 'abbrev@1.1.1', // 1.2.0 is available and in-range + 'baz@1.0.0', // 1.0.1 is available and in-range + ]], + [':outdated(out-of-range)', [ + 'dash-separated-pkg@1.0.0', // 2.0.0 is available + 'bar@1.4.0', // 2.0.0 is available and out-of-range + ]], + [':outdated(nonsense)', []], // invalid, no results ever + + // :outdated combined with --before + [':outdated', [ + 'abbrev@1.1.1', // 1.2.0 is available and published yesterday + 'baz@1.0.0', // 1.0.1 is available and published yesterday + 'dash-separated-pkg@1.0.0', // 2.0.0 is available and published yesterday + ], { before: yesterday }], + [':outdated(any)', [ + 'abbrev@1.1.1', // 1.2.0 is available and published yesterday + 'baz@1.0.0', // 1.0.1 is available and published yesterday + 'dash-separated-pkg@1.0.0', // 2.0.0 is available and published yesterday + ], { before: yesterday }], + [':outdated(major)', [ + 'dash-separated-pkg@1.0.0', // 2.0.0 is available and published yesterday + ], { before: yesterday }], + [':outdated(minor)', [ + 'abbrev@1.1.1', // 1.2.0 is available and published yesterday + ], { before: yesterday }], + [':outdated(patch)', [ + 'baz@1.0.0', // 1.0.1 is available and published yesterday + ], { before: yesterday }], + [':outdated(in-range)', [ + 'abbrev@1.1.1', // 1.2.0 is available, in-range and published yesterday + 'baz@1.0.0', // 1.0.1 is available, in-range and published yesterday + ], { before: yesterday }], + [':outdated(out-of-range)', [ + 'dash-separated-pkg@1.0.0', // 2.0.0 is available, out-of-range and published yesterday + ], { before: yesterday }], + [':outdated(nonsense)', [], { before: yesterday }], // again, no results here ever + // attr pseudo [':attr([name=dasher])', ['dasher@2.0.0']], [':attr(dependencies, [bar="^1.0.0"])', ['foo@2.2.2']],