diff --git a/.travis.yml b/.travis.yml index 9672e1293..c8874bc58 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,20 @@ language: node_js node_js: - - "0.8" + - "9" + - "8" + - "6" + - "4" + - "iojs" + - "0.12" - "0.10" + - "0.8" + - "0.6" before_install: - - npm install -g npm@~1.4.6 + - 'nvm install-latest-npm' +install: + - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;' +sudo: false +matrix: + fast_finish: true + allow_failures: + - node_js: "0.6" diff --git a/LICENSE b/LICENSE index c9016780d..dc49ca978 100644 --- a/LICENSE +++ b/LICENSE @@ -29,7 +29,7 @@ buffer_ieee754.js has this license in it: ---- -Copyright (c) 2008-2014, Fair Oaks Labs, Inc. +Copyright (c) 2008-2015, Fair Oaks Labs, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/assets/browserify.png b/assets/browserify.png new file mode 100644 index 000000000..56a8f741d Binary files /dev/null and b/assets/browserify.png differ diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 000000000..98d6bf5f6 Binary files /dev/null and b/assets/logo.png differ diff --git a/bin/advanced.txt b/bin/advanced.txt index 23ed10f31..6d7c08bdd 100644 --- a/bin/advanced.txt +++ b/bin/advanced.txt @@ -51,6 +51,24 @@ Advanced Options: to just "__filename,__dirname". This is handy if you want to run bundles in node. + --no-browser-field, --no-bf + + Turn off package.json browser field resolution. This is also handy if you + need to run a bundle in node. + + --transform-key + + Instead of the default package.json#browserify#transform field to list + all transforms to apply when running browserify, a custom field, like, e.g. + package.json#browserify#production or package.json#browserify#staging + can be used, by for example running: + * `browserify index.js --transform-key=production > bundle.js` + * `browserify index.js --transform-key=staging > bundle.js` + + --node + + Alias for --bare and --no-browser-field. + --full-paths Turn off converting module ids into numerical indexes. This is useful for @@ -61,6 +79,10 @@ Advanced Options: Instead of standard bundle output, print the dependency array generated by module-deps. + --no-dedupe + + Turn off deduping. + --list Print each file in the dependency graph. Useful for makefiles. @@ -70,7 +92,7 @@ Advanced Options: Consider files with specified EXTENSION as modules, this option can used multiple times. - --global-transform=MODULE, --g MODULE + --global-transform=MODULE, -g MODULE Use a transform module on all files after any ordinary transforms have run. diff --git a/bin/args.js b/bin/args.js index 11d9f00c7..6a4166afd 100644 --- a/bin/args.js +++ b/bin/args.js @@ -13,12 +13,14 @@ module.exports = function (args, opts) { var argv = subarg(args, { 'boolean': [ 'deps', 'pack', 'ig', 'dg', 'im', 'd', 'list', 'builtins', - 'commondir', 'bare', 'full-paths', 'bundle-external' + 'commondir', 'bare', 'full-paths', 'bundle-external', 'bf', + 'node' ], string: [ 's', 'r', 'u', 'x', 't', 'i', 'o', 'e', 'c', 'it' ], alias: { ig: [ 'insert-globals', 'fast' ], dg: [ 'detect-globals', 'detectGlobals', 'dg' ], + bf: [ 'browser-field', 'browserField' ], im: 'ignore-missing', it: 'ignore-transform', igv: 'insert-global-vars', @@ -43,7 +45,10 @@ module.exports = function (args, opts) { d: false, builtins: true, commondir: true, - 'bundle-external': true + 'bundle-external': true, + bf: true, + dedupe: true, + node: false } }); @@ -57,22 +62,41 @@ module.exports = function (args, opts) { s.resume(); return rs; } - return path.resolve(process.cwd(), entry); + return entry; }); + if (argv.node) { + argv.bare = true; + argv.browserField = false; + } if (argv.bare) { argv.builtins = false; argv.commondir = false; - argv.detectGlobals = false; if (argv.igv === undefined) { argv.igv = '__filename,__dirname'; } } - + + if (argv.igv) { + var insertGlobalVars = {}; + var wantedGlobalVars = argv.igv.split(','); + Object.keys(insertGlobals.vars).forEach(function (x) { + if (wantedGlobalVars.indexOf(x) === -1) { + insertGlobalVars[x] = undefined; + } + }); + } + var ignoreTransform = argv['ignore-transform'] || argv.it; var b = browserify(xtend({ noParse: Array.isArray(argv.noParse) ? argv.noParse : [argv.noParse], - extensions: [].concat(argv.extension).filter(Boolean), + extensions: [].concat(argv.extension).filter(Boolean).map(function (extension) { + if (extension.charAt(0) != '.') { + return '.' + extension; + } else { + return extension + } + }), ignoreTransform: [].concat(ignoreTransform).filter(Boolean), entries: entries, fullPaths: argv['full-paths'], @@ -80,7 +104,10 @@ module.exports = function (args, opts) { commondir: argv.commondir === false ? false : undefined, bundleExternal: argv['bundle-external'], basedir: argv.basedir, - + browserField: argv.browserField, + transformKey: argv['transform-key'] ? ['browserify', argv['transform-key']] : undefined, + dedupe: argv['dedupe'], + detectGlobals: argv.detectGlobals, insertGlobals: argv['insert-globals'] || argv.ig, insertGlobalVars: insertGlobalVars, @@ -134,7 +161,7 @@ module.exports = function (args, opts) { [].concat(argv.require).filter(Boolean) .forEach(function (r) { - var xs = r.split(':'); + var xs = splitOnColon(r); b.require(xs[0], { expose: xs.length === 1 ? xs[0] : xs[1] }) }) ; @@ -142,8 +169,8 @@ module.exports = function (args, opts) { // resolve any external files and add them to the bundle as externals [].concat(argv.external).filter(Boolean) .forEach(function (x) { - if (/:/.test(x)) { - var xs = x.split(':'); + var xs = splitOnColon(x); + if (xs.length === 2) { add(xs[0], { expose: xs[1] }); } else if (/\*/.test(x)) { @@ -225,20 +252,18 @@ module.exports = function (args, opts) { return b; } - var insertGlobalVars; - if (argv.igv) { - insertGlobalVars = argv.igv.split(',').reduce(function (vars, x) { - vars[x] = insertGlobals.vars[x]; - return vars; - }, {}); - } - return b; }; -function copy (obj) { - return Object.keys(obj).reduce(function (acc, key) { - acc[key] = obj[key]; - return acc; - }, {}); +function splitOnColon (f) { + var pos = f.lastIndexOf(':'); + if (pos == -1) { + return [f]; // No colon + } else { + if ((/[a-zA-Z]:[\\/]/.test(f)) && (pos == 1)){ + return [f]; // Windows path and colon is part of drive name + } else { + return [f.substr(0, pos), f.substr(pos + 1)]; + } + } } diff --git a/bin/cmd.js b/bin/cmd.js index d7cc844b9..1a63b19ac 100755 --- a/bin/cmd.js +++ b/bin/cmd.js @@ -22,7 +22,7 @@ if (b.argv._[0] === 'help' || b.argv.h || b.argv.help .on('close', function () { process.exit(1) }) ; } -if (b.argv.v || b.argv.version) { +if (b.argv.version) { return console.log(require('../package.json').version); } @@ -56,25 +56,25 @@ if (b.argv.list) { var bundle = b.bundle(); bundle.on('error', errorExit); +bundle.on('end', successExit); +var tmpfile; var outfile = b.argv.o || b.argv.outfile; if (outfile) { mkdirp.sync(path.dirname(outfile)); - bundle.pipe(fs.createWriteStream(outfile)); + + // we'll output to a temp file within same filesystem, then atomically overwrite outfile once successful + tmpfile = outfile + ".tmp-browserify-" + Math.random().toFixed(20).slice(2) + bundle.pipe(fs.createWriteStream(tmpfile)); } else { bundle.pipe(process.stdout); } -function packageFilter (info) { - if (info && typeof info.browserify === 'string' && !info.browser) { - info.browser = info.browserify; - delete info.browserify; - } - return info || {}; -} - function errorExit(err) { + if (tmpfile) fs.unlink(tmpfile, function (err) { + if (err) /* no-op, we're already exiting unhappily… */; + }); if (err.stack) { console.error(err.stack); } @@ -83,3 +83,9 @@ function errorExit(err) { } process.exit(1); } + +function successExit() { + if (tmpfile && outfile) fs.rename(tmpfile, outfile, function (err) { + if (err) errorExit(err); + }); +} diff --git a/changelog.markdown b/changelog.markdown index 936380555..bc4e12cce 100644 --- a/changelog.markdown +++ b/changelog.markdown @@ -1,3 +1,510 @@ +# 15.0.0 + +fixed repository url in package.json. + +https://github.com/browserify/browserify/commit/5ec19eed48a5f46cb48d44be8ffc2f6bfb73fbfb + +update `module-deps` to 5.0.0, which enables requiring modules in backtick-enclosed strings. + +https://github.com/browserify/browserify/pull/1785 + +dropped testing in node 0.10 and 0.12, set supported node versions to `>=4` + +https://github.com/browserify/browserify/pull/1743 +https://github.com/browserify/browserify/pull/1793 + +add support for passing arrays to the `exclude` and `ignore` methods. + +https://github.com/browserify/browserify/pull/1769 + +# 14.5.0 + +update `os-browserify` to 0.3.0, which adds a shim for node.js's `os.homedir` method. + +https://github.com/browserify/browserify/pull/1767 + +update `browserify-zlib` to 0.2.0, which adds support for dictionaries. + +https://github.com/browserify/browserify/pull/1733 + +# 14.4.0 + +update `string_decoder` to 1.0.0, which matches the latest node.js behavior more closely. + +https://github.com/substack/node-browserify/pull/1714 + +# 14.3.0 + +update `https-browserify` to 1.0.0, which matches node.js behavior more closely. + +- throw exception if non-https URL is passed to `https.request` or `https.get` +- support passing string URL as first argument to `https.request` and `https.get` + +https://github.com/substack/node-browserify/pull/1710 + +# 14.2.0 + +adds a --transform-key flag to the command-line tool + +https://github.com/substack/node-browserify/pull/1709 + +# 14.1.0 + +writes to a temp outfile until success + +Previously, browserify would overwrite output files when an error occurs. + +https://github.com/substack/node-browserify/pull/1673 +https://github.com/substack/node-browserify/issues/899 + +# 14.0.0 + +Updates the version of the buffer package, which drops support for IE8-10. + +buffer v5 removes the `Object` implementation and relies on a single, +fast Typed Array (`Uint8Array`) implementation, greatly simplifying the +maintanence of the buffer package. + +If IE8-10 support is critical to your web app, you can continue to rely on +browserify v13, or see the PR for other workarounds. + +https://github.com/substack/node-browserify/pull/1678 + +# 13.3.0 + +updates the version for the assert package + +https://github.com/substack/node-browserify/pull/1611 + +# 13.2.0 + +allow configuring transformKey from module-deps +https://github.com/substack/node-browserify/pull/1670 + +# 13.1.1 + +boost performance by memoizing calls to path.relative() + +https://github.com/substack/node-browserify/pull/1544 + +# 13.1.0 + +exposes `opts.dedupe` and `--no-deupe` to optionally turn off deduping behavior: +[#1581](https://github.com/substack/node-browserify/pull/1581) + +# 13.0.1 + +## Internal + +[#1552](https://github.com/substack/node-browserify/pull/1552), [#1555](https://github.com/substack/node-browserify/pull/1555): Use native `Array.isArray` and drop `isarray` dep. ([@kt3k](https://github.com/kt3k)) + +# 13.0.0 + +This release bumps the [`buffer`](https://www.npmjs.com/package/buffer) dependency +to v4, which has one possible breaking change: + +- The `buffer.toArrayBuffer()` method on `Buffer` instances has been removed. + +(This is probably not a problem for 99.9% of users.) + +This API was added in node v0.11.8 and +[removed before v0.12 was released](https://github.com/nodejs/node-v0.x-archive/issues/7609#issuecomment-42903457). +It was added to browserify's `buffer` implementation but was never removed when v0.12 + was released. `buffer` v4 removes it so we have full parity with node.js. + +Going forward, to get an `ArrayBuffer` from a node.js-style `Buffer`, users should +just use `buffer.buffer`. This works because `Buffer` is a subclass of `Uint8Array` +in both the browser and node.js (since v3). + +On the plus side, this release also includes: + +- Performance improvements to `buffer` that +[increase the speed](https://github.com/feross/buffer/pull/92) of some buffer +methods by as much as 30%! + +# 12.0.2 + +normalizes module paths on windows to consistently use `/` + +https://github.com/substack/node-browserify/pull/1424#issuecomment-170143099 + +# 12.0.1 + +adds the previously failing tests and a small change necessary for transforms to +be applied properly for symlinked packages + +https://github.com/substack/node-browserify/pull/1392 + +# 12.0.0 + +Node support changes: now testing against the latest node (currently 4.2.1). +node 0.8 is no longer supported, and iojs isn't actively tested. + +Stream3 everywhere! Everything has been updated to use streams3. + +Sourcemaps charset now uses an `=` instead of a `:`. This fixes certain issues +with Chinese characters in sourcemaps. See #753. + +module-deps has been updated to fix root transforms on symlinked modules. See +https://github.com/substack/module-deps/pull/99. + +stream-http, the module that provides `http` support, dropped IE8 support. If +you depend on this, see https://github.com/jhiesey/stream-http#ie8-note. + +Removed `builtins` and `commondir` – both unused dependencies. + +# 11.2.0 + +When `bundleExternal` is set to `false`, `process` and `buffer` are now correctly excluded. Also, using `--igv` via the CLI now works. That also means that `--bare` and `--node` actually insert `__filename` and `__dirname`. + +https://github.com/substack/node-browserify/pull/1361 + +# 11.1.0 + +adds a `'.'` to extensions if it wasn't added + +https://github.com/substack/node-browserify/pull/1380 + +# 11.0.1 + +The callback form of bundle() uses the returned output stream instead of the +pipeline so that the `'end'` event will fire on the bundle instance. + +https://github.com/substack/watchify/pull/249#issuecomment-126061169 + +# 11.0.0 + +## streams3 + +The [`readable-stream`](https://npmjs.com/package/readable-stream) dependency was updated to `^2.0.0`. This package is inserted into bundles as `require('stream')`. Bundles will now get the latest streams implementation from io.js/node.js core, instead of an old version from node.js 0.11.x. Go forth and stream ALL THE DATA without fear! + +## shiny new HTTP package + +[John Hiesey](https://github.com/jhiesey) rewrote the [http-browserify](https://npmjs.org/package/http-browserify) package +to create [stream-http](https://npmjs.org/package/stream-http), an implemention of `http` that supports streaming in modern browsers. Before v11.0.0, in most situations when you used `http.get` or `http.request`, the entire request would buffer in memory until the download was complete, and a single `'data'` event was emitted with the entire response as a string. + +`stream-http` uses the [Fetch API](https://fetch.spec.whatwg.org/) and various browser-specific XHR extensions to make binary streaming http requests work in as many browsers as possible. + +The following browsers support true streaming, where only a small amount of the request has to be held in memory at once: + +* Chrome >= 43 (using the `fetch` api) +* Firefox >= 9 (using `moz-chunked-arraybuffer` responseType with XHR) + +The following browsers support pseudo-streaming, where the data is available before the request finishes, but the entire response must be held in memory: + +* Safari >= 5 +* IE >= 10 +* Most other Webkit-based browsers, including the default Android browser + +Older browsers will work, without streaming support. There is no support for IE6 or IE7. + +Compared to `http-browserify`, it is not necessary to set `options.responseType`. The `responseType` property of the XHR object will be set automatically depending on what features are detected in the browser (although see `options.mode` in the [readme](https://github.com/jhiesey/stream-http) to see how you can optimize this choice manually). + +The `response` is a streams3 stream, so all data is passed as `Buffer`s, unlike the variable types provided by the `'data'` event in `http-browserify`. This behavior tries to mimic the node core `http` module as closely as possible. + +* [#1327](https://github.com/substack/node-browserify/pull/1327) + +If you're brave, go ahead and give v11.0.0 a try today! + +# 10.2.6 + +uses the non-sync version of fs.realpath + +# 10.2.5 + +fixes an issue with symlinked files executing multiple times + +https://github.com/substack/node-browserify/issues/1063 +https://github.com/substack/node-browserify/pull/1318 + +# 10.2.4 + +fixes requiring an entry from another entry + +remove unused dep "deep-equal" and unused file "lib/_exclude.js" + +https://github.com/substack/node-browserify/pull/1268 + +# 10.2.3 + +fixes an errant space in the `--no-browser-field` flag alias +that kept it from working + +https://github.com/substack/node-browserify/issues/1286 + +# 10.2.2 + +fix tests for tap@^1.1.0 (and update tap) + +https://github.com/substack/node-browserify/pull/1276 + +# 10.2.1 + +housekeeping - removed unused code + +https://github.com/substack/node-browserify/pull/1273 + +# 10.2.0 + +remove unnecessary "isDedupe" json check. this was a hack-fix for watchify <=2.4. + +https://github.com/substack/node-browserify/pull/1244 + +fixes for the "noParse" path matcher. + +https://github.com/substack/node-browserify/pull/1259 + +add syntax check cache. this speeds up rebuilds (like when using watchify). + +https://github.com/substack/node-browserify/pull/1253 + +update to browser-pack@^5.0.0 - includes several fixes related to source maps. + +https://github.com/substack/node-browserify/pull/1257 + +# 10.1.3 + +Replace jsonstream with JSONStream + +https://github.com/substack/node-browserify/pull/1252 + +# 10.1.2 + +Replace JSONStream with jsonstream +Update deps to avoid jsonstream npm case problems + +https://github.com/substack/node-browserify/pull/1247 +https://github.com/substack/node-browserify/commit/1ca71e23 + +# 10.1.1 + +ensures that entry paths are always full paths + +https://github.com/substack/node-browserify/pull/1248 + +# 10.1.0 + +adds `--no-browser-field` and `opts.browserField = false` behavior to turn off +the package.json browser field. This is useful if you want to make a bundle with +a target of node or some environment with shimmed node primitives. + +A new alias `--node` sets `--no-browser-field` and `--bare`. + +https://github.com/substack/node-browserify/pull/1240 + +# 10.0.0 + +## Possibly Breaking Change +The ‘process’ dependency was updated to ~0.11.0, this module is inserted into bundles as the ‘process’ global/dependency. +Previously, an unhandled error thrown in a ‘process.nextTick’ task would prevent any subsequent tasks from running, forever. +The task queue now recovers from this condition, but may do so on a future browser tick. +As part of this update, ‘process.nextTick’ now accepts variadic arguments, passed to the task, added to io.js in 1.8.1. + +* [#1231](https://github.com/substack/node-browserify/pull/1231) +* [defunctzombie/node-process#38](https://github.com/defunctzombie/node-process/pull/38) +* [iojs/io.js#1077](https://github.com/iojs/io.js/pull/1077) + +## Other changes + +* Escapes JavaScript-unsafe characters from JSON. [#1211](https://github.com/substack/node-browserify/pull/1211) +* Removes ‘-v’ shortcut for ‘--version’ (conflicted with watchify) [#1222](https://github.com/substack/node-browserify/pull/1222) +* Updated ‘defined’, ‘punycode’, ‘module-deps’, and ‘xtend’ dependencies to reduce install size [#1230](https://github.com/substack/node-browserify/pull/1230) + +# 9.0.8 + +makes `.require({ expose: 'name' })` and `require('name')` work at the same time + +https://github.com/substack/node-browserify/issues/850 +https://github.com/substack/node-browserify/pull/1202 + +# 9.0.7 + +fixes an issue with catching error events on the b.bundle() stream + +https://github.com/substack/node-browserify/issues/1194 +https://github.com/substack/node-browserify/pull/1195 + +# 9.0.6 + +republishing 9.0.5 in an attempt to satisfy npm. + +# 9.0.5 + +sets the stream returned by bundle() to be readable-only + +https://github.com/substack/node-browserify/pull/1187#issuecomment-89044008 + +# 9.0.4 + +handles the colon better for drive paths and improves the test suite for windows +users + +https://github.com/substack/node-browserify/pull/1182 +https://github.com/substack/node-browserify/pull/1183 + +# 9.0.3 + +fixes a problem with deduping for json files. + +This caused problems for running bundle() multiple times on the same instance +with caching turned on, which people reported encountering using watchify. + +https://github.com/substack/node-browserify/issues/1101 +https://github.com/substack/watchify/issues/143 + +# 9.0.2 + +fixes a bug where transforms in `opts.transform` were getting run twice + +https://github.com/substack/node-browserify/issues/1124 +https://github.com/substack/node-browserify/pull/1128 + +# 9.0.1 + +fixes exposed files persisting across bundles + +https://github.com/substack/node-browserify/pull/1030 + +# 9.0.0 + +updates browser-pack which uses umd 3.0.0. +This sligtly changes how `--standalone $name` works. + +https://github.com/substack/browser-pack/pull/49 +https://github.com/substack/node-browserify/pull/1105 + +Also some tidying up around handling expose that module-deps can do now: + +https://github.com/substack/node-browserify/pull/1077 + +and some fixes to regressions involving the `'package'` event: + +https://github.com/substack/node-resolve/issues/69 + +Upstream changes in resolve/browser-resolve mean that `require('foo/bar')` works +better with the package.json browser field. You can do something like: + +``` json +{ + "browser": { "./bar": "whatever.js" } +} +``` + +# 8.1.3 + +uses / instead of \ for source map url separators on windows +https://github.com/substack/node-browserify/pull/1096 + +# 8.1.2 + +resolves mappings from the browser field for externals + +https://github.com/substack/node-browserify/pull/1100 + +# 8.1.1 + +fixes an issue with resolving exposed packages relative to the basedir + +https://github.com/substack/node-browserify/pull/1059 +https://github.com/substack/node-browserify/issues/1039 +https://github.com/daiweilu/browserify-broken-require + +# 8.1.0 + +use assert@1.3, which fixes a bug in assert.deepEqual related to argument ordering, +and ensures assert.deepEqual continues working in Chrome 40 and Firefox 35. + +use process@0.10, which adds process.umask() and a faster process.nextTick() +implementation. + +https://github.com/substack/node-browserify/pull/1018 +https://github.com/substack/node-browserify/pull/1041 + +# 8.0.3 + +passes opts.debug through to insert-module-globals so that is can insert inline +source maps for its modifications + +# 8.0.2 + +ensures that transforms always execute in the order they were added + +https://github.com/substack/node-browserify/pull/1043 + +# 8.0.1 + +fixes some file path leaks in deduped deps + +https://github.com/substack/node-browserify/pull/994 +https://github.com/substack/node-browserify/issues/951 + +# 8.0.0 + +In previous releases, the deduping logic was over-zealous about how it handled +module references for duplicates. The prior behavior would detect when the +dependency tree of a module matched an existing module in addition to having the +exact same source code to share an instance. This was originally designed to +support libraries like threejs that internally use `instanceof` checks that +don't usually work very well across multiple packages. This feature didn't pan +out and didn't work very well in practice. + +Later, a better way of deduping emerged after some unrelated tweaks to +browser-pack to support source introspection for webworkers. The reflection form +of deduping using implicit arguments is now the only kind. + +The deduping instance feature resulted in this bug: +https://github.com/substack/node-browserify/issues/1027 +which created very surprising results when duplicate files were in use. + +# 7.1.0 + +uses the new buffer@3.0.0, which passes node's own buffer test suite + +https://github.com/substack/node-browserify/pull/1040 + +# 7.0.3 + +allows modules to be bundled with local paths and exposed at the same time + +https://github.com/substack/node-browserify/pull/1033 + +# 7.0.2 + +fixes the global transform getting added each re-bundle + +https://github.com/substack/node-browserify/issues/1026 + +# 7.0.1 + +fixes rebundling (used by watchify) when transforming + +https://github.com/substack/node-browserify/issues/1012 + +also fixes https://github.com/substack/node-browserify/issues/1015 + +# 7.0.0 + +Global transforms are now resolved to an absolute path before walking files. +This fixes some bugs with local module versions taking precedence over global +transforms and unresolvable global transforms spanning system directories. + +This is a small breaking change since now transform objects live in the pipeline +between the record and deps phases. This should only affect programs that expect +records in the pipeline to only contain file objects. + +# 6.3.4 + +fixes a bug setting placeholder filenames on stream inputs to be properly unique + +# 6.3.3 + +fixes an issue with the expose property when opts.fullPaths is enabled + +This issue commonly crops up in watchify. + +https://github.com/substack/node-browserify/pull/991 +https://github.com/substack/node-browserify/issues/850 + # 6.3.2 updates regexps that test for absolute and relative paths to work better on @@ -70,6 +577,13 @@ reproducible builds. https://github.com/substack/node-browserify/pull/923 +Version 6 is a tiny but breaking change to how source map paths work. + +Now all source map paths are relative by default. This makes it easier to have +deterministic debug builds across different systems and directories. If +browserify is installed in a project-local directory, all the source map paths +will be self-contained and relative against that location in node_modules. + # 5.13.1 bails early if opts.basedir is not the correct type @@ -240,7 +754,7 @@ adds an untracked test At a glance: * extensible internal labeled-stream-splicer pipeline -* bundle() - no longer accepts `opts`, callback gets a buffer +* bundle() - no longer accepts `opts`, callback gets a buffer * b.deps(), b.pack(), opts.pack, opts.deps are gone * can call bundle() multiple times on the same instance * a better --noparse matcher @@ -251,7 +765,78 @@ At a glance: * hashing is gone so `expose: true` or explicit expose id is required for doing multi-export bundles -In more depth: [doc/changelog/5_0.markdown](doc/changelog/5_0.markdown). +Version 5 is a big rearranging of browserify internals with more places for +external code to hook into the build pipeline. + +These changes are mostly aligned around the theme of making it easier for +external code to interface with browserify internals in a less hacky way. + +## pipeline + +Now the core of browserify is organized into a +[labeled-stream-splicer](https://npmjs.org/package/labeled-stream-splicer) +pipeline. This means that user code and plugins can hook into browserify by +pushing themselves onto the pipeline at a label: + +``` js +var browserify = require('browserify'); +var through = require('through2'); +var bundle = browserify(); + +bundle.pipeline.get('deps').push(through.obj(function (row, enc, next) { + console.log('DEP:', row.id); + this.push(row); + next(); +})); +``` + +User code can remove existing transforms or add its own hooks. These are the +labeled sections you can get a handle on with `bundle.pipeline.get()` + +* `'record'` - save inputs to play back later on subsequent `bundle()` calls +* `'deps'` - [module-deps](https://npmjs.org/package/module-deps) +* `'unbom'` - remove byte-order markers +* `'syntax'` - check for syntax errors +* `'sort'` - sort the dependencies for deterministic bundles +* `'dedupe'` - remove duplicate source contents +* `'label'` - apply integer labels to files +* `'emit-deps'` - emit `'dep'` event +* `'debug'` - apply source maps +* `'pack'` - [browser-pack](https://npmjs.org/package/browser-pack) +* `'wrap'` - apply final wrapping, `require=` and a newline and semicolon + +Because there is now a proper pipeline, `opts.pack`, `opts.deps`, `b.deps()`, +and `b.pack()` are removed. + +## bundle() + +Big changes have been made to the `bundle()` function. All options have been +moved out of the `bundle(opts)` form and into the browserify constructor. Before +there was an unclear split between which arguments went into which function. + +You can now call `bundle()` multiple times on the same instance, even in +parallel. This will greatly simplify the caching system under watchify and will +fix many long-standing bugs. + +The callback to `bundle(cb)` is now called with `cb(err, buf)` instead of +`cb(err, string)` as before. + +## labeling + +The former hashing system is removed, in favor of file paths rooted at the +`opts.basedir`, or the cwd. + +This removal means that browserify can be much more consistent about applying +integer ids, which avoids exposing system paths in bundle output. + +Hashes are used internally for deduping purposes, but they operate on the +source content only. + +## others + +The matching logic in the `--noparse` feature is greatly improved. + +derequire has been taken out of core, which should speed up `--standalone`. # 4.2.3 @@ -330,7 +915,25 @@ upgrades the version of buffer to ^2.3.0 # 4.0 -4.0 is hot off the presses. See [doc/changelog/4_0.markdown]. +Here are the new breaking changes in browserify v4. Most users should be unaffected. + +## readable-stream + +`require('stream')` is now using [readable-stream](https://npmjs.org/package/readable-stream) (but the classic-mode shim persists in stream-browserify just like in node core). This should result in much smaller files for all modules using a similar-enough version of readable-stream as browserify itself. Other modules should be relatively unaffected. + +## removed .expose() + +Removal of the previously-deprecated and obscure `bundle.expose()`. + +## took out implicit reading from stdin + +Previously if you invoked the browserify command without any entry files as arguments and stdin was a tty, stdin would be implicitly added as an entry file. This feature was causing problems so it has been removed. https://github.com/substack/node-browserify/issues/724#issuecomment-42731877 + +## more! + +In the run-up to the 4.0, [module-deps](https://npmjs.org/package/module-deps) got an extensive rewrite with minimal test changes. Mostly it was just getting really messy because it was a giant ball-of-mud closure instead of a more straightforward prototype-based implementation with more clearly-defined methods. + +The module-deps rewrite was triggered by [system paths showing up in build output](https://github.com/substack/node-browserify/issues/675) but was fixed in 3.46.1. The solution actually didn't end up needing changes in module-deps as originally anticipated but module-deps was in dire need of a cleanup. # 3.46.1 @@ -346,7 +949,7 @@ renders complete stack traces where before they were getting truncated https://g # 3.44.2 -slims down the dependency payload by 20M https://github.com/substack/node-browserify/pull/736 +slims down the dependency payload by 20M https://github.com/substack/node-browserify/pull/736 # 3.44.1 @@ -362,39 +965,39 @@ lets b.transform(opts, t) args to be swapped around since opts is more common as # 3.42.0 -passes through the dir parameter in opts.packageFilter from module-deps 1.10.0 https://github.com/substack/node-browserify/pull/731 +passes through the dir parameter in opts.packageFilter from module-deps 1.10.0 https://github.com/substack/node-browserify/pull/731 # 3.41.0 -has an option to disable external files, making it easier to run bundles in node for code coverage https://github.com/substack/node-browserify/pull/672 +has an option to disable external files, making it easier to run bundles in node for code coverage https://github.com/substack/node-browserify/pull/672 # 3.40.4 -makes --list work again https://github.com/substack/node-browserify/pull/727 +makes --list work again https://github.com/substack/node-browserify/pull/727 # 3.40.3 -merges a patch for piping via stdin and --require at the same time https://github.com/substack/node-browserify/pull/728 +merges a patch for piping via stdin and --require at the same time https://github.com/substack/node-browserify/pull/728 # 3.40.2 -upgrades module-deps to fix --list for $NODE_PATH https://github.com/substack/node-browserify/issues/726 +upgrades module-deps to fix --list for $NODE_PATH https://github.com/substack/node-browserify/issues/726 # 3.40.1 -upgrades module-deps to get this packageTransform bugfix https://github.com/substack/module-deps/pull/32 +upgrades module-deps to get this packageTransform bugfix https://github.com/substack/module-deps/pull/32 # 3.40.0 -modifies the behavior of opts.builtins to be more useful and intuitive https://github.com/substack/node-browserify/pull/717 +modifies the behavior of opts.builtins to be more useful and intuitive https://github.com/substack/node-browserify/pull/717 # 3.39.0 -adds a zlib that has parity with node https://github.com/substack/node-browserify/pull/721 +adds a zlib that has parity with node https://github.com/substack/node-browserify/pull/721 # 3.38.0 -upgrades derequire which uses esprima-fb https://github.com/substack/node-browserify/pull/710 +upgrades derequire which uses esprima-fb https://github.com/substack/node-browserify/pull/710 # 3.37.2 @@ -410,7 +1013,7 @@ also reverts that require('process') thing which was mistakenly briefly put in t # 3.37.0 -gives streams2 semantics for bundle() https://github.com/substack/node-browserify/pull/646 +gives streams2 semantics for bundle() https://github.com/substack/node-browserify/pull/646 # 3.36.1 @@ -422,35 +1025,35 @@ adds require('process') and removes the path resolution for process out of inser # 3.35.0 -adds an empty tls stub to the builtins list https://github.com/substack/node-browserify/issues/703 +adds an empty tls stub to the builtins list https://github.com/substack/node-browserify/issues/703 # 3.34.0 -fixes a bug with transforms not being applied in deps() https://github.com/substack/node-browserify/pull/708 +fixes a bug with transforms not being applied in deps() https://github.com/substack/node-browserify/pull/708 # 3.33.1 -fixes a bug with options in --global-transform on the command-line https://github.com/substack/node-browserify/pull/705 +fixes a bug with options in --global-transform on the command-line https://github.com/substack/node-browserify/pull/705 # 3.33.0 -fixes parsing errors while maintaining es6 support by switching to esprima-fb https://github.com/substack/node-browserify/issues/698 +fixes parsing errors while maintaining es6 support by switching to esprima-fb https://github.com/substack/node-browserify/issues/698 # 3.32.1 -should be easier to shinkwrap and install on windows https://github.com/substack/node-browserify/pull/684 +should be easier to shinkwrap and install on windows https://github.com/substack/node-browserify/pull/684 # 3.32.0 -adds --full-path and opts.fullPath to always expand ids to full paths https://github.com/substack/node-browserify/pull/668#issuecomment-36586786 +adds --full-path and opts.fullPath to always expand ids to full paths https://github.com/substack/node-browserify/pull/668#issuecomment-36586786 # 3.31.2 -fixes a bug in the subarg argument parsing for multiple transforms https://github.com/substack/node-browserify/issues/678 +fixes a bug in the subarg argument parsing for multiple transforms https://github.com/substack/node-browserify/issues/678 # 3.31.1 -uses process.cwd() as the default rebase target instead of commondir https://github.com/substack/node-browserify/pull/669#issuecomment-36078282 +uses process.cwd() as the default rebase target instead of commondir https://github.com/substack/node-browserify/pull/669#issuecomment-36078282 # 3.31.0 @@ -458,23 +1061,23 @@ merges https://github.com/substack/node-browserify/pull/669 which should help w # 3.30.4 -fixes parsing the --insert-global-vars argument properly https://github.com/substack/node-browserify/pull/674 +fixes parsing the --insert-global-vars argument properly https://github.com/substack/node-browserify/pull/674 # 3.30.3 -fixes exclude globbing in the arg parser https://github.com/substack/node-browserify/pull/676 +fixes exclude globbing in the arg parser https://github.com/substack/node-browserify/pull/676 # 3.30.2 -included a fix for --no-builtins for non-wrapped modules https://github.com/substack/node-browserify/pull/666 +included a fix for --no-builtins for non-wrapped modules https://github.com/substack/node-browserify/pull/666 # 3.30.1 -upgrades buffer for a utf8 fix https://github.com/substack/node-browserify/pull/656 +upgrades buffer for a utf8 fix https://github.com/substack/node-browserify/pull/656 # 3.30.0 -adds globs for -u, -i, and -x https://github.com/substack/node-browserify/issues/654 +adds globs for -u, -i, and -x https://github.com/substack/node-browserify/issues/654 # 3.29.1 @@ -490,11 +1093,11 @@ now always includes the full package.json content in the 'package' event # 3.28.1 -fixes a bug with stream entry order https://github.com/substack/node-browserify/pull/643 +fixes a bug with stream entry order https://github.com/substack/node-browserify/pull/643 # 3.28.0 -adds plugins for doing super fancy things like factored bundle output https://github.com/substack/node-browserify#plugins +adds plugins for doing super fancy things like factored bundle output https://github.com/substack/node-browserify#plugins # 3.27.1 @@ -502,11 +1105,11 @@ fixes a bug resolving transform modules when browserify is under a symlink # 3.27.0 -adds transform configuration in the package.json browserify.transform field https://github.com/substack/module-deps#packagejson-transformkey +adds transform configuration in the package.json browserify.transform field https://github.com/substack/module-deps#packagejson-transformkey # 3.26.0 -you can pass arguments to transforms https://github.com/substack/node-browserify/blob/master/bin/advanced.txt#L67-L77 +you can pass arguments to transforms https://github.com/substack/node-browserify/blob/master/bin/advanced.txt#L67-L77 # 3.25.2 @@ -518,7 +1121,7 @@ fixes the transform docs # 3.25.0 -adds 'bundle' and 'transform' events https://github.com/substack/node-browserify#bonbundle-function-bundle- +adds 'bundle' and 'transform' events https://github.com/substack/node-browserify#bonbundle-function-bundle- # 3.24.11 @@ -526,15 +1129,15 @@ upgrades derequire to 0.6.0. That should be the last piece needed for full es6 s # 3.24.10 -expands the documentation for the package.json browser and browserify.transform fields https://github.com/substack/node-browserify#packagejson +expands the documentation for the package.json browser and browserify.transform fields https://github.com/substack/node-browserify#packagejson # 3.24.9 -fixes generator syntax and other es6-isms in browserify https://github.com/substack/node-browserify/issues/614 +fixes generator syntax and other es6-isms in browserify https://github.com/substack/node-browserify/issues/614 # 3.24.7 -fixes noParse, which had accidentally been disabled in the insert-module-global changes and also closes https://github.com/substack/node-browserify/issues/504 +fixes noParse, which had accidentally been disabled in the insert-module-global changes and also closes https://github.com/substack/node-browserify/issues/504 # 3.24.6 @@ -542,15 +1145,15 @@ similar to 3.24.5, 3.24.6 fixes some error reporting propagation from the browse # 3.24.3 -fixes how require('buffer').Buffer wasn't the same as implicit Buffer https://github.com/substack/node-browserify/issues/612 +fixes how require('buffer').Buffer wasn't the same as implicit Buffer https://github.com/substack/node-browserify/issues/612 # 3.24.2 -fixes where the output stream didn't emit "close" in standalone mode https://github.com/substack/node-browserify/pull/608 +fixes where the output stream didn't emit "close" in standalone mode https://github.com/substack/node-browserify/pull/608 # 3.24.1 -fixes an issue where --standalone combined with expose caused a syntax error https://github.com/substack/node-browserify/issues/489 +fixes an issue where --standalone combined with expose caused a syntax error https://github.com/substack/node-browserify/issues/489 # 3.24.0 @@ -558,7 +1161,7 @@ removes require() calls from --standalone so you can require() a standalone bund # 3.23.0 -merges this tiny fix returning `this` in noParse() https://github.com/substack/node-browserify/pull/592 +merges this tiny fix returning `this` in noParse() https://github.com/substack/node-browserify/pull/592 # 3.22.0 @@ -574,7 +1177,7 @@ has a fix for the case where stdin is implicitly treated as the input stream ins # 3.20.0 -3.20.0 is out: parity with how $NODE_PATH works in node https://github.com/substack/node-browserify/issues/593 +3.20.0 is out: parity with how $NODE_PATH works in node https://github.com/substack/node-browserify/issues/593 # 3.19.1 @@ -582,5 +1185,77 @@ restores support for node 0.8 by upgrading concat-stream # 3.0 -See [doc/changelog/3_0.markdown](doc/changelog/3_0.markdown). - +A new [browserify](http://browserify.org) version is upon us, just in time for +the FESTIVE SEASON during which we in the northern hemisphere at mid to high +latitudes huddle for warmth around oxidizing hydrocarbons! + +There are 2 big changes in v3 but most code should be relatively unaffected. + +## shiny new Buffer + +[feross](https://github.com/feross) forked +the [buffer-browserify](https://npmjs.org/package/buffer-browserify) package +to create +[native-buffer-browserify](https://npmjs.org/package/native-buffer-browserify), +a `Buffer` implementation that uses `Uint8Array` to get `buf[i]` notation and +parity with the node core `Buffer` api without the performance hit of the +previous implementation and a much smaller file size. The downside is that +`Buffer` now only works in browsers with `Uint8Array` and `DataView` support. +All the other modules should maintain existing browser support. + +*Update*: a [shim was added](https://npmjs.org/package/typedarray) +to in 3.1 for Uint8Array and DataView support. Now you can use `Buffer` in every +browser. + +## direct builtin dependencies + +In v3, browserify no longer depends on +[browser-builtins](https://npmjs.org/package/browser-builtins), in favor of +depending on packages directly. Instead of having some separate packages and +some files in a `builtin/` directory like browser-builtins, browserify now uses +*only* external packages for the shims it uses. By only using external packages +we can keep browserify core focused purely on the static analysis and bundling +machinery while letting the individual packages worry about things like browser +compatibility and parity with the node core API as it evolves. + +Individual, tiny packages should also be much easier for newcomers to contribute +packages toward because they won't need to get up to speed with all the other +pieces going on and the packages can have their own tests and documentation. +Additionally, each package may find uses in other projects beside browserify +more easily and if people want variations on the versions of shims that ship +with browserify core this is easier to do when everything is separate. + +Back when we were using browser-builtins there was a large latency between +pushing out fixes to the individual packages and getting them into browserify +core because we had to wait on browser-builtins to upgrade the semvers in its +package.json. With direct dependencies we get much lower latency for package +upgrades and much more granular control over upgrading packages. + +Here is the list of packages we now directly depend on in v3: + +* [assert](https://npmjs.org/package/assert) +* [buffer](https://npmjs.org/package/native-buffer-browserify) +* [console](https://npmjs.org/package/console-browserify) +* [constants](https://npmjs.org/package/constants-browserify) +* [crypto](https://npmjs.org/package/crypto-browserify) +* [events](https://npmjs.org/package/events-browserify) +* [http](https://npmjs.org/package/http-browserify) +* [https](https://npmjs.org/package/https-browserify) +* [os](https://npmjs.org/package/os-browserify) +* [path](https://npmjs.org/package/path-browserify) +* [punycode](https://npmjs.org/package/punycode) +* [querystring](https://npmjs.org/package/querystring) +* [stream](https://npmjs.org/package/stream-browserify) +* [string_decoder](https://npmjs.org/package/string_decoder) +* [timers](https://npmjs.org/package/timers-browserify) +* [tty](https://npmjs.org/package/tty-browserify) +* [url](https://npmjs.org/package/url) +* [util](https://npmjs.org/package/util) +* [vm](https://npmjs.org/package/vm-browserify) +* [zlib](https://npmjs.org/package/zlib-browserify) + +That's it! If you're bold enough to give v3 a spin, just do: + +``` +npm install -g browserify +``` diff --git a/code-of-conduct.md b/code-of-conduct.md new file mode 100644 index 000000000..4a324853b --- /dev/null +++ b/code-of-conduct.md @@ -0,0 +1,78 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at (any one or all of these): + +* substack@gmail.com + +All complaints will be reviewed and investigated and will result in a response +that is deemed necessary and appropriate to the circumstances. The project team +is obligated to maintain confidentiality with regard to the reporter of an +incident. Further details of specific enforcement policies may be posted +separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/doc/changelog/3_0.markdown b/doc/changelog/3_0.markdown deleted file mode 100644 index 3e8db543c..000000000 --- a/doc/changelog/3_0.markdown +++ /dev/null @@ -1,74 +0,0 @@ -A new [browserify](http://browserify.org) version is upon us, just in time for -the FESTIVE SEASON during which we in the northern hemisphere at mid to high -latitudes huddle for warmth around oxidizing hydrocarbons! - -There are 2 big changes in v3 but most code should be relatively unaffected. - -# shiny new Buffer - -[feross](https://github.com/feross) forked -the [buffer-browserify](https://npmjs.org/package/buffer-browserify) package -to create -[native-buffer-browserify](https://npmjs.org/package/native-buffer-browserify), -a `Buffer` implementation that uses `Uint8Array` to get `buf[i]` notation and -parity with the node core `Buffer` api without the performance hit of the -previous implementation and a much smaller file size. The downside is that -`Buffer` now only works in browsers with `Uint8Array` and `DataView` support. -All the other modules should maintain existing browser support. - -*Update*: a [shim was added](https://npmjs.org/package/typedarray) -to in 3.1 for Uint8Array and DataView support. Now you can use `Buffer` in every -browser. - -# direct builtin dependencies - -In v3, browserify no longer depends on -[browser-builtins](https://npmjs.org/package/browser-builtins), in favor of -depending on packages directly. Instead of having some separate packages and -some files in a `builtin/` directory like browser-builtins, browserify now uses -*only* external packages for the shims it uses. By only using external packages -we can keep browserify core focused purely on the static analysis and bundling -machinery while letting the individual packages worry about things like browser -compatibility and parity with the node core API as it evolves. - -Individual, tiny packages should also be much easier for newcomers to contribute -packages toward because they won't need to get up to speed with all the other -pieces going on and the packages can have their own tests and documentation. -Additionally, each package may find uses in other projects beside browserify -more easily and if people want variations on the versions of shims that ship -with browserify core this is easier to do when everything is separate. - -Back when we were using browser-builtins there was a large latency between -pushing out fixes to the individual packages and getting them into browserify -core because we had to wait on browser-builtins to upgrade the semvers in its -package.json. With direct dependencies we get much lower latency for package -upgrades and much more granular control over upgrading packages. - -Here is the list of packages we now directly depend on in v3: - -* [assert](https://npmjs.org/package/assert) -* [buffer](https://npmjs.org/package/native-buffer-browserify) -* [console](https://npmjs.org/package/console-browserify) -* [constants](https://npmjs.org/package/constants-browserify) -* [crypto](https://npmjs.org/package/crypto-browserify) -* [events](https://npmjs.org/package/events-browserify) -* [http](https://npmjs.org/package/http-browserify) -* [https](https://npmjs.org/package/https-browserify) -* [os](https://npmjs.org/package/os-browserify) -* [path](https://npmjs.org/package/path-browserify) -* [punycode](https://npmjs.org/package/punycode) -* [querystring](https://npmjs.org/package/querystring) -* [stream](https://npmjs.org/package/stream-browserify) -* [string_decoder](https://npmjs.org/package/string_decoder) -* [timers](https://npmjs.org/package/timers-browserify) -* [tty](https://npmjs.org/package/tty-browserify) -* [url](https://npmjs.org/package/url) -* [util](https://npmjs.org/package/util) -* [vm](https://npmjs.org/package/vm-browserify) -* [zlib](https://npmjs.org/package/zlib-browserify) - -That's it! If you're bold enough to give v3 a spin, just do: - -``` -npm install -g browserify -``` diff --git a/doc/changelog/4_0.markdown b/doc/changelog/4_0.markdown deleted file mode 100644 index b734ca19e..000000000 --- a/doc/changelog/4_0.markdown +++ /dev/null @@ -1,19 +0,0 @@ -Here are the new breaking changes in browserify v4. Most users should be unaffected. - -# readable-stream - -`require('stream')` is now using [readable-stream](https://npmjs.org/package/readable-stream) (but the classic-mode shim persists in stream-browserify just like in node core). This should result in much smaller files for all modules using a similar-enough version of readable-stream as browserify itself. Other modules should be relatively unaffected. - -# removed .expose() - -Removal of the previously-deprecated and obscure `bundle.expose()`. - -# took out implicit reading from stdin - -Previously if you invoked the browserify command without any entry files as arguments and stdin was a tty, stdin would be implicitly added as an entry file. This feature was causing problems so it has been removed. https://github.com/substack/node-browserify/issues/724#issuecomment-42731877 - -# more! - -In the run-up to the 4.0, [module-deps](https://npmjs.org/package/module-deps) got an extensive rewrite with minimal test changes. Mostly it was just getting really messy because it was a giant ball-of-mud closure instead of a more straightforward prototype-based implementation with more clearly-defined methods. - -The module-deps rewrite was triggered by [system paths showing up in build output](https://github.com/substack/node-browserify/issues/675) but was fixed in 3.46.1. The solution actually didn't end up needing changes in module-deps as originally anticipated but module-deps was in dire need of a cleanup. diff --git a/doc/changelog/5_0.markdown b/doc/changelog/5_0.markdown deleted file mode 100644 index 5a8d9d28d..000000000 --- a/doc/changelog/5_0.markdown +++ /dev/null @@ -1,72 +0,0 @@ -Version 5 is a big rearranging of browserify internals with more places for -external code to hook into the build pipeline. - -These changes are mostly aligned around the theme of making it easier for -external code to interface with browserify internals in a less hacky way. - -# pipeline - -Now the core of browserify is organized into a -[labeled-stream-splicer](https://npmjs.org/package/labeled-stream-splicer) -pipeline. This means that user code and plugins can hook into browserify by -pushing themselves onto the pipeline at a label: - -``` js -var browserify = require('browserify'); -var through = require('through2'); -var bundle = browserify(); - -bundle.pipeline.get('deps').push(through.obj(function (row, enc, next) { - console.log('DEP:', row.id); - this.push(row); - next(); -})); -``` - -User code can remove existing transforms or add its own hooks. These are the -labeled sections you can get a handle on with `bundle.pipeline.get()` - -* `'record'` - save inputs to play back later on subsequent `bundle()` calls -* `'deps'` - [module-deps](https://npmjs.org/package/module-deps) -* `'unbom'` - remove byte-order markers -* `'syntax'` - check for syntax errors -* `'sort'` - sort the dependencies for deterministic bundles -* `'dedupe'` - remove duplicate source contents -* `'label'` - apply integer labels to files -* `'emit-deps'` - emit `'dep'` event -* `'debug'` - apply source maps -* `'pack'` - [browser-pack](https://npmjs.org/package/browser-pack) -* `'wrap'` - apply final wrapping, `require=` and a newline and semicolon - -Because there is now a proper pipeline, `opts.pack`, `opts.deps`, `b.deps()`, -and `b.pack()` are removed. - -# bundle() - -Big changes have been made to the `bundle()` function. All options have been -moved out of the `bundle(opts)` form and into the browserify constructor. Before -there was an unclear split between which arguments went into which function. - -You can now call `bundle()` multiple times on the same instance, even in -parallel. This will greatly simplify the caching system under watchify and will -fix many long-standing bugs. - -The callback to `bundle(cb)` is now called with `cb(err, buf)` instead of -`cb(err, string)` as before. - -# labeling - -The former hashing system is removed, in favor of file paths rooted at the -`opts.basedir`, or the cwd. - -This removal means that browserify can be much more consistent about applying -integer ids, which avoids exposing system paths in bundle output. - -Hashes are used internally for deduping purposes, but they operate on the -source content only. - -# others - -The matching logic in the `--noparse` feature is greatly improved. - -derequire has been taken out of core, which should speed up `--standalone`. diff --git a/doc/changelog/6_0.markdown b/doc/changelog/6_0.markdown deleted file mode 100644 index 8defb55f6..000000000 --- a/doc/changelog/6_0.markdown +++ /dev/null @@ -1,8 +0,0 @@ -Version 6 is a tiny but breaking change to how source map paths work. - -Now all source map paths are relative by default. This makes it easier to have -deterministic debug builds across different systems and directories. If -browserify is installed in a project-local directory, all the source map paths -will be self-contained and relative against that location in node_modules. - -https://github.com/substack/node-browserify/pull/923 diff --git a/index.js b/index.js index bd7068ccf..bd808b67d 100644 --- a/index.js +++ b/index.js @@ -9,22 +9,27 @@ var builtins = require('./lib/builtins.js'); var splicer = require('labeled-stream-splicer'); var through = require('through2'); var concat = require('concat-stream'); -var duplexer = require('duplexer2'); var inherits = require('inherits'); var EventEmitter = require('events').EventEmitter; var xtend = require('xtend'); -var copy = require('shallow-copy'); -var isarray = require('isarray'); +var isArray = Array.isArray; var defined = require('defined'); +var has = require('has'); +var sanitize = require('htmlescape').sanitize; +var shasum = require('shasum'); var bresolve = require('browser-resolve'); var resolve = require('resolve'); +var readonly = require('read-only-stream'); + module.exports = Browserify; inherits(Browserify, EventEmitter); +var fs = require('fs'); var path = require('path'); +var relativePath = require('cached-path-relative') var paths = { empty: path.join(__dirname, 'lib/_empty.js') }; @@ -34,7 +39,7 @@ function Browserify (files, opts) { if (!(this instanceof Browserify)) return new Browserify(files, opts); if (!opts) opts = {}; - if (typeof files === 'string' || isarray(files) || isStream(files)) { + if (typeof files === 'string' || isArray(files) || isStream(files)) { opts = xtend(opts, { entries: [].concat(opts.entries || [], files) }); } else opts = xtend(files, opts); @@ -45,27 +50,41 @@ function Browserify (files, opts) { if (opts.basedir !== undefined && typeof opts.basedir !== 'string') { throw new Error('opts.basedir must be either undefined or a string.'); } - + + opts.dedupe = opts.dedupe === false ? false : true; + self._external = []; self._exclude = []; self._ignore = []; self._expose = {}; self._hashes = {}; self._pending = 0; + self._transformOrder = 0; + self._transformPending = 0; + self._transforms = []; self._entryOrder = 0; self._ticked = false; + self._bresolve = opts.browserField === false + ? function (id, opts, cb) { + if (!opts.basedir) opts.basedir = path.dirname(opts.filename) + resolve(id, opts, cb) + } + : bresolve + ; + self._syntaxCache = {}; var ignoreTransform = [].concat(opts.ignoreTransform).filter(Boolean); - self._filterTransform = function(tr) { - if (Array.isArray(tr)) { + self._filterTransform = function (tr) { + if (isArray(tr)) { return ignoreTransform.indexOf(tr[0]) === -1; } return ignoreTransform.indexOf(tr) === -1; - } - + }; + self.pipeline = self._createPipeline(opts); - [].concat(opts.transform).filter(Boolean).forEach(function (tr) { + [].concat(opts.transform).filter(Boolean).filter(self._filterTransform) + .forEach(function (tr) { self.transform(tr); }); @@ -84,7 +103,7 @@ function Browserify (files, opts) { Browserify.prototype.require = function (file, opts) { var self = this; - if (isarray(file)) { + if (isArray(file)) { file.forEach(function (x) { if (typeof x === 'object') { self.require(x.file, xtend(opts, x)); @@ -95,16 +114,18 @@ Browserify.prototype.require = function (file, opts) { } if (!opts) opts = {}; - var basedir = defined(opts.basedir, process.cwd()); + var basedir = defined(opts.basedir, self._options.basedir, process.cwd()); var expose = opts.expose; if (file === expose && /^[\.]/.test(expose)) { - expose = '/' + path.relative(basedir, expose); + expose = '/' + relativePath(basedir, expose); + expose = expose.replace(/\\/g, '/'); } if (expose === undefined && this._options.exposeAll) { expose = true; } if (expose === true) { - expose = '/' + path.relative(basedir, file); + expose = '/' + relativePath(basedir, file); + expose = expose.replace(/\\/g, '/'); } if (isStream(file)) { @@ -113,7 +134,7 @@ Browserify.prototype.require = function (file, opts) { file.pipe(concat(function (buf) { var filename = opts.file || file.file || path.join( basedir, - '_stream_' + self._entryOrder + '.js' + '_stream_' + order + '.js' ); var id = file.id || expose || filename; if (expose || opts.entry === false) { @@ -132,43 +153,50 @@ Browserify.prototype.require = function (file, opts) { if (rec.transform === false) rec.transform = false; self.pipeline.write(rec); - self._pending --; - if (self._pending === 0) self.emit('_ready'); + if (-- self._pending === 0) self.emit('_ready'); })); return this; } - var row = typeof file === 'object' - ? xtend(file, opts) - : (isExternalModule(file) - ? xtend(opts, { id: expose || file }) - : xtend(opts, { file: file }) - ) - ; + var row; + if (typeof file === 'object') { + row = xtend(file, opts); + } + else if (!opts.entry && isExternalModule(file)) { + // external module or builtin + row = xtend(opts, { id: expose || file, file: file }); + } + else { + row = xtend(opts, { file: path.resolve(basedir, file) }); + } + if (!row.id) { - row.id = expose || file; + row.id = expose || row.file; } if (expose || !row.entry) { - this._expose[row.id] = file; + // Make this available to mdeps so that it can assign the value when it + // resolves the pathname. + row.expose = row.id; } - if (opts.external) return this.external(file, opts); + + if (opts.external) return self.external(file, opts); if (row.entry === undefined) row.entry = false; - if (!row.entry && this._options.exports === undefined) { - this._bpack.hasExports = true; + if (!row.entry && self._options.exports === undefined) { + self._bpack.hasExports = true; } if (row.entry) row.order = self._entryOrder ++; - if (opts.transform === false) row.transform = false; - this.pipeline.write(row); - return this; + if (opts.transform === false) row.transform = false; + self.pipeline.write(row); + return self; }; Browserify.prototype.add = function (file, opts) { var self = this; if (!opts) opts = {}; - if (isarray(file)) { + if (isArray(file)) { file.forEach(function (x) { self.add(x, opts) }); return this; } @@ -177,7 +205,7 @@ Browserify.prototype.add = function (file, opts) { Browserify.prototype.external = function (file, opts) { var self = this; - if (isarray(file)) { + if (isArray(file)) { file.forEach(function (f) { if (typeof f === 'object') { self.external(f, xtend(opts, f)); @@ -189,9 +217,37 @@ Browserify.prototype.external = function (file, opts) { if (file && typeof file === 'object' && typeof file.bundle === 'function') { var b = file; self._pending ++; + + var bdeps = {}; + var blabels = {}; + b.on('label', function (prev, id) { self._external.push(id); + + if (prev !== id) { + blabels[prev] = id; + self._external.push(prev); + } + }); + + b.pipeline.get('deps').push(through.obj(function (row, enc, next) { + bdeps = xtend(bdeps, row.deps); + this.push(row); + next(); + })); + + self.on('dep', function (row) { + Object.keys(row.deps).forEach(function (key) { + var prev = bdeps[key]; + if (prev) { + var id = blabels[prev]; + if (id) { + row.indexDeps[key] = id; + } + } + }); }); + b.pipeline.get('label').once('end', function () { if (-- self._pending === 0) self.emit('_ready'); }); @@ -201,20 +257,34 @@ Browserify.prototype.external = function (file, opts) { if (!opts) opts = {}; var basedir = defined(opts.basedir, process.cwd()); this._external.push(file); - this._external.push('/' + path.relative(basedir, file)); + this._external.push('/' + relativePath(basedir, file)); return this; }; Browserify.prototype.exclude = function (file, opts) { if (!opts) opts = {}; + if (isArray(file)) { + var self = this; + file.forEach(function(file) { + self.exclude(file, opts); + }); + return this; + } var basedir = defined(opts.basedir, process.cwd()); this._exclude.push(file); - this._exclude.push('/' + path.relative(basedir, file)); + this._exclude.push('/' + relativePath(basedir, file)); return this; }; Browserify.prototype.ignore = function (file, opts) { if (!opts) opts = {}; + if (isArray(file)) { + var self = this; + file.forEach(function(file) { + self.ignore(file, opts); + }); + return this; + } var basedir = defined(opts.basedir, process.cwd()); // Handle relative paths @@ -232,34 +302,63 @@ Browserify.prototype.transform = function (tr, opts) { if (typeof opts === 'function' || typeof opts === 'string') { tr = [ opts, tr ]; } - if (isarray(tr)) { + if (isArray(tr)) { opts = tr[1]; tr = tr[0]; } - - + //if the bundler is ignoring this transform - if (typeof tr === 'string' && !self._filterTransform(tr)) + if (typeof tr === 'string' && !self._filterTransform(tr)) { return this; + } - if (!opts) opts = {}; + function resolved () { + self._transforms[order] = rec; + -- self._pending; + if (-- self._transformPending === 0) { + self._transforms.forEach(function (transform) { + self.pipeline.write(transform); + }); + + if (self._pending === 0) { + self.emit('_ready'); + } + } + } + if (!opts) opts = {}; opts._flags = '_flags' in opts ? opts._flags : self._options; - apply(); - self.on('reset', apply); - - function apply () { - if (opts.global) { - self._mdeps.globalTransforms.push([ tr, opts ]); - } - else self._mdeps.transforms.push([ tr, opts ]); + var basedir = defined(opts.basedir, this._options.basedir, process.cwd()); + var order = self._transformOrder ++; + self._pending ++; + self._transformPending ++; + + var rec = { + transform: tr, + options: opts, + global: opts.global + }; + + if (typeof tr === 'string') { + var topts = { + basedir: basedir, + paths: (self._options.paths || []).map(function (p) { + return path.resolve(basedir, p); + }) + }; + resolve(tr, topts, function (err, res) { + if (err) return self.emit('error', err); + rec.transform = res; + resolved(); + }); } + else process.nextTick(resolved); return this; }; Browserify.prototype.plugin = function (p, opts) { - if (isarray(p)) { + if (isArray(p)) { opts = p[1]; p = p[0]; } @@ -298,7 +397,7 @@ Browserify.prototype._createPipeline = function (opts) { var dopts = { index: !opts.fullPaths && !opts.exposeAll, - dedupe: true, + dedupe: opts.dedupe, expose: this._expose }; this._bpack = bpack(xtend(opts, { raw: true })); @@ -325,10 +424,10 @@ Browserify.prototype._createPipeline = function (opts) { if (self._external.indexOf(row.file) >= 0) return next(); if (isAbsolutePath(row.id)) { - row.id = '/' + path.relative(basedir, row.file); + row.id = '/' + relativePath(basedir, row.file); } Object.keys(row.deps || {}).forEach(function (key) { - row.deps[key] = '/' + path.relative(basedir, row.deps[key]); + row.deps[key] = '/' + relativePath(basedir, row.deps[key]); }); this.push(row); next(); @@ -339,18 +438,17 @@ Browserify.prototype._createPipeline = function (opts) { Browserify.prototype._createDeps = function (opts) { var self = this; - var mopts = copy(opts); + var mopts = xtend(opts); var basedir = defined(opts.basedir, process.cwd()); - + + // Let mdeps populate these values since it will be resolving file paths + // anyway. + mopts.expose = this._expose; mopts.extensions = [ '.js', '.json' ].concat(mopts.extensions || []); self._extensions = mopts.extensions; - - //filter transforms on top-level - mopts.transform = [].concat(opts.transform) - .filter(Boolean) - .filter(self._filterTransform); - mopts.transformKey = [ 'browserify', 'transform' ]; + mopts.transform = []; + mopts.transformKey = defined(opts.transformKey, [ 'browserify', 'transform' ]); mopts.postFilter = function (id, file, pkg) { if (opts.postFilter && !opts.postFilter(id, file, pkg)) return false; if (self._external.indexOf(file) >= 0) return false; @@ -377,7 +475,7 @@ Browserify.prototype._createDeps = function (opts) { mopts.resolve = function (id, parent, cb) { if (self._ignore.indexOf(id) >= 0) return cb(null, paths.empty, {}); - bresolve(id, parent, function (err, file, pkg) { + self._bresolve(id, parent, function (err, file, pkg) { if (file && self._ignore.indexOf(file) >= 0) { return cb(null, paths.empty, {}); } @@ -392,7 +490,7 @@ Browserify.prototype._createDeps = function (opts) { } if (file) { - var ex = '/' + path.relative(basedir, file); + var ex = '/' + relativePath(basedir, file); if (self._external.indexOf(ex) >= 0) { return cb(null, ex); } @@ -403,7 +501,11 @@ Browserify.prototype._createDeps = function (opts) { return cb(null, paths.empty, {}); } } - cb(err, file, pkg); + if (err) cb(err, file, pkg) + else if (file) fs.realpath(file, function (err, res) { + cb(err, res, pkg, file); + }); + else cb(err, null, pkg) }); }; @@ -411,7 +513,7 @@ Browserify.prototype._createDeps = function (opts) { mopts.modules = {}; self._exclude.push.apply(self._exclude, Object.keys(builtins)); } - else if (opts.builtins && isarray(opts.builtins)) { + else if (opts.builtins && isArray(opts.builtins)) { mopts.modules = {}; opts.builtins.forEach(function (key) { mopts.modules[key] = builtins[key]; @@ -420,26 +522,36 @@ Browserify.prototype._createDeps = function (opts) { else if (opts.builtins && typeof opts.builtins === 'object') { mopts.modules = opts.builtins; } - else mopts.modules = builtins; + else mopts.modules = xtend(builtins); Object.keys(builtins).forEach(function (key) { if (!has(mopts.modules, key)) self._exclude.push(key); }); mopts.globalTransform = []; - this.once('bundle', function () { - self._mdeps.globalTransforms.push([ globalTr, {} ]); + if (!this._bundled) { + this.once('bundle', function () { + self.pipeline.write({ + transform: globalTr, + global: true, + options: {} + }); + }); + } + + var no = [].concat(opts.noParse).filter(Boolean); + var absno = no.filter(function(x) { + return typeof x === 'string'; + }).map(function (x) { + return path.resolve(basedir, x); }); function globalTr (file) { if (opts.detectGlobals === false) return through(); if (opts.noParse === true) return through(); - var no = [].concat(opts.noParse).filter(Boolean); if (no.indexOf(file) >= 0) return through(); - if (no.map(function (x){return path.resolve(x)}).indexOf(file)>=0){ - return through(); - } + if (absno.indexOf(file) >= 0) return through(); var parts = file.split('/node_modules/'); for (var i = 0; i < no.length; i++) { @@ -459,11 +571,12 @@ Browserify.prototype._createDeps = function (opts) { }, opts.insertGlobalVars); if (opts.bundleExternal === false) { - delete vars.process; - delete vars.buffer; + vars.process = undefined; + vars.buffer = undefined; } return insertGlobals(file, xtend(opts, { + debug: opts.debug, always: opts.insertGlobals, basedir: opts.commondir === false ? '/' @@ -507,7 +620,7 @@ Browserify.prototype._recorder = function (opts) { Browserify.prototype._json = function () { return through.obj(function (row, enc, next) { if (/\.json$/.test(row.file)) { - row.source = 'module.exports=' + row.source; + row.source = 'module.exports=' + sanitize(row.source); } this.push(row); next(); @@ -535,9 +648,14 @@ Browserify.prototype._unshebang = function () { }; Browserify.prototype._syntax = function () { + var self = this; return through.obj(function (row, enc, next) { - var err = syntaxError(row.source, row.file || row.id); - if (err) return this.emit('error', err); + var h = shasum(row.source); + if (typeof self._syntaxCache[h] === 'undefined') { + var err = syntaxError(row.source, row.file || row.id); + if (err) return this.emit('error', err); + self._syntaxCache[h] = true; + } this.push(row); next(); }); @@ -546,20 +664,10 @@ Browserify.prototype._syntax = function () { Browserify.prototype._dedupe = function () { return through.obj(function (row, enc, next) { if (!row.dedupeIndex && row.dedupe) { - row.source = 'module.exports=require(' + row.source = 'arguments[4][' + JSON.stringify(row.dedupe) - + ')' - ; - row.deps = {}; - row.deps[row.dedupe] = row.dedupe; - row.nomap = true; - } - if (row.dedupeIndex && row.sameDeps) { - row.source = 'module.exports=require(' - + JSON.stringify(row.dedupeIndex) - + ')' + + '][0].apply(exports,arguments)' ; - row.deps = {}; row.nomap = true; } else if (row.dedupeIndex) { @@ -569,8 +677,8 @@ Browserify.prototype._dedupe = function () { ; row.nomap = true; } - if (row.dedupeIndex && row.dedupe && row.indexDeps) { - row.indexDeps[row.dedupe] = row.dedupeIndex; + if (row.dedupeIndex && row.indexDeps) { + row.indexDeps.dup = row.dedupeIndex; } this.push(row); next(); @@ -583,13 +691,12 @@ Browserify.prototype._label = function (opts) { return through.obj(function (row, enc, next) { var prev = row.id; - - var relf = '/' + path.relative(basedir, row.id); - var reli = '/' + path.relative(basedir, row.id); + if (self._external.indexOf(row.id) >= 0) return next(); - if (self._external.indexOf(reli) >= 0) return next(); + if (self._external.indexOf('/' + relativePath(basedir, row.id)) >= 0) { + return next(); + } if (self._external.indexOf(row.file) >= 0) return next(); - if (self._external.indexOf(relf) >= 0) return next(); if (row.index) row.id = row.index; @@ -597,8 +704,13 @@ Browserify.prototype._label = function (opts) { if (row.indexDeps) row.deps = row.indexDeps || {}; Object.keys(row.deps).forEach(function (key) { + if (self._expose[key]) { + row.deps[key] = key; + return; + } + var afile = path.resolve(path.dirname(row.file), key); - var rfile = '/' + path.relative(basedir, afile); + var rfile = '/' + relativePath(basedir, afile); if (self._external.indexOf(rfile) >= 0) { row.deps[key] = rfile; } @@ -641,7 +753,8 @@ Browserify.prototype._debug = function (opts) { return through.obj(function (row, enc, next) { if (opts.debug) { row.sourceRoot = 'file://localhost'; - row.sourceFile = path.relative(basedir, row.file); + row.sourceFile = relativePath(basedir, row.file) + .replace(/\\/g, '/'); } this.push(row); next(); @@ -673,27 +786,26 @@ Browserify.prototype.bundle = function (cb) { self.pipeline.write(x); }); } - this.emit('bundle', this.pipeline); - + var output = readonly(this.pipeline); if (cb) { - this.pipeline.on('error', cb); - this.pipeline.pipe(concat(function (body) { + output.on('error', cb); + output.pipe(concat(function (body) { cb(null, body); })); } - - if (this._pending === 0) { - this.pipeline.end(); - } - else this.once('_ready', function () { + + function ready () { + self.emit('bundle', output); self.pipeline.end(); - }); - + } + + if (this._pending === 0) ready(); + else this.once('_ready', ready); + this._bundled = true; - return this.pipeline; + return output; }; -function has (obj, key) { return Object.hasOwnProperty.call(obj, key) } function isStream (s) { return s && typeof s.pipe === 'function' } function isAbsolutePath (file) { var regexp = process.platform === 'win32' ? diff --git a/lib/builtins.js b/lib/builtins.js index 743265150..26c8904ec 100644 --- a/lib/builtins.js +++ b/lib/builtins.js @@ -10,7 +10,7 @@ exports.dns = require.resolve('./_empty.js'); exports.domain = require.resolve('domain-browser'); exports.events = require.resolve('events/'); exports.fs = require.resolve('./_empty.js'); -exports.http = require.resolve('http-browserify'); +exports.http = require.resolve('stream-http'); exports.https = require.resolve('https-browserify'); exports.module = require.resolve('./_empty.js'); exports.net = require.resolve('./_empty.js'); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..6bb15bf71 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3669 @@ +{ + "name": "browserify", + "version": "15.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "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, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "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 + }, + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "requires": { + "acorn": "4.0.13" + } + }, + "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 + }, + "backbone": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/backbone/-/backbone-0.9.10.tgz", + "integrity": "sha1-ErhBwpwSpV7zfVgoA6D3+zUJT4o=", + "dev": true, + "requires": { + "underscore": "1.8.3" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + }, + "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, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-pack": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz", + "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", + "requires": { + "JSONStream": "1.3.2", + "combine-source-map": "0.7.2", + "defined": "1.0.0", + "through2": "2.0.3", + "umd": "3.0.1" + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browser-unpack": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browser-unpack/-/browser-unpack-1.2.0.tgz", + "integrity": "sha1-NXruMfxGeDFoTQY+Q1XgcKeClw0=", + "dev": true, + "requires": { + "acorn": "4.0.13", + "browser-pack": "5.0.1", + "concat-stream": "1.5.2", + "minimist": "1.2.0" + }, + "dependencies": { + "browser-pack": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-5.0.1.tgz", + "integrity": "sha1-QZdxmyDG4KqglFHFER5T77b7wY0=", + "dev": true, + "requires": { + "JSONStream": "1.3.2", + "combine-source-map": "0.6.1", + "defined": "1.0.0", + "through2": "1.1.1", + "umd": "3.0.1" + } + }, + "combine-source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.6.1.tgz", + "integrity": "sha1-m0oJwxYDPXaODxHgKfonMOB5rZY=", + "dev": true, + "requires": { + "convert-source-map": "1.1.3", + "inline-source-map": "0.5.0", + "lodash.memoize": "3.0.4", + "source-map": "0.4.4" + } + }, + "inline-source-map": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.5.0.tgz", + "integrity": "sha1-Skxd2OT7Xps82mDIIt+tyu5m4K8=", + "dev": true, + "requires": { + "source-map": "0.4.4" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", + "integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=", + "dev": true, + "requires": { + "readable-stream": "1.1.14", + "xtend": "4.0.1" + } + } + } + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "1.0.6" + } + }, + "buffer": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz", + "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==", + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=" + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "chainsaw": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.0.9.tgz", + "integrity": "sha1-EaBRAtHEx4W20EFdM21aOhYSkT4=", + "dev": true, + "requires": { + "traverse": "0.3.9" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "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 + }, + "coffee-script": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", + "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", + "dev": true + }, + "coffeeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/coffeeify/-/coffeeify-1.1.0.tgz", + "integrity": "sha1-VYxNW9+p1algfFnqkq20oWF5p4s=", + "dev": true, + "requires": { + "coffee-script": "1.10.0", + "convert-source-map": "1.1.3", + "through": "2.3.8" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "combine-source-map": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", + "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", + "requires": { + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" + } + }, + "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, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "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=" + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" + }, + "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=" + }, + "coveralls": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz", + "integrity": "sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==", + "dev": true, + "requires": { + "js-yaml": "3.6.1", + "lcov-parse": "0.0.10", + "log-driver": "1.2.5", + "minimist": "1.2.0", + "request": "2.79.0" + }, + "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, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } + } + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "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 + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "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 + }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "requires": { + "JSONStream": "1.3.2", + "shasum": "1.0.2", + "subarg": "1.0.0", + "through2": "2.0.3" + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "2.3.3" + } + }, + "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, + "requires": { + "jsbn": "0.1.1" + } + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "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 + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "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, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "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, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "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=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "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, + "requires": { + "is-property": "1.0.2" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "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==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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, + "requires": { + "chalk": "1.1.3", + "commander": "2.12.2", + "is-my-json-valid": "2.17.1", + "pinkie-promise": "2.0.1" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.1" + } + }, + "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, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-template-literals": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-template-literals/-/has-template-literals-1.0.0.tgz", + "integrity": "sha512-OjOC7MbUgpKFF2eOwD370uzNueJ4Yk3d0fstlTTwY7YsWPM5Awb2DOXQW3LXanULW/Sf/YAcKN5mDBhTIWI95Q==", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hashish": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/hashish/-/hashish-0.0.4.tgz", + "integrity": "sha1-bWC8b/r3Ebav1g5CbQd5iAFOZVQ=", + "dev": true, + "requires": { + "traverse": "0.3.9" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" + }, + "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, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "requires": { + "source-map": "0.5.7" + } + }, + "insert-module-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", + "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", + "requires": { + "JSONStream": "1.3.2", + "combine-source-map": "0.7.2", + "concat-stream": "1.5.2", + "is-buffer": "1.1.6", + "lexical-scope": "1.2.0", + "process": "0.11.10", + "through2": "2.0.3", + "xtend": "4.0.1" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-my-json-valid": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", + "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "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=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "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 + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "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-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "requires": { + "jsonify": "0.0.0" + } + }, + "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 + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "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.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "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 + } + } + }, + "labeled-stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", + "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "requires": { + "inherits": "2.0.3", + "isarray": "0.0.1", + "stream-splicer": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, + "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 + }, + "lexical-scope": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", + "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "requires": { + "astw": "2.2.0" + } + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" + }, + "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.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-generator-function/-/make-generator-function-1.1.0.tgz", + "integrity": "sha1-ho6TVRp/rx5rsab8EfcvyjIuJqg=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "module-deps": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", + "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", + "requires": { + "JSONStream": "1.3.2", + "browser-resolve": "1.11.2", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "defined": "1.0.0", + "detective": "4.7.1", + "duplexer2": "0.1.4", + "inherits": "2.0.3", + "parents": "1.0.1", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "stream-combiner2": "1.1.1", + "subarg": "1.0.0", + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==" + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "requires": { + "acorn": "5.3.0", + "defined": "1.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nyc": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", + "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.4", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.1.1", + "yargs": "10.0.3", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "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, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "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.26.0", + "bundled": true, + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "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.1", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.5.3", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "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.6", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "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, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.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, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.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, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "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, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.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, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "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, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "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, + "requires": { + "is-finite": "1.0.2" + } + }, + "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, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.4.1", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.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.7", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "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": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "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.29", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "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, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.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, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "10.0.3", + "bundled": true, + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.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=", + "requires": { + "wrappy": "1.0.2" + } + }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "dev": true + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "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 + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "requires": { + "path-platform": "0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "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=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "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, + "requires": { + "pinkie": "2.0.4" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "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=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "requires": { + "readable-stream": "2.3.3" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.1.0" + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "requires": { + "path-parse": "1.0.5" + } + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "seq": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/seq/-/seq-0.3.5.tgz", + "integrity": "sha1-rgKvOkJHk9jMvyEtaRdODFTf/jg=", + "dev": true, + "requires": { + "chainsaw": "0.0.9", + "hashish": "0.0.4" + } + }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "requires": { + "json-stable-stringify": "0.0.1", + "sha.js": "2.4.9" + } + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, + "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, + "requires": { + "hoek": "2.16.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "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 + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "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, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "requires": { + "minimist": "1.2.0" + } + }, + "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 + }, + "syntax-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", + "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", + "requires": { + "acorn": "4.0.13" + } + }, + "tap": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/tap/-/tap-10.7.3.tgz", + "integrity": "sha512-oS/FIq+tcmxVgYn5usKtLsX+sOHNEj+G7JIQE9SBjO5mVYB1rbaEJJiDbnYp8k0ZqY2Pe4HbYEpkvzm9jfLDyw==", + "dev": true, + "requires": { + "bind-obj-methods": "1.0.0", + "bluebird": "3.5.1", + "clean-yaml-object": "0.1.0", + "color-support": "1.1.3", + "coveralls": "2.13.3", + "foreground-child": "1.5.6", + "fs-exists-cached": "1.0.0", + "function-loop": "1.0.1", + "glob": "7.1.2", + "isexe": "2.0.0", + "js-yaml": "3.10.0", + "nyc": "11.4.1", + "opener": "1.4.3", + "os-homedir": "1.0.2", + "own-or": "1.0.0", + "own-or-env": "1.0.0", + "readable-stream": "2.3.3", + "signal-exit": "3.0.2", + "source-map-support": "0.4.18", + "stack-utils": "1.0.1", + "tap-mocha-reporter": "3.0.6", + "tap-parser": "5.4.0", + "tmatch": "3.1.0", + "trivial-deferred": "1.0.1", + "tsame": "1.1.2", + "yapool": "1.0.0" + } + }, + "tap-mocha-reporter": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.6.tgz", + "integrity": "sha512-UImgw3etckDQCoqZIAIKcQDt0w1JLVs3v0yxLlmwvGLZl6MGFxF7JME5PElXjAoDklVDU42P3vVu5jgr37P4Yg==", + "dev": true, + "requires": { + "color-support": "1.1.3", + "debug": "2.6.9", + "diff": "1.4.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "js-yaml": "3.10.0", + "readable-stream": "2.3.3", + "tap-parser": "5.4.0", + "unicode-length": "1.0.3" + } + }, + "tap-parser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", + "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", + "dev": true, + "requires": { + "events-to-array": "1.1.2", + "js-yaml": "3.10.0", + "readable-stream": "2.3.3" + } + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "requires": { + "process": "0.11.10" + } + }, + "tmatch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-3.1.0.tgz", + "integrity": "sha512-W3MSATOCN4pVu2qFxmJLIArSifeSOFqnfx9hiUaVgOmeRoI2NbU7RNga+6G+L8ojlFeQge+ZPCclWyUpQ8UeNQ==", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "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 + }, + "tsame": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/tsame/-/tsame-1.1.2.tgz", + "integrity": "sha512-ovCs24PGjmByVPr9tSIOs/yjUX9sJl0grEmOsj9dZA/UknQkgPOKcUqM84aSCvt9awHuhc/boMzTg3BHFalxWw==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "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 + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "umd": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", + "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=" + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": 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, + "requires": { + "punycode": "1.4.1", + "strip-ansi": "3.0.1" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "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 + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "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 + } + } +} diff --git a/package.json b/package.json index 40f99183d..14d3f8af1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "browserify", - "version": "6.3.2", + "version": "15.0.0", "description": "browser-side require() the node way", "main": "index.js", "bin": { @@ -8,7 +8,10 @@ }, "repository": { "type": "git", - "url": "http://github.com/substack/node-browserify.git" + "url": "http://github.com/browserify/browserify.git" + }, + "engines": { + "node": ">= 0.8" }, "keywords": [ "browser", @@ -20,68 +23,66 @@ "javascript" ], "dependencies": { - "JSONStream": "~0.8.3", - "assert": "~1.1.0", - "browser-pack": "^3.2.0", - "browser-resolve": "^1.3.0", - "browserify-zlib": "~0.1.2", - "buffer": "^2.3.0", - "builtins": "~0.0.3", - "commondir": "0.0.1", - "concat-stream": "~1.4.1", + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^1.11.0", + "browserify-zlib": "~0.2.0", + "buffer": "^5.0.2", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.1", "console-browserify": "^1.1.0", - "constants-browserify": "~0.0.1", + "constants-browserify": "~1.0.0", "crypto-browserify": "^3.0.0", - "deep-equal": "~0.2.1", - "defined": "~0.0.0", - "deps-sort": "^1.3.5", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", "domain-browser": "~1.1.0", - "duplexer2": "~0.0.2", - "events": "~1.0.0", - "glob": "^4.0.5", - "http-browserify": "^1.4.0", - "https-browserify": "~0.0.0", + "duplexer2": "~0.1.2", + "events": "~1.1.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", "inherits": "~2.0.1", - "insert-module-globals": "^6.1.0", - "isarray": "0.0.1", - "labeled-stream-splicer": "^1.0.0", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", "mkdirp": "^0.5.0", - "module-deps": "^3.5.0", - "os-browserify": "~0.1.1", - "parents": "~0.0.1", + "module-deps": "^5.0.1", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", "path-browserify": "~0.0.0", - "process": "^0.8.0", - "punycode": "~1.2.3", + "process": "~0.11.0", + "punycode": "^1.3.2", "querystring-es3": "~0.2.0", - "readable-stream": "^1.0.33-1", - "resolve": "~0.7.1", - "shallow-copy": "0.0.1", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", "shasum": "^1.0.0", - "shell-quote": "~0.0.1", - "stream-browserify": "^1.0.0", - "string_decoder": "~0.10.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^2.0.0", + "string_decoder": "~1.0.0", "subarg": "^1.0.0", "syntax-error": "^1.1.1", - "through2": "^1.0.0", + "through2": "^2.0.0", "timers-browserify": "^1.0.1", "tty-browserify": "~0.0.0", - "umd": "~2.1.0", - "url": "~0.10.1", + "url": "~0.11.0", "util": "~0.10.1", "vm-browserify": "~0.0.1", - "xtend": "^3.0.0" + "xtend": "^4.0.0" }, "devDependencies": { "backbone": "~0.9.2", - "browser-unpack": "~0.0.0", - "coffee-script": "~1.5.0", - "coffeeify": "~0.6.0", - "dnode": "~1.0.3", - "es6ify": "~0.4.8", - "mkdirp": "~0.3.3", - "osenv": "^0.1.0", - "seq": "0.3.3", - "tap": "~0.4.0", + "browser-unpack": "^1.1.1", + "coffee-script": "~1.10.0", + "coffeeify": "~1.1.0", + "has-template-literals": "^1.0.0", + "isstream": "^0.1.2", + "make-generator-function": "^1.1.0", + "seq": "0.3.5", + "tap": "^10.7.2", + "temp": "^0.8.1", "through": "^2.3.4" }, "author": { diff --git a/readme.markdown b/readme.markdown index cc19a9a2c..3e0db7d02 100644 --- a/readme.markdown +++ b/readme.markdown @@ -3,31 +3,28 @@ `require('modules')` in the browser Use a [node](http://nodejs.org)-style `require()` to organize your browser code -and load modules installed by [npm](https://npmjs.org). +and load modules installed by [npm](https://www.npmjs.com). browserify will recursively analyze all the `require()` calls in your app in order to build a bundle you can serve up to the browser in a single ` ``` +This approach using `-r` and `-x` works fine for a small number of split assets, +but there are plugins for automatically factoring out components which are +described in the +[partitioning section of the browserify handbook](https://github.com/browserify/browserify-handbook#partitioning). + ## api example You can use the API directly too: @@ -350,19 +373,55 @@ b.bundle().pipe(process.stdout); var browserify = require('browserify') ``` -## var b = browserify(files=[] or opts={}) +## `browserify([files] [, opts])` + +Returns a new browserify instance. + +