pax_global_header00006660000000000000000000000064131130643450014512gustar00rootroot0000000000000052 comment=77a4481aafcdd10729dfda47632d05c339395669 npm-bundled-1.0.3/000077500000000000000000000000001311306434500137205ustar00rootroot00000000000000npm-bundled-1.0.3/.gitignore000066400000000000000000000000521311306434500157050ustar00rootroot00000000000000test/*/ coverage .nyc_output node_modules npm-bundled-1.0.3/README.md000066400000000000000000000031141311306434500151760ustar00rootroot00000000000000# npm-bundled Run this in a node package, and it'll tell you which things in node_modules are bundledDependencies, or transitive dependencies of bundled dependencies. ## USAGE To get the list of deps at the top level that are bundled (or transitive deps of a bundled dep) run this: ```js const bundled = require('npm-bundled') // async version bundled({ path: '/path/to/pkg/defaults/to/cwd'}, (er, list) => { // er means it had an error, which is _hella_ weird // list is a list of package names, like `fooblz` or `@corp/blerg` // the might not all be deps of the top level, because transitives }) // async promise version bundled({ path: '/path/to/pkg/defaults/to/cwd'}).then(list => { // so promisey! // actually the callback version returns a promise, too, it just // attaches the supplied callback to the promise }) // sync version, throws if there's an error const list = bundled({ path: '/path/to/pkg/defaults/to/cwd'}) ``` That's basically all you need to know. If you care to dig into it, you can also use the `bundled.Walker` and `bundled.WalkerSync` classes to get fancy. This library does not write anything to the filesystem, but it _may_ have undefined behavior if the structure of `node_modules` changes while it's reading deps. All symlinks are followed. This means that it can lead to surprising results if a symlinked bundled dependency has a missing dependency that is satisfied at the top level. Since package creation resolves symlinks as well, this is an edge case where package creation and development environment are not going to be aligned, and is best avoided. npm-bundled-1.0.3/index.js000066400000000000000000000133101311306434500153630ustar00rootroot00000000000000'use strict' // walk the tree of deps starting from the top level list of bundled deps // Any deps at the top level that are depended on by a bundled dep that // does not have that dep in its own node_modules folder are considered // bundled deps as well. This list of names can be passed to npm-packlist // as the "bundled" argument. Additionally, packageJsonCache is shared so // packlist doesn't have to re-read files already consumed in this pass const fs = require('fs') const path = require('path') const EE = require('events').EventEmitter class BundleWalker extends EE { constructor (opt) { opt = opt || {} super(opt) this.path = path.resolve(opt.path || process.cwd()) this.parent = opt.parent || null if (this.parent) { this.result = this.parent.result // only collect results in node_modules folders at the top level // since the node_modules in a bundled dep is included always if (!this.parent.parent) { const base = path.basename(this.path) const scope = path.basename(path.dirname(this.path)) this.result.add(/^@/.test(scope) ? scope + '/' + base : base) } this.root = this.parent.root this.packageJsonCache = this.parent.packageJsonCache } else { this.result = new Set() this.root = this.path this.packageJsonCache = opt.packageJsonCache || new Map() } this.didDone = false this.children = 0 this.node_modules = [] this.package = null this.bundle = null } done () { if (!this.didDone) { this.didDone = true if (!this.parent) { const res = Array.from(this.result) this.result = res this.emit('done', res) } else { this.emit('done') } } } start () { const pj = this.path + '/package.json' if (this.packageJsonCache.has(pj)) this.onPackage(this.packageJsonCache.get(pj)) else this.readPackageJson(pj) return this } readPackageJson (pj) { fs.readFile(pj, (er, data) => er ? this.done() : this.onPackageJson(pj, data)) } onPackageJson (pj, data) { try { this.package = JSON.parse(data + '') } catch (er) { return this.done() } this.packageJsonCache.set(pj, this.package) this.onPackage(this.package) } onPackage (pkg) { // all deps are bundled if we got here as a child. // otherwise, only bundle bundledDeps // Get a unique-ified array with a short-lived Set const bdRaw = this.parent ? Object.keys(pkg.dependencies || {}).concat( Object.keys(pkg.optionalDependencies || {})) : pkg.bundleDependencies || pkg.bundledDependencies || [] const bd = Array.from(new Set( Array.isArray(bdRaw) ? bdRaw : Object.keys(bdRaw))) if (!bd.length) return this.done() this.bundle = bd const nm = this.path + '/node_modules' this.readModules() } readModules () { readdirNodeModules(this.path + '/node_modules', (er, nm) => er ? this.onReaddir([]) : this.onReaddir(nm)) } onReaddir (nm) { // keep track of what we have, in case children need it this.node_modules = nm this.bundle.forEach(dep => this.childDep(dep)) if (this.children === 0) this.done() } childDep (dep) { if (this.node_modules.indexOf(dep) !== -1) { this.child(dep) } else if (this.parent) { this.parent.childDep(dep) } } child (dep) { const p = this.path + '/node_modules/' + dep this.children += 1 const child = new BundleWalker({ path: p, parent: this }) child.on('done', _ => { if (--this.children === 0) this.done() }) child.start() } } class BundleWalkerSync extends BundleWalker { constructor (opt) { super(opt) } start () { super.start() this.done() return this } readPackageJson (pj) { try { this.onPackageJson(pj, fs.readFileSync(pj)) } catch (er) {} return this } readModules () { try { this.onReaddir(readdirNodeModulesSync(this.path + '/node_modules')) } catch (er) { this.onReaddir([]) } } child (dep) { new BundleWalkerSync({ path: this.path + '/node_modules/' + dep, parent: this }).start() } } const readdirNodeModules = (nm, cb) => { fs.readdir(nm, (er, set) => { if (er) cb(er) else { const scopes = set.filter(f => /^@/.test(f)) if (!scopes.length) cb(null, set) else { const unscoped = set.filter(f => !/^@/.test(f)) let count = scopes.length scopes.forEach(scope => { fs.readdir(nm + '/' + scope, (er, pkgs) => { if (er || !pkgs.length) unscoped.push(scope) else unscoped.push.apply(unscoped, pkgs.map(p => scope + '/' + p)) if (--count === 0) cb(null, unscoped) }) }) } } }) } const readdirNodeModulesSync = nm => { const set = fs.readdirSync(nm) const unscoped = set.filter(f => !/^@/.test(f)) const scopes = set.filter(f => /^@/.test(f)).map(scope => { try { const pkgs = fs.readdirSync(nm + '/' + scope) return pkgs.length ? pkgs.map(p => scope + '/' + p) : [scope] } catch (er) { return [scope] } }).reduce((a, b) => a.concat(b), []) return unscoped.concat(scopes) } const walk = (options, callback) => { const p = new Promise((resolve, reject) => { new BundleWalker(options).on('done', resolve).on('error', reject).start() }) return callback ? p.then(res => callback(null, res), callback) : p } const walkSync = options => { return new BundleWalkerSync(options).start().result } module.exports = walk walk.sync = walkSync walk.BundleWalker = BundleWalker walk.BundleWalkerSync = BundleWalkerSync npm-bundled-1.0.3/package-lock.json000066400000000000000000001420401311306434500171350ustar00rootroot00000000000000{ "name": "npm-bundled", "version": "1.0.3", "lockfileVersion": 1, "dependencies": { "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, "assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true }, "aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, "balanced-match": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true }, "bind-obj-methods": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-1.0.0.tgz", "integrity": "sha1-T1l5ysFXk633DkiBYeRj4gnKUJw=", "dev": true }, "bluebird": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", "dev": true }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true }, "brace-expansion": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", "dev": true }, "buffer-shims": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, "caseless": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true }, "clean-yaml-object": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", "dev": true }, "color-support": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.2.tgz", "integrity": "sha1-ScyZuJ0b3vEpLp2TI8ZpcaM+uJ0=", "dev": true }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "coveralls": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.1.tgz", "integrity": "sha1-1wu5rMGDXsTwY/+drFQjwXsR8Xg=", "dev": true, "dependencies": { "js-yaml": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", "dev": true }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } } }, "cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true }, "deeper": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/deeper/-/deeper-2.1.0.tgz", "integrity": "sha1-vFZOX3MXT98gHgiwADDooU2nQ2g=", "dev": true }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "diff": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", "dev": true }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, "events-to-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", "dev": true }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, "extsprintf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", "dev": true }, "foreground-child": { "version": "1.5.6", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, "form-data": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true }, "fs-exists-cached": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", "dev": true }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "function-loop": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.1.tgz", "integrity": "sha1-gHa7MF6OajzO7ikgdl8zDRkPNAw=", "dev": true }, "generate-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", "dev": true }, "generate-object-property": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true }, "graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, "har-validator": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "dev": true }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "is-my-json-valid": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", "dev": true }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, "jodid25519": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "dev": true, "optional": true }, "js-yaml": { "version": "3.8.4", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", "dev": true, "dependencies": { "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true } } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "jsonpointer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "dev": true }, "jsprim": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "lcov-parse": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", "dev": true }, "log-driver": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", "dev": true }, "lru-cache": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", "dev": true }, "mime-db": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", "dev": true }, "mime-types": { "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true }, "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "mutate-fs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mutate-fs/-/mutate-fs-1.1.0.tgz", "integrity": "sha1-yH7VdfEMRUk+DAwSYEjeAcO4DyA=", "dev": true }, "nyc": { "version": "10.3.2", "resolved": "https://registry.npmjs.org/nyc/-/nyc-10.3.2.tgz", "integrity": "sha1-8n9NkfKp2zbCT1dP9cbv/wIz3kY=", "dev": true, "dependencies": { "align-text": { "version": "0.1.4", "bundled": true, "dev": true }, "amdefine": { "version": "1.0.1", "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", "bundled": true, "dev": true }, "archy": { "version": "1.0.0", "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", "bundled": true, "dev": true }, "arr-flatten": { "version": "1.0.3", "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", "bundled": true, "dev": true }, "async": { "version": "1.5.2", "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.22.0", "bundled": true, "dev": true }, "babel-generator": { "version": "6.24.1", "bundled": true, "dev": true }, "babel-messages": { "version": "6.23.0", "bundled": true, "dev": true }, "babel-runtime": { "version": "6.23.0", "bundled": true, "dev": true }, "babel-template": { "version": "6.24.1", "bundled": true, "dev": true }, "babel-traverse": { "version": "6.24.1", "bundled": true, "dev": true }, "babel-types": { "version": "6.24.1", "bundled": true, "dev": true }, "babylon": { "version": "6.17.0", "bundled": true, "dev": true }, "balanced-match": { "version": "0.4.2", "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.7", "bundled": true, "dev": true }, "braces": { "version": "1.8.5", "bundled": true, "dev": true }, "builtin-modules": { "version": "1.1.1", "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", "bundled": true, "dev": true }, "camelcase": { "version": "1.2.1", "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", "bundled": true, "dev": true, "optional": true }, "chalk": { "version": "1.1.3", "bundled": true, "dev": true }, "cliui": { "version": "2.1.0", "bundled": true, "dev": true, "optional": true, "dependencies": { "wordwrap": { "version": "0.0.2", "bundled": true, "dev": true, "optional": true } } }, "code-point-at": { "version": "1.1.0", "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.0", "bundled": true, "dev": true }, "core-js": { "version": "2.4.1", "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", "bundled": true, "dev": true }, "debug": { "version": "2.6.6", "bundled": true, "dev": true }, "debug-log": { "version": "1.0.1", "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", "bundled": true, "dev": true }, "detect-indent": { "version": "4.0.0", "bundled": true, "dev": true }, "error-ex": { "version": "1.3.1", "bundled": true, "dev": true }, "escape-string-regexp": { "version": "1.0.5", "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", "bundled": true, "dev": true }, "expand-brackets": { "version": "0.1.5", "bundled": true, "dev": true }, "expand-range": { "version": "1.8.2", "bundled": true, "dev": true }, "extglob": { "version": "0.3.2", "bundled": true, "dev": true }, "filename-regex": { "version": "2.0.1", "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", "bundled": true, "dev": true }, "find-cache-dir": { "version": "0.1.1", "bundled": true, "dev": true }, "find-up": { "version": "1.1.2", "bundled": true, "dev": true }, "for-in": { "version": "1.0.2", "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", "bundled": true, "dev": true }, "foreground-child": { "version": "1.5.6", "bundled": true, "dev": true }, "fs.realpath": { "version": "1.0.0", "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", "bundled": true, "dev": true }, "glob": { "version": "7.1.1", "bundled": true, "dev": true }, "glob-base": { "version": "0.3.0", "bundled": true, "dev": true }, "glob-parent": { "version": "2.0.0", "bundled": true, "dev": true }, "globals": { "version": "9.17.0", "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", "bundled": true, "dev": true }, "handlebars": { "version": "4.0.8", "bundled": true, "dev": true, "dependencies": { "source-map": { "version": "0.4.4", "bundled": true, "dev": true } } }, "has-ansi": { "version": "2.0.0", "bundled": true, "dev": true }, "has-flag": { "version": "1.0.0", "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.4.2", "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true }, "inherits": { "version": "2.0.3", "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", "bundled": true, "dev": true }, "invert-kv": { "version": "1.0.0", "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.5", "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", "bundled": true, "dev": true }, "is-dotfile": { "version": "1.0.2", "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", "bundled": true, "dev": true }, "is-extendable": { "version": "0.1.1", "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true }, "is-glob": { "version": "2.0.1", "bundled": true, "dev": true }, "is-number": { "version": "2.1.0", "bundled": true, "dev": true }, "is-posix-bracket": { "version": "0.1.1", "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", "bundled": true, "dev": true }, "istanbul-lib-coverage": { "version": "1.1.0", "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.0.6", "bundled": true, "dev": true }, "istanbul-lib-instrument": { "version": "1.7.1", "bundled": true, "dev": true }, "istanbul-lib-report": { "version": "1.1.0", "bundled": true, "dev": true, "dependencies": { "supports-color": { "version": "3.2.3", "bundled": true, "dev": true } } }, "istanbul-lib-source-maps": { "version": "1.2.0", "bundled": true, "dev": true }, "istanbul-reports": { "version": "1.1.0", "bundled": true, "dev": true }, "js-tokens": { "version": "3.0.1", "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", "bundled": true, "dev": true }, "kind-of": { "version": "3.2.0", "bundled": true, "dev": true }, "lazy-cache": { "version": "1.0.4", "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", "bundled": true, "dev": true }, "load-json-file": { "version": "1.1.0", "bundled": true, "dev": true }, "lodash": { "version": "4.17.4", "bundled": true, "dev": true }, "longest": { "version": "1.0.1", "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", "bundled": true, "dev": true }, "lru-cache": { "version": "4.0.2", "bundled": true, "dev": true }, "md5-hex": { "version": "1.3.0", "bundled": true, "dev": true }, "md5-o-matic": { "version": "0.1.1", "bundled": true, "dev": true }, "merge-source-map": { "version": "1.0.3", "bundled": true, "dev": true }, "micromatch": { "version": "2.3.11", "bundled": true, "dev": true }, "minimatch": { "version": "3.0.3", "bundled": true, "dev": true }, "minimist": { "version": "0.0.8", "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", "bundled": true, "dev": true }, "ms": { "version": "0.7.3", "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.3.8", "bundled": true, "dev": true }, "normalize-path": { "version": "2.1.1", "bundled": true, "dev": true }, "number-is-nan": { "version": "1.0.1", "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", "bundled": true, "dev": true }, "once": { "version": "1.4.0", "bundled": true, "dev": true }, "optimist": { "version": "0.6.1", "bundled": true, "dev": true }, "os-homedir": { "version": "1.0.2", "bundled": true, "dev": true }, "os-locale": { "version": "1.4.0", "bundled": true, "dev": true }, "parse-glob": { "version": "3.0.4", "bundled": true, "dev": true }, "parse-json": { "version": "2.2.0", "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", "bundled": true, "dev": true }, "path-is-absolute": { "version": "1.0.1", "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", "bundled": true, "dev": true }, "pify": { "version": "2.3.0", "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", "bundled": true, "dev": true }, "pkg-dir": { "version": "1.0.0", "bundled": true, "dev": true }, "preserve": { "version": "0.2.0", "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", "bundled": true, "dev": true }, "randomatic": { "version": "1.1.6", "bundled": true, "dev": true }, "read-pkg": { "version": "1.1.0", "bundled": true, "dev": true }, "read-pkg-up": { "version": "1.0.1", "bundled": true, "dev": true }, "regenerator-runtime": { "version": "0.10.5", "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.3", "bundled": true, "dev": true }, "remove-trailing-separator": { "version": "1.0.1", "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", "bundled": true, "dev": true }, "require-directory": { "version": "2.1.1", "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", "bundled": true, "dev": true, "optional": true }, "rimraf": { "version": "2.6.1", "bundled": true, "dev": true }, "semver": { "version": "5.3.0", "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", "bundled": true, "dev": true }, "slide": { "version": "1.1.6", "bundled": true, "dev": true }, "source-map": { "version": "0.5.6", "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.2.4", "bundled": true, "dev": true, "dependencies": { "signal-exit": { "version": "2.1.2", "bundled": true, "dev": true } } }, "spdx-correct": { "version": "1.0.2", "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "1.0.4", "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", "bundled": true, "dev": true }, "string-width": { "version": "1.0.2", "bundled": true, "dev": true }, "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true }, "strip-bom": { "version": "2.0.0", "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.0", "bundled": true, "dev": true }, "to-fast-properties": { "version": "1.0.3", "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.22", "bundled": true, "dev": true, "optional": true, "dependencies": { "yargs": { "version": "3.10.0", "bundled": true, "dev": true, "optional": true } } }, "uglify-to-browserify": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", "bundled": true, "dev": true }, "which": { "version": "1.2.14", "bundled": true, "dev": true }, "which-module": { "version": "1.0.0", "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", "bundled": true, "dev": true }, "wrappy": { "version": "1.0.2", "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", "bundled": true, "dev": true }, "y18n": { "version": "3.2.1", "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", "bundled": true, "dev": true }, "yargs": { "version": "7.1.0", "bundled": true, "dev": true, "dependencies": { "camelcase": { "version": "3.0.0", "bundled": true, "dev": true }, "cliui": { "version": "3.2.0", "bundled": true, "dev": true } } }, "yargs-parser": { "version": "5.0.0", "bundled": true, "dev": true, "dependencies": { "camelcase": { "version": "3.0.0", "bundled": true, "dev": true } } } } }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true }, "only-shallow": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/only-shallow/-/only-shallow-1.2.0.tgz", "integrity": "sha1-cc7O26kyS8BRiu8Q7AgNMkncJGU=", "dev": true }, "opener": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", "dev": true }, "os-homedir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", "integrity": "sha1-DWK99EuRb9O73PLKsZGUj7CU8Ac=", "dev": true }, "own-or": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", "integrity": "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=", "dev": true }, "own-or-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.0.tgz", "integrity": "sha1-nvkg/IHi5jz1nUEQElg2jPT8pPs=", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, "qs": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", "dev": true }, "readable-stream": { "version": "2.2.9", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "dev": true }, "request": { "version": "2.79.0", "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true }, "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true }, "safe-buffer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true }, "source-map": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", "dev": true }, "source-map-support": { "version": "0.4.15", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "sshpk": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "dev": true, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, "string_decoder": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", "dev": true }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "tap": { "version": "10.3.2", "resolved": "https://registry.npmjs.org/tap/-/tap-10.3.2.tgz", "integrity": "sha1-d5gvCDaNixgDo7CrX8MA4YF/Mec=", "dev": true }, "tap-mocha-reporter": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.3.tgz", "integrity": "sha1-5ZF/rT2acJV/m3xzbnk764fX2vE=", "dev": true }, "tap-parser": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.3.3.tgz", "integrity": "sha1-U+yKkPJ11v/0PxaeVqZ5UCp0EYU=", "dev": true }, "tmatch": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-3.0.0.tgz", "integrity": "sha1-fSBx3tu8WH8ZSs2jBnvQdHtnCZE=", "dev": true }, "tough-cookie": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true }, "trivial-deferred": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", "dev": true }, "tunnel-agent": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", "dev": true }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, "optional": true }, "unicode-length": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz", "integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=", "dev": true }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", "dev": true }, "verror": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "dev": true }, "which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "dependencies": { "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yapool": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", "integrity": "sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=", "dev": true } } } npm-bundled-1.0.3/package.json000066400000000000000000000013141311306434500162050ustar00rootroot00000000000000{ "name": "npm-bundled", "version": "1.0.3", "description": "list things in node_modules that are bundledDependencies, or transitive dependencies thereof", "main": "index.js", "repository": { "type": "git", "url": "git+https://github.com/npm/npm-bundled.git" }, "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "license": "ISC", "devDependencies": { "mkdirp": "^0.5.1", "mutate-fs": "^1.1.0", "rimraf": "^2.6.1", "tap": "^10.3.2" }, "scripts": { "test": "tap test/*.js -J --100", "preversion": "npm test", "postversion": "npm publish", "postpublish": "git push origin --all; git push origin --tags" }, "files": [ "index.js" ] } npm-bundled-1.0.3/test/000077500000000000000000000000001311306434500146775ustar00rootroot00000000000000npm-bundled-1.0.3/test/bad-json.js000066400000000000000000000020471311306434500167350ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) require('./pkgtree.js')(pkg, { $package: { name: 'a', version: '1.2.3', dependencies: { b: '1.2.3', d: '1.2.3' }, bundledDependencies: [ 'b' ] }, b: { d: { $package: { name: 'd', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: 'b', version: '1.2.3', dependencies: { c: '1.2.3', d: '1.2.3' } } }, c: { $package: { name: 'c', version: '1.2.3' }}, d: { $package: { name: 'd', version: '1.2.3', dependencies: { c: '1.2.3' } }}, e: { $package: { name: 'e', version: '1.2.3', invalid: true }} }, t) const walk = require('../') const check = (result, t) => { t.same(result, ['b', 'c', 'e']) t.end() } t.test('sync', t => check(walk.sync({path: pkg}), t)) t.test('async', t => walk({path: pkg}).then(res => check(res, t))) npm-bundled-1.0.3/test/basic.js000066400000000000000000000020241311306434500163140ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) require('./pkgtree.js')(pkg, { $package: { name: 'a', version: '1.2.3', dependencies: { b: '1.2.3', d: '1.2.3' }, bundledDependencies: [ 'b' ] }, b: { d: { $package: { name: 'd', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: 'b', version: '1.2.3', dependencies: { c: '1.2.3', d: '1.2.3' } } }, c: { $package: { name: 'c', version: '1.2.3' }}, d: { $package: { name: 'd', version: '1.2.3', dependencies: { c: '1.2.3' } }}, e: { $package: { name: 'e', version: '1.2.3' }} }, t) const walk = require('../') const check = (result, t) => { t.same(result, ['b', 'c', 'e']) t.end() } t.test('sync', t => check(walk.sync({path: pkg}), t)) t.test('async', t => walk({path: pkg}).then(res => check(res, t))) npm-bundled-1.0.3/test/caches.js000066400000000000000000000027001311306434500164620ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) require('./pkgtree.js')(pkg, { $package: { name: 'a', version: '1.2.3', dependencies: { b: '1.2.3', d: '1.2.3' }, bundledDependencies: [ 'b' ] }, b: { d: { $package: { name: 'd', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: 'b', version: '1.2.3', dependencies: { c: '1.2.3', d: '1.2.3' } } }, c: { $package: { name: 'c', version: '1.2.3' }}, d: { $package: { name: 'd', version: '1.2.3', dependencies: { c: '1.2.3' } }}, e: { $package: { name: 'e', version: '1.2.3' }} }, t) const walk = require('../') const check = (result, t) => t.same(result, ['b', 'c', 'e']) t.test('sync', t => { t.plan(2) const bw = new walk.BundleWalkerSync({ path: pkg }) const bw2 = new walk.BundleWalkerSync({ path: pkg, packageJsonCache: bw.packageJsonCache }) bw.start() bw2.start() check(bw.result, t) check(bw2.result, t) }) t.test('async', t => { t.plan(2) process.chdir(pkg) const bw = new walk.BundleWalker() const bw2 = new walk.BundleWalker({ packageJsonCache: bw.packageJsonCache }) bw.on('done', result => check(result, t)) bw2.on('done', result => check(result, t)) bw.start() bw2.start() }) npm-bundled-1.0.3/test/missing-package-json.js000066400000000000000000000017401311306434500212500ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) require('./pkgtree.js')(pkg, { $package: { name: 'a', version: '1.2.3', dependencies: { b: '1.2.3', d: '1.2.3' }, bundledDependencies: [ 'b' ] }, b: { d: { $package: { name: 'd', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: 'b', version: '1.2.3', dependencies: { c: '1.2.3', d: '1.2.3' } } }, c: { $package: { name: 'c', version: '1.2.3' }}, d: { $package: { name: 'd', version: '1.2.3', dependencies: { c: '1.2.3' } }}, e: {} }, t) const walk = require('../') const check = (result, t) => { t.same(result, ['b', 'c', 'e']) t.end() } t.test('sync', t => check(walk.sync({path: pkg}), t)) t.test('async', t => walk({path: pkg}).then(res => check(res, t))) npm-bundled-1.0.3/test/no-bundle.js000066400000000000000000000017451311306434500171270ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) require('./pkgtree.js')(pkg, { $package: { name: 'a', version: '1.2.3', dependencies: { b: '1.2.3', d: '1.2.3' } }, b: { d: { $package: { name: 'd', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: 'b', version: '1.2.3', dependencies: { c: '1.2.3', d: '1.2.3' } } }, c: { $package: { name: 'c', version: '1.2.3' }}, d: { $package: { name: 'd', version: '1.2.3', dependencies: { c: '1.2.3' } }}, e: { $package: { name: 'e', version: '1.2.3' }} }, t) const walk = require('../') const check = (result, t) => { t.same(result, []) t.end() } t.test('sync', t => check(walk.sync({path: pkg}), t)) t.test('async', t => walk({path: pkg}).then(res => check(res, t))) npm-bundled-1.0.3/test/non-array-bundledeps.js000066400000000000000000000020471311306434500212710ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) require('./pkgtree.js')(pkg, { $package: { name: 'a', version: '1.2.3', dependencies: { b: '1.2.3', d: '1.2.3' }, bundledDependencies: { 'b': '1.2.3' } }, b: { d: { $package: { name: 'd', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: 'b', version: '1.2.3', dependencies: { c: '1.2.3', d: '1.2.3' } } }, c: { $package: { name: 'c', version: '1.2.3' }}, d: { $package: { name: 'd', version: '1.2.3', dependencies: { c: '1.2.3' } }}, e: { $package: { name: 'e', version: '1.2.3' }} }, t) const walk = require('../') const check = (result, t) => { t.same(result, ['b', 'c', 'e']) t.end() } t.test('sync', t => check(walk.sync({path: pkg}), t)) t.test('async', t => walk({path: pkg}).then(res => check(res, t))) npm-bundled-1.0.3/test/pkgtree.js000066400000000000000000000012471311306434500167020ustar00rootroot00000000000000'use strict' // create a package tree for a test // pass in the test object to rm on teardown const mkdirp = require('mkdirp') const fs = require('fs') const rimraf = require('rimraf') const pkgtree = module.exports = (dir, tree, t) => { if (t) t.teardown(_ => rimraf.sync(dir)) mkdirp.sync(dir) Object.keys(tree).forEach(dep => { if (dep === '$package') { const pkg = tree[dep] const output = pkg.invalid ? '💩' : (JSON.stringify(pkg, null, 2) + '\n') fs.writeFileSync(dir + '/package.json', output) } else pkgtree(dir + '/node_modules/' + dep, tree[dep]) }) } if (require.main === module) require('tap').pass('this is fine') npm-bundled-1.0.3/test/readdir-fail.js000066400000000000000000000022571311306434500175660ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) const mutateFS = require('mutate-fs') require('./pkgtree.js')(pkg, { $package: { name: 'a', version: '1.2.3', dependencies: { b: '1.2.3', d: '1.2.3' }, bundledDependencies: [ 'b' ] }, b: { d: { $package: { name: 'd', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: 'b', version: '1.2.3', dependencies: { c: '1.2.3', d: '1.2.3' } } }, c: { $package: { name: 'c', version: '1.2.3' }}, d: { $package: { name: 'd', version: '1.2.3', dependencies: { c: '1.2.3' } }}, e: { $package: { name: 'e', version: '1.2.3' }} }, t) const walk = require('../') const check = (result, t) => { t.same(result, []) t.end() } t.test('fail the readdir', t => { const poop = new Error('poop') t.teardown(mutateFS.fail('readdir', poop)) t.test('sync', t => check(walk.sync({path: pkg}), t)) t.test('async', t => walk({path: pkg}).then(res => check(res, t))) t.end() }) npm-bundled-1.0.3/test/scoped.js000066400000000000000000000021321311306434500165100ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) require('./pkgtree.js')(pkg, { $package: { name: '@a/a', version: '1.2.3', dependencies: { '@x/b': '1.2.3', '@y/d': '1.2.3' }, bundledDependencies: [ '@x/b' ] }, '@x/b': { '@y/d': { $package: { name: '@y/d', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: '@x/b', version: '1.2.3', dependencies: { '@q/c': '1.2.3', '@y/d': '1.2.3' } } }, '@q/c': { $package: { name: '@q/c', version: '1.2.3' }}, '@y/d': { $package: { name: '@y/d', version: '1.2.3', dependencies: { '@q/c': '1.2.3' } }}, e: { $package: { name: 'e', version: '1.2.3' }} }, t) const walk = require('../') const check = (result, t) => { t.same(result, ['@x/b', '@q/c', 'e']) t.end() } t.test('sync', t => check(walk.sync({path: pkg}), t)) t.test('async', t => walk({path: pkg}, (er, res) => check(res, t))) npm-bundled-1.0.3/test/weird-scope.js000066400000000000000000000025771311306434500174710ustar00rootroot00000000000000'use strict' const t = require('tap') const path = require('path') const pkg = path.resolve(__dirname, path.basename(__filename, '.js')) require('./pkgtree.js')(pkg, { $package: { name: '@a/a', version: '1.2.3', dependencies: { '@x/b': '1.2.3', '@y/d': '1.2.3', '@weird/asdf': '1.2.3', '@missing/scope': '1.2.3' }, bundleDependencies: [ '@x/b', '@weird/asdf', '@missing/scope' ] }, '@x/b': { '@y/d': { $package: { name: '@y/d', version: '1.2.3', dependencies: { e: '1.2.3' } }}, $package: { name: '@x/b', version: '1.2.3', dependencies: { '@q/c': '1.2.3', '@y/d': '1.2.3' } } }, '@q/c': { $package: { name: '@q/c', version: '1.2.3' }}, '@y/d': { $package: { name: '@y/d', version: '1.2.3', dependencies: { '@q/c': '1.2.3' } }}, e: { $package: { name: 'e', version: '1.2.3' }} }, t) // put a weird not-package thing in a node_modules @-scope "folder" const fs = require('fs') fs.writeFileSync(pkg + '/node_modules/@weird', 'not a dir') fs.mkdirSync(pkg + '/node_modules/@missing') const walk = require('../') const check = (result, t) => { t.same(result, ['@x/b', '@q/c', 'e']) t.end() } t.test('sync', t => check(walk.sync({path: pkg}), t)) t.test('async', t => walk({path: pkg}).then(res => check(res, t)))