style: update

This commit is contained in:
zkochan
2017-11-10 23:14:00 +02:00
parent ab9ca8ae8d
commit 86e06fb8a6
5 changed files with 85 additions and 39 deletions

View File

@@ -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": {

View File

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

View File

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

View File

@@ -14,14 +14,11 @@
"module": "commonjs",
"moduleResolution": "node"
},
"filesGlob": [
"include": [
"src/**/*.ts",
"typings/**/*.d.ts"
],
"atom": {
"rewriteTsconfig": true
},
"files": [
"src/index.ts"
]
}
}

View File

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