diff --git a/shrinkwrap.yaml b/shrinkwrap.yaml index 8ace26fefa..0c2f5ff4e8 100644 --- a/shrinkwrap.yaml +++ b/shrinkwrap.yaml @@ -1,17 +1,17 @@ dependencies: - '@types/node': 6.0.81 + '@types/node': 8.0.13 '@types/semver': 5.3.32 pnpm-shrinkwrap: 3.1.0 semver: 5.3.0 devDependencies: typescript: 2.4.1 packages: - /@types/node/6.0.81: - resolution: - integrity: sha512-KdtXOH8l9O2wwOOX+swjbFx+YW/RJFfI14o6S50+Zy79FK1WFGkzFdDsiuNjrG5L6FaBSKpKzSpWgTvXurbbYg== /@types/node/7.0.34: resolution: integrity: sha512-99ujivDq9tqw3b88xrWqUcHfY3XT+moVhAlMqlN+OdavTxfCRW2X1bRBFcloILRJiIoir+gG3I65jzrpNgF/3g== + /@types/node/8.0.13: + resolution: + integrity: sha512-Y3EAG7VA7NVNbZek/fjJtILnmTk/ZfpJuWZGDBqDZ1dVIxgJJJ82fXPW7pKnqyV9CD/9bcPOCi7eErUqGMHOrA== /@types/ramda/0.0.11: resolution: integrity: sha512-RcraK0229RAIJERTfgoCY/eSbxFEkPlj/TbUUb6aGSS9UfLj1THpt2Uj4uuCJsQrYRQUQB8tFlv7eTTWzE4QjQ== @@ -191,7 +191,7 @@ packages: registry: 'https://registry.npmjs.org/' shrinkwrapVersion: 3 specifiers: - '@types/node': ^6.0.81 + '@types/node': ^8.0.11 '@types/semver': ^5.3.32 pnpm-shrinkwrap: ^3.1.0 semver: ^5.3.0 diff --git a/src/index.ts b/src/index.ts index 5910f6c368..0399de6d53 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,8 @@ import { readPrivate, Shrinkwrap, ResolvedPackages, - getPkgShortId, + refToAbsoluteResolutionLoc, + refToRelativeResolutionLoc, } from 'pnpm-shrinkwrap' import semver = require('semver') @@ -15,6 +16,7 @@ export type PackageNode = { pkg: { name: string, version: string, + resolvedId: string, } dependencies?: PackageNode[], } @@ -45,15 +47,18 @@ export default async function list ( maxDepth: _opts.depth, prod: _opts.only === 'prod', searched: _opts.searched, + registry: shrinkwrap.registry, }, shrinkwrap.packages) const result: PackageNode[] = [] Object.keys(topDeps).forEach(depName => { - const shortId = getPkgShortId(topDeps[depName], depName) + const relativeId = refToRelativeResolutionLoc(topDeps[depName], depName) + const resolvedId = refToAbsoluteResolutionLoc(topDeps[depName], depName, shrinkwrap.registry) const pkg = { + resolvedId, name: depName, version: topDeps[depName], } - const dependencies = getChildrenTree(shortId) + const dependencies = getChildrenTree(relativeId) if (dependencies.length) { result.push({ pkg, @@ -94,6 +99,7 @@ function getTree ( maxDepth: number, prod: boolean, searched: SearchedPackage[], + registry: string, }, packages: ResolvedPackages, parentId: string @@ -115,12 +121,14 @@ function getTree ( let result: PackageNode[] = [] Object.keys(deps).forEach(depName => { - const shortId = getPkgShortId(deps[depName], depName) + const resolvedId = refToAbsoluteResolutionLoc(deps[depName], depName, opts.registry) + const relativeId = refToRelativeResolutionLoc(deps[depName], depName) const pkg = { + resolvedId, name: depName, version: deps[depName], } - const dependencies = getChildrenTree(shortId) + const dependencies = getChildrenTree(relativeId) if (dependencies.length) { result.push({ pkg, diff --git a/test/index.ts b/test/index.ts index d6fafb9258..8eff2489d1 100644 --- a/test/index.ts +++ b/test/index.ts @@ -11,24 +11,28 @@ test('one package depth 0', async t => { { pkg: { name: 'minimatch', + resolvedId: 'registry.npmjs.org/minimatch/3.0.4', version: '3.0.4', } }, { pkg: { name: 'rimraf', + resolvedId: 'registry.npmjs.org/rimraf/2.5.1', version: '2.5.1', }, }, { pkg: { name: 'is-positive', + resolvedId: 'registry.npmjs.org/is-positive/1.0.0', version: '1.0.0', } }, { pkg: { name: 'is-negative', + resolvedId: 'registry.npmjs.org/is-negative/1.0.0', version: '1.0.0', } }, @@ -44,12 +48,14 @@ test('one package depth 1', async t => { { pkg: { name: 'minimatch', + resolvedId: 'registry.npmjs.org/minimatch/3.0.4', version: '3.0.4', }, dependencies: [ { pkg: { name: 'brace-expansion', + resolvedId: 'registry.npmjs.org/brace-expansion/1.1.8', version: '1.1.8', } } @@ -58,12 +64,14 @@ test('one package depth 1', async t => { { pkg: { name: 'rimraf', + resolvedId: 'registry.npmjs.org/rimraf/2.5.1', version: '2.5.1', }, dependencies: [ { pkg: { name: 'glob', + resolvedId: 'registry.npmjs.org/glob/6.0.4', version: '6.0.4', } } @@ -72,12 +80,14 @@ test('one package depth 1', async t => { { pkg: { name: 'is-positive', + resolvedId: 'registry.npmjs.org/is-positive/1.0.0', version: '1.0.0', } }, { pkg: { name: 'is-negative', + resolvedId: 'registry.npmjs.org/is-negative/1.0.0', version: '1.0.0', } }, @@ -93,12 +103,14 @@ test('only prod depth 0', async t => { { pkg: { name: 'minimatch', + resolvedId: 'registry.npmjs.org/minimatch/3.0.4', version: '3.0.4', }, }, { pkg: { name: 'rimraf', + resolvedId: 'registry.npmjs.org/rimraf/2.5.1', version: '2.5.1', }, }, @@ -114,6 +126,7 @@ test('only dev depth 0', async t => { { pkg: { name: 'is-positive', + resolvedId: 'registry.npmjs.org/is-positive/1.0.0', version: '1.0.0', } }, @@ -129,6 +142,7 @@ test('filter 1 package with depth 0', async t => { { pkg: { name: 'rimraf', + resolvedId: 'registry.npmjs.org/rimraf/2.5.1', version: '2.5.1', } }, @@ -148,30 +162,35 @@ test('filter 2 packages with depth 100', async t => { { pkg: { name: 'minimatch', + resolvedId: 'registry.npmjs.org/minimatch/3.0.4', version: '3.0.4', }, }, { pkg: { name: 'rimraf', + resolvedId: 'registry.npmjs.org/rimraf/2.5.1', version: '2.5.1', }, dependencies: [ { pkg: { name: 'glob', + resolvedId: 'registry.npmjs.org/glob/6.0.4', version: '6.0.4', }, dependencies: [ { pkg: { name: 'inflight', + resolvedId: 'registry.npmjs.org/inflight/1.0.6', version: '1.0.6', }, dependencies: [ { pkg: { name: 'once', + resolvedId: 'registry.npmjs.org/once/1.4.0', version: '1.4.0', } } @@ -180,12 +199,14 @@ test('filter 2 packages with depth 100', async t => { { pkg: { name: 'minimatch', + resolvedId: 'registry.npmjs.org/minimatch/3.0.4', version: '3.0.4', } }, { pkg: { name: 'once', + resolvedId: 'registry.npmjs.org/once/1.4.0', version: '1.4.0', } }