mirror of
https://github.com/pnpm/pnpm.git
synced 2026-05-04 14:08:44 -04:00
style: update
This commit is contained in:
@@ -8,7 +8,9 @@
|
||||
"lib"
|
||||
],
|
||||
"scripts": {
|
||||
"test": "preview && ts-node test && mos t",
|
||||
"fix": "tslint -c tslint.json --project . --fix",
|
||||
"lint": "tslint -c tslint.json --project .",
|
||||
"test": "npm run lint && preview && ts-node test && mos t",
|
||||
"prepublishOnly": "tsc",
|
||||
"tsc": "tsc",
|
||||
"md": "preview && tsc && mos"
|
||||
@@ -48,6 +50,7 @@
|
||||
"pnpm-logger": "^0.6.2",
|
||||
"tape": "^4.7.0",
|
||||
"ts-node": "^3.3.0",
|
||||
"tslint": "^5.8.0",
|
||||
"typescript": "^2.4.1"
|
||||
},
|
||||
"mos": {
|
||||
|
||||
@@ -12,6 +12,7 @@ devDependencies:
|
||||
pnpm-logger: 0.6.2
|
||||
tape: 4.8.0
|
||||
ts-node: 3.3.0
|
||||
tslint: 5.8.0
|
||||
typescript: 2.5.3
|
||||
packages:
|
||||
/@pnpm/exec/1.1.1:
|
||||
@@ -574,6 +575,10 @@ packages:
|
||||
dev: true
|
||||
resolution:
|
||||
integrity: sha1-EoGcZPr5VEbsCuB/5sr7brNwiyI=
|
||||
/commander/2.11.0:
|
||||
dev: true
|
||||
resolution:
|
||||
integrity: sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==
|
||||
/concat-map/0.0.1:
|
||||
resolution:
|
||||
integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||
@@ -2314,6 +2319,12 @@ packages:
|
||||
dev: true
|
||||
resolution:
|
||||
integrity: sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==
|
||||
/resolve/1.5.0:
|
||||
dependencies:
|
||||
path-parse: 1.0.5
|
||||
dev: true
|
||||
resolution:
|
||||
integrity: sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==
|
||||
/resumer/0.0.0:
|
||||
dependencies:
|
||||
through: 2.3.8
|
||||
@@ -2754,6 +2765,38 @@ packages:
|
||||
dev: true
|
||||
resolution:
|
||||
integrity: sha1-aw6DdgA9evGGT434+J3QBZ/80DI=
|
||||
/tslib/1.8.0:
|
||||
dev: true
|
||||
resolution:
|
||||
integrity: sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==
|
||||
/tslint/5.8.0:
|
||||
dependencies:
|
||||
babel-code-frame: 6.26.0
|
||||
builtin-modules: 1.1.1
|
||||
chalk: 2.3.0
|
||||
commander: 2.11.0
|
||||
diff: 3.4.0
|
||||
glob: 7.1.2
|
||||
minimatch: 3.0.4
|
||||
resolve: 1.5.0
|
||||
semver: 5.4.1
|
||||
tslib: 1.8.0
|
||||
tsutils: 2.12.2
|
||||
dev: true
|
||||
engines:
|
||||
node: '>=4.1.2'
|
||||
peerDependencies:
|
||||
typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev'
|
||||
resolution:
|
||||
integrity: sha1-H0mtWy53x2w69N3K5VKuTjYS6xM=
|
||||
/tsutils/2.12.2:
|
||||
dependencies:
|
||||
tslib: 1.8.0
|
||||
dev: true
|
||||
peerDependencies:
|
||||
typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >= 2.4.0-dev || >= 2.5.0-dev || >= 2.6.0-dev || >= 2.7.0-dev || >= 2.8.0-dev'
|
||||
resolution:
|
||||
integrity: sha1-rVikhl0X7D3bZjG2ylO+FKVlb/M=
|
||||
/typescript/2.5.3:
|
||||
dev: true
|
||||
engines:
|
||||
@@ -2957,4 +3000,5 @@ specifiers:
|
||||
semver: ^5.3.0
|
||||
tape: ^4.7.0
|
||||
ts-node: ^3.3.0
|
||||
tslint: ^5.8.0
|
||||
typescript: ^2.4.1
|
||||
|
||||
66
src/index.ts
66
src/index.ts
@@ -1,18 +1,18 @@
|
||||
import assert = require('assert')
|
||||
import {refToAbsolute, refToRelative} from 'dependency-path'
|
||||
import {
|
||||
readPrivate,
|
||||
Shrinkwrap,
|
||||
ResolvedPackages,
|
||||
Shrinkwrap,
|
||||
} from 'pnpm-shrinkwrap'
|
||||
import semver = require('semver')
|
||||
import {refToAbsolute, refToRelative} from 'dependency-path'
|
||||
import assert = require('assert')
|
||||
|
||||
export type PackageSelector = string | {
|
||||
name: string,
|
||||
range: string,
|
||||
}
|
||||
|
||||
export type PackageNode = {
|
||||
export interface PackageNode {
|
||||
pkg: {
|
||||
name: string,
|
||||
version: string,
|
||||
@@ -23,13 +23,13 @@ export type PackageNode = {
|
||||
circular?: true,
|
||||
}
|
||||
|
||||
export function forPackages (
|
||||
export function forPackages(
|
||||
packages: PackageSelector[],
|
||||
projectPath: string,
|
||||
opts?: {
|
||||
depth: number,
|
||||
only?: 'dev' | 'prod',
|
||||
}
|
||||
},
|
||||
) {
|
||||
assert(packages, 'packages should be defined')
|
||||
if (!packages.length) return []
|
||||
@@ -37,59 +37,59 @@ export function forPackages (
|
||||
return dependenciesHierarchy(projectPath, packages, opts)
|
||||
}
|
||||
|
||||
export default function (
|
||||
export default function(
|
||||
projectPath: string,
|
||||
opts?: {
|
||||
depth: number,
|
||||
only?: 'dev' | 'prod',
|
||||
}
|
||||
},
|
||||
) {
|
||||
return dependenciesHierarchy(projectPath, [], opts)
|
||||
}
|
||||
|
||||
async function dependenciesHierarchy (
|
||||
async function dependenciesHierarchy(
|
||||
projectPath: string,
|
||||
searched: PackageSelector[],
|
||||
opts?: {
|
||||
maybeOpts?: {
|
||||
depth: number,
|
||||
only?: 'dev' | 'prod',
|
||||
}
|
||||
},
|
||||
): Promise<PackageNode[]> {
|
||||
const _opts = Object.assign({}, {
|
||||
const opts = Object.assign({}, {
|
||||
depth: 0,
|
||||
only: undefined,
|
||||
}, opts)
|
||||
}, maybeOpts)
|
||||
const shrinkwrap = await readPrivate(projectPath, {ignoreIncompatible: false})
|
||||
|
||||
if (!shrinkwrap) return []
|
||||
|
||||
const topDeps = getTopDependencies(shrinkwrap, _opts)
|
||||
const topDeps = getTopDependencies(shrinkwrap, opts)
|
||||
|
||||
if (!topDeps) return []
|
||||
|
||||
const getChildrenTree = getTree.bind(null, {
|
||||
currentDepth: 1,
|
||||
maxDepth: _opts.depth,
|
||||
prod: _opts.only === 'prod',
|
||||
searched,
|
||||
maxDepth: opts.depth,
|
||||
prod: opts.only === 'prod',
|
||||
registry: shrinkwrap.registry,
|
||||
searched,
|
||||
}, shrinkwrap.packages)
|
||||
const result: PackageNode[] = []
|
||||
Object.keys(topDeps).forEach(depName => {
|
||||
Object.keys(topDeps).forEach((depName) => {
|
||||
const relativeId = refToRelative(topDeps[depName], depName)
|
||||
const pkgPath = refToAbsolute(topDeps[depName], depName, shrinkwrap.registry)
|
||||
const pkg = {
|
||||
name: depName,
|
||||
version: topDeps[depName],
|
||||
path: pkgPath,
|
||||
version: topDeps[depName],
|
||||
}
|
||||
const dependencies = getChildrenTree([relativeId], relativeId)
|
||||
let newEntry: PackageNode | null = null
|
||||
const matchedSearched = searched.length && matches(searched, pkg)
|
||||
if (dependencies.length) {
|
||||
newEntry = {
|
||||
pkg,
|
||||
dependencies,
|
||||
pkg,
|
||||
}
|
||||
} else if (!searched.length || matches(searched, pkg)) {
|
||||
newEntry = {pkg}
|
||||
@@ -104,11 +104,11 @@ async function dependenciesHierarchy (
|
||||
return result
|
||||
}
|
||||
|
||||
function getTopDependencies (
|
||||
function getTopDependencies(
|
||||
shrinkwrap: Shrinkwrap,
|
||||
opts: {
|
||||
only?: 'dev' | 'prod',
|
||||
}
|
||||
},
|
||||
) {
|
||||
switch (opts.only) {
|
||||
case 'prod':
|
||||
@@ -119,12 +119,12 @@ function getTopDependencies (
|
||||
return Object.assign({},
|
||||
shrinkwrap.dependencies,
|
||||
shrinkwrap.devDependencies,
|
||||
shrinkwrap.optionalDependencies
|
||||
shrinkwrap.optionalDependencies,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
function getTree (
|
||||
function getTree(
|
||||
opts: {
|
||||
currentDepth: number,
|
||||
maxDepth: number,
|
||||
@@ -134,7 +134,7 @@ function getTree (
|
||||
},
|
||||
packages: ResolvedPackages,
|
||||
keypath: string[],
|
||||
parentId: string
|
||||
parentId: string,
|
||||
): PackageNode[] {
|
||||
if (opts.currentDepth > opts.maxDepth || !packages[parentId]) return []
|
||||
|
||||
@@ -142,7 +142,7 @@ function getTree (
|
||||
? packages[parentId].dependencies
|
||||
: Object.assign({},
|
||||
packages[parentId].dependencies,
|
||||
packages[parentId].optionalDependencies
|
||||
packages[parentId].optionalDependencies,
|
||||
)
|
||||
|
||||
if (!deps) return []
|
||||
@@ -151,14 +151,14 @@ function getTree (
|
||||
currentDepth: opts.currentDepth + 1,
|
||||
}), packages)
|
||||
|
||||
let result: PackageNode[] = []
|
||||
Object.keys(deps).forEach(depName => {
|
||||
const result: PackageNode[] = []
|
||||
Object.keys(deps).forEach((depName) => {
|
||||
const pkgPath = refToAbsolute(deps[depName], depName, opts.registry)
|
||||
const relativeId = refToRelative(deps[depName], depName)
|
||||
const pkg = {
|
||||
name: depName,
|
||||
version: deps[depName],
|
||||
path: pkgPath,
|
||||
version: deps[depName],
|
||||
}
|
||||
const circular = keypath.indexOf(relativeId) !== -1
|
||||
const dependencies = circular ? [] : getChildrenTree(keypath.concat([relativeId]), relativeId)
|
||||
@@ -166,8 +166,8 @@ function getTree (
|
||||
const matchedSearched = opts.searched.length && matches(opts.searched, pkg)
|
||||
if (dependencies.length) {
|
||||
newEntry = {
|
||||
pkg,
|
||||
dependencies,
|
||||
pkg,
|
||||
}
|
||||
} else if (!opts.searched.length || matchedSearched) {
|
||||
newEntry = {pkg}
|
||||
@@ -185,11 +185,11 @@ function getTree (
|
||||
return result
|
||||
}
|
||||
|
||||
function matches (
|
||||
function matches(
|
||||
searched: PackageSelector[],
|
||||
pkg: {name: string, version: string}
|
||||
pkg: {name: string, version: string},
|
||||
) {
|
||||
return searched.some(searchedPkg => {
|
||||
return searched.some((searchedPkg) => {
|
||||
if (typeof searchedPkg === 'string') {
|
||||
return pkg.name === searchedPkg
|
||||
}
|
||||
|
||||
@@ -14,14 +14,11 @@
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node"
|
||||
},
|
||||
"filesGlob": [
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"typings/**/*.d.ts"
|
||||
],
|
||||
"atom": {
|
||||
"rewriteTsconfig": true
|
||||
},
|
||||
"files": [
|
||||
"src/index.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"extends": "tslint:recommended",
|
||||
"rules": {
|
||||
"curly": false,
|
||||
"eofline": false,
|
||||
@@ -15,6 +16,7 @@
|
||||
"no-use-before-declare": true,
|
||||
"no-var-requires": true,
|
||||
"no-require-imports": false,
|
||||
"interface-name": [true, "never-prefix"],
|
||||
"one-line": [true,
|
||||
"check-else",
|
||||
"check-whitespace",
|
||||
|
||||
Reference in New Issue
Block a user