feat: returned package IDs

This commit is contained in:
zkochan
2017-07-15 01:13:07 +03:00
parent e5b175f545
commit 0c4f48882c
3 changed files with 39 additions and 10 deletions

View File

@@ -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

View File

@@ -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,

View File

@@ -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',
}
}