Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--node_modules/.gitignore40
-rw-r--r--node_modules/@iarna/cli/LICENSE14
-rw-r--r--node_modules/@iarna/cli/README.md105
-rw-r--r--node_modules/@iarna/cli/app.js60
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/CHANGELOG.md15
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/LICENSE.txt14
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/README.md110
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/index.js316
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/index.js37
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/license21
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/package.json56
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/readme.md42
-rw-r--r--node_modules/@iarna/cli/node_modules/cliui/package.json64
-rw-r--r--node_modules/@iarna/cli/node_modules/get-caller-file/LICENSE.md6
-rw-r--r--node_modules/@iarna/cli/node_modules/get-caller-file/README.md4
-rw-r--r--node_modules/@iarna/cli/node_modules/get-caller-file/index.js20
-rw-r--r--node_modules/@iarna/cli/node_modules/get-caller-file/package.json31
-rw-r--r--node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/license21
-rw-r--r--node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/package.json45
-rw-r--r--node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--node_modules/@iarna/cli/node_modules/require-main-filename/.npmignore3
-rw-r--r--node_modules/@iarna/cli/node_modules/require-main-filename/.travis.yml8
-rw-r--r--node_modules/@iarna/cli/node_modules/require-main-filename/LICENSE.txt14
-rw-r--r--node_modules/@iarna/cli/node_modules/require-main-filename/README.md26
-rw-r--r--node_modules/@iarna/cli/node_modules/require-main-filename/index.js18
-rw-r--r--node_modules/@iarna/cli/node_modules/require-main-filename/package.json30
-rw-r--r--node_modules/@iarna/cli/node_modules/require-main-filename/test.js36
-rw-r--r--node_modules/@iarna/cli/node_modules/y18n/LICENSE13
-rw-r--r--node_modules/@iarna/cli/node_modules/y18n/README.md91
-rw-r--r--node_modules/@iarna/cli/node_modules/y18n/index.js172
-rw-r--r--node_modules/@iarna/cli/node_modules/y18n/package.json37
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs-parser/CHANGELOG.md223
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs-parser/LICENSE.txt14
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs-parser/README.md281
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs-parser/index.js764
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs-parser/lib/tokenize-arg-string.js34
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs-parser/package.json43
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/CHANGELOG.md961
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/LICENSE22
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/README.md103
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/completion.sh.hbs28
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/index.js31
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/apply-extends.js52
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/argsert.js72
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/assign.js15
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/command.js336
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/completion.js104
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/levenshtein.js47
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/obj-filter.js10
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/usage.js489
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/validation.js364
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/lib/yerror.js10
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/be.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/de.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/en.json40
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/es.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/fr.json37
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/hi.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/hu.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/id.json40
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/it.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/ja.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/ko.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/nb.json37
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/nl.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/pirate.json12
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/pl.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/pt.json38
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/pt_BR.json40
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/ru.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/th.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/tr.json39
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/zh_CN.json37
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/locales/zh_TW.json40
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/package.json74
-rw-r--r--node_modules/@iarna/cli/node_modules/yargs/yargs.js1127
-rw-r--r--node_modules/@iarna/cli/package.json29
-rw-r--r--node_modules/JSONStream/.travis.yml8
-rw-r--r--node_modules/JSONStream/LICENSE.APACHE215
-rw-r--r--node_modules/JSONStream/LICENSE.MIT24
-rwxr-xr-xnode_modules/JSONStream/bin.js12
-rw-r--r--node_modules/JSONStream/examples/all_docs.js13
-rwxr-xr-xnode_modules/JSONStream/index.js247
-rw-r--r--node_modules/JSONStream/package.json40
-rw-r--r--node_modules/JSONStream/readme.markdown207
-rw-r--r--node_modules/JSONStream/test/bool.js41
-rw-r--r--node_modules/JSONStream/test/browser.js18
-rw-r--r--node_modules/JSONStream/test/destroy_missing.js27
-rw-r--r--node_modules/JSONStream/test/doubledot1.js29
-rw-r--r--node_modules/JSONStream/test/doubledot2.js30
-rw-r--r--node_modules/JSONStream/test/empty.js44
-rw-r--r--node_modules/JSONStream/test/error_contents.js45
-rw-r--r--node_modules/JSONStream/test/fixtures/all_npm.json4030
-rw-r--r--node_modules/JSONStream/test/fixtures/couch_sample.json18
-rw-r--r--node_modules/JSONStream/test/fixtures/depth.json15
-rw-r--r--node_modules/JSONStream/test/fixtures/error.json1
-rw-r--r--node_modules/JSONStream/test/fixtures/header_footer.json19
-rw-r--r--node_modules/JSONStream/test/fn.js39
-rw-r--r--node_modules/JSONStream/test/gen.js135
-rw-r--r--node_modules/JSONStream/test/header_footer.js55
-rw-r--r--node_modules/JSONStream/test/issues.js34
-rw-r--r--node_modules/JSONStream/test/keys.js105
-rw-r--r--node_modules/JSONStream/test/map.js40
-rw-r--r--node_modules/JSONStream/test/multiple_objects.js36
-rw-r--r--node_modules/JSONStream/test/multiple_objects_error.js29
-rw-r--r--node_modules/JSONStream/test/null.js28
-rw-r--r--node_modules/JSONStream/test/parsejson.js29
-rw-r--r--node_modules/JSONStream/test/run.js13
-rw-r--r--node_modules/JSONStream/test/stringify.js41
-rw-r--r--node_modules/JSONStream/test/stringify_object.js47
-rw-r--r--node_modules/JSONStream/test/test.js35
-rw-r--r--node_modules/JSONStream/test/test2.js29
-rw-r--r--node_modules/JSONStream/test/two-ways.js41
-rw-r--r--node_modules/call-limit/CHANGELOG.md16
-rw-r--r--node_modules/call-limit/LICENSE13
-rw-r--r--node_modules/call-limit/README.md85
-rw-r--r--node_modules/call-limit/call-limit.js99
-rw-r--r--node_modules/call-limit/package.json36
-rw-r--r--node_modules/ci-info/CHANGELOG.md78
-rw-r--r--node_modules/ci-info/LICENSE21
-rw-r--r--node_modules/ci-info/README.md108
-rw-r--r--node_modules/ci-info/index.js66
-rw-r--r--node_modules/ci-info/package.json36
-rw-r--r--node_modules/ci-info/vendors.json153
-rw-r--r--node_modules/decode-uri-component/index.js94
-rw-r--r--node_modules/decode-uri-component/license21
-rw-r--r--node_modules/decode-uri-component/package.json37
-rw-r--r--node_modules/decode-uri-component/readme.md70
-rw-r--r--node_modules/detect-indent/index.js122
-rw-r--r--node_modules/detect-indent/license21
-rw-r--r--node_modules/detect-indent/package.json41
-rw-r--r--node_modules/detect-indent/readme.md111
-rw-r--r--node_modules/detect-newline/index.js24
-rw-r--r--node_modules/detect-newline/license21
-rw-r--r--node_modules/detect-newline/package.json37
-rw-r--r--node_modules/detect-newline/readme.md42
-rw-r--r--node_modules/errno/.travis.yml11
-rw-r--r--node_modules/errno/README.md145
-rwxr-xr-xnode_modules/errno/build.js43
-rwxr-xr-xnode_modules/errno/cli.js22
-rw-r--r--node_modules/errno/custom.js57
-rw-r--r--node_modules/errno/errno.js313
-rw-r--r--node_modules/errno/package.json33
-rw-r--r--node_modules/errno/test.js88
-rw-r--r--node_modules/fs-write-stream-atomic/.npmignore3
-rw-r--r--node_modules/fs-write-stream-atomic/.travis.yml11
-rw-r--r--node_modules/fs-write-stream-atomic/LICENSE15
-rw-r--r--node_modules/fs-write-stream-atomic/README.md35
-rw-r--r--node_modules/fs-write-stream-atomic/index.js176
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/iferr/.npmignore1
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/iferr/LICENSE21
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/iferr/README.md40
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/iferr/index.coffee24
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/iferr/index.js49
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/iferr/package.json28
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/iferr/test/index.coffee42
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/iferr/test/mocha.opts2
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/.travis.yml34
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/CONTRIBUTING.md38
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/GOVERNANCE.md136
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/LICENSE47
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/README.md58
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md60
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/duplex-browser.js1
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/duplex.js1
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_duplex.js131
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_passthrough.js47
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_readable.js1019
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_transform.js214
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_writable.js687
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/BufferList.js79
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/destroy.js74
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/stream-browser.js1
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/stream.js1
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/package.json52
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/passthrough.js1
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/readable-browser.js7
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/readable.js19
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/transform.js1
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/writable-browser.js1
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/readable-stream/writable.js8
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/safe-buffer/LICENSE21
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/safe-buffer/README.md584
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/safe-buffer/index.d.ts187
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/safe-buffer/index.js62
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/safe-buffer/package.json37
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/string_decoder/.travis.yml50
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/string_decoder/LICENSE48
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/string_decoder/README.md47
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/string_decoder/lib/string_decoder.js296
-rw-r--r--node_modules/fs-write-stream-atomic/node_modules/string_decoder/package.json31
-rw-r--r--node_modules/fs-write-stream-atomic/package.json33
-rw-r--r--node_modules/fs-write-stream-atomic/test/basic.js97
-rw-r--r--node_modules/fs-write-stream-atomic/test/chown.js44
-rw-r--r--node_modules/fs-write-stream-atomic/test/rename-eperm.js154
-rw-r--r--node_modules/fs-write-stream-atomic/test/rename-fail.js30
-rw-r--r--node_modules/fs-write-stream-atomic/test/slow-close.js40
-rw-r--r--node_modules/fs-write-stream-atomic/test/toolong.js29
-rw-r--r--node_modules/iferr/LICENSE21
-rw-r--r--node_modules/iferr/README.md53
-rw-r--r--node_modules/iferr/iferr.js23
-rw-r--r--node_modules/iferr/package.json33
-rw-r--r--node_modules/invert-kv/index.js15
-rw-r--r--node_modules/invert-kv/package.json33
-rw-r--r--node_modules/invert-kv/readme.md25
-rw-r--r--node_modules/lazy-property/.npmignore16
-rw-r--r--node_modules/lazy-property/LICENSE22
-rw-r--r--node_modules/lazy-property/README.md44
-rw-r--r--node_modules/lazy-property/component.json7
-rw-r--r--node_modules/lazy-property/lazyProperty.js19
-rw-r--r--node_modules/lazy-property/package.json35
-rw-r--r--node_modules/lcid/index.js22
-rw-r--r--node_modules/lcid/lcid.json203
-rw-r--r--node_modules/lcid/license21
-rw-r--r--node_modules/lcid/package.json46
-rw-r--r--node_modules/lcid/readme.md35
-rw-r--r--node_modules/lock-verify/LICENSE14
-rw-r--r--node_modules/lock-verify/README.md30
-rwxr-xr-xnode_modules/lock-verify/cli.js17
-rw-r--r--node_modules/lock-verify/index.js81
l---------node_modules/lock-verify/node_modules/.bin/semver1
-rw-r--r--node_modules/lock-verify/node_modules/hosted-git-info/CHANGELOG.md141
-rw-r--r--node_modules/lock-verify/node_modules/hosted-git-info/LICENSE13
-rw-r--r--node_modules/lock-verify/node_modules/hosted-git-info/README.md133
-rw-r--r--node_modules/lock-verify/node_modules/hosted-git-info/git-host-info.js79
-rw-r--r--node_modules/lock-verify/node_modules/hosted-git-info/git-host.js156
-rw-r--r--node_modules/lock-verify/node_modules/hosted-git-info/index.js148
-rw-r--r--node_modules/lock-verify/node_modules/hosted-git-info/package.json40
-rw-r--r--node_modules/lock-verify/node_modules/npm-package-arg/CHANGELOG.md26
-rw-r--r--node_modules/lock-verify/node_modules/npm-package-arg/LICENSE15
-rw-r--r--node_modules/lock-verify/node_modules/npm-package-arg/README.md83
-rw-r--r--node_modules/lock-verify/node_modules/npm-package-arg/npa.js301
-rw-r--r--node_modules/lock-verify/node_modules/npm-package-arg/package.json44
-rw-r--r--node_modules/lock-verify/node_modules/semver/CHANGELOG.md39
-rw-r--r--node_modules/lock-verify/node_modules/semver/LICENSE15
-rw-r--r--node_modules/lock-verify/node_modules/semver/README.md412
-rwxr-xr-xnode_modules/lock-verify/node_modules/semver/bin/semver160
-rw-r--r--node_modules/lock-verify/node_modules/semver/package.json28
-rw-r--r--node_modules/lock-verify/node_modules/semver/range.bnf16
-rw-r--r--node_modules/lock-verify/node_modules/semver/semver.js1483
-rw-r--r--node_modules/lock-verify/package.json26
-rw-r--r--node_modules/lodash._baseuniq/LICENSE47
-rw-r--r--node_modules/lodash._baseuniq/README.md18
-rw-r--r--node_modules/lodash._baseuniq/index.js801
-rw-r--r--node_modules/lodash._baseuniq/package.json20
-rw-r--r--node_modules/lodash._createset/LICENSE47
-rw-r--r--node_modules/lodash._createset/README.md18
-rw-r--r--node_modules/lodash._createset/index.js280
-rw-r--r--node_modules/lodash._createset/package.json16
-rw-r--r--node_modules/lodash._root/LICENSE23
-rw-r--r--node_modules/lodash._root/README.md18
-rw-r--r--node_modules/lodash._root/index.js59
-rw-r--r--node_modules/lodash._root/package.json16
-rw-r--r--node_modules/lodash.union/LICENSE47
-rw-r--r--node_modules/lodash.union/README.md18
-rw-r--r--node_modules/lodash.union/index.js1181
-rw-r--r--node_modules/lodash.union/package.json17
-rw-r--r--node_modules/lodash.uniq/LICENSE47
-rw-r--r--node_modules/lodash.uniq/README.md18
-rw-r--r--node_modules/lodash.uniq/index.js896
-rw-r--r--node_modules/lodash.uniq/package.json17
-rw-r--r--node_modules/lodash.without/LICENSE47
-rw-r--r--node_modules/lodash.without/README.md18
-rw-r--r--node_modules/lodash.without/index.js1051
-rw-r--r--node_modules/lodash.without/package.json17
-rw-r--r--node_modules/mem/index.js55
-rw-r--r--node_modules/mem/license21
-rw-r--r--node_modules/mem/package.json45
-rw-r--r--node_modules/mem/readme.md147
-rw-r--r--node_modules/mimic-fn/index.js9
-rw-r--r--node_modules/mimic-fn/license9
-rw-r--r--node_modules/mimic-fn/package.json40
-rw-r--r--node_modules/mimic-fn/readme.md68
-rw-r--r--node_modules/os-locale/index.js101
-rw-r--r--node_modules/os-locale/license21
-rw-r--r--node_modules/os-locale/package.json45
-rw-r--r--node_modules/os-locale/readme.md53
-rw-r--r--node_modules/prr/.npmignore1
-rw-r--r--node_modules/prr/.travis.yml10
-rw-r--r--node_modules/prr/LICENSE.md11
-rw-r--r--node_modules/prr/README.md47
-rw-r--r--node_modules/prr/package.json26
-rw-r--r--node_modules/prr/prr.js63
-rw-r--r--node_modules/prr/test.js169
-rw-r--r--node_modules/query-string/index.d.ts385
-rw-r--r--node_modules/query-string/index.js378
-rw-r--r--node_modules/query-string/license9
-rw-r--r--node_modules/query-string/package.json52
-rw-r--r--node_modules/query-string/readme.md469
-rw-r--r--node_modules/split-on-first/index.d.ts29
-rw-r--r--node_modules/split-on-first/index.js22
-rw-r--r--node_modules/split-on-first/license9
-rw-r--r--node_modules/split-on-first/package.json36
-rw-r--r--node_modules/split-on-first/readme.md58
-rw-r--r--node_modules/strict-uri-encode/index.js2
-rw-r--r--node_modules/strict-uri-encode/license21
-rw-r--r--node_modules/strict-uri-encode/package.json31
-rw-r--r--node_modules/strict-uri-encode/readme.md39
-rw-r--r--node_modules/through/.travis.yml5
-rw-r--r--node_modules/through/LICENSE.APACHE215
-rw-r--r--node_modules/through/LICENSE.MIT24
-rw-r--r--node_modules/through/index.js108
-rw-r--r--node_modules/through/package.json36
-rw-r--r--node_modules/through/readme.markdown64
-rw-r--r--node_modules/through/test/async.js28
-rw-r--r--node_modules/through/test/auto-destroy.js30
-rw-r--r--node_modules/through/test/buffering.js71
-rw-r--r--node_modules/through/test/end.js45
-rw-r--r--node_modules/through/test/index.js133
-rw-r--r--node_modules/worker-farm/.editorconfig16
-rw-r--r--node_modules/worker-farm/.travis.yml12
-rw-r--r--node_modules/worker-farm/LICENSE.md13
-rw-r--r--node_modules/worker-farm/README.md150
-rw-r--r--node_modules/worker-farm/examples/basic/child.js5
-rw-r--r--node_modules/worker-farm/examples/basic/index.js13
-rw-r--r--node_modules/worker-farm/examples/pi/calc.js22
-rw-r--r--node_modules/worker-farm/examples/pi/index.js41
-rw-r--r--node_modules/worker-farm/index.d.ts55
-rw-r--r--node_modules/worker-farm/lib/child/index.js56
-rw-r--r--node_modules/worker-farm/lib/farm.js348
-rw-r--r--node_modules/worker-farm/lib/fork.js33
-rw-r--r--node_modules/worker-farm/lib/index.js34
-rw-r--r--node_modules/worker-farm/package.json31
-rw-r--r--node_modules/worker-farm/tests/child.js87
-rw-r--r--node_modules/worker-farm/tests/debug.js12
-rw-r--r--node_modules/worker-farm/tests/index.js616
-rw-r--r--package-lock.json962
-rw-r--r--package.json64
329 files changed, 139 insertions, 34634 deletions
diff --git a/node_modules/.gitignore b/node_modules/.gitignore
index eeafd89fd..9fd70147a 100644
--- a/node_modules/.gitignore
+++ b/node_modules/.gitignore
@@ -55,9 +55,11 @@
/coveralls
/cp-file
/cross-spawn
+/decamelize
/deep-equal
/deep-is
/default-require-extensions
+/define-properties
/diff
/diff-frag
/docopt
@@ -67,7 +69,10 @@
/encodeurl
/end-of-stream
/enquirer
+/error-ex
/errs
+/es-abstract
+/es-to-primitive
/es6-error
/escape-html
/escape-string-regexp
@@ -95,6 +100,7 @@
/fill-range
/finalhandler
/find-cache-dir
+/find-up
/findit
/flat-cache
/flatted
@@ -106,11 +112,14 @@
/fs-constants
/fs-exists-cached
/fsevents
+/function-bind
/function-loop
/functional-red-black-tree
/get-caller-file
/glob-parent
/globals
+/has
+/has-symbols
/hasha
/hock
/html-escaper
@@ -119,11 +128,16 @@
/ignore
/import-fresh
/is-arguments
+/is-arrayish
/is-binary-path
+/is-callable
+/is-date-object
/is-extglob
/is-glob
/is-number
+/is-regex
/is-string
+/is-symbol
/istanbul-lib-coverage
/istanbul-lib-hook
/istanbul-lib-instrument
@@ -141,6 +155,8 @@
/lcov-parse
/levn
/licensee
+/load-json-file
+/locate-path
/lodash
/lodash.flattendeep
/log-driver
@@ -162,18 +178,29 @@
/npm-registry-mock
/null-check
/nyc
+/object-inspect
/object-is
+/object-keys
+/object.assign
+/object.getownpropertydescriptors
/object.values
/on-finished
/optimist
/optionator
/own-or
/own-or-env
+/p-limit
+/p-locate
+/p-try
/package-hash
/parent-module
+/parse-json
/parseurl
+/path-exists
/path-key
+/path-type
/picomatch
+/pify
/pirates
/pkg-dir
/pkginfo
@@ -183,10 +210,15 @@
/querystring
/react
/react-is
+/read-package-tree
+/read-pkg
+/read-pkg-up
+/readable-stream
/readdirp
/regexp.prototype.flags
/regexpp
/release-zalgo
+/require-directory
/require-inject
/require-main-filename
/resolve-from
@@ -206,6 +238,10 @@
/sprintf-js
/stack-utils
/statuses
+/string_decoder
+/string.prototype.trimend
+/string.prototype.trimstart
+/strip-bom
/strip-json-comments
/table
/tacks
@@ -226,14 +262,18 @@
/typedarray-to-buffer
/typescript
/unicode-length
+/unpipe
/url
/util-extend
+/util-promisify
/utils-merge
/v8-compile-cache
/vlq
/watch
+/which-module
/word-wrap
/wordwrap
+/wrap-ansi
/write
/y18n
/yaml
diff --git a/node_modules/@iarna/cli/LICENSE b/node_modules/@iarna/cli/LICENSE
deleted file mode 100644
index f4be44d88..000000000
--- a/node_modules/@iarna/cli/LICENSE
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright (c) 2015, Rebecca Turner <me@re-becca.org>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
diff --git a/node_modules/@iarna/cli/README.md b/node_modules/@iarna/cli/README.md
deleted file mode 100644
index e7b6ff75e..000000000
--- a/node_modules/@iarna/cli/README.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# @iarna/cli
-
-Some simple CLI scaffolding for promise returning applications.
-
-## EXAMPLE
-
-`example.js`
-```js
-require('@iarna/cli')(main)
- .boolean('silent')
- .boolean('exit')
- .boolean('error')
- .boolean('reject')
- .boolean('code50')
- .version()
- .help()
-
-function main (opts, arg1, arg2, arg3) {
- if (!opts.silent) console.error('Starting up!')
- console.log('Got:', arg1, arg2, arg3)
- if (opts.exit) process.exit()
- if (opts.error) throw new Error('throw')
- if (opts.reject) return Promise.reject(new Error('reject'))
- if (opts.code50) return Promise.reject(50)
- return new Promise(resolve => setTimeout(resolve, 10000))
-}
-```
-
-```console
-$ node example hello there world
-Starting up!
-Got: hello there world
-$ node example hello there world
-Starting up!
-Got: hello there world
-^C
-Abnormal exit: SIGINT
-$ node example --silent hello there world
-Got: hello there world
-$ node example --silent hello there world --exit
-Got: hello there world
-Abnormal exit: Promises not resolved
-$ node example --silent hello there world --error
-Got: hello there world
-Error: throw
- at main (/Users/rebecca/code/cli/example.js:11:25)
- at Immediate.setImmediate (/Users/rebecca/code/cli/app.js:38:32)
- at runCallback (timers.js:800:20)
- at tryOnImmediate (timers.js:762:5)
- at processImmediate [as _immediateCallback] (timers.js:733:5)
-$ node example --silent hello there world --reject
-Got: hello there world
-Error: reject
- at main (/Users/rebecca/code/cli/example.js:12:42)
- at Immediate.setImmediate [as _onImmediate] (/Users/rebecca/code/cli/app.js:38:32)
- at runCallback (timers.js:800:20)
- at tryOnImmediate (timers.js:762:5)
- at processImmediate [as _immediateCallback] (timers.js:733:5)
-$ node example --silent hello there world --code50
-Got: hello there world
-$ echo $?
-50
-```
-
-## WHAT YOU GET
-
-* `yargs` - The wrapper around the main function returns a yargs object, so
- you can configure it as usual. The `argv` object is passed in as the
- first argument of your entry point function. The rest of your positional
- arguments are passed in as the remaining function arguments.
-* _exit without resolving warnings_ - If your program finishes without
- resolving its promises (like if it crashes hard or you process.exit, or you just don't resolve the promise ) then
- we warn about that.
-* `update-notifier` - A default update notifier is setup for your app so
- users will learn about new versions when you publish them. Your app needs to
- have a name, version and bin entry in its `package.json`. (The bin entry
- needs to have the script using `@iarna/cli` in it for the update notifier
- to trigger.)
-* If your entry point function rejects then that's reported with a stack
- trace (if the rejected value has `.stack`) else with the rejected value
- and your process will exit with an error code.
-
-## WHAT ITS NOT
-
-A full framework for writing cli apps. You'll likely outgrow the error
-handling pretty fast if this is anything beyond a little one off. This
-mostly exists to scratch my own itch. I kept on writing this code and I
-wanted to stop. =D
-
-## USAGE
-
-### require('@iarna/cli')(entryPointFunction) → yargs
-
-The module itself exports a function that you need to call with the name of
-your main function. Your main function is like `main` in C, it's the entry
-point for your program. It needs to return a promise that resolves when
-your program completes.
-
-Your entry point function can be named anything, but it needs to return a
-promise and it takes arguments like this:
-
-`main(opts, arg1, arg2, …, argn) → Promise`
-
-The first `opts` argument is `yargs.argv` and the additional arguments are
-from `argv._`, so `arg1 === argv._[0]`, `arg2 === argv._[1]` and so on.
diff --git a/node_modules/@iarna/cli/app.js b/node_modules/@iarna/cli/app.js
deleted file mode 100644
index 6404a28fa..000000000
--- a/node_modules/@iarna/cli/app.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict'
-const onExit = require('signal-exit')
-const yargs = require('yargs')
-const path = require('path')
-const fs = require('fs')
-const binName = path.basename(require.main.filename, '.js')
-const mainPath = path.resolve(require.main.paths[0], '..')
-
-module.exports = function (entry) {
- let started = false
- let exited = false
- onExit((code, signal) => {
- if (started && !exited) {
- if (signal) {
- console.error('Abnormal exit:', signal)
- } else {
- console.error('Abnormal exit: Promises not resolved')
- }
- process.exit(code || 1)
- }
- })
- fs.readFile(mainPath + '/package.json', (err, data) => {
- try {
- const pkg = JSON.parse(data)
- const nameMatch = new RegExp(binName, 'i')
- let isInPackage = typeof pkg.bin === 'string'
- ? nameMatch.test(pkg.bin)
- : Object.keys(pkg.bin).some(b => nameMatch.test(b) || nameMatch.test(pkg.bin[b]))
- if (isInPackage) {
- const updateNotifier = require('update-notifier');
- updateNotifier({pkg: pkg}).notify()
- }
- } catch (ex) { /* don't care */ }
- })
-
- setImmediate(() => {
- const argv = yargs.argv
- started = true
- try {
- const appPromise = entry.apply(null, [argv].concat(argv._))
- if (!appPromise || !appPromise.then) {
- return onError(new Error('Error: Application entry point' + (entry.name ? ` (${entry.name})` : '') + ' did not return a promise.'))
- }
- appPromise.then(() => exited = true, onError)
- } catch (ex) {
- onError (ex)
- }
- function onError (err) {
- exited = true
- if (typeof err === 'number') {
- process.exit(err)
- } else if (err) {
- console.error(err && err.stack ? err.stack : err)
- }
- process.exit(1)
- }
- })
- return yargs
-}
-
diff --git a/node_modules/@iarna/cli/node_modules/cliui/CHANGELOG.md b/node_modules/@iarna/cli/node_modules/cliui/CHANGELOG.md
deleted file mode 100644
index ef6a35ef4..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/CHANGELOG.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="3.2.0"></a>
-# [3.2.0](https://github.com/yargs/cliui/compare/v3.1.2...v3.2.0) (2016-04-11)
-
-
-### Bug Fixes
-
-* reduces tarball size ([acc6c33](https://github.com/yargs/cliui/commit/acc6c33))
-
-### Features
-
-* adds standard-version for release management ([ff84e32](https://github.com/yargs/cliui/commit/ff84e32))
diff --git a/node_modules/@iarna/cli/node_modules/cliui/LICENSE.txt b/node_modules/@iarna/cli/node_modules/cliui/LICENSE.txt
deleted file mode 100644
index c7e27478a..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/LICENSE.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright (c) 2015, Contributors
-
-Permission to use, copy, modify, and/or distribute this software
-for any purpose with or without fee is hereby granted, provided
-that the above copyright notice and this permission notice
-appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
-LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
-OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/@iarna/cli/node_modules/cliui/README.md b/node_modules/@iarna/cli/node_modules/cliui/README.md
deleted file mode 100644
index 028392c26..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/README.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# cliui
-
-[![Build Status](https://travis-ci.org/yargs/cliui.svg)](https://travis-ci.org/yargs/cliui)
-[![Coverage Status](https://coveralls.io/repos/yargs/cliui/badge.svg?branch=)](https://coveralls.io/r/yargs/cliui?branch=)
-[![NPM version](https://img.shields.io/npm/v/cliui.svg)](https://www.npmjs.com/package/cliui)
-[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
-
-easily create complex multi-column command-line-interfaces.
-
-## Example
-
-```js
-var ui = require('cliui')({
- width: 80
-})
-
-ui.div('Usage: $0 [command] [options]')
-
-ui.div({
- text: 'Options:',
- padding: [2, 0, 2, 0]
-})
-
-ui.div(
- {
- text: "-f, --file",
- width: 20,
- padding: [0, 4, 0, 4]
- },
- {
- text: "the file to load." +
- chalk.green("(if this description is long it wraps).")
- ,
- width: 20
- },
- {
- text: chalk.red("[required]"),
- align: 'right'
- }
-)
-
-console.log(ui.toString())
-```
-
-<img width="500" src="screenshot.png">
-
-## Layout DSL
-
-cliui exposes a simple layout DSL:
-
-If you create a single `ui.row`, passing a string rather than an
-object:
-
-* `\n`: characters will be interpreted as new rows.
-* `\t`: characters will be interpreted as new columns.
-* `\s`: characters will be interpreted as padding.
-
-**as an example...**
-
-```js
-var ui = require('./')({
- width: 60
-})
-
-ui.div(
- 'Usage: node ./bin/foo.js\n' +
- ' <regex>\t provide a regex\n' +
- ' <glob>\t provide a glob\t [required]'
-)
-
-console.log(ui.toString())
-```
-
-**will output:**
-
-```shell
-Usage: node ./bin/foo.js
- <regex> provide a regex
- <glob> provide a glob [required]
-```
-
-## Methods
-
-```js
-cliui = require('cliui')
-```
-
-### cliui({width: integer})
-
-Specify the maximum width of the UI being generated.
-
-### cliui({wrap: boolean})
-
-Enable or disable the wrapping of text in a column.
-
-### cliui.div(column, column, column)
-
-Create a row with any number of columns, a column
-can either be a string, or an object with the following
-options:
-
-* **width:** the width of a column.
-* **align:** alignment, `right` or `center`.
-* **padding:** `[top, right, bottom, left]`.
-* **border:** should a border be placed around the div?
-
-### cliui.span(column, column, column)
-
-Similar to `div`, except the next row will be appended without
-a new line being created.
diff --git a/node_modules/@iarna/cli/node_modules/cliui/index.js b/node_modules/@iarna/cli/node_modules/cliui/index.js
deleted file mode 100644
index e501e78fd..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/index.js
+++ /dev/null
@@ -1,316 +0,0 @@
-var stringWidth = require('string-width')
-var stripAnsi = require('strip-ansi')
-var wrap = require('wrap-ansi')
-var align = {
- right: alignRight,
- center: alignCenter
-}
-var top = 0
-var right = 1
-var bottom = 2
-var left = 3
-
-function UI (opts) {
- this.width = opts.width
- this.wrap = opts.wrap
- this.rows = []
-}
-
-UI.prototype.span = function () {
- var cols = this.div.apply(this, arguments)
- cols.span = true
-}
-
-UI.prototype.div = function () {
- if (arguments.length === 0) this.div('')
- if (this.wrap && this._shouldApplyLayoutDSL.apply(this, arguments)) {
- return this._applyLayoutDSL(arguments[0])
- }
-
- var cols = []
-
- for (var i = 0, arg; (arg = arguments[i]) !== undefined; i++) {
- if (typeof arg === 'string') cols.push(this._colFromString(arg))
- else cols.push(arg)
- }
-
- this.rows.push(cols)
- return cols
-}
-
-UI.prototype._shouldApplyLayoutDSL = function () {
- return arguments.length === 1 && typeof arguments[0] === 'string' &&
- /[\t\n]/.test(arguments[0])
-}
-
-UI.prototype._applyLayoutDSL = function (str) {
- var _this = this
- var rows = str.split('\n')
- var leftColumnWidth = 0
-
- // simple heuristic for layout, make sure the
- // second column lines up along the left-hand.
- // don't allow the first column to take up more
- // than 50% of the screen.
- rows.forEach(function (row) {
- var columns = row.split('\t')
- if (columns.length > 1 && stringWidth(columns[0]) > leftColumnWidth) {
- leftColumnWidth = Math.min(
- Math.floor(_this.width * 0.5),
- stringWidth(columns[0])
- )
- }
- })
-
- // generate a table:
- // replacing ' ' with padding calculations.
- // using the algorithmically generated width.
- rows.forEach(function (row) {
- var columns = row.split('\t')
- _this.div.apply(_this, columns.map(function (r, i) {
- return {
- text: r.trim(),
- padding: _this._measurePadding(r),
- width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined
- }
- }))
- })
-
- return this.rows[this.rows.length - 1]
-}
-
-UI.prototype._colFromString = function (str) {
- return {
- text: str,
- padding: this._measurePadding(str)
- }
-}
-
-UI.prototype._measurePadding = function (str) {
- // measure padding without ansi escape codes
- var noAnsi = stripAnsi(str)
- return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]
-}
-
-UI.prototype.toString = function () {
- var _this = this
- var lines = []
-
- _this.rows.forEach(function (row, i) {
- _this.rowToString(row, lines)
- })
-
- // don't display any lines with the
- // hidden flag set.
- lines = lines.filter(function (line) {
- return !line.hidden
- })
-
- return lines.map(function (line) {
- return line.text
- }).join('\n')
-}
-
-UI.prototype.rowToString = function (row, lines) {
- var _this = this
- var padding
- var rrows = this._rasterize(row)
- var str = ''
- var ts
- var width
- var wrapWidth
-
- rrows.forEach(function (rrow, r) {
- str = ''
- rrow.forEach(function (col, c) {
- ts = '' // temporary string used during alignment/padding.
- width = row[c].width // the width with padding.
- wrapWidth = _this._negatePadding(row[c]) // the width without padding.
-
- ts += col
-
- for (var i = 0; i < wrapWidth - stringWidth(col); i++) {
- ts += ' '
- }
-
- // align the string within its column.
- if (row[c].align && row[c].align !== 'left' && _this.wrap) {
- ts = align[row[c].align](ts, wrapWidth)
- if (stringWidth(ts) < wrapWidth) ts += new Array(width - stringWidth(ts)).join(' ')
- }
-
- // apply border and padding to string.
- padding = row[c].padding || [0, 0, 0, 0]
- if (padding[left]) str += new Array(padding[left] + 1).join(' ')
- str += addBorder(row[c], ts, '| ')
- str += ts
- str += addBorder(row[c], ts, ' |')
- if (padding[right]) str += new Array(padding[right] + 1).join(' ')
-
- // if prior row is span, try to render the
- // current row on the prior line.
- if (r === 0 && lines.length > 0) {
- str = _this._renderInline(str, lines[lines.length - 1])
- }
- })
-
- // remove trailing whitespace.
- lines.push({
- text: str.replace(/ +$/, ''),
- span: row.span
- })
- })
-
- return lines
-}
-
-function addBorder (col, ts, style) {
- if (col.border) {
- if (/[.']-+[.']/.test(ts)) return ''
- else if (ts.trim().length) return style
- else return ' '
- }
- return ''
-}
-
-// if the full 'source' can render in
-// the target line, do so.
-UI.prototype._renderInline = function (source, previousLine) {
- var leadingWhitespace = source.match(/^ */)[0].length
- var target = previousLine.text
- var targetTextWidth = stringWidth(target.trimRight())
-
- if (!previousLine.span) return source
-
- // if we're not applying wrapping logic,
- // just always append to the span.
- if (!this.wrap) {
- previousLine.hidden = true
- return target + source
- }
-
- if (leadingWhitespace < targetTextWidth) return source
-
- previousLine.hidden = true
-
- return target.trimRight() + new Array(leadingWhitespace - targetTextWidth + 1).join(' ') + source.trimLeft()
-}
-
-UI.prototype._rasterize = function (row) {
- var _this = this
- var i
- var rrow
- var rrows = []
- var widths = this._columnWidths(row)
- var wrapped
-
- // word wrap all columns, and create
- // a data-structure that is easy to rasterize.
- row.forEach(function (col, c) {
- // leave room for left and right padding.
- col.width = widths[c]
- if (_this.wrap) wrapped = wrap(col.text, _this._negatePadding(col), {hard: true}).split('\n')
- else wrapped = col.text.split('\n')
-
- if (col.border) {
- wrapped.unshift('.' + new Array(_this._negatePadding(col) + 3).join('-') + '.')
- wrapped.push("'" + new Array(_this._negatePadding(col) + 3).join('-') + "'")
- }
-
- // add top and bottom padding.
- if (col.padding) {
- for (i = 0; i < (col.padding[top] || 0); i++) wrapped.unshift('')
- for (i = 0; i < (col.padding[bottom] || 0); i++) wrapped.push('')
- }
-
- wrapped.forEach(function (str, r) {
- if (!rrows[r]) rrows.push([])
-
- rrow = rrows[r]
-
- for (var i = 0; i < c; i++) {
- if (rrow[i] === undefined) rrow.push('')
- }
- rrow.push(str)
- })
- })
-
- return rrows
-}
-
-UI.prototype._negatePadding = function (col) {
- var wrapWidth = col.width
- if (col.padding) wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0)
- if (col.border) wrapWidth -= 4
- return wrapWidth
-}
-
-UI.prototype._columnWidths = function (row) {
- var _this = this
- var widths = []
- var unset = row.length
- var unsetWidth
- var remainingWidth = this.width
-
- // column widths can be set in config.
- row.forEach(function (col, i) {
- if (col.width) {
- unset--
- widths[i] = col.width
- remainingWidth -= col.width
- } else {
- widths[i] = undefined
- }
- })
-
- // any unset widths should be calculated.
- if (unset) unsetWidth = Math.floor(remainingWidth / unset)
- widths.forEach(function (w, i) {
- if (!_this.wrap) widths[i] = row[i].width || stringWidth(row[i].text)
- else if (w === undefined) widths[i] = Math.max(unsetWidth, _minWidth(row[i]))
- })
-
- return widths
-}
-
-// calculates the minimum width of
-// a column, based on padding preferences.
-function _minWidth (col) {
- var padding = col.padding || []
- var minWidth = 1 + (padding[left] || 0) + (padding[right] || 0)
- if (col.border) minWidth += 4
- return minWidth
-}
-
-function alignRight (str, width) {
- str = str.trim()
- var padding = ''
- var strWidth = stringWidth(str)
-
- if (strWidth < width) {
- padding = new Array(width - strWidth + 1).join(' ')
- }
-
- return padding + str
-}
-
-function alignCenter (str, width) {
- str = str.trim()
- var padding = ''
- var strWidth = stringWidth(str.trim())
-
- if (strWidth < width) {
- padding = new Array(parseInt((width - strWidth) / 2, 10) + 1).join(' ')
- }
-
- return padding + str
-}
-
-module.exports = function (opts) {
- opts = opts || {}
-
- return new UI({
- width: (opts || {}).width || 80,
- wrap: typeof opts.wrap === 'boolean' ? opts.wrap : true
- })
-}
diff --git a/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/index.js b/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/index.js
deleted file mode 100644
index b9bec6244..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-var stripAnsi = require('strip-ansi');
-var codePointAt = require('code-point-at');
-var isFullwidthCodePoint = require('is-fullwidth-code-point');
-
-// https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1345
-module.exports = function (str) {
- if (typeof str !== 'string' || str.length === 0) {
- return 0;
- }
-
- var width = 0;
-
- str = stripAnsi(str);
-
- for (var i = 0; i < str.length; i++) {
- var code = codePointAt(str, i);
-
- // ignore control characters
- if (code <= 0x1f || (code >= 0x7f && code <= 0x9f)) {
- continue;
- }
-
- // surrogates
- if (code >= 0x10000) {
- i++;
- }
-
- if (isFullwidthCodePoint(code)) {
- width += 2;
- } else {
- width++;
- }
- }
-
- return width;
-};
diff --git a/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/license b/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/package.json b/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/package.json
deleted file mode 100644
index 5ba436166..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "string-width",
- "version": "1.0.2",
- "description": "Get the visual width of a string - the number of columns required to display it",
- "license": "MIT",
- "repository": "sindresorhus/string-width",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "string",
- "str",
- "character",
- "char",
- "unicode",
- "width",
- "visual",
- "column",
- "columns",
- "fullwidth",
- "full-width",
- "full",
- "ansi",
- "escape",
- "codes",
- "cli",
- "command-line",
- "terminal",
- "console",
- "cjk",
- "chinese",
- "japanese",
- "korean",
- "fixed-width"
- ],
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/readme.md b/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/readme.md
deleted file mode 100644
index 1ab42c935..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width/readme.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
-
-> Get the visual width of a string - the number of columns required to display it
-
-Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
-
-Useful to be able to measure the actual width of command-line output.
-
-
-## Install
-
-```
-$ npm install --save string-width
-```
-
-
-## Usage
-
-```js
-const stringWidth = require('string-width');
-
-stringWidth('古');
-//=> 2
-
-stringWidth('\u001b[1m古\u001b[22m');
-//=> 2
-
-stringWidth('a');
-//=> 1
-```
-
-
-## Related
-
-- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
-- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
-- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/@iarna/cli/node_modules/cliui/package.json b/node_modules/@iarna/cli/node_modules/cliui/package.json
deleted file mode 100644
index 31c654c39..000000000
--- a/node_modules/@iarna/cli/node_modules/cliui/package.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "name": "cliui",
- "version": "3.2.0",
- "description": "easily create complex multi-column command-line-interfaces",
- "main": "index.js",
- "scripts": {
- "pretest": "standard",
- "test": "nyc mocha",
- "coverage": "nyc --reporter=text-lcov mocha | coveralls",
- "version": "standard-version"
- },
- "repository": {
- "type": "git",
- "url": "http://github.com/yargs/cliui.git"
- },
- "config": {
- "blanket": {
- "pattern": [
- "index.js"
- ],
- "data-cover-never": [
- "node_modules",
- "test"
- ],
- "output-reporter": "spec"
- }
- },
- "standard": {
- "ignore": [
- "**/example/**"
- ],
- "globals": [
- "it"
- ]
- },
- "keywords": [
- "cli",
- "command-line",
- "layout",
- "design",
- "console",
- "wrap",
- "table"
- ],
- "author": "Ben Coe <ben@npmjs.com>",
- "license": "ISC",
- "dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- },
- "devDependencies": {
- "chai": "^3.5.0",
- "chalk": "^1.1.2",
- "coveralls": "^2.11.8",
- "mocha": "^2.4.5",
- "nyc": "^6.4.0",
- "standard": "^6.0.8",
- "standard-version": "^2.1.2"
- },
- "files": [
- "index.js"
- ]
-} \ No newline at end of file
diff --git a/node_modules/@iarna/cli/node_modules/get-caller-file/LICENSE.md b/node_modules/@iarna/cli/node_modules/get-caller-file/LICENSE.md
deleted file mode 100644
index bf3e1c071..000000000
--- a/node_modules/@iarna/cli/node_modules/get-caller-file/LICENSE.md
+++ /dev/null
@@ -1,6 +0,0 @@
-ISC License (ISC)
-Copyright 2018 Stefan Penner
-
-Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/@iarna/cli/node_modules/get-caller-file/README.md b/node_modules/@iarna/cli/node_modules/get-caller-file/README.md
deleted file mode 100644
index 194492736..000000000
--- a/node_modules/@iarna/cli/node_modules/get-caller-file/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# get-caller-file
-
-[![Build Status](https://travis-ci.org/stefanpenner/get-caller-file.svg?branch=master)](https://travis-ci.org/stefanpenner/get-caller-file)
-[![Build status](https://ci.appveyor.com/api/projects/status/ol2q94g1932cy14a/branch/master?svg=true)](https://ci.appveyor.com/project/embercli/get-caller-file/branch/master)
diff --git a/node_modules/@iarna/cli/node_modules/get-caller-file/index.js b/node_modules/@iarna/cli/node_modules/get-caller-file/index.js
deleted file mode 100644
index 03e7dfc39..000000000
--- a/node_modules/@iarna/cli/node_modules/get-caller-file/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-// Call this function in a another function to find out the file from
-// which that function was called from. (Inspects the v8 stack trace)
-//
-// Inspired by http://stackoverflow.com/questions/13227489
-
-module.exports = function getCallerFile(_position) {
- var oldPrepareStackTrace = Error.prepareStackTrace;
- Error.prepareStackTrace = function(err, stack) { return stack; };
- var stack = new Error().stack;
- Error.prepareStackTrace = oldPrepareStackTrace;
-
- var position = _position ? _position : 2;
-
- // stack[0] holds this file
- // stack[1] holds where this function was called
- // stack[2] holds the file we're interested in
- return stack[position] ? stack[position].getFileName() : undefined;
-};
diff --git a/node_modules/@iarna/cli/node_modules/get-caller-file/package.json b/node_modules/@iarna/cli/node_modules/get-caller-file/package.json
deleted file mode 100644
index eb121a6ff..000000000
--- a/node_modules/@iarna/cli/node_modules/get-caller-file/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "get-caller-file",
- "version": "1.0.3",
- "description": "",
- "main": "index.js",
- "directories": {
- "test": "tests"
- },
- "files": [
- "index.js"
- ],
- "scripts": {
- "test": "mocha test",
- "test:debug": "mocha test"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/stefanpenner/get-caller-file.git"
- },
- "author": "Stefan Penner",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/stefanpenner/get-caller-file/issues"
- },
- "homepage": "https://github.com/stefanpenner/get-caller-file#readme",
- "devDependencies": {
- "chai": "^4.1.2",
- "ensure-posix-path": "^1.0.1",
- "mocha": "^5.2.0"
- }
-}
diff --git a/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/index.js b/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/index.js
deleted file mode 100644
index a7d3e3855..000000000
--- a/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/index.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict';
-var numberIsNan = require('number-is-nan');
-
-module.exports = function (x) {
- if (numberIsNan(x)) {
- return false;
- }
-
- // https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1369
-
- // code points are derived from:
- // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
- if (x >= 0x1100 && (
- x <= 0x115f || // Hangul Jamo
- 0x2329 === x || // LEFT-POINTING ANGLE BRACKET
- 0x232a === x || // RIGHT-POINTING ANGLE BRACKET
- // CJK Radicals Supplement .. Enclosed CJK Letters and Months
- (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
- // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
- 0x3250 <= x && x <= 0x4dbf ||
- // CJK Unified Ideographs .. Yi Radicals
- 0x4e00 <= x && x <= 0xa4c6 ||
- // Hangul Jamo Extended-A
- 0xa960 <= x && x <= 0xa97c ||
- // Hangul Syllables
- 0xac00 <= x && x <= 0xd7a3 ||
- // CJK Compatibility Ideographs
- 0xf900 <= x && x <= 0xfaff ||
- // Vertical Forms
- 0xfe10 <= x && x <= 0xfe19 ||
- // CJK Compatibility Forms .. Small Form Variants
- 0xfe30 <= x && x <= 0xfe6b ||
- // Halfwidth and Fullwidth Forms
- 0xff01 <= x && x <= 0xff60 ||
- 0xffe0 <= x && x <= 0xffe6 ||
- // Kana Supplement
- 0x1b000 <= x && x <= 0x1b001 ||
- // Enclosed Ideographic Supplement
- 0x1f200 <= x && x <= 0x1f251 ||
- // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
- 0x20000 <= x && x <= 0x3fffd)) {
- return true;
- }
-
- return false;
-}
diff --git a/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/license b/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/package.json b/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/package.json
deleted file mode 100644
index b678d40de..000000000
--- a/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "is-fullwidth-code-point",
- "version": "1.0.0",
- "description": "Check if the character represented by a given Unicode code point is fullwidth",
- "license": "MIT",
- "repository": "sindresorhus/is-fullwidth-code-point",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "node test.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "fullwidth",
- "full-width",
- "full",
- "width",
- "unicode",
- "character",
- "char",
- "string",
- "str",
- "codepoint",
- "code",
- "point",
- "is",
- "detect",
- "check"
- ],
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "devDependencies": {
- "ava": "0.0.4",
- "code-point-at": "^1.0.0"
- }
-}
diff --git a/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/readme.md b/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/readme.md
deleted file mode 100644
index 4936464b1..000000000
--- a/node_modules/@iarna/cli/node_modules/is-fullwidth-code-point/readme.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
-
-> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
-
-
-## Install
-
-```
-$ npm install --save is-fullwidth-code-point
-```
-
-
-## Usage
-
-```js
-var isFullwidthCodePoint = require('is-fullwidth-code-point');
-
-isFullwidthCodePoint('谢'.codePointAt());
-//=> true
-
-isFullwidthCodePoint('a'.codePointAt());
-//=> false
-```
-
-
-## API
-
-### isFullwidthCodePoint(input)
-
-#### input
-
-Type: `number`
-
-[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/@iarna/cli/node_modules/require-main-filename/.npmignore b/node_modules/@iarna/cli/node_modules/require-main-filename/.npmignore
deleted file mode 100644
index 6f9fe6bad..000000000
--- a/node_modules/@iarna/cli/node_modules/require-main-filename/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-.DS_Store
-.nyc_output
diff --git a/node_modules/@iarna/cli/node_modules/require-main-filename/.travis.yml b/node_modules/@iarna/cli/node_modules/require-main-filename/.travis.yml
deleted file mode 100644
index ab61ce77e..000000000
--- a/node_modules/@iarna/cli/node_modules/require-main-filename/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-os:
- - linux
-node_js:
- - "0.10"
- - "0.12"
- - "4.1"
- - "node"
diff --git a/node_modules/@iarna/cli/node_modules/require-main-filename/LICENSE.txt b/node_modules/@iarna/cli/node_modules/require-main-filename/LICENSE.txt
deleted file mode 100644
index 836440bef..000000000
--- a/node_modules/@iarna/cli/node_modules/require-main-filename/LICENSE.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright (c) 2016, Contributors
-
-Permission to use, copy, modify, and/or distribute this software
-for any purpose with or without fee is hereby granted, provided
-that the above copyright notice and this permission notice
-appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
-LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
-OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/@iarna/cli/node_modules/require-main-filename/README.md b/node_modules/@iarna/cli/node_modules/require-main-filename/README.md
deleted file mode 100644
index 820d9f589..000000000
--- a/node_modules/@iarna/cli/node_modules/require-main-filename/README.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# require-main-filename
-
-[![Build Status](https://travis-ci.org/yargs/require-main-filename.png)](https://travis-ci.org/yargs/require-main-filename)
-[![Coverage Status](https://coveralls.io/repos/yargs/require-main-filename/badge.svg?branch=master)](https://coveralls.io/r/yargs/require-main-filename?branch=master)
-[![NPM version](https://img.shields.io/npm/v/require-main-filename.svg)](https://www.npmjs.com/package/require-main-filename)
-
-`require.main.filename` is great for figuring out the entry
-point for the current application. This can be combined with a module like
-[pkg-conf](https://www.npmjs.com/package/pkg-conf) to, _as if by magic_, load
-top-level configuration.
-
-Unfortunately, `require.main.filename` sometimes fails when an application is
-executed with an alternative process manager, e.g., [iisnode](https://github.com/tjanczuk/iisnode).
-
-`require-main-filename` is a shim that addresses this problem.
-
-## Usage
-
-```js
-var main = require('require-main-filename')()
-// use main as an alternative to require.main.filename.
-```
-
-## License
-
-ISC
diff --git a/node_modules/@iarna/cli/node_modules/require-main-filename/index.js b/node_modules/@iarna/cli/node_modules/require-main-filename/index.js
deleted file mode 100644
index dca7f0cc1..000000000
--- a/node_modules/@iarna/cli/node_modules/require-main-filename/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-module.exports = function (_require) {
- _require = _require || require
- var main = _require.main
- if (main && isIISNode(main)) return handleIISNode(main)
- else return main ? main.filename : process.cwd()
-}
-
-function isIISNode (main) {
- return /\\iisnode\\/.test(main.filename)
-}
-
-function handleIISNode (main) {
- if (!main.children.length) {
- return main.filename
- } else {
- return main.children[0].filename
- }
-}
diff --git a/node_modules/@iarna/cli/node_modules/require-main-filename/package.json b/node_modules/@iarna/cli/node_modules/require-main-filename/package.json
deleted file mode 100644
index 558db27b5..000000000
--- a/node_modules/@iarna/cli/node_modules/require-main-filename/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "require-main-filename",
- "version": "1.0.1",
- "description": "shim for require.main.filename() that works in as many environments as possible",
- "main": "index.js",
- "scripts": {
- "pretest": "standard",
- "test": "tap --coverage test.js"
- },
- "repository": {
- "type": "git",
- "url": "git+ssh://git@github.com/yargs/require-main-filename.git"
- },
- "keywords": [
- "require",
- "shim",
- "iisnode"
- ],
- "author": "Ben Coe <ben@npmjs.com>",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/yargs/require-main-filename/issues"
- },
- "homepage": "https://github.com/yargs/require-main-filename#readme",
- "devDependencies": {
- "chai": "^3.5.0",
- "standard": "^6.0.5",
- "tap": "^5.2.0"
- }
-}
diff --git a/node_modules/@iarna/cli/node_modules/require-main-filename/test.js b/node_modules/@iarna/cli/node_modules/require-main-filename/test.js
deleted file mode 100644
index d89e7dcba..000000000
--- a/node_modules/@iarna/cli/node_modules/require-main-filename/test.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/* global describe, it */
-
-var requireMainFilename = require('./')
-
-require('tap').mochaGlobals()
-require('chai').should()
-
-describe('require-main-filename', function () {
- it('returns require.main.filename in normal circumstances', function () {
- requireMainFilename().should.match(/test\.js/)
- })
-
- it('should use children[0].filename when running on iisnode', function () {
- var main = {
- filename: 'D:\\Program Files (x86)\\iisnode\\interceptor.js',
- children: [ {filename: 'D:\\home\\site\\wwwroot\\server.js'} ]
- }
- requireMainFilename({
- main: main
- }).should.match(/server\.js/)
- })
-
- it('should not use children[0] if no children exist', function () {
- var main = {
- filename: 'D:\\Program Files (x86)\\iisnode\\interceptor.js',
- children: []
- }
- requireMainFilename({
- main: main
- }).should.match(/interceptor\.js/)
- })
-
- it('should default to process.cwd() if require.main is undefined', function () {
- requireMainFilename({}).should.match(/require-main-filename/)
- })
-})
diff --git a/node_modules/@iarna/cli/node_modules/y18n/LICENSE b/node_modules/@iarna/cli/node_modules/y18n/LICENSE
deleted file mode 100644
index 3c157f0b9..000000000
--- a/node_modules/@iarna/cli/node_modules/y18n/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (c) 2015, Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any purpose
-with or without fee is hereby granted, provided that the above copyright notice
-and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-THIS SOFTWARE.
diff --git a/node_modules/@iarna/cli/node_modules/y18n/README.md b/node_modules/@iarna/cli/node_modules/y18n/README.md
deleted file mode 100644
index 9859458f2..000000000
--- a/node_modules/@iarna/cli/node_modules/y18n/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# y18n
-
-[![Build Status][travis-image]][travis-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-[![NPM version][npm-image]][npm-url]
-[![js-standard-style][standard-image]][standard-url]
-
-The bare-bones internationalization library used by yargs.
-
-Inspired by [i18n](https://www.npmjs.com/package/i18n).
-
-## Examples
-
-_simple string translation:_
-
-```js
-var __ = require('y18n').__
-
-console.log(__('my awesome string %s', 'foo'))
-```
-
-output:
-
-`my awesome string foo`
-
-_pluralization support:_
-
-```js
-var __n = require('y18n').__n
-
-console.log(__n('one fish %s', '%d fishes %s', 2, 'foo'))
-```
-
-output:
-
-`2 fishes foo`
-
-## JSON Language Files
-
-The JSON language files should be stored in a `./locales` folder.
-File names correspond to locales, e.g., `en.json`, `pirate.json`.
-
-When strings are observed for the first time they will be
-added to the JSON file corresponding to the current locale.
-
-## Methods
-
-### require('y18n')(config)
-
-Create an instance of y18n with the config provided, options include:
-
-* `directory`: the locale directory, default `./locales`.
-* `updateFiles`: should newly observed strings be updated in file, default `true`.
-* `locale`: what locale should be used.
-* `fallbackToLanguage`: should fallback to a language-only file (e.g. `en.json`)
- be allowed if a file matching the locale does not exist (e.g. `en_US.json`),
- default `true`.
-
-### y18n.\_\_(str, arg, arg, arg)
-
-Print a localized string, `%s` will be replaced with `arg`s.
-
-### y18n.\_\_n(singularString, pluralString, count, arg, arg, arg)
-
-Print a localized string with appropriate pluralization. If `%d` is provided
-in the string, the `count` will replace this placeholder.
-
-### y18n.setLocale(str)
-
-Set the current locale being used.
-
-### y18n.getLocale()
-
-What locale is currently being used?
-
-### y18n.updateLocale(obj)
-
-Update the current locale with the key value pairs in `obj`.
-
-## License
-
-ISC
-
-[travis-url]: https://travis-ci.org/yargs/y18n
-[travis-image]: https://img.shields.io/travis/yargs/y18n.svg
-[coveralls-url]: https://coveralls.io/github/yargs/y18n
-[coveralls-image]: https://img.shields.io/coveralls/yargs/y18n.svg
-[npm-url]: https://npmjs.org/package/y18n
-[npm-image]: https://img.shields.io/npm/v/y18n.svg
-[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg
-[standard-url]: https://github.com/feross/standard
diff --git a/node_modules/@iarna/cli/node_modules/y18n/index.js b/node_modules/@iarna/cli/node_modules/y18n/index.js
deleted file mode 100644
index 91b159e34..000000000
--- a/node_modules/@iarna/cli/node_modules/y18n/index.js
+++ /dev/null
@@ -1,172 +0,0 @@
-var fs = require('fs')
-var path = require('path')
-var util = require('util')
-
-function Y18N (opts) {
- // configurable options.
- opts = opts || {}
- this.directory = opts.directory || './locales'
- this.updateFiles = typeof opts.updateFiles === 'boolean' ? opts.updateFiles : true
- this.locale = opts.locale || 'en'
- this.fallbackToLanguage = typeof opts.fallbackToLanguage === 'boolean' ? opts.fallbackToLanguage : true
-
- // internal stuff.
- this.cache = {}
- this.writeQueue = []
-}
-
-Y18N.prototype.__ = function () {
- var args = Array.prototype.slice.call(arguments)
- var str = args.shift()
- var cb = function () {} // start with noop.
-
- if (typeof args[args.length - 1] === 'function') cb = args.pop()
- cb = cb || function () {} // noop.
-
- if (!this.cache[this.locale]) this._readLocaleFile()
-
- // we've observed a new string, update the language file.
- if (!this.cache[this.locale][str] && this.updateFiles) {
- this.cache[this.locale][str] = str
-
- // include the current directory and locale,
- // since these values could change before the
- // write is performed.
- this._enqueueWrite([this.directory, this.locale, cb])
- } else {
- cb()
- }
-
- return util.format.apply(util, [this.cache[this.locale][str] || str].concat(args))
-}
-
-Y18N.prototype._enqueueWrite = function (work) {
- this.writeQueue.push(work)
- if (this.writeQueue.length === 1) this._processWriteQueue()
-}
-
-Y18N.prototype._processWriteQueue = function () {
- var _this = this
- var work = this.writeQueue[0]
-
- // destructure the enqueued work.
- var directory = work[0]
- var locale = work[1]
- var cb = work[2]
-
- var languageFile = this._resolveLocaleFile(directory, locale)
- var serializedLocale = JSON.stringify(this.cache[locale], null, 2)
-
- fs.writeFile(languageFile, serializedLocale, 'utf-8', function (err) {
- _this.writeQueue.shift()
- if (_this.writeQueue.length > 0) _this._processWriteQueue()
- cb(err)
- })
-}
-
-Y18N.prototype._readLocaleFile = function () {
- var localeLookup = {}
- var languageFile = this._resolveLocaleFile(this.directory, this.locale)
-
- try {
- localeLookup = JSON.parse(fs.readFileSync(languageFile, 'utf-8'))
- } catch (err) {
- if (err instanceof SyntaxError) {
- err.message = 'syntax error in ' + languageFile
- }
-
- if (err.code === 'ENOENT') localeLookup = {}
- else throw err
- }
-
- this.cache[this.locale] = localeLookup
-}
-
-Y18N.prototype._resolveLocaleFile = function (directory, locale) {
- var file = path.resolve(directory, './', locale + '.json')
- if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf('_')) {
- // attempt fallback to language only
- var languageFile = path.resolve(directory, './', locale.split('_')[0] + '.json')
- if (this._fileExistsSync(languageFile)) file = languageFile
- }
- return file
-}
-
-// this only exists because fs.existsSync() "will be deprecated"
-// see https://nodejs.org/api/fs.html#fs_fs_existssync_path
-Y18N.prototype._fileExistsSync = function (file) {
- try {
- return fs.statSync(file).isFile()
- } catch (err) {
- return false
- }
-}
-
-Y18N.prototype.__n = function () {
- var args = Array.prototype.slice.call(arguments)
- var singular = args.shift()
- var plural = args.shift()
- var quantity = args.shift()
-
- var cb = function () {} // start with noop.
- if (typeof args[args.length - 1] === 'function') cb = args.pop()
-
- if (!this.cache[this.locale]) this._readLocaleFile()
-
- var str = quantity === 1 ? singular : plural
- if (this.cache[this.locale][singular]) {
- str = this.cache[this.locale][singular][quantity === 1 ? 'one' : 'other']
- }
-
- // we've observed a new string, update the language file.
- if (!this.cache[this.locale][singular] && this.updateFiles) {
- this.cache[this.locale][singular] = {
- one: singular,
- other: plural
- }
-
- // include the current directory and locale,
- // since these values could change before the
- // write is performed.
- this._enqueueWrite([this.directory, this.locale, cb])
- } else {
- cb()
- }
-
- // if a %d placeholder is provided, add quantity
- // to the arguments expanded by util.format.
- var values = [str]
- if (~str.indexOf('%d')) values.push(quantity)
-
- return util.format.apply(util, values.concat(args))
-}
-
-Y18N.prototype.setLocale = function (locale) {
- this.locale = locale
-}
-
-Y18N.prototype.getLocale = function () {
- return this.locale
-}
-
-Y18N.prototype.updateLocale = function (obj) {
- if (!this.cache[this.locale]) this._readLocaleFile()
-
- for (var key in obj) {
- this.cache[this.locale][key] = obj[key]
- }
-}
-
-module.exports = function (opts) {
- var y18n = new Y18N(opts)
-
- // bind all functions to y18n, so that
- // they can be used in isolation.
- for (var key in y18n) {
- if (typeof y18n[key] === 'function') {
- y18n[key] = y18n[key].bind(y18n)
- }
- }
-
- return y18n
-}
diff --git a/node_modules/@iarna/cli/node_modules/y18n/package.json b/node_modules/@iarna/cli/node_modules/y18n/package.json
deleted file mode 100644
index e4e594430..000000000
--- a/node_modules/@iarna/cli/node_modules/y18n/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "y18n",
- "version": "3.2.1",
- "description": "the bare-bones internationalization library used by yargs",
- "main": "index.js",
- "scripts": {
- "pretest": "standard",
- "test": "nyc mocha",
- "coverage": "nyc report --reporter=text-lcov | coveralls"
- },
- "repository": {
- "type": "git",
- "url": "git@github.com:yargs/y18n.git"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "i18n",
- "internationalization",
- "yargs"
- ],
- "author": "Ben Coe <ben@npmjs.com>",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/yargs/y18n/issues"
- },
- "homepage": "https://github.com/yargs/y18n",
- "devDependencies": {
- "chai": "^3.4.1",
- "coveralls": "^2.11.6",
- "mocha": "^2.3.4",
- "nyc": "^6.1.1",
- "rimraf": "^2.5.0",
- "standard": "^5.4.1"
- }
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs-parser/CHANGELOG.md b/node_modules/@iarna/cli/node_modules/yargs-parser/CHANGELOG.md
deleted file mode 100644
index 3ad3df821..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs-parser/CHANGELOG.md
+++ /dev/null
@@ -1,223 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="7.0.0"></a>
-# [7.0.0](https://github.com/yargs/yargs-parser/compare/v6.0.1...v7.0.0) (2017-05-02)
-
-
-### Chores
-
-* revert populate-- logic ([#91](https://github.com/yargs/yargs-parser/issues/91)) ([6003e6d](https://github.com/yargs/yargs-parser/commit/6003e6d))
-
-
-### BREAKING CHANGES
-
-* populate-- now defaults to false.
-
-
-
-<a name="6.0.1"></a>
-## [6.0.1](https://github.com/yargs/yargs-parser/compare/v6.0.0...v6.0.1) (2017-05-01)
-
-
-### Bug Fixes
-
-* default '--' to undefined when not provided; this is closer to the array API ([#90](https://github.com/yargs/yargs-parser/issues/90)) ([4e739cc](https://github.com/yargs/yargs-parser/commit/4e739cc))
-
-
-
-<a name="6.0.0"></a>
-# [6.0.0](https://github.com/yargs/yargs-parser/compare/v4.2.1...v6.0.0) (2017-05-01)
-
-
-### Bug Fixes
-
-* environment variables should take precedence over config file ([#81](https://github.com/yargs/yargs-parser/issues/81)) ([76cee1f](https://github.com/yargs/yargs-parser/commit/76cee1f))
-* parsing hints should apply for dot notation keys ([#86](https://github.com/yargs/yargs-parser/issues/86)) ([3e47d62](https://github.com/yargs/yargs-parser/commit/3e47d62))
-
-
-### Chores
-
-* upgrade to newest version of camelcase ([#87](https://github.com/yargs/yargs-parser/issues/87)) ([f1903aa](https://github.com/yargs/yargs-parser/commit/f1903aa))
-
-
-### Features
-
-* add -- option which allows arguments after the -- flag to be returned separated from positional arguments ([#84](https://github.com/yargs/yargs-parser/issues/84)) ([2572ca8](https://github.com/yargs/yargs-parser/commit/2572ca8))
-* when parsing stops, we now populate "--" by default ([#88](https://github.com/yargs/yargs-parser/issues/88)) ([cd666db](https://github.com/yargs/yargs-parser/commit/cd666db))
-
-
-### BREAKING CHANGES
-
-* rather than placing arguments in "_", when parsing is stopped via "--"; we now populate an array called "--" by default.
-* camelcase now requires Node 4+.
-* environment variables will now override config files (args, env, config-file, config-object)
-
-
-
-<a name="5.0.0"></a>
-# [5.0.0](https://github.com/yargs/yargs-parser/compare/v4.2.1...v5.0.0) (2017-02-18)
-
-
-### Bug Fixes
-
-* environment variables should take precedence over config file ([#81](https://github.com/yargs/yargs-parser/issues/81)) ([76cee1f](https://github.com/yargs/yargs-parser/commit/76cee1f))
-
-
-### BREAKING CHANGES
-
-* environment variables will now override config files (args, env, config-file, config-object)
-
-
-
-<a name="4.2.1"></a>
-## [4.2.1](https://github.com/yargs/yargs-parser/compare/v4.2.0...v4.2.1) (2017-01-02)
-
-
-### Bug Fixes
-
-* flatten/duplicate regression ([#75](https://github.com/yargs/yargs-parser/issues/75)) ([68d68a0](https://github.com/yargs/yargs-parser/commit/68d68a0))
-
-
-
-<a name="4.2.0"></a>
-# [4.2.0](https://github.com/yargs/yargs-parser/compare/v4.1.0...v4.2.0) (2016-12-01)
-
-
-### Bug Fixes
-
-* inner objects in configs had their keys appended to top-level key when dot-notation was disabled ([#72](https://github.com/yargs/yargs-parser/issues/72)) ([0b1b5f9](https://github.com/yargs/yargs-parser/commit/0b1b5f9))
-
-
-### Features
-
-* allow multiple arrays to be provided, rather than always combining ([#71](https://github.com/yargs/yargs-parser/issues/71)) ([0f0fb2d](https://github.com/yargs/yargs-parser/commit/0f0fb2d))
-
-
-
-<a name="4.1.0"></a>
-# [4.1.0](https://github.com/yargs/yargs-parser/compare/v4.0.2...v4.1.0) (2016-11-07)
-
-
-### Features
-
-* apply coercions to default options ([#65](https://github.com/yargs/yargs-parser/issues/65)) ([c79052b](https://github.com/yargs/yargs-parser/commit/c79052b))
-* handle dot notation boolean options ([#63](https://github.com/yargs/yargs-parser/issues/63)) ([02c3545](https://github.com/yargs/yargs-parser/commit/02c3545))
-
-
-
-<a name="4.0.2"></a>
-## [4.0.2](https://github.com/yargs/yargs-parser/compare/v4.0.1...v4.0.2) (2016-09-30)
-
-
-### Bug Fixes
-
-* whoops, let's make the assign not change the Object key order ([29d069a](https://github.com/yargs/yargs-parser/commit/29d069a))
-
-
-
-<a name="4.0.1"></a>
-## [4.0.1](https://github.com/yargs/yargs-parser/compare/v4.0.0...v4.0.1) (2016-09-30)
-
-
-### Bug Fixes
-
-* lodash.assign was deprecated ([#59](https://github.com/yargs/yargs-parser/issues/59)) ([5e7eb11](https://github.com/yargs/yargs-parser/commit/5e7eb11))
-
-
-
-<a name="4.0.0"></a>
-# [4.0.0](https://github.com/yargs/yargs-parser/compare/v3.2.0...v4.0.0) (2016-09-26)
-
-
-### Bug Fixes
-
-* coerce should be applied to the final objects and arrays created ([#57](https://github.com/yargs/yargs-parser/issues/57)) ([4ca69da](https://github.com/yargs/yargs-parser/commit/4ca69da))
-
-
-### BREAKING CHANGES
-
-* coerce is no longer applied to individual arguments in an implicit array.
-
-
-
-<a name="3.2.0"></a>
-# [3.2.0](https://github.com/yargs/yargs-parser/compare/v3.1.0...v3.2.0) (2016-08-13)
-
-
-### Features
-
-* coerce full array instead of each element ([#51](https://github.com/yargs/yargs-parser/issues/51)) ([cc4dc56](https://github.com/yargs/yargs-parser/commit/cc4dc56))
-
-
-
-<a name="3.1.0"></a>
-# [3.1.0](https://github.com/yargs/yargs-parser/compare/v3.0.0...v3.1.0) (2016-08-09)
-
-
-### Bug Fixes
-
-* address pkgConf parsing bug outlined in [#37](https://github.com/yargs/yargs-parser/issues/37) ([#45](https://github.com/yargs/yargs-parser/issues/45)) ([be76ee6](https://github.com/yargs/yargs-parser/commit/be76ee6))
-* better parsing of negative values ([#44](https://github.com/yargs/yargs-parser/issues/44)) ([2e43692](https://github.com/yargs/yargs-parser/commit/2e43692))
-* check aliases when guessing defaults for arguments fixes [#41](https://github.com/yargs/yargs-parser/issues/41) ([#43](https://github.com/yargs/yargs-parser/issues/43)) ([f3e4616](https://github.com/yargs/yargs-parser/commit/f3e4616))
-
-
-### Features
-
-* added coerce option, for providing specialized argument parsing ([#42](https://github.com/yargs/yargs-parser/issues/42)) ([7b49cd2](https://github.com/yargs/yargs-parser/commit/7b49cd2))
-
-
-
-<a name="3.0.0"></a>
-# [3.0.0](https://github.com/yargs/yargs-parser/compare/v2.4.1...v3.0.0) (2016-08-07)
-
-
-### Bug Fixes
-
-* parsing issue with numeric character in group of options ([#19](https://github.com/yargs/yargs-parser/issues/19)) ([f743236](https://github.com/yargs/yargs-parser/commit/f743236))
-* upgraded lodash.assign ([5d7fdf4](https://github.com/yargs/yargs-parser/commit/5d7fdf4))
-
-### BREAKING CHANGES
-
-* subtle change to how values are parsed in a group of single-character arguments.
-* _first released in 3.1.0, better handling of negative values should be considered a breaking change._
-
-
-
-<a name="2.4.1"></a>
-## [2.4.1](https://github.com/yargs/yargs-parser/compare/v2.4.0...v2.4.1) (2016-07-16)
-
-
-### Bug Fixes
-
-* **count:** do not increment a default value ([#39](https://github.com/yargs/yargs-parser/issues/39)) ([b04a189](https://github.com/yargs/yargs-parser/commit/b04a189))
-
-
-
-<a name="2.4.0"></a>
-# [2.4.0](https://github.com/yargs/yargs-parser/compare/v2.3.0...v2.4.0) (2016-04-11)
-
-
-### Features
-
-* **environment:** Support nested options in environment variables ([#26](https://github.com/yargs/yargs-parser/issues/26)) thanks [@elas7](https://github.com/elas7) \o/ ([020778b](https://github.com/yargs/yargs-parser/commit/020778b))
-
-
-
-<a name="2.3.0"></a>
-# [2.3.0](https://github.com/yargs/yargs-parser/compare/v2.2.0...v2.3.0) (2016-04-09)
-
-
-### Bug Fixes
-
-* **boolean:** fix for boolean options with non boolean defaults (#20) ([2dbe86b](https://github.com/yargs/yargs-parser/commit/2dbe86b)), closes [(#20](https://github.com/(/issues/20)
-* **package:** remove tests from tarball ([0353c0d](https://github.com/yargs/yargs-parser/commit/0353c0d))
-* **parsing:** handle calling short option with an empty string as the next value. ([a867165](https://github.com/yargs/yargs-parser/commit/a867165))
-* boolean flag when next value contains the strings 'true' or 'false'. ([69941a6](https://github.com/yargs/yargs-parser/commit/69941a6))
-* update dependencies; add standard-version bin for next release (#24) ([822d9d5](https://github.com/yargs/yargs-parser/commit/822d9d5))
-
-### Features
-
-* **configuration:** Allow to pass configuration objects to yargs-parser ([0780900](https://github.com/yargs/yargs-parser/commit/0780900))
-* **normalize:** allow normalize to work with arrays ([e0eaa1a](https://github.com/yargs/yargs-parser/commit/e0eaa1a))
diff --git a/node_modules/@iarna/cli/node_modules/yargs-parser/LICENSE.txt b/node_modules/@iarna/cli/node_modules/yargs-parser/LICENSE.txt
deleted file mode 100644
index 836440bef..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs-parser/LICENSE.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright (c) 2016, Contributors
-
-Permission to use, copy, modify, and/or distribute this software
-for any purpose with or without fee is hereby granted, provided
-that the above copyright notice and this permission notice
-appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
-LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
-OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/@iarna/cli/node_modules/yargs-parser/README.md b/node_modules/@iarna/cli/node_modules/yargs-parser/README.md
deleted file mode 100644
index d1817fccc..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs-parser/README.md
+++ /dev/null
@@ -1,281 +0,0 @@
-# yargs-parser
-
-[![Build Status](https://travis-ci.org/yargs/yargs-parser.png)](https://travis-ci.org/yargs/yargs-parser)
-[![Coverage Status](https://coveralls.io/repos/yargs/yargs-parser/badge.svg?branch=)](https://coveralls.io/r/yargs/yargs-parser?branch=master)
-[![NPM version](https://img.shields.io/npm/v/yargs-parser.svg)](https://www.npmjs.com/package/yargs-parser)
-[![Windows Tests](https://img.shields.io/appveyor/ci/bcoe/yargs-parser/master.svg?label=Windows%20Tests)](https://ci.appveyor.com/project/bcoe/yargs-parser)
-[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
-
-
-The mighty option parser used by [yargs](https://github.com/yargs/yargs).
-
-visit the [yargs website](http://yargs.js.org/) for more examples, and thorough usage instructions.
-
-<img width="250" src="https://raw.githubusercontent.com/yargs/yargs-parser/master/yargs-logo.png">
-
-## Example
-
-```sh
-npm i yargs-parser --save
-```
-
-```js
-var argv = require('yargs-parser')(process.argv.slice(2))
-console.log(argv)
-```
-
-```sh
-node example.js --foo=33 --bar hello
-{ _: [], foo: 33, bar: 'hello' }
-```
-
-_or parse a string!_
-
-```js
-var argv = require('./')('--foo=99 --bar=33')
-console.log(argv)
-```
-
-```sh
-{ _: [], foo: 99, bar: 33 }
-```
-
-Convert an array of mixed types before passing to `yargs-parser`:
-
-```js
-var parse = require('yargs-parser')
-parse(['-f', 11, '--zoom', 55].join(' ')) // <-- array to string
-parse(['-f', 11, '--zoom', 55].map(String)) // <-- array of strings
-```
-
-## API
-
-### require('yargs-parser')(args, opts={})
-
-Parses command line arguments returning a simple mapping of keys and values.
-
-**expects:**
-
-* `args`: a string or array of strings representing the options to parse.
-* `opts`: provide a set of hints indicating how `args` should be parsed:
- * `opts.alias`: an object representing the set of aliases for a key: `{alias: {foo: ['f']}}`.
- * `opts.array`: indicate that keys should be parsed as an array: `{array: ['foo', 'bar']}`.
- * `opts.boolean`: arguments should be parsed as booleans: `{boolean: ['x', 'y']}`.
- * `opts.config`: indicate a key that represents a path to a configuration file (this file will be loaded and parsed).
- * `opts.coerce`: provide a custom synchronous function that returns a coerced value from the argument provided
- (or throws an error), e.g. `{coerce: {foo: function (arg) {return modifiedArg}}}`.
- * `opts.count`: indicate a key that should be used as a counter, e.g., `-vvv` = `{v: 3}`.
- * `opts.default`: provide default values for keys: `{default: {x: 33, y: 'hello world!'}}`.
- * `opts.envPrefix`: environment variables (`process.env`) with the prefix provided should be parsed.
- * `opts.narg`: specify that a key requires `n` arguments: `{narg: {x: 2}}`.
- * `opts.normalize`: `path.normalize()` will be applied to values set to this key.
- * `opts.string`: keys should be treated as strings (even if they resemble a number `-x 33`).
- * `opts.configuration`: provide configuration options to the yargs-parser (see: [configuration](#configuration)).
- * `opts.number`: keys should be treated as numbers.
- * `opts['--']`: arguments after the end-of-options flag `--` will be set to the `argv.['--']` array instead of being set to the `argv._` array.
-
-**returns:**
-
-* `obj`: an object representing the parsed value of `args`
- * `key/value`: key value pairs for each argument and their aliases.
- * `_`: an array representing the positional arguments.
- * [optional] `--`: an array with arguments after the end-of-options flag `--`.
-
-### require('yargs-parser').detailed(args, opts={})
-
-Parses a command line string, returning detailed information required by the
-yargs engine.
-
-**expects:**
-
-* `args`: a string or array of strings representing options to parse.
-* `opts`: provide a set of hints indicating how `args`, inputs are identical to `require('yargs-parser')(args, opts={})`.
-
-**returns:**
-
-* `argv`: an object representing the parsed value of `args`
- * `key/value`: key value pairs for each argument and their aliases.
- * `_`: an array representing the positional arguments.
-* `error`: populated with an error object if an exception occurred during parsing.
-* `aliases`: the inferred list of aliases built by combining lists in `opts.alias`.
-* `newAliases`: any new aliases added via camel-case expansion.
-* `configuration`: the configuration loaded from the `yargs` stanza in package.json.
-
-<a name="configuration"></a>
-
-### Configuration
-
-The yargs-parser applies several automated transformations on the keys provided
-in `args`. These features can be turned on and off using the `configuration` field
-of `opts`.
-
-```js
-var parsed = parser(['--no-dice'], {
- configuration: {
- 'boolean-negation': false
- }
-})
-```
-
-### short option groups
-
-* default: `true`.
-* key: `short-option-groups`.
-
-Should a group of short-options be treated as boolean flags?
-
-```sh
-node example.js -abc
-{ _: [], a: true, b: true, c: true }
-```
-
-_if disabled:_
-
-```sh
-node example.js -abc
-{ _: [], abc: true }
-```
-
-### camel-case expansion
-
-* default: `true`.
-* key: `camel-case-expansion`.
-
-Should hyphenated arguments be expanded into camel-case aliases?
-
-```sh
-node example.js --foo-bar
-{ _: [], 'foo-bar': true, fooBar: true }
-```
-
-_if disabled:_
-
-```sh
-node example.js --foo-bar
-{ _: [], 'foo-bar': true }
-```
-
-### dot-notation
-
-* default: `true`
-* key: `dot-notation`
-
-Should keys that contain `.` be treated as objects?
-
-```sh
-node example.js --foo.bar
-{ _: [], foo: { bar: true } }
-```
-
-_if disabled:_
-
-```sh
-node example.js --foo.bar
-{ _: [], "foo.bar": true }
-```
-
-### parse numbers
-
-* default: `true`
-* key: `parse-numbers`
-
-Should keys that look like numbers be treated as such?
-
-```sh
-node example.js --foo=99.3
-{ _: [], foo: 99.3 }
-```
-
-_if disabled:_
-
-```sh
-node example.js --foo=99.3
-{ _: [], foo: "99.3" }
-```
-
-### boolean negation
-
-* default: `true`
-* key: `boolean-negation`
-
-Should variables prefixed with `--no` be treated as negations?
-
-```sh
-node example.js --no-foo
-{ _: [], foo: false }
-```
-
-_if disabled:_
-
-```sh
-node example.js --no-foo
-{ _: [], "no-foo": true }
-```
-
-### duplicate arguments array
-
-* default: `true`
-* key: `duplicate-arguments-array`
-
-Should arguments be coerced into an array when duplicated:
-
-```sh
-node example.js -x 1 -x 2
-{ _: [], x: [1, 2] }
-```
-
-_if disabled:_
-
-```sh
-node example.js -x 1 -x 2
-{ _: [], x: 2 }
-```
-
-### flatten duplicate arrays
-
-* default: `true`
-* key: `flatten-duplicate-arrays`
-
-Should array arguments be coerced into a single array when duplicated:
-
-```sh
-node example.js -x 1 2 -x 3 4
-{ _: [], x: [1, 2, 3, 4] }
-```
-
-_if disabled:_
-
-```sh
-node example.js -x 1 2 -x 3 4
-{ _: [], x: [[1, 2], [3, 4]] }
-```
-
-### populate --
-
-* default: `false`.
-* key: `populate--`
-
-Should unparsed flags be stored in `--` or `_`.
-
-_If disabled:_
-
-```sh
-node example.js a -b -- x y
-{ _: [ 'a', 'x', 'y' ], b: true }
-```
-
-_If enabled:_
-
-```sh
-node example.js a -b -- x y
-{ _: [ 'a' ], '--': [ 'x', 'y' ], b: true }
-```
-
-## Special Thanks
-
-The yargs project evolves from optimist and minimist. It owes its
-existence to a lot of James Halliday's hard work. Thanks [substack](https://github.com/substack) **beep** **boop** \o/
-
-## License
-
-ISC
diff --git a/node_modules/@iarna/cli/node_modules/yargs-parser/index.js b/node_modules/@iarna/cli/node_modules/yargs-parser/index.js
deleted file mode 100644
index 73154066f..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs-parser/index.js
+++ /dev/null
@@ -1,764 +0,0 @@
-var camelCase = require('camelcase')
-var path = require('path')
-var tokenizeArgString = require('./lib/tokenize-arg-string')
-var util = require('util')
-
-function parse (args, opts) {
- if (!opts) opts = {}
- // allow a string argument to be passed in rather
- // than an argv array.
- args = tokenizeArgString(args)
- // aliases might have transitive relationships, normalize this.
- var aliases = combineAliases(opts.alias || {})
- var configuration = assign({
- 'short-option-groups': true,
- 'camel-case-expansion': true,
- 'dot-notation': true,
- 'parse-numbers': true,
- 'boolean-negation': true,
- 'duplicate-arguments-array': true,
- 'flatten-duplicate-arrays': true,
- 'populate--': false
- }, opts.configuration)
- var defaults = opts.default || {}
- var configObjects = opts.configObjects || []
- var envPrefix = opts.envPrefix
- var notFlagsOption = configuration['populate--']
- var notFlagsArgv = notFlagsOption ? '--' : '_'
- var newAliases = {}
- // allow a i18n handler to be passed in, default to a fake one (util.format).
- var __ = opts.__ || function (str) {
- return util.format.apply(util, Array.prototype.slice.call(arguments))
- }
- var error = null
- var flags = {
- aliases: {},
- arrays: {},
- bools: {},
- strings: {},
- numbers: {},
- counts: {},
- normalize: {},
- configs: {},
- defaulted: {},
- nargs: {},
- coercions: {}
- }
- var negative = /^-[0-9]+(\.[0-9]+)?/
-
- ;[].concat(opts.array).filter(Boolean).forEach(function (key) {
- flags.arrays[key] = true
- })
-
- ;[].concat(opts.boolean).filter(Boolean).forEach(function (key) {
- flags.bools[key] = true
- })
-
- ;[].concat(opts.string).filter(Boolean).forEach(function (key) {
- flags.strings[key] = true
- })
-
- ;[].concat(opts.number).filter(Boolean).forEach(function (key) {
- flags.numbers[key] = true
- })
-
- ;[].concat(opts.count).filter(Boolean).forEach(function (key) {
- flags.counts[key] = true
- })
-
- ;[].concat(opts.normalize).filter(Boolean).forEach(function (key) {
- flags.normalize[key] = true
- })
-
- Object.keys(opts.narg || {}).forEach(function (k) {
- flags.nargs[k] = opts.narg[k]
- })
-
- Object.keys(opts.coerce || {}).forEach(function (k) {
- flags.coercions[k] = opts.coerce[k]
- })
-
- if (Array.isArray(opts.config) || typeof opts.config === 'string') {
- ;[].concat(opts.config).filter(Boolean).forEach(function (key) {
- flags.configs[key] = true
- })
- } else {
- Object.keys(opts.config || {}).forEach(function (k) {
- flags.configs[k] = opts.config[k]
- })
- }
-
- // create a lookup table that takes into account all
- // combinations of aliases: {f: ['foo'], foo: ['f']}
- extendAliases(opts.key, aliases, opts.default, flags.arrays)
-
- // apply default values to all aliases.
- Object.keys(defaults).forEach(function (key) {
- (flags.aliases[key] || []).forEach(function (alias) {
- defaults[alias] = defaults[key]
- })
- })
-
- var argv = { _: [] }
-
- Object.keys(flags.bools).forEach(function (key) {
- setArg(key, !(key in defaults) ? false : defaults[key])
- setDefaulted(key)
- })
-
- var notFlags = []
- if (args.indexOf('--') !== -1) {
- notFlags = args.slice(args.indexOf('--') + 1)
- args = args.slice(0, args.indexOf('--'))
- }
-
- for (var i = 0; i < args.length; i++) {
- var arg = args[i]
- var broken
- var key
- var letters
- var m
- var next
- var value
-
- // -- seperated by =
- if (arg.match(/^--.+=/) || (
- !configuration['short-option-groups'] && arg.match(/^-.+=/)
- )) {
- // Using [\s\S] instead of . because js doesn't support the
- // 'dotall' regex modifier. See:
- // http://stackoverflow.com/a/1068308/13216
- m = arg.match(/^--?([^=]+)=([\s\S]*)$/)
-
- // nargs format = '--f=monkey washing cat'
- if (checkAllAliases(m[1], flags.nargs)) {
- args.splice(i + 1, 0, m[2])
- i = eatNargs(i, m[1], args)
- // arrays format = '--f=a b c'
- } else if (checkAllAliases(m[1], flags.arrays) && args.length > i + 1) {
- args.splice(i + 1, 0, m[2])
- i = eatArray(i, m[1], args)
- } else {
- setArg(m[1], m[2])
- }
- } else if (arg.match(/^--no-.+/) && configuration['boolean-negation']) {
- key = arg.match(/^--no-(.+)/)[1]
- setArg(key, false)
-
- // -- seperated by space.
- } else if (arg.match(/^--.+/) || (
- !configuration['short-option-groups'] && arg.match(/^-.+/)
- )) {
- key = arg.match(/^--?(.+)/)[1]
-
- // nargs format = '--foo a b c'
- if (checkAllAliases(key, flags.nargs)) {
- i = eatNargs(i, key, args)
- // array format = '--foo a b c'
- } else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
- i = eatArray(i, key, args)
- } else {
- next = args[i + 1]
-
- if (next !== undefined && (!next.match(/^-/) ||
- next.match(negative)) &&
- !checkAllAliases(key, flags.bools) &&
- !checkAllAliases(key, flags.counts)) {
- setArg(key, next)
- i++
- } else if (/^(true|false)$/.test(next)) {
- setArg(key, next)
- i++
- } else {
- setArg(key, defaultForType(guessType(key, flags)))
- }
- }
-
- // dot-notation flag seperated by '='.
- } else if (arg.match(/^-.\..+=/)) {
- m = arg.match(/^-([^=]+)=([\s\S]*)$/)
- setArg(m[1], m[2])
-
- // dot-notation flag seperated by space.
- } else if (arg.match(/^-.\..+/)) {
- next = args[i + 1]
- key = arg.match(/^-(.\..+)/)[1]
-
- if (next !== undefined && !next.match(/^-/) &&
- !checkAllAliases(key, flags.bools) &&
- !checkAllAliases(key, flags.counts)) {
- setArg(key, next)
- i++
- } else {
- setArg(key, defaultForType(guessType(key, flags)))
- }
- } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {
- letters = arg.slice(1, -1).split('')
- broken = false
-
- for (var j = 0; j < letters.length; j++) {
- next = arg.slice(j + 2)
-
- if (letters[j + 1] && letters[j + 1] === '=') {
- value = arg.slice(j + 3)
- key = letters[j]
-
- // nargs format = '-f=monkey washing cat'
- if (checkAllAliases(key, flags.nargs)) {
- args.splice(i + 1, 0, value)
- i = eatNargs(i, key, args)
- // array format = '-f=a b c'
- } else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
- args.splice(i + 1, 0, value)
- i = eatArray(i, key, args)
- } else {
- setArg(key, value)
- }
-
- broken = true
- break
- }
-
- if (next === '-') {
- setArg(letters[j], next)
- continue
- }
-
- // current letter is an alphabetic character and next value is a number
- if (/[A-Za-z]/.test(letters[j]) &&
- /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
- setArg(letters[j], next)
- broken = true
- break
- }
-
- if (letters[j + 1] && letters[j + 1].match(/\W/)) {
- setArg(letters[j], next)
- broken = true
- break
- } else {
- setArg(letters[j], defaultForType(guessType(letters[j], flags)))
- }
- }
-
- key = arg.slice(-1)[0]
-
- if (!broken && key !== '-') {
- // nargs format = '-f a b c'
- if (checkAllAliases(key, flags.nargs)) {
- i = eatNargs(i, key, args)
- // array format = '-f a b c'
- } else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
- i = eatArray(i, key, args)
- } else {
- next = args[i + 1]
-
- if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||
- next.match(negative)) &&
- !checkAllAliases(key, flags.bools) &&
- !checkAllAliases(key, flags.counts)) {
- setArg(key, next)
- i++
- } else if (/^(true|false)$/.test(next)) {
- setArg(key, next)
- i++
- } else {
- setArg(key, defaultForType(guessType(key, flags)))
- }
- }
- }
- } else {
- argv._.push(
- flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
- )
- }
- }
-
- // order of precedence:
- // 1. command line arg
- // 2. value from env var
- // 3. value from config file
- // 4. value from config objects
- // 5. configured default value
- applyEnvVars(argv, true) // special case: check env vars that point to config file
- applyEnvVars(argv, false)
- setConfig(argv)
- setConfigObjects()
- applyDefaultsAndAliases(argv, flags.aliases, defaults)
- applyCoercions(argv)
-
- // for any counts either not in args or without an explicit default, set to 0
- Object.keys(flags.counts).forEach(function (key) {
- if (!hasKey(argv, key.split('.'))) setArg(key, 0)
- })
-
- // '--' defaults to undefined.
- if (notFlagsOption && notFlags.length) argv[notFlagsArgv] = []
- notFlags.forEach(function (key) {
- argv[notFlagsArgv].push(key)
- })
-
- // how many arguments should we consume, based
- // on the nargs option?
- function eatNargs (i, key, args) {
- var toEat = checkAllAliases(key, flags.nargs)
-
- if (args.length - (i + 1) < toEat) error = Error(__('Not enough arguments following: %s', key))
-
- for (var ii = i + 1; ii < (toEat + i + 1); ii++) {
- setArg(key, args[ii])
- }
-
- return (i + toEat)
- }
-
- // if an option is an array, eat all non-hyphenated arguments
- // following it... YUM!
- // e.g., --foo apple banana cat becomes ["apple", "banana", "cat"]
- function eatArray (i, key, args) {
- var start = i + 1
- var argsToSet = []
- var multipleArrayFlag = i > 0
- for (var ii = i + 1; ii < args.length; ii++) {
- if (/^-/.test(args[ii]) && !negative.test(args[ii])) {
- if (ii === start) {
- setArg(key, defaultForType('array'))
- }
- multipleArrayFlag = true
- break
- }
- i = ii
- argsToSet.push(args[ii])
- }
- if (multipleArrayFlag) {
- setArg(key, argsToSet.map(function (arg) {
- return processValue(key, arg)
- }))
- } else {
- argsToSet.forEach(function (arg) {
- setArg(key, arg)
- })
- }
-
- return i
- }
-
- function setArg (key, val) {
- unsetDefaulted(key)
-
- if (/-/.test(key) && !(flags.aliases[key] && flags.aliases[key].length) && configuration['camel-case-expansion']) {
- var c = camelCase(key)
- flags.aliases[key] = [c]
- newAliases[c] = true
- }
-
- var value = processValue(key, val)
-
- var splitKey = key.split('.')
- setKey(argv, splitKey, value)
-
- // handle populating aliases of the full key
- if (flags.aliases[key]) {
- flags.aliases[key].forEach(function (x) {
- x = x.split('.')
- setKey(argv, x, value)
- })
- }
-
- // handle populating aliases of the first element of the dot-notation key
- if (splitKey.length > 1 && configuration['dot-notation']) {
- ;(flags.aliases[splitKey[0]] || []).forEach(function (x) {
- x = x.split('.')
-
- // expand alias with nested objects in key
- var a = [].concat(splitKey)
- a.shift() // nuke the old key.
- x = x.concat(a)
-
- setKey(argv, x, value)
- })
- }
-
- // Set normalize getter and setter when key is in 'normalize' but isn't an array
- if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {
- var keys = [key].concat(flags.aliases[key] || [])
- keys.forEach(function (key) {
- argv.__defineSetter__(key, function (v) {
- val = path.normalize(v)
- })
-
- argv.__defineGetter__(key, function () {
- return typeof val === 'string' ? path.normalize(val) : val
- })
- })
- }
- }
-
- function processValue (key, val) {
- // handle parsing boolean arguments --foo=true --bar false.
- if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {
- if (typeof val === 'string') val = val === 'true'
- }
-
- var value = val
- if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.coercions)) {
- if (isNumber(val)) value = Number(val)
- if (!isUndefined(val) && !isNumber(val) && checkAllAliases(key, flags.numbers)) value = NaN
- }
-
- // increment a count given as arg (either no value or value parsed as boolean)
- if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {
- value = increment
- }
-
- // Set normalized value when key is in 'normalize' and in 'arrays'
- if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {
- if (Array.isArray(val)) value = val.map(path.normalize)
- else value = path.normalize(val)
- }
- return value
- }
-
- // set args from config.json file, this should be
- // applied last so that defaults can be applied.
- function setConfig (argv) {
- var configLookup = {}
-
- // expand defaults/aliases, in-case any happen to reference
- // the config.json file.
- applyDefaultsAndAliases(configLookup, flags.aliases, defaults)
-
- Object.keys(flags.configs).forEach(function (configKey) {
- var configPath = argv[configKey] || configLookup[configKey]
- if (configPath) {
- try {
- var config = null
- var resolvedConfigPath = path.resolve(process.cwd(), configPath)
-
- if (typeof flags.configs[configKey] === 'function') {
- try {
- config = flags.configs[configKey](resolvedConfigPath)
- } catch (e) {
- config = e
- }
- if (config instanceof Error) {
- error = config
- return
- }
- } else {
- config = require(resolvedConfigPath)
- }
-
- setConfigObject(config)
- } catch (ex) {
- if (argv[configKey]) error = Error(__('Invalid JSON config file: %s', configPath))
- }
- }
- })
- }
-
- // set args from config object.
- // it recursively checks nested objects.
- function setConfigObject (config, prev) {
- Object.keys(config).forEach(function (key) {
- var value = config[key]
- var fullKey = prev ? prev + '.' + key : key
-
- // if the value is an inner object and we have dot-notation
- // enabled, treat inner objects in config the same as
- // heavily nested dot notations (foo.bar.apple).
- if (typeof value === 'object' && !Array.isArray(value) && configuration['dot-notation']) {
- // if the value is an object but not an array, check nested object
- setConfigObject(value, fullKey)
- } else {
- // setting arguments via CLI takes precedence over
- // values within the config file.
- if (!hasKey(argv, fullKey.split('.')) || (flags.defaulted[fullKey])) {
- setArg(fullKey, value)
- }
- }
- })
- }
-
- // set all config objects passed in opts
- function setConfigObjects () {
- if (typeof configObjects === 'undefined') return
- configObjects.forEach(function (configObject) {
- setConfigObject(configObject)
- })
- }
-
- function applyEnvVars (argv, configOnly) {
- if (typeof envPrefix === 'undefined') return
-
- var prefix = typeof envPrefix === 'string' ? envPrefix : ''
- Object.keys(process.env).forEach(function (envVar) {
- if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {
- // get array of nested keys and convert them to camel case
- var keys = envVar.split('__').map(function (key, i) {
- if (i === 0) {
- key = key.substring(prefix.length)
- }
- return camelCase(key)
- })
-
- if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && (!hasKey(argv, keys) || flags.defaulted[keys.join('.')])) {
- setArg(keys.join('.'), process.env[envVar])
- }
- }
- })
- }
-
- function applyCoercions (argv) {
- var coerce
- Object.keys(argv).forEach(function (key) {
- coerce = checkAllAliases(key, flags.coercions)
- if (typeof coerce === 'function') {
- try {
- argv[key] = coerce(argv[key])
- } catch (err) {
- error = err
- }
- }
- })
- }
-
- function applyDefaultsAndAliases (obj, aliases, defaults) {
- Object.keys(defaults).forEach(function (key) {
- if (!hasKey(obj, key.split('.'))) {
- setKey(obj, key.split('.'), defaults[key])
-
- ;(aliases[key] || []).forEach(function (x) {
- if (hasKey(obj, x.split('.'))) return
- setKey(obj, x.split('.'), defaults[key])
- })
- }
- })
- }
-
- function hasKey (obj, keys) {
- var o = obj
-
- if (!configuration['dot-notation']) keys = [keys.join('.')]
-
- keys.slice(0, -1).forEach(function (key) {
- o = (o[key] || {})
- })
-
- var key = keys[keys.length - 1]
-
- if (typeof o !== 'object') return false
- else return key in o
- }
-
- function setKey (obj, keys, value) {
- var o = obj
-
- if (!configuration['dot-notation']) keys = [keys.join('.')]
-
- keys.slice(0, -1).forEach(function (key) {
- if (o[key] === undefined) o[key] = {}
- o = o[key]
- })
-
- var key = keys[keys.length - 1]
-
- var isTypeArray = checkAllAliases(keys.join('.'), flags.arrays)
- var isValueArray = Array.isArray(value)
- var duplicate = configuration['duplicate-arguments-array']
-
- if (value === increment) {
- o[key] = increment(o[key])
- } else if (Array.isArray(o[key])) {
- if (duplicate && isTypeArray && isValueArray) {
- o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : [o[key]].concat([value])
- } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {
- o[key] = value
- } else {
- o[key] = o[key].concat([value])
- }
- } else if (o[key] === undefined && isTypeArray) {
- o[key] = isValueArray ? value : [value]
- } else if (duplicate && !(o[key] === undefined || checkAllAliases(key, flags.bools) || checkAllAliases(keys.join('.'), flags.bools) || checkAllAliases(key, flags.counts))) {
- o[key] = [ o[key], value ]
- } else {
- o[key] = value
- }
- }
-
- // extend the aliases list with inferred aliases.
- function extendAliases () {
- Array.prototype.slice.call(arguments).forEach(function (obj) {
- Object.keys(obj || {}).forEach(function (key) {
- // short-circuit if we've already added a key
- // to the aliases array, for example it might
- // exist in both 'opts.default' and 'opts.key'.
- if (flags.aliases[key]) return
-
- flags.aliases[key] = [].concat(aliases[key] || [])
- // For "--option-name", also set argv.optionName
- flags.aliases[key].concat(key).forEach(function (x) {
- if (/-/.test(x) && configuration['camel-case-expansion']) {
- var c = camelCase(x)
- flags.aliases[key].push(c)
- newAliases[c] = true
- }
- })
- flags.aliases[key].forEach(function (x) {
- flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {
- return x !== y
- }))
- })
- })
- })
- }
-
- // check if a flag is set for any of a key's aliases.
- function checkAllAliases (key, flag) {
- var isSet = false
- var toCheck = [].concat(flags.aliases[key] || [], key)
-
- toCheck.forEach(function (key) {
- if (flag[key]) isSet = flag[key]
- })
-
- return isSet
- }
-
- function setDefaulted (key) {
- [].concat(flags.aliases[key] || [], key).forEach(function (k) {
- flags.defaulted[k] = true
- })
- }
-
- function unsetDefaulted (key) {
- [].concat(flags.aliases[key] || [], key).forEach(function (k) {
- delete flags.defaulted[k]
- })
- }
-
- // return a default value, given the type of a flag.,
- // e.g., key of type 'string' will default to '', rather than 'true'.
- function defaultForType (type) {
- var def = {
- boolean: true,
- string: '',
- number: undefined,
- array: []
- }
-
- return def[type]
- }
-
- // given a flag, enforce a default type.
- function guessType (key, flags) {
- var type = 'boolean'
-
- if (checkAllAliases(key, flags.strings)) type = 'string'
- else if (checkAllAliases(key, flags.numbers)) type = 'number'
- else if (checkAllAliases(key, flags.arrays)) type = 'array'
-
- return type
- }
-
- function isNumber (x) {
- if (!configuration['parse-numbers']) return false
- if (typeof x === 'number') return true
- if (/^0x[0-9a-f]+$/i.test(x)) return true
- return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x)
- }
-
- function isUndefined (num) {
- return num === undefined
- }
-
- return {
- argv: argv,
- error: error,
- aliases: flags.aliases,
- newAliases: newAliases,
- configuration: configuration
- }
-}
-
-// if any aliases reference each other, we should
-// merge them together.
-function combineAliases (aliases) {
- var aliasArrays = []
- var change = true
- var combined = {}
-
- // turn alias lookup hash {key: ['alias1', 'alias2']} into
- // a simple array ['key', 'alias1', 'alias2']
- Object.keys(aliases).forEach(function (key) {
- aliasArrays.push(
- [].concat(aliases[key], key)
- )
- })
-
- // combine arrays until zero changes are
- // made in an iteration.
- while (change) {
- change = false
- for (var i = 0; i < aliasArrays.length; i++) {
- for (var ii = i + 1; ii < aliasArrays.length; ii++) {
- var intersect = aliasArrays[i].filter(function (v) {
- return aliasArrays[ii].indexOf(v) !== -1
- })
-
- if (intersect.length) {
- aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii])
- aliasArrays.splice(ii, 1)
- change = true
- break
- }
- }
- }
- }
-
- // map arrays back to the hash-lookup (de-dupe while
- // we're at it).
- aliasArrays.forEach(function (aliasArray) {
- aliasArray = aliasArray.filter(function (v, i, self) {
- return self.indexOf(v) === i
- })
- combined[aliasArray.pop()] = aliasArray
- })
-
- return combined
-}
-
-function assign (defaults, configuration) {
- var o = {}
- configuration = configuration || {}
-
- Object.keys(defaults).forEach(function (k) {
- o[k] = defaults[k]
- })
- Object.keys(configuration).forEach(function (k) {
- o[k] = configuration[k]
- })
-
- return o
-}
-
-// this function should only be called when a count is given as an arg
-// it is NOT called to set a default value
-// thus we can start the count at 1 instead of 0
-function increment (orig) {
- return orig !== undefined ? orig + 1 : 1
-}
-
-function Parser (args, opts) {
- var result = parse(args.slice(), opts)
-
- return result.argv
-}
-
-// parse arguments and return detailed
-// meta information, aliases, etc.
-Parser.detailed = function (args, opts) {
- return parse(args.slice(), opts)
-}
-
-module.exports = Parser
diff --git a/node_modules/@iarna/cli/node_modules/yargs-parser/lib/tokenize-arg-string.js b/node_modules/@iarna/cli/node_modules/yargs-parser/lib/tokenize-arg-string.js
deleted file mode 100644
index 23d39e1fe..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs-parser/lib/tokenize-arg-string.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// take an un-split argv string and tokenize it.
-module.exports = function (argString) {
- if (Array.isArray(argString)) return argString
-
- var i = 0
- var c = null
- var opening = null
- var args = []
-
- for (var ii = 0; ii < argString.length; ii++) {
- c = argString.charAt(ii)
-
- // split on spaces unless we're in quotes.
- if (c === ' ' && !opening) {
- i++
- continue
- }
-
- // don't split the string if we're in matching
- // opening or closing single and double quotes.
- if (c === opening) {
- opening = null
- continue
- } else if ((c === "'" || c === '"') && !opening) {
- opening = c
- continue
- }
-
- if (!args[i]) args[i] = ''
- args[i] += c
- }
-
- return args
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs-parser/package.json b/node_modules/@iarna/cli/node_modules/yargs-parser/package.json
deleted file mode 100644
index 5d84e9f19..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs-parser/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "yargs-parser",
- "version": "7.0.0",
- "description": "the mighty option parser used by yargs",
- "main": "index.js",
- "scripts": {
- "pretest": "standard",
- "test": "nyc mocha test/*.js",
- "coverage": "nyc report --reporter=text-lcov | coveralls",
- "release": "standard-version"
- },
- "repository": {
- "url": "git@github.com:yargs/yargs-parser.git"
- },
- "keywords": [
- "argument",
- "parser",
- "yargs",
- "command",
- "cli",
- "parsing",
- "option",
- "args",
- "argument"
- ],
- "author": "Ben Coe <ben@npmjs.com>",
- "license": "ISC",
- "devDependencies": {
- "chai": "^3.5.0",
- "coveralls": "^2.11.12",
- "mocha": "^3.0.1",
- "nyc": "^10.0.0",
- "standard": "^10.0.2",
- "standard-version": "^4.0.0"
- },
- "dependencies": {
- "camelcase": "^4.1.0"
- },
- "files": [
- "lib",
- "index.js"
- ]
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/CHANGELOG.md b/node_modules/@iarna/cli/node_modules/yargs/CHANGELOG.md
deleted file mode 100644
index 95f414125..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/CHANGELOG.md
+++ /dev/null
@@ -1,961 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="8.0.2"></a>
-## [8.0.2](https://github.com/yargs/yargs/compare/v8.0.1...v8.0.2) (2017-06-12)
-
-
-
-<a name="8.0.1"></a>
-## [8.0.1](https://github.com/yargs/yargs/compare/v8.0.0...v8.0.1) (2017-05-02)
-
-
-
-<a name="8.0.0"></a>
-# [8.0.0](https://github.com/yargs/yargs/compare/v7.1.0...v8.0.0) (2017-05-01)
-
-
-### Bug Fixes
-
-* commands are now applied in order, from left to right ([#857](https://github.com/yargs/yargs/issues/857)) ([baba863](https://github.com/yargs/yargs/commit/baba863))
-* help now takes precedence over command recommendation ([#866](https://github.com/yargs/yargs/issues/866)) ([17e3567](https://github.com/yargs/yargs/commit/17e3567))
-* positional arguments now work if no handler is provided to inner command ([#864](https://github.com/yargs/yargs/issues/864)) ([e28ded3](https://github.com/yargs/yargs/commit/e28ded3))
-
-
-### Chores
-
-* upgrade yargs-parser ([#867](https://github.com/yargs/yargs/issues/867)) ([8f9c6c6](https://github.com/yargs/yargs/commit/8f9c6c6))
-
-
-### Features
-
-* allow extends to inherit from a module ([#865](https://github.com/yargs/yargs/issues/865)) ([89456d9](https://github.com/yargs/yargs/commit/89456d9))
-* allow strict mode to be disabled ([#840](https://github.com/yargs/yargs/issues/840)) ([6f78c05](https://github.com/yargs/yargs/commit/6f78c05))
-
-
-### BREAKING CHANGES
-
-* extends functionality now always loads the JSON provided, rather than reading from a specific key
-* Node 4+ is now required; this will allow us to start updating our dependencies.
-* the first argument to strict() is now used to enable/disable its functionality, rather than controlling whether or not it is global.
-
-
-
-<a name="7.1.0"></a>
-# [7.1.0](https://github.com/yargs/yargs/compare/v7.0.2...v7.1.0) (2017-04-13)
-
-
-### Bug Fixes
-
-* fix demandOption no longer treats 'false' as truthy ([#829](https://github.com/yargs/yargs/issues/829)) ([c748dd2](https://github.com/yargs/yargs/commit/c748dd2))
-* get terminalWidth in non interactive mode no longer causes a validation exception ([#837](https://github.com/yargs/yargs/issues/837)) ([360e301](https://github.com/yargs/yargs/commit/360e301))
-* we shouldn't output help if we've printed a prior help-like message ([#847](https://github.com/yargs/yargs/issues/847)) ([17e89bd](https://github.com/yargs/yargs/commit/17e89bd))
-
-
-### Features
-
-* add support for numeric commands ([#825](https://github.com/yargs/yargs/issues/825)) ([fde0564](https://github.com/yargs/yargs/commit/fde0564))
-
-
-
-<a name="7.0.2"></a>
-## [7.0.2](https://github.com/yargs/yargs/compare/v7.0.1...v7.0.2) (2017-03-10)
-
-
-### Bug Fixes
-
-* populating placeholder arguments broke validation ([b3eb2fe](https://github.com/yargs/yargs/commit/b3eb2fe))
-
-
-
-<a name="7.0.1"></a>
-## [7.0.1](https://github.com/yargs/yargs/compare/v7.0.0...v7.0.1) (2017-03-03)
-
-
-### Bug Fixes
-
-* --help with default command should print top-level help ([#810](https://github.com/yargs/yargs/issues/810)) ([9c03fa4](https://github.com/yargs/yargs/commit/9c03fa4))
-
-
-
-<a name="7.0.0"></a>
-# [7.0.0](https://github.com/yargs/yargs/compare/v6.6.0...v7.0.0) (2017-02-26)
-
-
-### Bug Fixes
-
-* address min/max validation message regression ([#750](https://github.com/yargs/yargs/issues/750)) ([2e5ce0f](https://github.com/yargs/yargs/commit/2e5ce0f))
-* address positional argument strict() bug introduced in [#766](https://github.com/yargs/yargs/issues/766) ([#784](https://github.com/yargs/yargs/issues/784)) ([a8528e6](https://github.com/yargs/yargs/commit/a8528e6))
-* console.warn() rather than throwing errors when api signatures are incorrect ([#804](https://github.com/yargs/yargs/issues/804)) ([a607061](https://github.com/yargs/yargs/commit/a607061))
-* context should override parsed argv ([#786](https://github.com/yargs/yargs/issues/786)) ([0997288](https://github.com/yargs/yargs/commit/0997288))
-* context variables are now recognized in strict() mode ([#796](https://github.com/yargs/yargs/issues/796)) ([48575cd](https://github.com/yargs/yargs/commit/48575cd))
-* errors were not bubbling appropriately from sub-commands to top-level ([#802](https://github.com/yargs/yargs/issues/802)) ([8a992f5](https://github.com/yargs/yargs/commit/8a992f5))
-* positional arguments of sub-commands threw strict() exception ([#805](https://github.com/yargs/yargs/issues/805)) ([f3f074b](https://github.com/yargs/yargs/commit/f3f074b))
-* pull in yargs-parser with modified env precedence ([#787](https://github.com/yargs/yargs/issues/787)) ([e0fbbe5](https://github.com/yargs/yargs/commit/e0fbbe5))
-* running parse() multiple times on the same yargs instance caused exception if help() enabled ([#790](https://github.com/yargs/yargs/issues/790)) ([07e39b7](https://github.com/yargs/yargs/commit/07e39b7))
-* use path.resolve() to support node 0.10 ([#797](https://github.com/yargs/yargs/issues/797)) ([49a93fc](https://github.com/yargs/yargs/commit/49a93fc))
-
-
-### Features
-
-* add conflicts and implies shorthands. ([#753](https://github.com/yargs/yargs/issues/753)) ([bd1472b](https://github.com/yargs/yargs/commit/bd1472b))
-* add traditional Chinese translation ([#780](https://github.com/yargs/yargs/issues/780)) ([6ab6a95](https://github.com/yargs/yargs/commit/6ab6a95))
-* allow provided config object to extend other configs ([#779](https://github.com/yargs/yargs/issues/779)) ([3280dd0](https://github.com/yargs/yargs/commit/3280dd0))
-* function argument validation ([#773](https://github.com/yargs/yargs/issues/773)) ([22ed9bb](https://github.com/yargs/yargs/commit/22ed9bb))
-* if only one column is provided for examples, allow it to take up the entire line ([#749](https://github.com/yargs/yargs/issues/749)) ([7931652](https://github.com/yargs/yargs/commit/7931652))
-* introduce custom yargs error object ([#765](https://github.com/yargs/yargs/issues/765)) ([8308efa](https://github.com/yargs/yargs/commit/8308efa))
-* introduces support for default commands, using the '*' identifier ([#785](https://github.com/yargs/yargs/issues/785)) ([d78a0f5](https://github.com/yargs/yargs/commit/d78a0f5))
-* rethink how options are inherited by commands ([#766](https://github.com/yargs/yargs/issues/766)) ([ab1fa4b](https://github.com/yargs/yargs/commit/ab1fa4b))
-
-
-### BREAKING CHANGES
-
-* `extends` key in config file is now used for extending other config files
-* environment variables now take precedence over config files.
-* context now takes precedence over argv and defaults
-* the arguments passed to functions are now validated, there's a good chance this will throw exceptions for a few folks who are using the API in an unexpected way.
-* by default options, and many of yargs' parsing helpers will now default to being applied globally; such that they are no-longer reset before being passed into commands.
-* yargs will no longer aggressively suppress errors, allowing errors that are not generated internally to bubble.
-
-
-
-<a name="6.6.0"></a>
-# [6.6.0](https://github.com/yargs/yargs/compare/v6.5.0...v6.6.0) (2016-12-29)
-
-
-### Bug Fixes
-
-* [object Object] was accidentally being populated on options object ([#736](https://github.com/yargs/yargs/issues/736)) ([f755e27](https://github.com/yargs/yargs/commit/f755e27))
-* do not use cwd when resolving package.json for yargs parsing config ([#726](https://github.com/yargs/yargs/issues/726)) ([9bdaab7](https://github.com/yargs/yargs/commit/9bdaab7))
-
-
-### Features
-
-* implement conflicts() for defining mutually exclusive arguments; thanks [@madcampos](https://github.com/madcampos)! ([#741](https://github.com/yargs/yargs/issues/741)) ([5883779](https://github.com/yargs/yargs/commit/5883779))
-* split demand() into demandCommand()/demandOption() ([#740](https://github.com/yargs/yargs/issues/740)) ([66573c8](https://github.com/yargs/yargs/commit/66573c8))
-* support for positional argument aliases ([#727](https://github.com/yargs/yargs/issues/727)) ([27e1a57](https://github.com/yargs/yargs/commit/27e1a57))
-
-
-
-<a name="6.5.0"></a>
-# [6.5.0](https://github.com/yargs/yargs/compare/v6.4.0...v6.5.0) (2016-12-01)
-
-
-### Bug Fixes
-
-* still freeze/unfreeze if parse() is called in isolation ([#717](https://github.com/yargs/yargs/issues/717)) ([30a9492](https://github.com/yargs/yargs/commit/30a9492))
-
-
-### Features
-
-* pull in yargs-parser introducing additional settings ([#688](https://github.com/yargs/yargs/issues/688)), and fixing [#716](https://github.com/yargs/yargs/issues/716) ([#722](https://github.com/yargs/yargs/issues/722)) ([702995a](https://github.com/yargs/yargs/commit/702995a))
-
-
-
-<a name="6.4.0"></a>
-# [6.4.0](https://github.com/yargs/yargs/compare/v6.3.0...v6.4.0) (2016-11-13)
-
-
-### Bug Fixes
-
-* **locales:** correct some Russian translations ([#691](https://github.com/yargs/yargs/issues/691)) ([a980671](https://github.com/yargs/yargs/commit/a980671))
-
-
-### Features
-
-* **locales:** Added Belarusian translation ([#690](https://github.com/yargs/yargs/issues/690)) ([68dac1f](https://github.com/yargs/yargs/commit/68dac1f))
-* **locales:** Create nl.json ([#687](https://github.com/yargs/yargs/issues/687)) ([46ce1bb](https://github.com/yargs/yargs/commit/46ce1bb))
-* update to yargs-parser that addresses [#598](https://github.com/yargs/yargs/issues/598), [#617](https://github.com/yargs/yargs/issues/617) ([#700](https://github.com/yargs/yargs/issues/700)) ([54cb31d](https://github.com/yargs/yargs/commit/54cb31d))
-* yargs is now passed as the third-argument to fail handler ([#613](https://github.com/yargs/yargs/issues/613)) ([21b74f9](https://github.com/yargs/yargs/commit/21b74f9))
-
-
-### Performance Improvements
-
-* normalizing package data is an expensive operation ([#705](https://github.com/yargs/yargs/issues/705)) ([49cf533](https://github.com/yargs/yargs/commit/49cf533))
-
-
-
-<a name="6.3.0"></a>
-# [6.3.0](https://github.com/yargs/yargs/compare/v6.2.0...v6.3.0) (2016-10-19)
-
-
-### Bug Fixes
-
-* **command:** subcommands via commandDir() now supported for parse(msg, cb) ([#678](https://github.com/yargs/yargs/issues/678)) ([6b85cc6](https://github.com/yargs/yargs/commit/6b85cc6))
-
-
-### Features
-
-* **locales:** Add Thai locale file ([#679](https://github.com/yargs/yargs/issues/679)) ([c05e36b](https://github.com/yargs/yargs/commit/c05e36b))
-
-
-
-<a name="6.2.0"></a>
-# [6.2.0](https://github.com/yargs/yargs/compare/v6.1.1...v6.2.0) (2016-10-16)
-
-
-### Bug Fixes
-
-* stop applying parser to context object ([#675](https://github.com/yargs/yargs/issues/675)) ([3fe9b8f](https://github.com/yargs/yargs/commit/3fe9b8f))
-
-
-### Features
-
-* add new pt_BR translations ([#674](https://github.com/yargs/yargs/issues/674)) ([5615a82](https://github.com/yargs/yargs/commit/5615a82))
-* Italian translations for 'did you mean' and 'aliases' ([#673](https://github.com/yargs/yargs/issues/673)) ([81984e6](https://github.com/yargs/yargs/commit/81984e6))
-
-
-
-<a name="6.1.1"></a>
-## [6.1.1](https://github.com/yargs/yargs/compare/v6.1.0...v6.1.1) (2016-10-15)
-
-
-### Bug Fixes
-
-* freeze was not resetting configObjects to initial state; addressed performance issue raised by [@nexdrew](https://github.com/nexdrew). ([#670](https://github.com/yargs/yargs/issues/670)) ([ae4bcd4](https://github.com/yargs/yargs/commit/ae4bcd4))
-
-
-
-<a name="6.1.0"></a>
-# [6.1.0](https://github.com/yargs/yargs/compare/v6.0.0...v6.1.0) (2016-10-15)
-
-
-### Bug Fixes
-
-* **locales:** change some translations ([#667](https://github.com/yargs/yargs/issues/667)) ([aa966c5](https://github.com/yargs/yargs/commit/aa966c5))
-* **locales:** conform hi locale to y18n.__n expectations ([#666](https://github.com/yargs/yargs/issues/666)) ([22adb18](https://github.com/yargs/yargs/commit/22adb18))
-
-
-### Features
-
-* initial support for command aliases ([#647](https://github.com/yargs/yargs/issues/647)) ([127a040](https://github.com/yargs/yargs/commit/127a040))
-* **command:** add camelcase commands to argv ([#658](https://github.com/yargs/yargs/issues/658)) ([b1cabae](https://github.com/yargs/yargs/commit/b1cabae))
-* **locales:** add Hindi translations ([9290912](https://github.com/yargs/yargs/commit/9290912))
-* **locales:** add Hungarian translations ([be92327](https://github.com/yargs/yargs/commit/be92327))
-* **locales:** Japanese translations for 'did you mean' and 'aliases' ([#651](https://github.com/yargs/yargs/issues/651)) ([5eb78fc](https://github.com/yargs/yargs/commit/5eb78fc))
-* **locales:** Polish translations for 'did you mean' and 'aliases' ([#650](https://github.com/yargs/yargs/issues/650)) ([c951c0e](https://github.com/yargs/yargs/commit/c951c0e))
-* reworking yargs API to make it easier to run in headless environments, e.g., Slack ([#646](https://github.com/yargs/yargs/issues/646)) ([f284c29](https://github.com/yargs/yargs/commit/f284c29))
-* Turkish translations for 'did you mean' and 'aliases' ([#660](https://github.com/yargs/yargs/issues/660)) ([072fd45](https://github.com/yargs/yargs/commit/072fd45))
-
-
-
-<a name="6.0.0"></a>
-# [6.0.0](https://github.com/yargs/yargs/compare/v5.0.0...v6.0.0) (2016-09-30)
-
-
-### Bug Fixes
-
-* changed parsing of the command string to ignore extra spaces ([#600](https://github.com/yargs/yargs/issues/600)) ([e8e5a72](https://github.com/yargs/yargs/commit/e8e5a72))
-* drop lodash.assign ([#641](https://github.com/yargs/yargs/issues/641)) ([ad3146f](https://github.com/yargs/yargs/commit/ad3146f))
-* for args that have skipValidation set to `true`, check if the parsed arg is `true` ([#619](https://github.com/yargs/yargs/issues/619)) ([658a34c](https://github.com/yargs/yargs/commit/658a34c))
-* upgrade standard, and fix appveyor config so that it works with newest standard ([#607](https://github.com/yargs/yargs/issues/607)) ([c301f42](https://github.com/yargs/yargs/commit/c301f42))
-
-
-### Chores
-
-* upgrade yargs-parser ([#633](https://github.com/yargs/yargs/issues/633)) ([cc1224e](https://github.com/yargs/yargs/commit/cc1224e))
-
-
-### Features
-
-* make opts object optional for .option() ([#624](https://github.com/yargs/yargs/issues/624)) ([4f29de6](https://github.com/yargs/yargs/commit/4f29de6))
-
-
-### Performance Improvements
-
-* defer windowWidth() to improve perf for non-help usage ([#610](https://github.com/yargs/yargs/issues/610)) ([cbc3636](https://github.com/yargs/yargs/commit/cbc3636))
-
-
-### BREAKING CHANGES
-
-* coerce is now applied as a final step after other parsing is complete
-
-
-
-<a name="5.0.0"></a>
-# [5.0.0](https://github.com/yargs/yargs/compare/v4.8.1...v5.0.0) (2016-08-14)
-
-
-### Bug Fixes
-
-* **default:** Remove undocumented alias of default() ([#469](https://github.com/yargs/yargs/issues/469)) ([b8591b2](https://github.com/yargs/yargs/commit/b8591b2))
-* remove deprecated zh.json ([#578](https://github.com/yargs/yargs/issues/578)) ([317c62c](https://github.com/yargs/yargs/commit/317c62c))
-
-
-### Features
-
-* .help() API can now enable implicit help command ([#574](https://github.com/yargs/yargs/issues/574)) ([7645019](https://github.com/yargs/yargs/commit/7645019))
-* **command:** builder function no longer needs to return the yargs instance ([#549](https://github.com/yargs/yargs/issues/549)) ([eaa2873](https://github.com/yargs/yargs/commit/eaa2873))
-* add coerce api ([#586](https://github.com/yargs/yargs/issues/586)) ([1d53ccb](https://github.com/yargs/yargs/commit/1d53ccb))
-* adds recommendCommands() for command suggestions ([#580](https://github.com/yargs/yargs/issues/580)) ([59474dc](https://github.com/yargs/yargs/commit/59474dc))
-* apply .env() globally ([#553](https://github.com/yargs/yargs/issues/553)) ([be65728](https://github.com/yargs/yargs/commit/be65728))
-* apply default builder to command() and apply fail() handlers globally ([#583](https://github.com/yargs/yargs/issues/583)) ([0aaa68b](https://github.com/yargs/yargs/commit/0aaa68b))
-* update yargs-parser to version 3.1.0 ([#581](https://github.com/yargs/yargs/issues/581)) ([882a127](https://github.com/yargs/yargs/commit/882a127))
-
-
-### Performance Improvements
-
-* defer requiring most external libs until needed ([#584](https://github.com/yargs/yargs/issues/584)) ([f9b0ed4](https://github.com/yargs/yargs/commit/f9b0ed4))
-
-
-### BREAKING CHANGES
-
-* fail is now applied globally.
-* we now default to an empty builder function when command is executed with no builder.
-* yargs-parser now better handles negative integer values, at the cost of handling numeric option names, e.g., -1 hello
-* default: removed undocumented `defaults` alias for `default`.
-* introduces a default `help` command which outputs help, as an alternative to a help flag.
-* interpret demand() numbers as relative to executing command ([#582](https://github.com/yargs/yargs/issues/582)) ([927810c](https://github.com/yargs/yargs/commit/927810c))
-
-
-
-<a name="4.8.1"></a>
-## [4.8.1](https://github.com/yargs/yargs/compare/v4.8.0...v4.8.1) (2016-07-16)
-
-
-### Bug Fixes
-
-* **commandDir:** make dir relative to caller instead of require.main.filename ([#548](https://github.com/yargs/yargs/issues/548)) ([3c2e479](https://github.com/yargs/yargs/commit/3c2e479))
-* add config lookup for .implies() ([#556](https://github.com/yargs/yargs/issues/556)) ([8d7585c](https://github.com/yargs/yargs/commit/8d7585c))
-* cache pkg lookups by path to avoid returning the wrong one ([#552](https://github.com/yargs/yargs/issues/552)) ([fea7e0b](https://github.com/yargs/yargs/commit/fea7e0b))
-* positional arguments were not being handled appropriately by parse() ([#559](https://github.com/yargs/yargs/issues/559)) ([063a866](https://github.com/yargs/yargs/commit/063a866))
-* pull in [@nexdrew](https://github.com/nexdrew)'s fixes to yargs-parser ([#560](https://github.com/yargs/yargs/issues/560)) ([c77c080](https://github.com/yargs/yargs/commit/c77c080)), closes [#560](https://github.com/yargs/yargs/issues/560)
-
-
-
-<a name="4.8.0"></a>
-# [4.8.0](https://github.com/yargs/yargs/compare/v4.7.1...v4.8.0) (2016-07-09)
-
-
-### Bug Fixes
-
-* drop unused camelcase dependency fixes [#516](https://github.com/yargs/yargs/issues/516) ([#525](https://github.com/yargs/yargs/issues/525)) ([365fb9a](https://github.com/yargs/yargs/commit/365fb9a)), closes [#516](https://github.com/yargs/yargs/issues/516) [#525](https://github.com/yargs/yargs/issues/525)
-* fake a tty in tests, so that we can use the new set-blocking ([#512](https://github.com/yargs/yargs/issues/512)) ([a54c742](https://github.com/yargs/yargs/commit/a54c742))
-* ignore invalid package.json during read-pkg-up ([#546](https://github.com/yargs/yargs/issues/546)) ([e058c87](https://github.com/yargs/yargs/commit/e058c87))
-* keep both zh and zh_CN until yargs[@5](https://github.com/5).x ([0f8faa7](https://github.com/yargs/yargs/commit/0f8faa7))
-* lazy-load package.json and cache. get rid of pkg-conf dependency. ([#544](https://github.com/yargs/yargs/issues/544)) ([2609b2e](https://github.com/yargs/yargs/commit/2609b2e))
-* we now respect the order of _ when applying commands ([#537](https://github.com/yargs/yargs/issues/537)) ([ed86b78](https://github.com/yargs/yargs/commit/ed86b78))
-
-
-### Features
-
-* add .commandDir(dir) to API to apply all command modules from a relative directory ([#494](https://github.com/yargs/yargs/issues/494)) ([b299dff](https://github.com/yargs/yargs/commit/b299dff))
-* **command:** derive missing command string from module filename ([#527](https://github.com/yargs/yargs/issues/527)) ([20d4b8a](https://github.com/yargs/yargs/commit/20d4b8a))
-* builder is now optional for a command module ([#545](https://github.com/yargs/yargs/issues/545)) ([8d6ad6e](https://github.com/yargs/yargs/commit/8d6ad6e))
-
-
-
-<a name="4.7.1"></a>
-## [4.7.1](https://github.com/yargs/yargs/compare/v4.7.0...v4.7.1) (2016-05-15)
-
-
-### Bug Fixes
-
-* switch to using `const` rather than `var` ([#499](https://github.com/yargs/yargs/pull/499))
-* make stdout flush on newer versions of Node.js ([#501](https://github.com/yargs/yargs/issues/501)) ([9f8c6f4](https://github.com/yargs/yargs/commit/9f8c6f4))
-
-
-
-<a name="4.7.0"></a>
-# [4.7.0](https://github.com/yargs/yargs/compare/v4.6.0...v4.7.0) (2016-05-02)
-
-
-### Bug Fixes
-
-* **pkgConf:** fix aliases issues in .pkgConf() ([#478](https://github.com/yargs/yargs/issues/478))([b900502](https://github.com/yargs/yargs/commit/b900502))
-
-
-### Features
-
-* **completion:** allow to get completions for any string, not just process.argv ([#470](https://github.com/yargs/yargs/issues/470))([74fcfbc](https://github.com/yargs/yargs/commit/74fcfbc))
-* **configuration:** Allow to directly pass a configuration object to .config() ([#480](https://github.com/yargs/yargs/issues/480))([e0a7e05](https://github.com/yargs/yargs/commit/e0a7e05))
-* **validation:** Add .skipValidation() method ([#471](https://github.com/yargs/yargs/issues/471))([d72badb](https://github.com/yargs/yargs/commit/d72badb))
-
-
-
-<a name="4.6.0"></a>
-# [4.6.0](https://github.com/yargs/yargs/compare/v4.5.0...v4.6.0) (2016-04-11)
-
-
-### Bug Fixes
-
-* **my brand!:** I agree with [@osher](https://github.com/osher) lightweight isn't a huge selling point of ours any longer, see [#468](https://github.com/yargs/yargs/issues/468) ([c46d7e1](https://github.com/yargs/yargs/commit/c46d7e1))
-
-### Features
-
-* switch to standard-version for release management ([f70f801](https://github.com/yargs/yargs/commit/f70f801))
-* upgrade to version of yargs-parser that introduces some slick new features, great work [@elas7](https://github.com/elas7). update cliui, replace win-spawn, replace badge. ([#475](https://github.com/yargs/yargs/issues/475)) ([f915dd4](https://github.com/yargs/yargs/commit/f915dd4))
-
-
-
-<a name="4.5.0"></a>
-# [4.5.0](https://github.com/yargs/yargs/compare/v4.4.0...v4.5.0) (2016-04-05)
-
-
-### Bug Fixes
-
-* **windows:** handle $0 better on Windows platforms ([eb6e03f](https://github.com/yargs/yargs/commit/eb6e03f))
-
-### Features
-
-* **commands:** implemented variadic positional arguments ([51d926e](https://github.com/yargs/yargs/commit/51d926e))
-* **completion:** completion now better handles aliases, and avoids duplicating keys. ([86416c8](https://github.com/yargs/yargs/commit/86416c8))
-* **config:** If invoking .config() without parameters, set a default option ([0413dd1](https://github.com/yargs/yargs/commit/0413dd1))
-* **conventional-changelog:** switching to using conventional-changelog for generating the changelog ([a2b5a2a](https://github.com/yargs/yargs/commit/a2b5a2a))
-
-
-
-### v4.4.0 (2016/04/03 21:10 +07:00)
-
-- [#454](https://github.com/yargs/yargs/pull/454) fix demand() when second argument is an array (@elas7)
-- [#452](https://github.com/yargs/yargs/pull/452) fix code example for `.help()` docs (@maxrimue)
-- [#450](https://github.com/yargs/yargs/pull/450) fix for bash completion trailing space edge-case (@elas7)
-- [#448](https://github.com/yargs/yargs/pull/448) allow a method to be passed to `showHelp`, rather than a log-level (@osher)
-- [#446](https://github.com/yargs/yargs/pull/446) update yargs-parser, y18n, nyc, cliui, pkg-conf (@bcoe)
-- [#436](https://github.com/yargs/yargs/pull/436) the rebase method is only used by tests, do not export it in two places (@elas7)
-- [#428](https://github.com/yargs/yargs/pull/428) initial support for subcommands (@nexdrew)
-
-### v4.3.2 (2016/3/20 15:07 +07:00)
-
-- [#445](https://github.com/yargs/yargs/pull/445) strict mode was failing if no commands were registered (@nexdrew)
-- [#443](https://github.com/yargs/yargs/pull/443) adds Italian translation \o/ (@madrisan)
-- [#441](https://github.com/yargs/yargs/pull/441) remove duplicate keys from array options configuration (@elas7)
-- [#437](https://github.com/yargs/yargs/pull/437) standardize tests for .command() (@lrlna)
-
-### v4.3.0 (2016/3/12 14:19 +07:00)
-
-- [#432](https://github.com/yargs/yargs/pull/432) non-singleton version of yargs (@bcoe)
-- [#422, #425, #420] translations for number (@zkat, @rilut, @maxrimue, @watilde)
-- [#414](https://github.com/yargs/yargs/pull/414) all command options can be defined in module now (@nexdrew)
-
-### v4.2.0 (2016/2/22 11:02 +07:00)
-
-- [#395](https://github.com/yargs/yargs/pull/395) do not reset groups if they contain
- global keys (@novemberborn)
-- [#393](https://github.com/yargs/yargs/pull/393) use sane default for usage strings (@nexdrew)
-- [#392](https://github.com/yargs/yargs/pull/392) resetting wrap() was causing layout issues
- with commands (@nexdrew)
-- [#391](https://github.com/yargs/yargs/pull/391) commands were being added multiple times (@nexdrew)
-
-### v4.0.0 (2016/2/14 1:27 +07:00)
-
-- [#384](https://github.com/bcoe/yargs/pull/384) add new number type to yargs (@lrlna, @maxrimue)
-- [#382](https://github.com/bcoe/yargs/pull/382) pass error as extra parameter to fail (@gajus)
-- [#378](https://github.com/bcoe/yargs/pull/378) introduces the pkgConf feature, which tells
- yargs to load default argument values from a key on a project's package.json (@bcoe)
-- [#376](https://github.com/bcoe/yargs/pull/376) **breaking change**, make help() method signature
- more consistent with other commands (@maxrimue)
-- [#368](https://github.com/bcoe/yargs/pull/368) **breaking change**, overhaul to command handling API:
- introducing named positional arguments, commands as modules, introduces the concept of global options (options that don't reset). (@nexdrew, @bcoe).
-- [#364](https://github.com/bcoe/yargs/pull/364) add the slick new yargs website to the package.json (@iarna).
-- [#357](https://github.com/bcoe/yargs/pull/357) .strict() now requires that a valid command is provided (@lrlna)
-- [#356](https://github.com/bcoe/yargs/pull/356) pull the parsing bits of yargs into the separate module yargs-parser. Various parsing options can now be turned on and off using configuration (@bcoe).
-- [#330](https://github.com/bcoe/yargs/pull/330) **breaking change**, fix inconsistencies with `.version()` API. (@maxrimue).
-
-### v3.32.0 (2016/1/14 10:13 +07:00)
-
-- [#344](https://github.com/bcoe/yargs/pull/344) yargs now has a code of conduct and contributor guidelines (@bcoe)
-- [#341](https://github.com/bcoe/yargs/issues/341) Fix edge-case with camel-case arguments (@davibe)
-- [#331](https://github.com/bcoe/yargs/pull/331) Handle parsing a raw argument string (@kellyselden)
-- [#325](https://github.com/bcoe/yargs/pull/325) Tweaks to make tests pass again on Windows (@isaacs)
-- [#321](https://github.com/bcoe/yargs/pull/321) Custom config parsing function (@bcoe)
-
-### v3.31.0 (2015/12/03 10:15 +07:00)
-
-- [#239](https://github.com/bcoe/yargs/pull/239) Pass argv to commands (@bcoe)
-- [#308](https://github.com/bcoe/yargs/pull/308) Yargs now handles environment variables (@nexdrew)
-- [#302](https://github.com/bcoe/yargs/pull/302) Add Indonesian translation (@rilut)
-- [#300](https://github.com/bcoe/yargs/pull/300) Add Turkish translation (@feyzo)
-- [#298](https://github.com/bcoe/yargs/pull/298) Add Norwegian Bokmål translation (@sindresorhus)
-- [#297](https://github.com/bcoe/yargs/pull/297) Fix for layout of cjk characters (@disjukr)
-- [#296](https://github.com/bcoe/yargs/pull/296) Add Korean translation (@disjukr)
-
-### v3.30.0 (2015/11/13 16:29 +07:00)
-
-- [#293](https://github.com/bcoe/yargs/pull/293) Polish language support (@kamilogorek)
-- [#291](https://github.com/bcoe/yargs/pull/291) fix edge-cases with `.alias()` (@bcoe)
-- [#289](https://github.com/bcoe/yargs/pull/289) group options in custom groups (@bcoe)
-
-### v3.29.0 (2015/10/16 21:51 +07:00)
-
-- [#282](https://github.com/bcoe/yargs/pull/282) completions now accept promises (@LinusU)
-- [#281](https://github.com/bcoe/yargs/pull/281) fix parsing issues with dot notation (@bcoe)
-
-### v3.28.0 (2015/10/16 1:55 +07:00)
-
-- [#277](https://github.com/bcoe/yargs/pull/277) adds support for ansi escape codes (@bcoe)
-
-### v3.27.0 (2015/10/08 1:55 +00:00)
-
-- [#271](https://github.com/bcoe/yargs/pull/273) skips validation for help or version flags with exitProcess(false) (@tepez)
-- [#273](https://github.com/bcoe/yargs/pull/273) implements single output for errors with exitProcess(false) (@nexdrew)
-- [#269](https://github.com/bcoe/yargs/pull/269) verifies single output for errors with exitProcess(false) (@tepez)
-- [#268](https://github.com/bcoe/yargs/pull/268) adds Chinese translation (@qiu8310)
-- [#266](https://github.com/bcoe/yargs/pull/266) adds case for -- after -- in parser test (@geophree)
-
-### v3.26.0 (2015/09/25 2:14 +00:00)
-
-- [#263](https://github.com/bcoe/yargs/pull/263) document count() and option() object keys (@nexdrew)
-- [#259](https://github.com/bcoe/yargs/pull/259) remove util in readme (@38elements)
-- [#258](https://github.com/bcoe/yargs/pull/258) node v4 builds, update deps (@nexdrew)
-- [#257](https://github.com/bcoe/yargs/pull/257) fix spelling errors (@dkoleary88)
-
-### v3.25.0 (2015/09/13 7:38 -07:00)
-
-- [#254](https://github.com/bcoe/yargs/pull/254) adds Japanese translation (@oti)
-- [#253](https://github.com/bcoe/yargs/pull/253) fixes for tests on Windows (@bcoe)
-
-### v3.24.0 (2015/09/04 12:02 +00:00)
-
-- [#248](https://github.com/bcoe/yargs/pull/248) reinstate os-locale, no spawning (@nexdrew)
-- [#249](https://github.com/bcoe/yargs/pull/249) use travis container-based infrastructure (@nexdrew)
-- [#247](https://github.com/bcoe/yargs/pull/247) upgrade standard (@nexdrew)
-
-### v3.23.0 (2015/08/30 23:00 +00:00)
-
-- [#246](https://github.com/bcoe/yargs/pull/246) detect locale based only on environment variables (@bcoe)
-- [#244](https://github.com/bcoe/yargs/pull/244) adds Windows CI testing (@bcoe)
-- [#245](https://github.com/bcoe/yargs/pull/245) adds OSX CI testing (@bcoe, @nexdrew)
-
-### v3.22.0 (2015/08/28 22:26 +00:00)
-- [#242](https://github.com/bcoe/yargs/pull/242) adds detectLocale config option (@bcoe)
-
-### v3.21.1 (2015/08/28 20:58 +00:00)
-- [#240](https://github.com/bcoe/yargs/pull/240) hot-fix for Atom on Windows (@bcoe)
-
-### v3.21.0 (2015/08/21 21:20 +00:00)
-- [#238](https://github.com/bcoe/yargs/pull/238) upgrade camelcase, window-size, chai, mocha (@nexdrew)
-- [#237](https://github.com/bcoe/yargs/pull/237) adds defaultDescription to option() (@nexdrew)
-
-### v3.20.0 (2015/08/20 01:29 +00:00)
-- [#231](https://github.com/bcoe/yargs/pull/231) Merge pull request #231 from bcoe/detect-locale (@sindresorhus)
-- [#235](https://github.com/bcoe/yargs/pull/235) adds german translation to yargs (@maxrimue)
-
-### v3.19.0 (2015/08/14 05:12 +00:00)
-- [#224](https://github.com/bcoe/yargs/pull/224) added Portuguese translation (@codemonkey3045)
-
-### v3.18.1 (2015/08/12 05:53 +00:00)
-
-- [#228](https://github.com/bcoe/yargs/pull/228) notes about embedding yargs in Electron (@etiktin)
-- [#223](https://github.com/bcoe/yargs/pull/223) make booleans work in config files (@sgentle)
-
-### v3.18.0 (2015/08/06 20:05 +00:00)
-- [#222](https://github.com/bcoe/yargs/pull/222) updates fr locale (@nexdrew)
-- [#221](https://github.com/bcoe/yargs/pull/221) adds missing locale strings (@nexdrew)
-- [#220](https://github.com/bcoe/yargs/pull/220) adds es locale (@zkat)
-
-### v3.17.1 (2015/08/02 19:35 +00:00)
-- [#218](https://github.com/bcoe/yargs/pull/218) upgrades nyc (@bcoe)
-
-### v3.17.0 (2015/08/02 18:39 +00:00)
-- [#217](https://github.com/bcoe/yargs/pull/217) sort methods in README.md (@nexdrew)
-- [#215](https://github.com/bcoe/yargs/pull/215) adds fr locale (@LoicMahieu)
-
-### v3.16.0 (2015/07/30 04:35 +00:00)
-- [#210](https://github.com/bcoe/yargs/pull/210) adds i18n support to yargs (@bcoe)
-- [#209](https://github.com/bcoe/yargs/pull/209) adds choices type to yargs (@nexdrew)
-- [#207](https://github.com/bcoe/yargs/pull/207) pretty new shields from shields.io (@SimenB)
-- [#208](https://github.com/bcoe/yargs/pull/208) improvements to README.md (@nexdrew)
-- [#205](https://github.com/bcoe/yargs/pull/205) faster build times on Travis (@ChristianMurphy)
-
-### v3.15.0 (2015/07/06 06:01 +00:00)
-- [#197](https://github.com/bcoe/yargs/pull/197) tweaks to how errors bubble up from parser.js (@bcoe)
-- [#193](https://github.com/bcoe/yargs/pull/193) upgraded nyc, reporting now happens by default (@bcoe)
-
-### v3.14.0 (2015/06/28 02:12 +00:00)
-
-- [#192](https://github.com/bcoe/yargs/pull/192) standard style nits (@bcoe)
-- [#190](https://github.com/bcoe/yargs/pull/190) allow for hidden commands, e.g.,
- .completion('completion', false) (@tschaub)
-
-### v3.13.0 (2015/06/24 04:12 +00:00)
-
-- [#187](https://github.com/bcoe/yargs/pull/187) completion now behaves differently
- if it is being run in the context of a command (@tschaub)
-- [#186](https://github.com/bcoe/yargs/pull/186) if no matches are found for a completion
- default to filename completion (@tschaub)
-
-### v3.12.0 (2015/06/19 03:23 +00:00)
-- [#183](https://github.com/bcoe/yargs/pull/183) don't complete commands if they've already been completed (@tschaub)
-- [#181](https://github.com/bcoe/yargs/pull/181) various fixes for completion. (@bcoe, @tschaub)
-- [#182](https://github.com/bcoe/yargs/pull/182) you can now set a maximum # of of required arguments (@bcoe)
-
-### v3.11.0 (2015/06/15 05:15 +00:00)
-
-- [#173](https://github.com/bcoe/yargs/pull/173) update standard, window-size, chai (@bcoe)
-- [#171](https://github.com/bcoe/yargs/pull/171) a description can now be set
- when providing a config option. (@5c077yP)
-
-### v3.10.0 (2015/05/29 04:25 +00:00)
-
-- [#165](https://github.com/bcoe/yargs/pull/165) expose yargs.terminalWidth() thanks @ensonic (@bcoe)
-- [#164](https://github.com/bcoe/yargs/pull/164) better array handling thanks @getify (@bcoe)
-
-### v3.9.1 (2015/05/20 05:14 +00:00)
-- [b6662b6](https://github.com/bcoe/yargs/commit/b6662b6774cfeab4876f41ec5e2f67b7698f4e2f) clarify .config() docs (@linclark)
-- [0291360](https://github.com/bcoe/yargs/commit/02913606285ce31ce81d7f12c48d8a3029776ec7) fixed tests, switched to nyc for coverage, fixed security issue, added Lin as collaborator (@bcoe)
-
-### v3.9.0 (2015/05/10 18:32 +00:00)
-- [#157](https://github.com/bcoe/yargs/pull/157) Merge pull request #157 from bcoe/command-yargs. allows handling of command specific arguments. Thanks for the suggestion @ohjames (@bcoe)
-- [#158](https://github.com/bcoe/yargs/pull/158) Merge pull request #158 from kemitchell/spdx-license. Update license format (@kemitchell)
-
-### v3.8.0 (2015/04/24 23:10 +00:00)
-- [#154](https://github.com/bcoe/yargs/pull/154) showHelp's method signature was misleading fixes #153 (@bcoe)
-- [#151](https://github.com/bcoe/yargs/pull/151) refactor yargs' table layout logic to use new helper library (@bcoe)
-- [#150](https://github.com/bcoe/yargs/pull/150) Fix README example in argument requirements (@annonymouse)
-
-### v3.7.2 (2015/04/13 11:52 -07:00)
-
-* [679fbbf](https://github.com/bcoe/yargs/commit/679fbbf55904030ccee8a2635e8e5f46551ab2f0) updated yargs to use the [standard](https://github.com/feross/standard) style guide (agokjr)
-* [22382ee](https://github.com/bcoe/yargs/commit/22382ee9f5b495bc2586c1758cd1091cec3647f9 various bug fixes for $0 (@nylen)
-
-### v3.7.1 (2015/04/10 11:06 -07:00)
-
-* [89e1992](https://github.com/bcoe/yargs/commit/89e1992a004ba73609b5f9ee6890c4060857aba4) detect iojs bin along with node bin. (@bcoe)
-* [755509e](https://github.com/bcoe/yargs/commit/755509ea90041e5f7833bba3b8c5deffe56f0aab) improvements to example documentation in README.md (@rstacruz)
-* [0d2dfc8](https://github.com/bcoe/yargs/commit/0d2dfc822a43418242908ad97ddd5291a1b35dc6) showHelp() no longer requires that .argv has been called (@bcoe)
-
-### v3.7.0 (2015/04/04 02:29 -07:00)
-
-* [56cbe2d](https://github.com/bcoe/yargs/commit/56cbe2ddd33dc176dcbf97ba40559864a9f114e4) make .requiresArg() work with type hints. (@bcoe).
-* [2f5d562](https://github.com/bcoe/yargs/commit/2f5d5624f736741deeedf6a664d57bc4d857bdd0) serialize arrays and objects in usage strings. (@bcoe).
-* [5126304](https://github.com/bcoe/yargs/commit/5126304dd18351fc28f10530616fdd9361e0af98) be more lenient about alias/primary key ordering in chaining API. (@bcoe)
-
-### v3.6.0 (2015/03/21 01:00 +00:00)
-- [4e24e22](https://github.com/bcoe/yargs/commit/4e24e22e6a195e55ab943ede704a0231ac33b99c) support for .js configuration files. (@pirxpilot)
-
-### v3.5.4 (2015/03/12 05:56 +00:00)
-- [c16cc08](https://github.com/bcoe/yargs/commit/c16cc085501155cf7fd853ccdf8584b05ab92b78) message for non-option arguments is now optional, thanks to (@raine)
-
-### v3.5.3 (2015/03/09 06:14 +00:00)
-- [870b428](https://github.com/bcoe/yargs/commit/870b428cf515d560926ca392555b7ad57dba9e3d) completion script was missing in package.json (@bcoe)
-
-### v3.5.2 (2015/03/09 06:11 +00:00)
-- [58a4b24](https://github.com/bcoe/yargs/commit/58a4b2473ebbb326713d522be53e32d3aabb08d2) parse was being called multiple times, resulting in strange behavior (@bcoe)
-
-### v3.5.1 (2015/03/09 04:55 +00:00)
-- [4e588e0](https://github.com/bcoe/yargs/commit/4e588e055afbeb9336533095f051496e3977f515) accidentally left testing logic in (@bcoe)
-
-### v3.5.0 (2015/03/09 04:49 +00:00)
-- [718bacd](https://github.com/bcoe/yargs/commit/718bacd81b9b44f786af76b2afe491fe06274f19) added support for bash completions see #4 (@bcoe)
-- [a192882](https://github.com/bcoe/yargs/commit/a19288270fc431396c42af01125eeb4443664528) downgrade to mocha 2.1.0 until https://github.com/mochajs/mocha/issues/1585 can be sorted out (@bcoe)
-
-### v3.4.7 (2015/03/09 04:09 +00:00)
-- [9845e5c](https://github.com/bcoe/yargs/commit/9845e5c1a9c684ba0be3f0bfb40e7b62ab49d9c8) the Argv singleton was not being updated when manually parsing arguments, fixes #114 (@bcoe)
-
-### v3.4.6 (2015/03/09 04:01 +00:00)
-- [45b4c80](https://github.com/bcoe/yargs/commit/45b4c80b890d02770b0a94f326695a8a566e8fe9) set placeholders for all keys fixes #115 (@bcoe)
-
-### v3.4.5 (2015/03/01 20:31 +00:00)
-- [a758e0b](https://github.com/bcoe/yargs/commit/a758e0b2556184f067cf3d9c4ef886d39817ebd2) fix for count consuming too many arguments (@bcoe)
-
-### v3.4.4 (2015/02/28 04:52 +00:00)
-- [0476af7](https://github.com/bcoe/yargs/commit/0476af757966acf980d998b45108221d4888cfcb) added nargs feature, allowing you to specify the number of arguments after an option (@bcoe)
-- [092477d](https://github.com/bcoe/yargs/commit/092477d7ab3efbf0ba11cede57f7d8cfc70b024f) updated README with full example of v3.0 API (@bcoe)
-
-### v3.3.3 (2015/02/28 04:23 +00:00)
-- [0c4b769](https://github.com/bcoe/yargs/commit/0c4b769516cd8d93a7c4e5e675628ae0049aa9a8) remove string dependency, which conflicted with other libraries see #106 (@bcoe)
-
-### v3.3.2 (2015/02/28 04:11 +00:00)
-- [2a98906](https://github.com/bcoe/yargs/commit/2a9890675821c0e7a12f146ce008b0562cb8ec9a) add $0 to epilog (@schnittstabil)
-
-### v3.3.1 (2015/02/24 03:28 +00:00)
-- [ad485ce](https://github.com/bcoe/yargs/commit/ad485ce748ebdfce25b88ef9d6e83d97a2f68987) fix for applying defaults to camel-case args (@bcoe)
-
-### v3.3.0 (2015/02/24 00:49 +00:00)
-- [8bfe36d](https://github.com/bcoe/yargs/commit/8bfe36d7fb0f93a799ea3f4c756a7467c320f8c0) fix and document restart() command, as a tool for building nested CLIs (@bcoe)
-
-### v3.2.1 (2015/02/22 05:45 +00:00)
-- [49a6d18](https://github.com/bcoe/yargs/commit/49a6d1822a4ef9b1ea6f90cc366be60912628885) you can now provide a function that generates a default value (@bcoe)
-
-### v3.2.0 (2015/02/22 05:24 +00:00)
-- [7a55886](https://github.com/bcoe/yargs/commit/7a55886c9343cf71a20744ca5cdd56d2ea7412d5) improvements to yargs two-column text layout (@bcoe)
-- [b6ab513](https://github.com/bcoe/yargs/commit/b6ab5136a4c3fa6aa496f6b6360382e403183989) Tweak NPM version badge (@nylen)
-
-### v3.1.0 (2015/02/19 19:37 +00:00)
-- [9bd2379](https://github.com/bcoe/yargs/commit/9bd237921cf1b61fd9f32c0e6d23f572fc225861) version now accepts a function, making it easy to load version #s from a package.json (@bcoe)
-
-### v3.0.4 (2015/02/14 01:40 +00:00)
-- [0b7c19b](https://github.com/bcoe/yargs/commit/0b7c19beaecb747267ca4cc10e5cb2a8550bc4b7) various fixes for dot-notation handling (@bcoe)
-
-### v3.0.3 (2015/02/14 00:59 +00:00)
-- [c3f35e9](https://github.com/bcoe/yargs/commit/c3f35e99bd5a0d278073fcadd95e2d778616cc17) make sure dot-notation is applied to aliases (@bcoe)
-
-### 3.0.2 (2015/02/13 16:50 +00:00)
-- [74c8967](https://github.com/bcoe/yargs/commit/74c8967c340c204a0a7edf8a702b6f46c2705435) document epilog shorthand of epilogue. (@bcoe)
-- [670110f](https://github.com/bcoe/yargs/commit/670110fc01bedc4831b6fec6afac54517d5a71bc) any non-truthy value now causes check to fail see #76 (@bcoe)
-- [0d8f791](https://github.com/bcoe/yargs/commit/0d8f791a33c11ced4cd431ea8d3d3a337d456b56) finished implementing my wish-list of fetures for yargs 3.0. see #88 (@bcoe)
-- [5768447](https://github.com/bcoe/yargs/commit/5768447447c4c8e8304f178846206ce86540f063) fix coverage. (@bcoe)
-- [82e793f](https://github.com/bcoe/yargs/commit/82e793f3f61c41259eaacb67f0796aea2cf2aaa0) detect console width and perform word-wrapping. (@bcoe)
-- [67476b3](https://github.com/bcoe/yargs/commit/67476b37eea07fee55f23f35b9e0c7d76682b86d) refactor two-column table layout so that we can use it for examples and usage (@bcoe)
-- [4724cdf](https://github.com/bcoe/yargs/commit/4724cdfcc8e37ae1ca3dcce9d762f476e9ef4bb4) major refactor of index.js, in prep for 3.x release. (@bcoe)
-
-### v2.3.0 (2015/02/08 20:41 +00:00)
-- [d824620](https://github.com/bcoe/yargs/commit/d824620493df4e63664af1fe320764dd1a9244e6) allow for undefined boolean defaults (@ashi009)
-
-### v2.2.0 (2015/02/08 20:07 +00:00)
-- [d6edd98](https://github.com/bcoe/yargs/commit/d6edd9848826e7389ed1393858c45d03961365fd) in-prep for further refactoring, and a 3.x release I've shuffled some things around and gotten test-coverage to 100%. (@bcoe)
-
-### v2.1.2 (2015/02/08 06:05 +00:00)
-- [d640745](https://github.com/bcoe/yargs/commit/d640745a7b9f8d476e0223879d056d18d9c265c4) switch to path.relative (@bcoe)
-- [3bfd41f](https://github.com/bcoe/yargs/commit/3bfd41ff262a041f29d828b88936a79c63cad594) remove mocha.opts. (@bcoe)
-- [47a2f35](https://github.com/bcoe/yargs/commit/47a2f357091db70903a402d6765501c1d63f15fe) document using .string('_') for string ids. see #56 (@bcoe)
-- [#57](https://github.com/bcoe/yargs/pull/57) Merge pull request #57 from eush77/option-readme (@eush77)
-
-### v2.1.1 (2015/02/06 08:08 +00:00)
-- [01c6c61](https://github.com/bcoe/yargs/commit/01c6c61d67b4ebf88f41f0b32a345ec67f0ac17d) fix for #71, 'newAliases' of undefined (@bcoe)
-
-### v2.1.0 (2015/02/06 07:59 +00:00)
-- [6a1a3fa](https://github.com/bcoe/yargs/commit/6a1a3fa731958e26ccd56885f183dd8985cc828f) try to guess argument types, and apply sensible defaults see #73 (@bcoe)
-
-### v2.0.1 (2015/02/06 07:54 +00:00)
-- [96a06b2](https://github.com/bcoe/yargs/commit/96a06b2650ff1d085a52b7328d8bba614c20cc12) Fix for strange behavior with --sort option, see #51 (@bcoe)
-
-### v2.0.0 (2015/02/06 07:45 +00:00)
-- [0250517](https://github.com/bcoe/yargs/commit/0250517c9643e53f431b824e8ccfa54937414011) - [108fb84](https://github.com/bcoe/yargs/commit/108fb8409a3a63dcaf99d917fe4dfcfaa1de236d) fixed bug with boolean parsing, when bools separated by = see #66 (@bcoe)
-- [a465a59](https://github.com/bcoe/yargs/commit/a465a5915f912715738de890982e4f8395958b10) Add `files` field to the package.json (@shinnn)
-- [31043de](https://github.com/bcoe/yargs/commit/31043de7a38a17c4c97711f1099f5fb164334db3) fix for yargs.argv having the same keys added multiple times see #63 (@bcoe)
-- [2d68c5b](https://github.com/bcoe/yargs/commit/2d68c5b91c976431001c4863ce47c9297850f1ad) Disable process.exit calls using .exitProcess(false) (@cianclarke)
-- [45da9ec](https://github.com/bcoe/yargs/commit/45da9ec4c55a7bd394721bc6a1db0dabad7bc52a) Mention .option in README (@eush77)
-
-### v1.3.2 (2014/10/06 21:56 +00:00)
-- [b8d3472](https://github.com/bcoe/yargs/commit/b8d34725482e5821a3cc809c0df71378f282f526) 1.3.2 (@chevex)
-
-### list (2014/08/30 18:41 +00:00)
-- [fbc777f](https://github.com/bcoe/yargs/commit/fbc777f416eeefd37c84e44d27d7dfc7c1925721) Now that yargs is the successor to optimist, I'm changing the README language to be more universal. Pirate speak isn't very accessible to non-native speakers. (@chevex)
-- [a54d068](https://github.com/bcoe/yargs/commit/a54d0682ae2efc2394d407ab171cc8a8bbd135ea) version output will not print extra newline (@boneskull)
-- [1cef5d6](https://github.com/bcoe/yargs/commit/1cef5d62a9d6d61a3948a49574892e01932cc6ae) Added contributors section to package.json (@chrisn)
-- [cc295c0](https://github.com/bcoe/yargs/commit/cc295c0a80a2de267e0155b60d315fc4b6f7c709) Added 'require' and 'required' as synonyms for 'demand' (@chrisn)
-- [d0bf951](https://github.com/bcoe/yargs/commit/d0bf951d949066b6280101ed606593d079ee15c8) Updating minimist. (@chevex)
-- [c15f8e7](https://github.com/bcoe/yargs/commit/c15f8e7f245b261e542cf205ce4f4313630cbdb4) Fix #31 (bad interaction between camelCase options and strict mode) (@nylen)
-- [d991b9b](https://github.com/bcoe/yargs/commit/d991b9be687a68812dee1e3b185ba64b7778b82d) Added .help() and .version() methods (@chrisn)
-- [e8c8aa4](https://github.com/bcoe/yargs/commit/e8c8aa46268379357cb11e9fc34b8c403037724b) Added .showHelpOnFail() method (@chrisn)
-- [e855af4](https://github.com/bcoe/yargs/commit/e855af4a933ea966b5bbdd3c4c6397a4bac1a053) Allow boolean flag with .demand() (@chrisn)
-- [14dbec2](https://github.com/bcoe/yargs/commit/14dbec24fb7380683198e2b20c4deb8423e64bea) Fixes issue #22. Arguments are no longer printed to the console when using .config. (@chevex)
-- [bef74fc](https://github.com/bcoe/yargs/commit/bef74fcddc1544598a804f80d0a3728459f196bf) Informing users that Yargs is the official optimist successor. (@chevex)
-- [#24](https://github.com/bcoe/yargs/pull/24) Merge pull request #24 from chrisn/strict (@chrisn)
-- [889a2b2](https://github.com/bcoe/yargs/commit/889a2b28eb9768801b05163360a470d0fd6c8b79) Added requiresArg option, for options that require values (@chrisn)
-- [eb16369](https://github.com/bcoe/yargs/commit/eb163692262be1fe80b992fd8803d5923c5a9b18) Added .strict() method, to report error if unknown arguments are given (@chrisn)
-- [0471c3f](https://github.com/bcoe/yargs/commit/0471c3fd999e1ad4e6cded88b8aa02013b66d14f) Changed optimist to yargs in usage-options.js example (@chrisn)
-- [5c88f74](https://github.com/bcoe/yargs/commit/5c88f74e3cf031b17c54b4b6606c83e485ff520e) Change optimist to yargs in examples (@chrisn)
-- [66f12c8](https://github.com/bcoe/yargs/commit/66f12c82ba3c943e4de8ca862980e835da8ecb3a) Fix a couple of bad interactions between aliases and defaults (@nylen)
-- [8fa1d80](https://github.com/bcoe/yargs/commit/8fa1d80f14b03eb1f2898863a61f1d1615bceb50) Document second argument of usage(message, opts) (@Gobie)
-- [56e6528](https://github.com/bcoe/yargs/commit/56e6528cf674ff70d63083fb044ff240f608448e) For "--some-option", also set argv.someOption (@nylen)
-- [ed5f6d3](https://github.com/bcoe/yargs/commit/ed5f6d33f57ad1086b11c91b51100f7c6c7fa8ee) Finished porting unit tests to Mocha. (@chevex)
-
-### v1.0.15 (2014/02/05 23:18 +00:00)
-- [e2b1fc0](https://github.com/bcoe/yargs/commit/e2b1fc0c4a59cf532ae9b01b275e1ef57eeb64d2) 1.0.15 update to badges (@chevex)
-
-### v1.0.14 (2014/02/05 23:17 +00:00)
-- [f33bbb0](https://github.com/bcoe/yargs/commit/f33bbb0f00fe18960f849cc8e15a7428a4cd59b8) Revert "Fixed issue which caused .demand function not to work correctly." (@chevex)
-
-### v1.0.13 (2014/02/05 22:13 +00:00)
-- [6509e5e](https://github.com/bcoe/yargs/commit/6509e5e7dee6ef1a1f60eea104be0faa1a045075) Fixed issue which caused .demand function not to work correctly. (@chevex)
-
-### v1.0.12 (2013/12/13 00:09 +00:00)
-- [05eb267](https://github.com/bcoe/yargs/commit/05eb26741c9ce446b33ff006e5d33221f53eaceb) 1.0.12 (@chevex)
-
-### v1.0.11 (2013/12/13 00:07 +00:00)
-- [c1bde46](https://github.com/bcoe/yargs/commit/c1bde46e37318a68b87d17a50c130c861d6ce4a9) 1.0.11 (@chevex)
-
-### v1.0.10 (2013/12/12 23:57 +00:00)
-- [dfebf81](https://github.com/bcoe/yargs/commit/dfebf8164c25c650701528ee581ca483a99dc21c) Fixed formatting in README (@chevex)
-
-### v1.0.9 (2013/12/12 23:47 +00:00)
-- [0b4e34a](https://github.com/bcoe/yargs/commit/0b4e34af5e6d84a9dbb3bb6d02cd87588031c182) Update README.md (@chevex)
-
-### v1.0.8 (2013/12/06 16:36 +00:00)
-- [#1](https://github.com/bcoe/yargs/pull/1) fix error caused by check() see #1 (@martinheidegger)
-
-### v1.0.7 (2013/11/24 18:01 +00:00)
-- [a247d88](https://github.com/bcoe/yargs/commit/a247d88d6e46644cbb7303c18b1bb678fc132d72) Modified Pirate Joe image. (@chevex)
-
-### v1.0.6 (2013/11/23 19:21 +00:00)
-- [d7f69e1](https://github.com/bcoe/yargs/commit/d7f69e1d34bc929736a8bdccdc724583e21b7eab) Updated Pirate Joe image. (@chevex)
-
-### v1.0.5 (2013/11/23 19:09 +00:00)
-- [ece809c](https://github.com/bcoe/yargs/commit/ece809cf317cc659175e1d66d87f3ca68c2760be) Updated readme notice again. (@chevex)
-
-### v1.0.4 (2013/11/23 19:05 +00:00)
-- [9e81e81](https://github.com/bcoe/yargs/commit/9e81e81654028f83ba86ffc3ac772a0476084e5e) Updated README with a notice about yargs being a fork of optimist and what that implies. (@chevex)
-
-### v1.0.3 (2013/11/23 17:43 +00:00)
-- [65e7a78](https://github.com/bcoe/yargs/commit/65e7a782c86764944d63d084416aba9ee6019c5f) Changed some small wording in README.md. (@chevex)
-- [459e20e](https://github.com/bcoe/yargs/commit/459e20e539b366b85128dd281ccd42221e96c7da) Fix a bug in the options function, when string and boolean options weren't applied to aliases. (@shockone)
-
-### v1.0.2 (2013/11/23 09:46 +00:00)
-- [3d80ebe](https://github.com/bcoe/yargs/commit/3d80ebed866d3799224b6f7d596247186a3898a9) 1.0.2 (@chevex)
-
-### v1.0.1 (2013/11/23 09:39 +00:00)
-- [f80ff36](https://github.com/bcoe/yargs/commit/f80ff3642d580d4b68bf9f5a94277481bd027142) Updated image. (@chevex)
-
-### v1.0.0 (2013/11/23 09:33 +00:00)
-- [54e31d5](https://github.com/bcoe/yargs/commit/54e31d505f820b80af13644e460894b320bf25a3) Rebranded from optimist to yargs in the spirit of the fork :D (@chevex)
-- [4ebb6c5](https://github.com/bcoe/yargs/commit/4ebb6c59f44787db7c24c5b8fe2680f01a23f498) Added documentation for demandCount(). (@chevex)
-- [4561ce6](https://github.com/bcoe/yargs/commit/4561ce66dcffa95f49e8b4449b25b94cd68acb25) Simplified the error messages returned by .check(). (@chevex)
-- [661c678](https://github.com/bcoe/yargs/commit/661c67886f479b16254a830b7e1db3be29e6b7a6) Fixed an issue with demand not accepting a zero value. (@chevex)
-- [731dd3c](https://github.com/bcoe/yargs/commit/731dd3c37624790490bd6df4d5f1da8f4348279e) Add .fail(fn) so death isn't the only option. Should fix issue #39. (@chevex)
-- [fa15417](https://github.com/bcoe/yargs/commit/fa15417ff9e70dace0d726627a5818654824c1d8) Added a few missing 'return self' (@chevex)
-- [e655e4d](https://github.com/bcoe/yargs/commit/e655e4d99d1ae1d3695ef755d51c2de08d669761) Fix showing help in certain JS environments. (@chevex)
-- [a746a31](https://github.com/bcoe/yargs/commit/a746a31cd47c87327028e6ea33762d6187ec5c87) Better string representation of default values. (@chevex)
-- [6134619](https://github.com/bcoe/yargs/commit/6134619a7e90b911d5443230b644c5d447c1a68c) Implies: conditional demands (@chevex)
-- [046b93b](https://github.com/bcoe/yargs/commit/046b93b5d40a27367af4cb29726e4d781d934639) Added support for JSON config files. (@chevex)
-- [a677ec0](https://github.com/bcoe/yargs/commit/a677ec0a0ecccd99c75e571d03323f950688da03) Add .example(cmd, desc) feature. (@chevex)
-- [1bd4375](https://github.com/bcoe/yargs/commit/1bd4375e11327ba1687d4bb6e5e9f3c30c1be2af) Added 'defaults' as alias to 'default' so as to avoid usage of a reserved keyword. (@chevex)
-- [6b753c1](https://github.com/bcoe/yargs/commit/6b753c16ca09e723060e70b773b430323b29c45c) add .normalize(args..) support for normalizing paths (@chevex)
-- [33d7d59](https://github.com/bcoe/yargs/commit/33d7d59341d364f03d3a25f0a55cb99004dbbe4b) Customize error messages with demand(key, msg) (@chevex)
-- [647d37f](https://github.com/bcoe/yargs/commit/647d37f164c20f4bafbf67dd9db6cd6e2cd3b49f) Merge branch 'rewrite-duplicate-test' of github.com:isbadawi/node-optimist (@chevex)
-- [9059d1a](https://github.com/bcoe/yargs/commit/9059d1ad5e8aea686c2a01c89a23efdf929fff2e) Pass aliases object to check functions for greater versatility. (@chevex)
-- [623dc26](https://github.com/bcoe/yargs/commit/623dc26c7331abff2465ef8532e3418996d42fe6) Added ability to count boolean options and rolled minimist library back into project. (@chevex)
-- [49f0dce](https://github.com/bcoe/yargs/commit/49f0dcef35de4db544c3966350d36eb5838703f6) Fixed small typo. (@chevex)
-- [79ec980](https://github.com/bcoe/yargs/commit/79ec9806d9ca6eb0014cfa4b6d1849f4f004baf2) Removed dependency on wordwrap module. (@chevex)
-- [ea14630](https://github.com/bcoe/yargs/commit/ea14630feddd69d1de99dd8c0e08948f4c91f00a) Merge branch 'master' of github.com:chbrown/node-optimist (@chevex)
-- [2b75da2](https://github.com/bcoe/yargs/commit/2b75da2624061e0f4f3107d20303c06ec9054906) Merge branch 'master' of github.com:seanzhou1023/node-optimist (@chevex)
-- [d9bda11](https://github.com/bcoe/yargs/commit/d9bda1116e26f3b40e833ca9ca19263afea53565) Merge branch 'patch-1' of github.com:thefourtheye/node-optimist (@chevex)
-- [d6cc606](https://github.com/bcoe/yargs/commit/d6cc6064a4f1bea38a16a4430b8a1334832fbeff) Renamed README. (@chevex)
-- [9498d3f](https://github.com/bcoe/yargs/commit/9498d3f59acfb5e102826503e681623c3a64b178) Renamed readme and added .gitignore. (@chevex)
-- [bbd1fe3](https://github.com/bcoe/yargs/commit/bbd1fe37fefa366dde0fb3dc44d91fe8b28f57f5) Included examples for ```help``` and ```showHelp``` functions and fixed few formatting issues (@thefourtheye)
-- [37fea04](https://github.com/bcoe/yargs/commit/37fea0470a5796a0294c1dcfff68d8041650e622) .alias({}) behaves differently based on mapping direction when generating descriptions (@chbrown)
-- [855b20d](https://github.com/bcoe/yargs/commit/855b20d0be567ca121d06b30bea64001b74f3d6d) Documented function signatures are useful for dynamically typed languages. (@chbrown)
-
-### 0.6.0 (2013/06/25 08:48 +00:00)
-- [d37bfe0](https://github.com/bcoe/yargs/commit/d37bfe05ae6d295a0ab481efe4881222412791f4) all tests passing using minimist (@substack)
-- [76f1352](https://github.com/bcoe/yargs/commit/76f135270399d01f2bbc621e524a5966e5c422fd) all parse tests now passing (@substack)
-- [a7b6754](https://github.com/bcoe/yargs/commit/a7b6754276c38d1565479a5685c3781aeb947816) using minimist, some tests passing (@substack)
-- [6655688](https://github.com/bcoe/yargs/commit/66556882aa731cbbbe16cc4d42c85740a2e98099) Give credit where its due (@DeadAlready)
-- [602a2a9](https://github.com/bcoe/yargs/commit/602a2a92a459f93704794ad51b115bbb08b535ce) v0.5.3 - Remove wordwrap as dependency (@DeadAlready)
-
-### 0.5.2 (2013/05/31 03:46 +00:00)
-- [4497ca5](https://github.com/bcoe/yargs/commit/4497ca55e332760a37b866ec119ded347ca27a87) fixed the whitespace bug without breaking anything else (@substack)
-- [5a3dd1a](https://github.com/bcoe/yargs/commit/5a3dd1a4e0211a38613c6e02f61328e1031953fa) failing test for whitespace arg (@substack)
-
-### 0.5.1 (2013/05/30 07:17 +00:00)
-- [a20228f](https://github.com/bcoe/yargs/commit/a20228f62a454755dd07f628a7c5759113918327) fix parse() to work with functions before it (@substack)
-- [b13bd4c](https://github.com/bcoe/yargs/commit/b13bd4cac856a9821d42fa173bdb58f089365a7d) failing test for parse() with modifiers (@substack)
-
-### 0.5.0 (2013/05/18 21:59 +00:00)
-- [c474a64](https://github.com/bcoe/yargs/commit/c474a649231527915c222156e3b40806d365a87c) fixes for dash (@substack)
-
-### 0.4.0 (2013/04/13 19:03 +00:00)
-- [dafe3e1](https://github.com/bcoe/yargs/commit/dafe3e18d7c6e7c2d68e06559df0e5cbea3adb14) failing short test (@substack)
-
-### 0.3.7 (2013/04/04 04:07 +00:00)
-- [6c7a0ec](https://github.com/bcoe/yargs/commit/6c7a0ec94ce4199a505f0518b4d6635d4e47cc81) Fix for windows. On windows there is no _ in environment. (@hdf)
-
-### 0.3.6 (2013/04/04 04:04 +00:00)
-- [e72346a](https://github.com/bcoe/yargs/commit/e72346a727b7267af5aa008b418db89970873f05) Add support for newlines in -a="" arguments (@danielbeardsley)
-- [71e1fb5](https://github.com/bcoe/yargs/commit/71e1fb55ea9987110a669ac6ec12338cfff3821c) drop 0.4, add 0.8 to travis (@substack)
-
-### 0.3.5 (2012/10/10 11:09 +00:00)
-- [ee692b3](https://github.com/bcoe/yargs/commit/ee692b37554c70a0bb16389a50a26b66745cbbea) Fix parsing booleans (@vojtajina)
-- [5045122](https://github.com/bcoe/yargs/commit/5045122664c3f5b4805addf1be2148d5856f7ce8) set $0 properly in the tests (@substack)
-
-### 0.3.4 (2012/04/30 06:54 +00:00)
-- [f28c0e6](https://github.com/bcoe/yargs/commit/f28c0e62ca94f6e0bb2e6d82fc3d91a55e69b903) bump for string "true" params (@substack)
-- [8f44aeb](https://github.com/bcoe/yargs/commit/8f44aeb74121ddd689580e2bf74ef86a605e9bf2) Fix failing test for aliased booleans. (@coderarity)
-- [b9f7b61](https://github.com/bcoe/yargs/commit/b9f7b613b1e68e11e6c23fbda9e555a517dcc976) Add failing test for short aliased booleans. (@coderarity)
-
-### 0.3.3 (2012/04/30 06:45 +00:00)
-- [541bac8](https://github.com/bcoe/yargs/commit/541bac8dd787a5f1a5d28f6d8deb1627871705e7) Fixes #37.
-
-### 0.3.2 (2012/04/12 20:28 +00:00)
-- [3a0f014](https://github.com/bcoe/yargs/commit/3a0f014c1451280ac1c9caa1f639d31675586eec) travis badge (@substack)
-- [4fb60bf](https://github.com/bcoe/yargs/commit/4fb60bf17845f4ce3293f8ca49c9a1a7c736cfce) Fix boolean aliases. (@coderarity)
-- [f14dda5](https://github.com/bcoe/yargs/commit/f14dda546efc4fe06ace04d36919bfbb7634f79b) Adjusted package.json to use tap (@jfhbrook)
-- [88e5d32](https://github.com/bcoe/yargs/commit/88e5d32295be6e544c8d355ff84e355af38a1c74) test/usage.js no longer hangs (@jfhbrook)
-- [e1e740c](https://github.com/bcoe/yargs/commit/e1e740c27082f3ce84deca2093d9db2ef735d0e5) two tests for combined boolean/alias opts parsing (@jfhbrook)
-
-### 0.3.1 (2011/12/31 08:44 +00:00)
-- [d09b719](https://github.com/bcoe/yargs/commit/d09b71980ef711b6cf3918cd19beec8257e40e82) If "default" is set to false it was not passed on, fixed. (@wolframkriesing)
-
-### 0.3.0 (2011/12/09 06:03 +00:00)
-- [6e74aa7](https://github.com/bcoe/yargs/commit/6e74aa7b46a65773e20c0cb68d2d336d4a0d553d) bump and documented dot notation (@substack)
-
-### 0.2.7 (2011/10/20 02:25 +00:00)
-- [94adee2](https://github.com/bcoe/yargs/commit/94adee20e17b58d0836f80e8b9cdbe9813800916) argv._ can be told 'Hey! argv._! Don't be messing with my args.', and it WILL obey (@colinta)
-- [c46fdd5](https://github.com/bcoe/yargs/commit/c46fdd56a05410ae4a1e724a4820c82e77ff5469) optimistic critter image (@substack)
-- [5c95c73](https://github.com/bcoe/yargs/commit/5c95c73aedf4c7482bd423e10c545e86d7c8a125) alias options() to option() (@substack)
-- [f7692ea](https://github.com/bcoe/yargs/commit/f7692ea8da342850af819367833abb685fde41d8) [fix] Fix for parsing boolean edge case (@indexzero)
-- [d1f92d1](https://github.com/bcoe/yargs/commit/d1f92d1425bd7f356055e78621b30cdf9741a3c2)
-- [b01bda8](https://github.com/bcoe/yargs/commit/b01bda8d86e455bbf74ce497864cb8ab5b9fb847) [fix test] Update to ensure optimist is aware of default booleans. Associated tests included (@indexzero)
-- [aa753e7](https://github.com/bcoe/yargs/commit/aa753e7c54fb3a12f513769a0ff6d54aa0f63943) [dist test] Update devDependencies in package.json. Update test pathing to be more npm and require.paths future-proof (@indexzero)
-- [7bfce2f](https://github.com/bcoe/yargs/commit/7bfce2f3b3c98e6539e7549d35fbabced7e9341e) s/sys/util/ (@substack)
-- [d420a7a](https://github.com/bcoe/yargs/commit/d420a7a9c890d2cdb11acfaf3ea3f43bc3e39f41) update usage output (@substack)
-- [cf86eed](https://github.com/bcoe/yargs/commit/cf86eede2e5fc7495b6ec15e6d137d9ac814f075) some sage readme protips about parsing rules (@substack)
-- [5da9f7a](https://github.com/bcoe/yargs/commit/5da9f7a5c0e1758ec7c5801fb3e94d3f6e970513) documented all the methods finally (@substack)
-- [8ca6879](https://github.com/bcoe/yargs/commit/8ca6879311224b25933642987300f6a29de5c21b) fenced syntax highlighting (@substack)
-- [b72bacf](https://github.com/bcoe/yargs/commit/b72bacf1d02594778c1935405bc8137eb61761dc) right-alignment of wrapped extra params (@substack)
-- [2b980bf](https://github.com/bcoe/yargs/commit/2b980bf2656b4ee8fc5134dc5f56a48855c35198) now with .wrap() (@substack)
-- [d614f63](https://github.com/bcoe/yargs/commit/d614f639654057d1b7e35e3f5a306e88ec2ad1e4) don't show 'Options:' when there aren't any (@substack)
-- [691eda3](https://github.com/bcoe/yargs/commit/691eda354df97b5a86168317abcbcaabdc08a0fb) failing test for multi-aliasing (@substack)
-- [0826c9f](https://github.com/bcoe/yargs/commit/0826c9f462109feab2bc7a99346d22e72bf774b7) "Options:" > "options:" (@substack)
-- [72f7490](https://github.com/bcoe/yargs/commit/72f749025d01b7f295738ed370a669d885fbada0) [minor] Update formatting for `.showHelp()` (@indexzero)
-- [75aecce](https://github.com/bcoe/yargs/commit/75aeccea74329094072f95800e02c275e7d999aa) options works again, too lazy to write a proper test right now (@substack)
-- [f742e54](https://github.com/bcoe/yargs/commit/f742e5439817c662dc3bd8734ddd6467e6018cfd) line_count_options example, which breaks (@substack)
-- [4ca06b8](https://github.com/bcoe/yargs/commit/4ca06b8b4ea99b5d5714b315a2a8576bee6e5537) line count example (@substack)
-- [eeb8423](https://github.com/bcoe/yargs/commit/eeb8423e0a5ecc9dc3eb1e6df9f3f8c1c88f920b) remove self.argv setting in boolean (@substack)
-- [6903412](https://github.com/bcoe/yargs/commit/69034126804660af9cc20ea7f4457b50338ee3d7) removed camel case for now (@substack)
-- [5a0d88b](https://github.com/bcoe/yargs/commit/5a0d88bf23e9fa79635dd034e2a1aa992acc83cd) remove dead longest checking code (@substack)
-- [d782170](https://github.com/bcoe/yargs/commit/d782170babf7284b1aa34f5350df0dd49c373fa8) .help() too (@substack)
-- [622ec17](https://github.com/bcoe/yargs/commit/622ec17379bb5374fdbb190404c82bc600975791) rm old help generator (@substack)
-- [7c8baac](https://github.com/bcoe/yargs/commit/7c8baac4d66195e9f5158503ea9ebfb61153dab7) nub keys (@substack)
-- [8197785](https://github.com/bcoe/yargs/commit/8197785ad4762465084485b041abd722f69bf344) generate help message based on the previous calls, todo: nub (@substack)
-- [3ffbdc3](https://github.com/bcoe/yargs/commit/3ffbdc33c8f5e83d4ea2ac60575ce119570c7ede) stub out new showHelp, better checks (@substack)
-- [d4e21f5](https://github.com/bcoe/yargs/commit/d4e21f56a4830f7de841900d3c79756fb9886184) let .options() take single options too (@substack)
-- [3c4cf29](https://github.com/bcoe/yargs/commit/3c4cf2901a29bac119cca8e983028d8669230ec6) .options() is now heaps simpler (@substack)
-- [89f0d04](https://github.com/bcoe/yargs/commit/89f0d043cbccd302f10ab30c2069e05d2bf817c9) defaults work again, all tests pass (@substack)
-- [dd87333](https://github.com/bcoe/yargs/commit/dd8733365423006a6e4156372ebb55f98323af58) update test error messages, down to 2 failing tests (@substack)
-- [53f7bc6](https://github.com/bcoe/yargs/commit/53f7bc626b9875f2abdfc5dd7a80bde7f14143a3) fix for bools doubling up, passes the parse test again, others fail (@substack)
-- [2213e2d](https://github.com/bcoe/yargs/commit/2213e2ddc7263226fba717fb041dc3fde9bc2ee4) refactored for an argv getter, failing several tests (@substack)
-- [d1e7379](https://github.com/bcoe/yargs/commit/d1e737970f15c6c006bebdd8917706827ff2f0f2) just rescan for now, alias test passes (@substack)
-- [b2f8c99](https://github.com/bcoe/yargs/commit/b2f8c99cc477a8eb0fdf4cf178e1785b63185cfd) failing alias test (@substack)
-- [d0c0174](https://github.com/bcoe/yargs/commit/d0c0174daa144bfb6dc7290fdc448c393c475e15) .alias() (@substack)
-- [d85f431](https://github.com/bcoe/yargs/commit/d85f431ad7d07b058af3f2a57daa51495576c164) [api] Remove `.describe()` in favor of building upon the existing `.usage()` API (@indexzero)
-- [edbd527](https://github.com/bcoe/yargs/commit/edbd5272a8e213e71acd802782135c7f9699913a) [doc api] Add `.describe()`, `.options()`, and `.showHelp()` methods along with example. (@indexzero)
-- [be4902f](https://github.com/bcoe/yargs/commit/be4902ff0961ae8feb9093f2c0a4066463ded2cf) updates for coffee since it now does argv the node way (@substack)
-- [e24cb23](https://github.com/bcoe/yargs/commit/e24cb23798ee64e53b60815e7fda78b87f42390c) more general coffeescript detection (@substack)
-- [78ac753](https://github.com/bcoe/yargs/commit/78ac753e5d0ec32a96d39d893272afe989e42a4d) Don't trigger the CoffeeScript hack when running under node_g. (@papandreou)
-- [bcfe973](https://github.com/bcoe/yargs/commit/bcfe9731d7f90d4632281b8a52e8d76eb0195ae6) .string() but failing test (@substack)
-- [1987aca](https://github.com/bcoe/yargs/commit/1987aca28c7ba4e8796c07bbc547cb984804c826) test hex strings (@substack)
-- [ef36db3](https://github.com/bcoe/yargs/commit/ef36db32259b0b0d62448dc907c760e5554fb7e7) more keywords (@substack)
-- [cc53c56](https://github.com/bcoe/yargs/commit/cc53c56329960bed6ab077a79798e991711ba01d) Added camelCase function that converts --multi-word-option to camel case (so it becomes argv.multiWordOption). (@papandreou)
-- [60b57da](https://github.com/bcoe/yargs/commit/60b57da36797716e5783a633c6d5c79099016d45) fixed boolean bug by rescanning (@substack)
-- [dff6d07](https://github.com/bcoe/yargs/commit/dff6d078d97f8ac503c7d18dcc7b7a8c364c2883) boolean examples (@substack)
-- [0e380b9](https://github.com/bcoe/yargs/commit/0e380b92c4ef4e3c8dac1da18b5c31d85b1d02c9) boolean() with passing test (@substack)
-- [62644d4](https://github.com/bcoe/yargs/commit/62644d4bffbb8d1bbf0c2baf58a1d14a6359ef07) coffee compatibility with node regex for versions too (@substack)
-- [430fafc](https://github.com/bcoe/yargs/commit/430fafcf1683d23774772826581acff84b456827) argv._ fixed by fixing the coffee detection (@substack)
-- [343b8af](https://github.com/bcoe/yargs/commit/343b8afefd98af274ebe21b5a16b3a949ec5429f) whichNodeArgs test fails too (@substack)
-- [63df2f3](https://github.com/bcoe/yargs/commit/63df2f371f31e63d7f1dec2cbf0022a5f08da9d2) replicated mnot's bug in whichNodeEmpty test (@substack)
-- [35473a4](https://github.com/bcoe/yargs/commit/35473a4d93a45e5e7e512af8bb54ebb532997ae1) test for ./bin usage (@substack)
-- [13df151](https://github.com/bcoe/yargs/commit/13df151e44228eed10e5441c7cd163e086c458a4) don't coerce booleans to numbers (@substack)
-- [85f8007](https://github.com/bcoe/yargs/commit/85f8007e93b8be7124feea64b1f1916d8ba1894a) package bump for automatic number conversion (@substack)
-- [8f17014](https://github.com/bcoe/yargs/commit/8f170141cded4ccc0c6d67a849c5bf996aa29643) updated readme and examples with new auto-numberification goodness (@substack)
-- [73dc901](https://github.com/bcoe/yargs/commit/73dc9011ac968e39b55e19e916084a839391b506) auto number conversion works yay (@substack)
-- [bcec56b](https://github.com/bcoe/yargs/commit/bcec56b3d031e018064cbb691539ccc4f28c14ad) failing test for not-implemented auto numification (@substack)
-- [ebd2844](https://github.com/bcoe/yargs/commit/ebd2844d683feeac583df79af0e5124a7a7db04e) odd that eql doesn't check types careflly (@substack)
-- [fd854b0](https://github.com/bcoe/yargs/commit/fd854b02e512ce854b76386d395672a7969c1bc4) package author + keywords (@substack)
-- [656a1d5](https://github.com/bcoe/yargs/commit/656a1d5a1b7c0e49d72e80cb13f20671d56f76c6) updated readme with .default() stuff (@substack)
-- [cd7f8c5](https://github.com/bcoe/yargs/commit/cd7f8c55f0b82b79b690d14c5f806851236998a1) passing tests for new .default() behavior (@substack)
-- [932725e](https://github.com/bcoe/yargs/commit/932725e39ce65bc91a0385a5fab659a5fa976ac2) new default() thing for setting default key/values (@substack)
-- [4e6c7ab](https://github.com/bcoe/yargs/commit/4e6c7aba6374ac9ebc6259ecf91f13af7bce40e3) test for coffee usage (@substack)
-- [d54ffcc](https://github.com/bcoe/yargs/commit/d54ffccf2a5a905f51ed5108f7c647f35d64ae23) new --key value style with passing tests. NOTE: changes existing behavior (@substack)
-- [ed2a2d5](https://github.com/bcoe/yargs/commit/ed2a2d5d828100ebeef6385c0fb88d146a5cfe9b) package bump for summatix's coffee script fix (@substack)
-- [75a975e](https://github.com/bcoe/yargs/commit/75a975eed8430d28e2a79dc9e6d819ad545f4587) Added support for CoffeeScript (@summatix)
-- [56b2b1d](https://github.com/bcoe/yargs/commit/56b2b1de8d11f8a2b91979d8ae2d6db02d8fe64d) test coverage for the falsy check() usage (@substack)
-- [a4843a9](https://github.com/bcoe/yargs/commit/a4843a9f0e69ffb4afdf6a671d89eb6f218be35d) check bug fixed plus a handy string (@substack)
-- [857bd2d](https://github.com/bcoe/yargs/commit/857bd2db933a5aaa9cfecba0ced2dc9b415f8111) tests for demandCount, back up to 100% coverage (@substack)
-- [073b776](https://github.com/bcoe/yargs/commit/073b7768ebd781668ef05c13f9003aceca2f5c35) call demandCount from demand (@substack)
-- [4bd4b7a](https://github.com/bcoe/yargs/commit/4bd4b7a085c8b6ce1d885a0f486cc9865cee2db1) add demandCount to check for the number of arguments in the _ list (@marshall)
-- [b8689ac](https://github.com/bcoe/yargs/commit/b8689ac68dacf248119d242bba39a41cb0adfa07) Rebase checks. That will be its own module eventually. (@substack)
-- [e688370](https://github.com/bcoe/yargs/commit/e688370b576f0aa733c3f46183df69e1b561668e) a $0 like in perl (@substack)
-- [2e5e196](https://github.com/bcoe/yargs/commit/2e5e1960fc19afb21fb3293752316eaa8bcd3609) usage test hacking around process and console (@substack)
-- [fcc3521](https://github.com/bcoe/yargs/commit/fcc352163fbec6a1dfe8caf47a0df39de24fe016) description pun (@substack)
-- [87a1fe2](https://github.com/bcoe/yargs/commit/87a1fe29037ca2ca5fefda85141aaeb13e8ce761) mit/x11 license (@substack)
-- [8d089d2](https://github.com/bcoe/yargs/commit/8d089d24cd687c0bde3640a96c09b78f884900dd) bool example is more consistent and also shows off short option grouping (@substack)
-- [448d747](https://github.com/bcoe/yargs/commit/448d7473ac68e8e03d8befc9457b0d9e21725be0) start of the readme and examples (@substack)
-- [da74dea](https://github.com/bcoe/yargs/commit/da74dea799a9b59dbf022cbb8001bfdb0d52eec9) more tests for long and short captures (@substack)
-- [ab6387e](https://github.com/bcoe/yargs/commit/ab6387e6769ca4af82ca94c4c67c7319f0d9fcfa) silly bug in the tests with s/not/no/, all tests pass now (@substack)
-- [102496a](https://github.com/bcoe/yargs/commit/102496a319e8e06f6550d828fc2f72992c7d9ecc) hack an instance for process.argv onto Argv so the export can be called to create an instance or used for argv, which is the most common case (@substack)
-- [a01caeb](https://github.com/bcoe/yargs/commit/a01caeb532546d19f68f2b2b87f7036cfe1aaedd) divide example (@substack)
-- [443da55](https://github.com/bcoe/yargs/commit/443da55736acbaf8ff8b04d1b9ce19ab016ddda2) start of the lib with a package.json (@substack)
diff --git a/node_modules/@iarna/cli/node_modules/yargs/LICENSE b/node_modules/@iarna/cli/node_modules/yargs/LICENSE
deleted file mode 100644
index 747ab114c..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright 2010 James Halliday (mail@substack.net)
-Modified work Copyright 2014 Contributors (ben@npmjs.com)
-
-This project is free software released under the MIT/X11 license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/@iarna/cli/node_modules/yargs/README.md b/node_modules/@iarna/cli/node_modules/yargs/README.md
deleted file mode 100644
index 867118bfe..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/README.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# Yargs
-
-[![Build Status][travis-image]][travis-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-[![NPM version][npm-image]][npm-url]
-[![Windows Tests][windows-image]][windows-url]
-[![js-standard-style][standard-image]][standard-url]
-[![Conventional Commits][conventional-commits-image]][conventional-commits-url]
-[![Gitter][gitter-image]][gitter-url]
-
-> Yargs be a node.js library fer hearties tryin' ter parse optstrings.
-
-<img width="250" src="/yargs-logo.png">
-
-Yargs helps you build interactive command line tools, by parsing arguments and generating an elegant user interface. It gives you:
-
-* commands and (grouped) options (`my-program.js serve --port=5000`).
-* a dynamically generated help menu based on your arguments.
-
-> <img width="400" src="/screen.png">
-
-* bash-completion shortcuts for commands and options.
-* and [tons more](/docs/api.md).
-
-## Installation
-
-```bash
-npm i yargs --save
-```
-
-## Simple Example
-
-````javascript
-#!/usr/bin/env node
-const argv = require('yargs').argv
-
-if (argv.ships > 3 && argv.distance < 53.5) {
- console.log('Plunder more riffiwobbles!')
-} else {
- console.log('Retreat from the xupptumblers!')
-}
-````
-
-```bash
-$ ./plunder.js --ships=4 --distance=22
-Plunder more riffiwobbles!
-
-$ ./plunder.js --ships 12 --distance 98.7
-Retreat from the xupptumblers!
-```
-
-## Complex Example
-
-```js
-#!/usr/bin/env node
-const yargs = require('yargs') // eslint-disable-line
- .command('serve', 'start the server', (yargs) => {
- yargs.option('port', {
- describe: 'port to bind on',
- default: 5000
- })
- }, (argv) => {
- if (argv.verbose) console.info(`start server on :${argv.port}`)
- serve(argv.port)
- })
- .option('verbose', {
- alias: 'v',
- default: false
- })
- .help()
- .argv
-```
-
-## Table of Contents
-
-* [Yargs' API](/docs/api.md)
-* [Examples](/docs/examples.md)
-* [Parsing Tricks](/docs/tricks.md)
- * [Stop the Parser](/docs/tricks.md#stop)
- * [Negating Boolean Arguments](/docs/tricks.md#negate)
- * [Numbers](/docs/tricks.md#numbers)
- * [Arrays](/docs/tricks.md#arrays)
- * [Objects](/docs/tricks.md#objects)
-* [Advanced Topics](/docs/advanced.md)
- * [Composing Your App Using Commands](/docs/advanced.md#commands)
- * [Building Configurable CLI Apps](/docs/advanced.md#configuration)
- * [Customizing Yargs' Parser](/docs/advanced.md#customizing)
-* [Contributing](/contributing.md)
-
-[travis-url]: https://travis-ci.org/yargs/yargs
-[travis-image]: https://img.shields.io/travis/yargs/yargs/master.svg
-[coveralls-url]: https://coveralls.io/github/yargs/yargs
-[coveralls-image]: https://img.shields.io/coveralls/yargs/yargs.svg
-[npm-url]: https://www.npmjs.com/package/yargs
-[npm-image]: https://img.shields.io/npm/v/yargs.svg
-[windows-url]: https://ci.appveyor.com/project/bcoe/yargs-ljwvf
-[windows-image]: https://img.shields.io/appveyor/ci/bcoe/yargs-ljwvf/master.svg?label=Windows%20Tests
-[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg
-[standard-url]: http://standardjs.com/
-[conventional-commits-image]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg
-[conventional-commits-url]: https://conventionalcommits.org/
-[gitter-image]: https://img.shields.io/gitter/room/nwjs/nw.js.svg?maxAge=2592000
-[gitter-url]: https://gitter.im/yargs/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link
diff --git a/node_modules/@iarna/cli/node_modules/yargs/completion.sh.hbs b/node_modules/@iarna/cli/node_modules/yargs/completion.sh.hbs
deleted file mode 100644
index 14445b834..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/completion.sh.hbs
+++ /dev/null
@@ -1,28 +0,0 @@
-###-begin-{{app_name}}-completions-###
-#
-# yargs command completion script
-#
-# Installation: {{app_path}} completion >> ~/.bashrc
-# or {{app_path}} completion >> ~/.bash_profile on OSX.
-#
-_yargs_completions()
-{
- local cur_word args type_list
-
- cur_word="${COMP_WORDS[COMP_CWORD]}"
- args=("${COMP_WORDS[@]}")
-
- # ask yargs to generate completions.
- type_list=$({{app_path}} --get-yargs-completions "${args[@]}")
-
- COMPREPLY=( $(compgen -W "${type_list}" -- ${cur_word}) )
-
- # if no match was found, fall back to filename completion
- if [ ${#COMPREPLY[@]} -eq 0 ]; then
- COMPREPLY=( $(compgen -f -- "${cur_word}" ) )
- fi
-
- return 0
-}
-complete -F _yargs_completions {{app_name}}
-###-end-{{app_name}}-completions-###
diff --git a/node_modules/@iarna/cli/node_modules/yargs/index.js b/node_modules/@iarna/cli/node_modules/yargs/index.js
deleted file mode 100644
index 37450cf7a..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/index.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// classic singleton yargs API, to use yargs
-// without running as a singleton do:
-// require('yargs/yargs')(process.argv.slice(2))
-const yargs = require('./yargs')
-
-Argv(process.argv.slice(2))
-
-module.exports = Argv
-
-function Argv (processArgs, cwd) {
- const argv = yargs(processArgs, cwd, require)
- singletonify(argv)
- return argv
-}
-
-/* Hack an instance of Argv with process.argv into Argv
- so people can do
- require('yargs')(['--beeble=1','-z','zizzle']).argv
- to parse a list of args and
- require('yargs').argv
- to get a parsed version of process.argv.
-*/
-function singletonify (inst) {
- Object.keys(inst).forEach(function (key) {
- if (key === 'argv') {
- Argv.__defineGetter__(key, inst.__lookupGetter__(key))
- } else {
- Argv[key] = typeof inst[key] === 'function' ? inst[key].bind(inst) : inst[key]
- }
- })
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/apply-extends.js b/node_modules/@iarna/cli/node_modules/yargs/lib/apply-extends.js
deleted file mode 100644
index 5fc69fab1..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/apply-extends.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var fs = require('fs')
-var path = require('path')
-var assign = require('./assign')
-var YError = require('./yerror')
-
-var previouslyVisitedConfigs = []
-
-function checkForCircularExtends (path) {
- if (previouslyVisitedConfigs.indexOf(path) > -1) {
- throw new YError("Circular extended configurations: '" + path + "'.")
- }
-}
-
-function getPathToDefaultConfig (cwd, pathToExtend) {
- return path.resolve(cwd, pathToExtend)
-}
-
-function applyExtends (config, cwd) {
- var defaultConfig = {}
-
- if (config.hasOwnProperty('extends')) {
- if (typeof config.extends !== 'string') return defaultConfig
- var isPath = /\.json$/.test(config.extends)
- var pathToDefault = null
- if (!isPath) {
- try {
- pathToDefault = require.resolve(config.extends)
- } catch (err) {
- // most likely this simply isn't a module.
- }
- } else {
- pathToDefault = getPathToDefaultConfig(cwd, config.extends)
- }
- // maybe the module uses key for some other reason,
- // err on side of caution.
- if (!pathToDefault && !isPath) return config
-
- checkForCircularExtends(pathToDefault)
-
- previouslyVisitedConfigs.push(pathToDefault)
-
- defaultConfig = isPath ? JSON.parse(fs.readFileSync(pathToDefault, 'utf8')) : require(config.extends)
- delete config.extends
- defaultConfig = applyExtends(defaultConfig, path.dirname(pathToDefault))
- }
-
- previouslyVisitedConfigs = []
-
- return assign(defaultConfig, config)
-}
-
-module.exports = applyExtends
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/argsert.js b/node_modules/@iarna/cli/node_modules/yargs/lib/argsert.js
deleted file mode 100644
index d3e72fce5..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/argsert.js
+++ /dev/null
@@ -1,72 +0,0 @@
-const command = require('./command')()
-const YError = require('./yerror')
-
-const positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']
-
-module.exports = function (expected, callerArguments, length) {
- // TODO: should this eventually raise an exception.
- try {
- // preface the argument description with "cmd", so
- // that we can run it through yargs' command parser.
- var position = 0
- var parsed = {demanded: [], optional: []}
- if (typeof expected === 'object') {
- length = callerArguments
- callerArguments = expected
- } else {
- parsed = command.parseCommand('cmd ' + expected)
- }
- const args = [].slice.call(callerArguments)
-
- while (args.length && args[args.length - 1] === undefined) args.pop()
- length = length || args.length
-
- if (length < parsed.demanded.length) {
- throw new YError('Not enough arguments provided. Expected ' + parsed.demanded.length +
- ' but received ' + args.length + '.')
- }
-
- const totalCommands = parsed.demanded.length + parsed.optional.length
- if (length > totalCommands) {
- throw new YError('Too many arguments provided. Expected max ' + totalCommands +
- ' but received ' + length + '.')
- }
-
- parsed.demanded.forEach(function (demanded) {
- const arg = args.shift()
- const observedType = guessType(arg)
- const matchingTypes = demanded.cmd.filter(function (type) {
- return type === observedType || type === '*'
- })
- if (matchingTypes.length === 0) argumentTypeError(observedType, demanded.cmd, position, false)
- position += 1
- })
-
- parsed.optional.forEach(function (optional) {
- if (args.length === 0) return
- const arg = args.shift()
- const observedType = guessType(arg)
- const matchingTypes = optional.cmd.filter(function (type) {
- return type === observedType || type === '*'
- })
- if (matchingTypes.length === 0) argumentTypeError(observedType, optional.cmd, position, true)
- position += 1
- })
- } catch (err) {
- console.warn(err.stack)
- }
-}
-
-function guessType (arg) {
- if (Array.isArray(arg)) {
- return 'array'
- } else if (arg === null) {
- return 'null'
- }
- return typeof arg
-}
-
-function argumentTypeError (observedType, allowedTypes, position, optional) {
- throw new YError('Invalid ' + (positionName[position] || 'manyith') + ' argument.' +
- ' Expected ' + allowedTypes.join(' or ') + ' but received ' + observedType + '.')
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/assign.js b/node_modules/@iarna/cli/node_modules/yargs/lib/assign.js
deleted file mode 100644
index 7d5a3cef2..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/assign.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// lazy Object.assign logic that only works for merging
-// two objects; eventually we should replace this with Object.assign.
-module.exports = function assign (defaults, configuration) {
- var o = {}
- configuration = configuration || {}
-
- Object.keys(defaults).forEach(function (k) {
- o[k] = defaults[k]
- })
- Object.keys(configuration).forEach(function (k) {
- o[k] = configuration[k]
- })
-
- return o
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/command.js b/node_modules/@iarna/cli/node_modules/yargs/lib/command.js
deleted file mode 100644
index 3567cf953..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/command.js
+++ /dev/null
@@ -1,336 +0,0 @@
-const path = require('path')
-const inspect = require('util').inspect
-const camelCase = require('camelcase')
-
-const DEFAULT_MARKER = '*'
-
-// handles parsing positional arguments,
-// and populating argv with said positional
-// arguments.
-module.exports = function (yargs, usage, validation) {
- const self = {}
-
- var handlers = {}
- var aliasMap = {}
- var defaultCommand
- self.addHandler = function (cmd, description, builder, handler) {
- var aliases = []
- handler = handler || function () {}
-
- if (Array.isArray(cmd)) {
- aliases = cmd.slice(1)
- cmd = cmd[0]
- } else if (typeof cmd === 'object') {
- var command = (Array.isArray(cmd.command) || typeof cmd.command === 'string') ? cmd.command : moduleName(cmd)
- if (cmd.aliases) command = [].concat(command).concat(cmd.aliases)
- self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler)
- return
- }
-
- // allow a module to be provided instead of separate builder and handler
- if (typeof builder === 'object' && builder.builder && typeof builder.handler === 'function') {
- self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler)
- return
- }
-
- // parse positionals out of cmd string
- var parsedCommand = self.parseCommand(cmd)
-
- // remove positional args from aliases only
- aliases = aliases.map(function (alias) {
- return self.parseCommand(alias).cmd
- })
-
- // check for default and filter out '*''
- var isDefault = false
- var parsedAliases = [parsedCommand.cmd].concat(aliases).filter(function (c) {
- if (c === DEFAULT_MARKER) {
- isDefault = true
- return false
- }
- return true
- })
-
- // short-circuit if default with no aliases
- if (isDefault && parsedAliases.length === 0) {
- defaultCommand = {
- original: cmd.replace(DEFAULT_MARKER, '').trim(),
- handler: handler,
- builder: builder || {},
- demanded: parsedCommand.demanded,
- optional: parsedCommand.optional
- }
- return
- }
-
- // shift cmd and aliases after filtering out '*'
- if (isDefault) {
- parsedCommand.cmd = parsedAliases[0]
- aliases = parsedAliases.slice(1)
- cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd)
- }
-
- // populate aliasMap
- aliases.forEach(function (alias) {
- aliasMap[alias] = parsedCommand.cmd
- })
-
- if (description !== false) {
- usage.command(cmd, description, isDefault, aliases)
- }
-
- handlers[parsedCommand.cmd] = {
- original: cmd,
- handler: handler,
- builder: builder || {},
- demanded: parsedCommand.demanded,
- optional: parsedCommand.optional
- }
-
- if (isDefault) defaultCommand = handlers[parsedCommand.cmd]
- }
-
- self.addDirectory = function (dir, context, req, callerFile, opts) {
- opts = opts || {}
- // disable recursion to support nested directories of subcommands
- if (typeof opts.recurse !== 'boolean') opts.recurse = false
- // exclude 'json', 'coffee' from require-directory defaults
- if (!Array.isArray(opts.extensions)) opts.extensions = ['js']
- // allow consumer to define their own visitor function
- const parentVisit = typeof opts.visit === 'function' ? opts.visit : function (o) { return o }
- // call addHandler via visitor function
- opts.visit = function (obj, joined, filename) {
- const visited = parentVisit(obj, joined, filename)
- // allow consumer to skip modules with their own visitor
- if (visited) {
- // check for cyclic reference
- // each command file path should only be seen once per execution
- if (~context.files.indexOf(joined)) return visited
- // keep track of visited files in context.files
- context.files.push(joined)
- self.addHandler(visited)
- }
- return visited
- }
- require('require-directory')({ require: req, filename: callerFile }, dir, opts)
- }
-
- // lookup module object from require()d command and derive name
- // if module was not require()d and no name given, throw error
- function moduleName (obj) {
- const mod = require('which-module')(obj)
- if (!mod) throw new Error('No command name given for module: ' + inspect(obj))
- return commandFromFilename(mod.filename)
- }
-
- // derive command name from filename
- function commandFromFilename (filename) {
- return path.basename(filename, path.extname(filename))
- }
-
- function extractDesc (obj) {
- for (var keys = ['describe', 'description', 'desc'], i = 0, l = keys.length, test; i < l; i++) {
- test = obj[keys[i]]
- if (typeof test === 'string' || typeof test === 'boolean') return test
- }
- return false
- }
-
- self.parseCommand = function (cmd) {
- var extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' ')
- var splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/)
- var bregex = /\.*[\][<>]/g
- var parsedCommand = {
- cmd: (splitCommand.shift()).replace(bregex, ''),
- demanded: [],
- optional: []
- }
- splitCommand.forEach(function (cmd, i) {
- var variadic = false
- cmd = cmd.replace(/\s/g, '')
- if (/\.+[\]>]/.test(cmd) && i === splitCommand.length - 1) variadic = true
- if (/^\[/.test(cmd)) {
- parsedCommand.optional.push({
- cmd: cmd.replace(bregex, '').split('|'),
- variadic: variadic
- })
- } else {
- parsedCommand.demanded.push({
- cmd: cmd.replace(bregex, '').split('|'),
- variadic: variadic
- })
- }
- })
- return parsedCommand
- }
-
- self.getCommands = function () {
- return Object.keys(handlers).concat(Object.keys(aliasMap))
- }
-
- self.getCommandHandlers = function () {
- return handlers
- }
-
- self.hasDefaultCommand = function () {
- return !!defaultCommand
- }
-
- self.runCommand = function (command, yargs, parsed, commandIndex) {
- var aliases = parsed.aliases
- var commandHandler = handlers[command] || handlers[aliasMap[command]] || defaultCommand
- var currentContext = yargs.getContext()
- var numFiles = currentContext.files.length
- var parentCommands = currentContext.commands.slice()
-
- // what does yargs look like after the buidler is run?
- var innerArgv = parsed.argv
- var innerYargs = null
- var positionalMap = {}
-
- if (command) currentContext.commands.push(command)
- if (typeof commandHandler.builder === 'function') {
- // a function can be provided, which builds
- // up a yargs chain and possibly returns it.
- innerYargs = commandHandler.builder(yargs.reset(parsed.aliases))
- // if the builder function did not yet parse argv with reset yargs
- // and did not explicitly set a usage() string, then apply the
- // original command string as usage() for consistent behavior with
- // options object below.
- if (yargs.parsed === false) {
- if (typeof yargs.getUsageInstance().getUsage() === 'undefined') {
- yargs.usage('$0 ' + (parentCommands.length ? parentCommands.join(' ') + ' ' : '') + commandHandler.original)
- }
- innerArgv = innerYargs ? innerYargs._parseArgs(null, null, true, commandIndex) : yargs._parseArgs(null, null, true, commandIndex)
- } else {
- innerArgv = yargs.parsed.argv
- }
-
- if (innerYargs && yargs.parsed === false) aliases = innerYargs.parsed.aliases
- else aliases = yargs.parsed.aliases
- } else if (typeof commandHandler.builder === 'object') {
- // as a short hand, an object can instead be provided, specifying
- // the options that a command takes.
- innerYargs = yargs.reset(parsed.aliases)
- innerYargs.usage('$0 ' + (parentCommands.length ? parentCommands.join(' ') + ' ' : '') + commandHandler.original)
- Object.keys(commandHandler.builder).forEach(function (key) {
- innerYargs.option(key, commandHandler.builder[key])
- })
- innerArgv = innerYargs._parseArgs(null, null, true, commandIndex)
- aliases = innerYargs.parsed.aliases
- }
-
- if (!yargs._hasOutput()) {
- positionalMap = populatePositionals(commandHandler, innerArgv, currentContext, yargs)
- }
-
- // we apply validation post-hoc, so that custom
- // checks get passed populated positional arguments.
- if (!yargs._hasOutput()) yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error)
-
- if (commandHandler.handler && !yargs._hasOutput()) {
- yargs._setHasOutput()
- commandHandler.handler(innerArgv)
- }
-
- if (command) currentContext.commands.pop()
- numFiles = currentContext.files.length - numFiles
- if (numFiles > 0) currentContext.files.splice(numFiles * -1, numFiles)
-
- return innerArgv
- }
-
- // transcribe all positional arguments "command <foo> <bar> [apple]"
- // onto argv.
- function populatePositionals (commandHandler, argv, context, yargs) {
- argv._ = argv._.slice(context.commands.length) // nuke the current commands
- var demanded = commandHandler.demanded.slice(0)
- var optional = commandHandler.optional.slice(0)
- var positionalMap = {}
-
- validation.positionalCount(demanded.length, argv._.length)
-
- while (demanded.length) {
- var demand = demanded.shift()
- populatePositional(demand, argv, yargs, positionalMap)
- }
-
- while (optional.length) {
- var maybe = optional.shift()
- populatePositional(maybe, argv, yargs, positionalMap)
- }
-
- argv._ = context.commands.concat(argv._)
- return positionalMap
- }
-
- // populate a single positional argument and its
- // aliases onto argv.
- function populatePositional (positional, argv, yargs, positionalMap) {
- // "positional" consists of the positional.cmd, an array representing
- // the positional's name and aliases, and positional.variadic
- // indicating whether or not it is a variadic array.
- var variadics = null
- var value = null
- for (var i = 0, cmd; (cmd = positional.cmd[i]) !== undefined; i++) {
- if (positional.variadic) {
- if (variadics) argv[cmd] = variadics.slice(0)
- else argv[cmd] = variadics = argv._.splice(0)
- } else {
- if (!value && !argv._.length) continue
- if (value) argv[cmd] = value
- else argv[cmd] = value = argv._.shift()
- }
- positionalMap[cmd] = true
- postProcessPositional(yargs, argv, cmd)
- addCamelCaseExpansions(argv, cmd)
- }
- }
-
- // TODO move positional arg logic to yargs-parser and remove this duplication
- function postProcessPositional (yargs, argv, key) {
- var coerce = yargs.getOptions().coerce[key]
- if (typeof coerce === 'function') {
- try {
- argv[key] = coerce(argv[key])
- } catch (err) {
- yargs.getUsageInstance().fail(err.message, err)
- }
- }
- }
-
- function addCamelCaseExpansions (argv, option) {
- if (/-/.test(option)) {
- const cc = camelCase(option)
- if (typeof argv[option] === 'object') argv[cc] = argv[option].slice(0)
- else argv[cc] = argv[option]
- }
- }
-
- self.reset = function () {
- handlers = {}
- aliasMap = {}
- defaultCommand = undefined
- return self
- }
-
- // used by yargs.parse() to freeze
- // the state of commands such that
- // we can apply .parse() multiple times
- // with the same yargs instance.
- var frozen
- self.freeze = function () {
- frozen = {}
- frozen.handlers = handlers
- frozen.aliasMap = aliasMap
- frozen.defaultCommand = defaultCommand
- }
- self.unfreeze = function () {
- handlers = frozen.handlers
- aliasMap = frozen.aliasMap
- defaultCommand = frozen.defaultCommand
- frozen = undefined
- }
-
- return self
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/completion.js b/node_modules/@iarna/cli/node_modules/yargs/lib/completion.js
deleted file mode 100644
index 5cd9a18a0..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/completion.js
+++ /dev/null
@@ -1,104 +0,0 @@
-const fs = require('fs')
-const path = require('path')
-
-// add bash completions to your
-// yargs-powered applications.
-module.exports = function (yargs, usage, command) {
- const self = {
- completionKey: 'get-yargs-completions'
- }
-
- // get a list of completion commands.
- // 'args' is the array of strings from the line to be completed
- self.getCompletion = function (args, done) {
- const completions = []
- const current = args.length ? args[args.length - 1] : ''
- const argv = yargs.parse(args, true)
- const aliases = yargs.parsed.aliases
-
- // a custom completion function can be provided
- // to completion().
- if (completionFunction) {
- if (completionFunction.length < 3) {
- var result = completionFunction(current, argv)
-
- // promise based completion function.
- if (typeof result.then === 'function') {
- return result.then(function (list) {
- process.nextTick(function () { done(list) })
- }).catch(function (err) {
- process.nextTick(function () { throw err })
- })
- }
-
- // synchronous completion function.
- return done(result)
- } else {
- // asynchronous completion function
- return completionFunction(current, argv, function (completions) {
- done(completions)
- })
- }
- }
-
- var handlers = command.getCommandHandlers()
- for (var i = 0, ii = args.length; i < ii; ++i) {
- if (handlers[args[i]] && handlers[args[i]].builder) {
- const builder = handlers[args[i]].builder
- if (typeof builder === 'function') {
- const y = yargs.reset()
- builder(y)
- return y.argv
- }
- }
- }
-
- if (!current.match(/^-/)) {
- usage.getCommands().forEach(function (command) {
- if (args.indexOf(command[0]) === -1) {
- completions.push(command[0])
- }
- })
- }
-
- if (current.match(/^-/)) {
- Object.keys(yargs.getOptions().key).forEach(function (key) {
- // If the key and its aliases aren't in 'args', add the key to 'completions'
- var keyAndAliases = [key].concat(aliases[key] || [])
- var notInArgs = keyAndAliases.every(function (val) {
- return args.indexOf('--' + val) === -1
- })
- if (notInArgs) {
- completions.push('--' + key)
- }
- })
- }
-
- done(completions)
- }
-
- // generate the completion script to add to your .bashrc.
- self.generateCompletionScript = function ($0) {
- var script = fs.readFileSync(
- path.resolve(__dirname, '../completion.sh.hbs'),
- 'utf-8'
- )
- var name = path.basename($0)
-
- // add ./to applications not yet installed as bin.
- if ($0.match(/\.js$/)) $0 = './' + $0
-
- script = script.replace(/{{app_name}}/g, name)
- return script.replace(/{{app_path}}/g, $0)
- }
-
- // register a function to perform your own custom
- // completions., this function can be either
- // synchrnous or asynchronous.
- var completionFunction = null
- self.registerFunction = function (fn) {
- completionFunction = fn
- }
-
- return self
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/levenshtein.js b/node_modules/@iarna/cli/node_modules/yargs/lib/levenshtein.js
deleted file mode 100644
index 6ec216f59..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/levenshtein.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright (c) 2011 Andrei Mackenzie
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// levenshtein distance algorithm, pulled from Andrei Mackenzie's MIT licensed.
-// gist, which can be found here: https://gist.github.com/andrei-m/982927
-
-// Compute the edit distance between the two given strings
-module.exports = function (a, b) {
- if (a.length === 0) return b.length
- if (b.length === 0) return a.length
-
- var matrix = []
-
- // increment along the first column of each row
- var i
- for (i = 0; i <= b.length; i++) {
- matrix[i] = [i]
- }
-
- // increment each column in the first row
- var j
- for (j = 0; j <= a.length; j++) {
- matrix[0][j] = j
- }
-
- // Fill in the rest of the matrix
- for (i = 1; i <= b.length; i++) {
- for (j = 1; j <= a.length; j++) {
- if (b.charAt(i - 1) === a.charAt(j - 1)) {
- matrix[i][j] = matrix[i - 1][j - 1]
- } else {
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
- Math.min(matrix[i][j - 1] + 1, // insertion
- matrix[i - 1][j] + 1)) // deletion
- }
- }
- }
-
- return matrix[b.length][a.length]
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/obj-filter.js b/node_modules/@iarna/cli/node_modules/yargs/lib/obj-filter.js
deleted file mode 100644
index 42cb9961e..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/obj-filter.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = function (original, filter) {
- const obj = {}
- filter = filter || function (k, v) { return true }
- Object.keys(original || {}).forEach(function (key) {
- if (filter(key, original[key])) {
- obj[key] = original[key]
- }
- })
- return obj
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/usage.js b/node_modules/@iarna/cli/node_modules/yargs/lib/usage.js
deleted file mode 100644
index 43f71225c..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/usage.js
+++ /dev/null
@@ -1,489 +0,0 @@
-// this file handles outputting usage instructions,
-// failures, etc. keeps logging in one place.
-const stringWidth = require('string-width')
-const objFilter = require('./obj-filter')
-const setBlocking = require('set-blocking')
-const YError = require('./yerror')
-
-module.exports = function (yargs, y18n) {
- const __ = y18n.__
- const self = {}
-
- // methods for ouputting/building failure message.
- var fails = []
- self.failFn = function (f) {
- fails.push(f)
- }
-
- var failMessage = null
- var showHelpOnFail = true
- self.showHelpOnFail = function (enabled, message) {
- if (typeof enabled === 'string') {
- message = enabled
- enabled = true
- } else if (typeof enabled === 'undefined') {
- enabled = true
- }
- failMessage = message
- showHelpOnFail = enabled
- return self
- }
-
- var failureOutput = false
- self.fail = function (msg, err) {
- const logger = yargs._getLoggerInstance()
-
- if (fails.length) {
- for (var i = fails.length - 1; i >= 0; --i) {
- fails[i](msg, err, self)
- }
- } else {
- if (yargs.getExitProcess()) setBlocking(true)
-
- // don't output failure message more than once
- if (!failureOutput) {
- failureOutput = true
- if (showHelpOnFail) yargs.showHelp('error')
- if (msg) logger.error(msg)
- if (failMessage) {
- if (msg) logger.error('')
- logger.error(failMessage)
- }
- }
-
- err = err || new YError(msg)
- if (yargs.getExitProcess()) {
- return yargs.exit(1)
- } else if (yargs._hasParseCallback()) {
- return yargs.exit(1, err)
- } else {
- throw err
- }
- }
- }
-
- // methods for ouputting/building help (usage) message.
- var usage
- self.usage = function (msg) {
- usage = msg
- }
- self.getUsage = function () {
- return usage
- }
-
- var examples = []
- self.example = function (cmd, description) {
- examples.push([cmd, description || ''])
- }
-
- var commands = []
- self.command = function (cmd, description, isDefault, aliases) {
- // the last default wins, so cancel out any previously set default
- if (isDefault) {
- commands = commands.map(function (cmdArray) {
- cmdArray[2] = false
- return cmdArray
- })
- }
- commands.push([cmd, description || '', isDefault, aliases])
- }
- self.getCommands = function () {
- return commands
- }
-
- var descriptions = {}
- self.describe = function (key, desc) {
- if (typeof key === 'object') {
- Object.keys(key).forEach(function (k) {
- self.describe(k, key[k])
- })
- } else {
- descriptions[key] = desc
- }
- }
- self.getDescriptions = function () {
- return descriptions
- }
-
- var epilog
- self.epilog = function (msg) {
- epilog = msg
- }
-
- var wrapSet = false
- var wrap
- self.wrap = function (cols) {
- wrapSet = true
- wrap = cols
- }
-
- function getWrap () {
- if (!wrapSet) {
- wrap = windowWidth()
- wrapSet = true
- }
-
- return wrap
- }
-
- var deferY18nLookupPrefix = '__yargsString__:'
- self.deferY18nLookup = function (str) {
- return deferY18nLookupPrefix + str
- }
-
- var defaultGroup = 'Options:'
- self.help = function () {
- normalizeAliases()
-
- // handle old demanded API
- var demandedOptions = yargs.getDemandedOptions()
- var demandedCommands = yargs.getDemandedCommands()
- var groups = yargs.getGroups()
- var options = yargs.getOptions()
- var keys = Object.keys(
- Object.keys(descriptions)
- .concat(Object.keys(demandedOptions))
- .concat(Object.keys(demandedCommands))
- .concat(Object.keys(options.default))
- .reduce(function (acc, key) {
- if (key !== '_') acc[key] = true
- return acc
- }, {})
- )
-
- var theWrap = getWrap()
- var ui = require('cliui')({
- width: theWrap,
- wrap: !!theWrap
- })
-
- // the usage string.
- if (usage) {
- var u = usage.replace(/\$0/g, yargs.$0)
- ui.div(u + '\n')
- }
-
- // your application's commands, i.e., non-option
- // arguments populated in '_'.
- if (commands.length) {
- ui.div(__('Commands:'))
-
- commands.forEach(function (command) {
- ui.span(
- {text: command[0], padding: [0, 2, 0, 2], width: maxWidth(commands, theWrap) + 4},
- {text: command[1]}
- )
- var hints = []
- if (command[2]) hints.push('[' + __('default:').slice(0, -1) + ']') // TODO hacking around i18n here
- if (command[3] && command[3].length) {
- hints.push('[' + __('aliases:') + ' ' + command[3].join(', ') + ']')
- }
- if (hints.length) {
- ui.div({text: hints.join(' '), padding: [0, 0, 0, 2], align: 'right'})
- } else {
- ui.div()
- }
- })
-
- ui.div()
- }
-
- // perform some cleanup on the keys array, making it
- // only include top-level keys not their aliases.
- var aliasKeys = (Object.keys(options.alias) || [])
- .concat(Object.keys(yargs.parsed.newAliases) || [])
-
- keys = keys.filter(function (key) {
- return !yargs.parsed.newAliases[key] && aliasKeys.every(function (alias) {
- return (options.alias[alias] || []).indexOf(key) === -1
- })
- })
-
- // populate 'Options:' group with any keys that have not
- // explicitly had a group set.
- if (!groups[defaultGroup]) groups[defaultGroup] = []
- addUngroupedKeys(keys, options.alias, groups)
-
- // display 'Options:' table along with any custom tables:
- Object.keys(groups).forEach(function (groupName) {
- if (!groups[groupName].length) return
-
- ui.div(__(groupName))
-
- // if we've grouped the key 'f', but 'f' aliases 'foobar',
- // normalizedKeys should contain only 'foobar'.
- var normalizedKeys = groups[groupName].map(function (key) {
- if (~aliasKeys.indexOf(key)) return key
- for (var i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) {
- if (~(options.alias[aliasKey] || []).indexOf(key)) return aliasKey
- }
- return key
- })
-
- // actually generate the switches string --foo, -f, --bar.
- var switches = normalizedKeys.reduce(function (acc, key) {
- acc[key] = [ key ].concat(options.alias[key] || [])
- .map(function (sw) {
- return (sw.length > 1 ? '--' : '-') + sw
- })
- .join(', ')
-
- return acc
- }, {})
-
- normalizedKeys.forEach(function (key) {
- var kswitch = switches[key]
- var desc = descriptions[key] || ''
- var type = null
-
- if (~desc.lastIndexOf(deferY18nLookupPrefix)) desc = __(desc.substring(deferY18nLookupPrefix.length))
-
- if (~options.boolean.indexOf(key)) type = '[' + __('boolean') + ']'
- if (~options.count.indexOf(key)) type = '[' + __('count') + ']'
- if (~options.string.indexOf(key)) type = '[' + __('string') + ']'
- if (~options.normalize.indexOf(key)) type = '[' + __('string') + ']'
- if (~options.array.indexOf(key)) type = '[' + __('array') + ']'
- if (~options.number.indexOf(key)) type = '[' + __('number') + ']'
-
- var extra = [
- type,
- (key in demandedOptions) ? '[' + __('required') + ']' : null,
- options.choices && options.choices[key] ? '[' + __('choices:') + ' ' +
- self.stringifiedValues(options.choices[key]) + ']' : null,
- defaultString(options.default[key], options.defaultDescription[key])
- ].filter(Boolean).join(' ')
-
- ui.span(
- {text: kswitch, padding: [0, 2, 0, 2], width: maxWidth(switches, theWrap) + 4},
- desc
- )
-
- if (extra) ui.div({text: extra, padding: [0, 0, 0, 2], align: 'right'})
- else ui.div()
- })
-
- ui.div()
- })
-
- // describe some common use-cases for your application.
- if (examples.length) {
- ui.div(__('Examples:'))
-
- examples.forEach(function (example) {
- example[0] = example[0].replace(/\$0/g, yargs.$0)
- })
-
- examples.forEach(function (example) {
- if (example[1] === '') {
- ui.div(
- {
- text: example[0],
- padding: [0, 2, 0, 2]
- }
- )
- } else {
- ui.div(
- {
- text: example[0],
- padding: [0, 2, 0, 2],
- width: maxWidth(examples, theWrap) + 4
- }, {
- text: example[1]
- }
- )
- }
- })
-
- ui.div()
- }
-
- // the usage string.
- if (epilog) {
- var e = epilog.replace(/\$0/g, yargs.$0)
- ui.div(e + '\n')
- }
-
- return ui.toString()
- }
-
- // return the maximum width of a string
- // in the left-hand column of a table.
- function maxWidth (table, theWrap) {
- var width = 0
-
- // table might be of the form [leftColumn],
- // or {key: leftColumn}
- if (!Array.isArray(table)) {
- table = Object.keys(table).map(function (key) {
- return [table[key]]
- })
- }
-
- table.forEach(function (v) {
- width = Math.max(stringWidth(v[0]), width)
- })
-
- // if we've enabled 'wrap' we should limit
- // the max-width of the left-column.
- if (theWrap) width = Math.min(width, parseInt(theWrap * 0.5, 10))
-
- return width
- }
-
- // make sure any options set for aliases,
- // are copied to the keys being aliased.
- function normalizeAliases () {
- // handle old demanded API
- var demandedOptions = yargs.getDemandedOptions()
- var options = yargs.getOptions()
-
- ;(Object.keys(options.alias) || []).forEach(function (key) {
- options.alias[key].forEach(function (alias) {
- // copy descriptions.
- if (descriptions[alias]) self.describe(key, descriptions[alias])
- // copy demanded.
- if (alias in demandedOptions) yargs.demandOption(key, demandedOptions[alias])
- // type messages.
- if (~options.boolean.indexOf(alias)) yargs.boolean(key)
- if (~options.count.indexOf(alias)) yargs.count(key)
- if (~options.string.indexOf(alias)) yargs.string(key)
- if (~options.normalize.indexOf(alias)) yargs.normalize(key)
- if (~options.array.indexOf(alias)) yargs.array(key)
- if (~options.number.indexOf(alias)) yargs.number(key)
- })
- })
- }
-
- // given a set of keys, place any keys that are
- // ungrouped under the 'Options:' grouping.
- function addUngroupedKeys (keys, aliases, groups) {
- var groupedKeys = []
- var toCheck = null
- Object.keys(groups).forEach(function (group) {
- groupedKeys = groupedKeys.concat(groups[group])
- })
-
- keys.forEach(function (key) {
- toCheck = [key].concat(aliases[key])
- if (!toCheck.some(function (k) {
- return groupedKeys.indexOf(k) !== -1
- })) {
- groups[defaultGroup].push(key)
- }
- })
- return groupedKeys
- }
-
- self.showHelp = function (level) {
- const logger = yargs._getLoggerInstance()
- if (!level) level = 'error'
- var emit = typeof level === 'function' ? level : logger[level]
- emit(self.help())
- }
-
- self.functionDescription = function (fn) {
- var description = fn.name ? require('decamelize')(fn.name, '-') : __('generated-value')
- return ['(', description, ')'].join('')
- }
-
- self.stringifiedValues = function (values, separator) {
- var string = ''
- var sep = separator || ', '
- var array = [].concat(values)
-
- if (!values || !array.length) return string
-
- array.forEach(function (value) {
- if (string.length) string += sep
- string += JSON.stringify(value)
- })
-
- return string
- }
-
- // format the default-value-string displayed in
- // the right-hand column.
- function defaultString (value, defaultDescription) {
- var string = '[' + __('default:') + ' '
-
- if (value === undefined && !defaultDescription) return null
-
- if (defaultDescription) {
- string += defaultDescription
- } else {
- switch (typeof value) {
- case 'string':
- string += JSON.stringify(value)
- break
- case 'object':
- string += JSON.stringify(value)
- break
- default:
- string += value
- }
- }
-
- return string + ']'
- }
-
- // guess the width of the console window, max-width 80.
- function windowWidth () {
- var maxWidth = 80
- if (typeof process === 'object' && process.stdout && process.stdout.columns) {
- return Math.min(maxWidth, process.stdout.columns)
- } else {
- return maxWidth
- }
- }
-
- // logic for displaying application version.
- var version = null
- self.version = function (ver) {
- version = ver
- }
-
- self.showVersion = function () {
- const logger = yargs._getLoggerInstance()
- if (typeof version === 'function') logger.log(version())
- else logger.log(version)
- }
-
- self.reset = function (localLookup) {
- // do not reset wrap here
- // do not reset fails here
- failMessage = null
- failureOutput = false
- usage = undefined
- epilog = undefined
- examples = []
- commands = []
- descriptions = objFilter(descriptions, function (k, v) {
- return !localLookup[k]
- })
- return self
- }
-
- var frozen
- self.freeze = function () {
- frozen = {}
- frozen.failMessage = failMessage
- frozen.failureOutput = failureOutput
- frozen.usage = usage
- frozen.epilog = epilog
- frozen.examples = examples
- frozen.commands = commands
- frozen.descriptions = descriptions
- }
- self.unfreeze = function () {
- failMessage = frozen.failMessage
- failureOutput = frozen.failureOutput
- usage = frozen.usage
- epilog = frozen.epilog
- examples = frozen.examples
- commands = frozen.commands
- descriptions = frozen.descriptions
- frozen = undefined
- }
-
- return self
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/validation.js b/node_modules/@iarna/cli/node_modules/yargs/lib/validation.js
deleted file mode 100644
index 2f9ff8e6c..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/validation.js
+++ /dev/null
@@ -1,364 +0,0 @@
-const objFilter = require('./obj-filter')
-const specialKeys = ['$0', '--', '_']
-
-// validation-type-stuff, missing params,
-// bad implications, custom checks.
-module.exports = function (yargs, usage, y18n) {
- const __ = y18n.__
- const __n = y18n.__n
- const self = {}
-
- // validate appropriate # of non-option
- // arguments were provided, i.e., '_'.
- self.nonOptionCount = function (argv) {
- const demandedCommands = yargs.getDemandedCommands()
- // don't count currently executing commands
- const _s = argv._.length - yargs.getContext().commands.length
-
- if (demandedCommands._ && (_s < demandedCommands._.min || _s > demandedCommands._.max)) {
- if (_s < demandedCommands._.min) {
- if (demandedCommands._.minMsg !== undefined) {
- usage.fail(
- // replace $0 with observed, $1 with expected.
- demandedCommands._.minMsg ? demandedCommands._.minMsg.replace(/\$0/g, _s).replace(/\$1/, demandedCommands._.min) : null
- )
- } else {
- usage.fail(
- __('Not enough non-option arguments: got %s, need at least %s', _s, demandedCommands._.min)
- )
- }
- } else if (_s > demandedCommands._.max) {
- if (demandedCommands._.maxMsg !== undefined) {
- usage.fail(
- // replace $0 with observed, $1 with expected.
- demandedCommands._.maxMsg ? demandedCommands._.maxMsg.replace(/\$0/g, _s).replace(/\$1/, demandedCommands._.max) : null
- )
- } else {
- usage.fail(
- __('Too many non-option arguments: got %s, maximum of %s', _s, demandedCommands._.max)
- )
- }
- }
- }
- }
-
- // validate the appropriate # of <required>
- // positional arguments were provided:
- self.positionalCount = function (required, observed) {
- if (observed < required) {
- usage.fail(
- __('Not enough non-option arguments: got %s, need at least %s', observed, required)
- )
- }
- }
-
- // make sure that any args that require an
- // value (--foo=bar), have a value.
- self.missingArgumentValue = function (argv) {
- const defaultValues = [true, false, '']
- const options = yargs.getOptions()
-
- if (options.requiresArg.length > 0) {
- const missingRequiredArgs = []
-
- options.requiresArg.forEach(function (key) {
- const value = argv[key]
-
- // if a value is explicitly requested,
- // flag argument as missing if it does not
- // look like foo=bar was entered.
- if (~defaultValues.indexOf(value) ||
- (Array.isArray(value) && !value.length)) {
- missingRequiredArgs.push(key)
- }
- })
-
- if (missingRequiredArgs.length > 0) {
- usage.fail(__n(
- 'Missing argument value: %s',
- 'Missing argument values: %s',
- missingRequiredArgs.length,
- missingRequiredArgs.join(', ')
- ))
- }
- }
- }
-
- // make sure all the required arguments are present.
- self.requiredArguments = function (argv) {
- const demandedOptions = yargs.getDemandedOptions()
- var missing = null
-
- Object.keys(demandedOptions).forEach(function (key) {
- if (!argv.hasOwnProperty(key) || typeof argv[key] === 'undefined') {
- missing = missing || {}
- missing[key] = demandedOptions[key]
- }
- })
-
- if (missing) {
- const customMsgs = []
- Object.keys(missing).forEach(function (key) {
- const msg = missing[key]
- if (msg && customMsgs.indexOf(msg) < 0) {
- customMsgs.push(msg)
- }
- })
-
- const customMsg = customMsgs.length ? '\n' + customMsgs.join('\n') : ''
-
- usage.fail(__n(
- 'Missing required argument: %s',
- 'Missing required arguments: %s',
- Object.keys(missing).length,
- Object.keys(missing).join(', ') + customMsg
- ))
- }
- }
-
- // check for unknown arguments (strict-mode).
- self.unknownArguments = function (argv, aliases, positionalMap) {
- const aliasLookup = {}
- const descriptions = usage.getDescriptions()
- const demandedOptions = yargs.getDemandedOptions()
- const commandKeys = yargs.getCommandInstance().getCommands()
- const unknown = []
- const currentContext = yargs.getContext()
-
- Object.keys(aliases).forEach(function (key) {
- aliases[key].forEach(function (alias) {
- aliasLookup[alias] = key
- })
- })
-
- Object.keys(argv).forEach(function (key) {
- if (specialKeys.indexOf(key) === -1 &&
- !descriptions.hasOwnProperty(key) &&
- !demandedOptions.hasOwnProperty(key) &&
- !positionalMap.hasOwnProperty(key) &&
- !yargs._getParseContext().hasOwnProperty(key) &&
- !aliasLookup.hasOwnProperty(key)) {
- unknown.push(key)
- }
- })
-
- if (commandKeys.length > 0) {
- argv._.slice(currentContext.commands.length).forEach(function (key) {
- if (commandKeys.indexOf(key) === -1) {
- unknown.push(key)
- }
- })
- }
-
- if (unknown.length > 0) {
- usage.fail(__n(
- 'Unknown argument: %s',
- 'Unknown arguments: %s',
- unknown.length,
- unknown.join(', ')
- ))
- }
- }
-
- // validate arguments limited to enumerated choices
- self.limitedChoices = function (argv) {
- const options = yargs.getOptions()
- const invalid = {}
-
- if (!Object.keys(options.choices).length) return
-
- Object.keys(argv).forEach(function (key) {
- if (specialKeys.indexOf(key) === -1 &&
- options.choices.hasOwnProperty(key)) {
- [].concat(argv[key]).forEach(function (value) {
- // TODO case-insensitive configurability
- if (options.choices[key].indexOf(value) === -1) {
- invalid[key] = (invalid[key] || []).concat(value)
- }
- })
- }
- })
-
- const invalidKeys = Object.keys(invalid)
-
- if (!invalidKeys.length) return
-
- var msg = __('Invalid values:')
- invalidKeys.forEach(function (key) {
- msg += '\n ' + __(
- 'Argument: %s, Given: %s, Choices: %s',
- key,
- usage.stringifiedValues(invalid[key]),
- usage.stringifiedValues(options.choices[key])
- )
- })
- usage.fail(msg)
- }
-
- // custom checks, added using the `check` option on yargs.
- var checks = []
- self.check = function (f, global) {
- checks.push({
- func: f,
- global: global
- })
- }
-
- self.customChecks = function (argv, aliases) {
- for (var i = 0, f; (f = checks[i]) !== undefined; i++) {
- var func = f.func
- var result = null
- try {
- result = func(argv, aliases)
- } catch (err) {
- usage.fail(err.message ? err.message : err, err)
- continue
- }
-
- if (!result) {
- usage.fail(__('Argument check failed: %s', func.toString()))
- } else if (typeof result === 'string' || result instanceof Error) {
- usage.fail(result.toString(), result)
- }
- }
- }
-
- // check implications, argument foo implies => argument bar.
- var implied = {}
- self.implies = function (key, value) {
- if (typeof key === 'object') {
- Object.keys(key).forEach(function (k) {
- self.implies(k, key[k])
- })
- } else {
- yargs.global(key)
- implied[key] = value
- }
- }
- self.getImplied = function () {
- return implied
- }
-
- self.implications = function (argv) {
- const implyFail = []
-
- Object.keys(implied).forEach(function (key) {
- var num
- const origKey = key
- var value = implied[key]
-
- // convert string '1' to number 1
- num = Number(key)
- key = isNaN(num) ? key : num
-
- if (typeof key === 'number') {
- // check length of argv._
- key = argv._.length >= key
- } else if (key.match(/^--no-.+/)) {
- // check if key doesn't exist
- key = key.match(/^--no-(.+)/)[1]
- key = !argv[key]
- } else {
- // check if key exists
- key = argv[key]
- }
-
- num = Number(value)
- value = isNaN(num) ? value : num
-
- if (typeof value === 'number') {
- value = argv._.length >= value
- } else if (value.match(/^--no-.+/)) {
- value = value.match(/^--no-(.+)/)[1]
- value = !argv[value]
- } else {
- value = argv[value]
- }
-
- if (key && !value) {
- implyFail.push(origKey)
- }
- })
-
- if (implyFail.length) {
- var msg = __('Implications failed:') + '\n'
-
- implyFail.forEach(function (key) {
- msg += (' ' + key + ' -> ' + implied[key])
- })
-
- usage.fail(msg)
- }
- }
-
- var conflicting = {}
- self.conflicts = function (key, value) {
- if (typeof key === 'object') {
- Object.keys(key).forEach(function (k) {
- self.conflicts(k, key[k])
- })
- } else {
- yargs.global(key)
- conflicting[key] = value
- }
- }
- self.getConflicting = function () {
- return conflicting
- }
-
- self.conflicting = function (argv) {
- var args = Object.getOwnPropertyNames(argv)
-
- args.forEach(function (arg) {
- if (conflicting[arg] && args.indexOf(conflicting[arg]) !== -1) {
- usage.fail(__('Arguments %s and %s are mutually exclusive', arg, conflicting[arg]))
- }
- })
- }
-
- self.recommendCommands = function (cmd, potentialCommands) {
- const distance = require('./levenshtein')
- const threshold = 3 // if it takes more than three edits, let's move on.
- potentialCommands = potentialCommands.sort(function (a, b) { return b.length - a.length })
-
- var recommended = null
- var bestDistance = Infinity
- for (var i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) {
- var d = distance(cmd, candidate)
- if (d <= threshold && d < bestDistance) {
- bestDistance = d
- recommended = candidate
- }
- }
- if (recommended) usage.fail(__('Did you mean %s?', recommended))
- }
-
- self.reset = function (localLookup) {
- implied = objFilter(implied, function (k, v) {
- return !localLookup[k]
- })
- conflicting = objFilter(conflicting, function (k, v) {
- return !localLookup[k]
- })
- checks = checks.filter(function (c) {
- return c.global
- })
- return self
- }
-
- var frozen
- self.freeze = function () {
- frozen = {}
- frozen.implied = implied
- frozen.checks = checks
- frozen.conflicting = conflicting
- }
- self.unfreeze = function () {
- implied = frozen.implied
- checks = frozen.checks
- conflicting = frozen.conflicting
- frozen = undefined
- }
-
- return self
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/lib/yerror.js b/node_modules/@iarna/cli/node_modules/yargs/lib/yerror.js
deleted file mode 100644
index ad96a8776..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/lib/yerror.js
+++ /dev/null
@@ -1,10 +0,0 @@
-function YError (msg) {
- this.name = 'YError'
- this.message = msg || 'yargs error'
- Error.captureStackTrace(this, YError)
-}
-
-YError.prototype = Object.create(Error.prototype)
-YError.prototype.constructor = YError
-
-module.exports = YError
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/be.json b/node_modules/@iarna/cli/node_modules/yargs/locales/be.json
deleted file mode 100644
index 141ebe1e1..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/be.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Каманды:",
- "Options:": "Опцыі:",
- "Examples:": "Прыклады:",
- "boolean": "булевы тып",
- "count": "падлік",
- "string": "радковы тып",
- "number": "лік",
- "array": "масіў",
- "required": "неабходна",
- "default:": "па змаўчанні:",
- "choices:": "магчымасці:",
- "aliases:": "аліасы:",
- "generated-value": "згенераванае значэнне",
- "Not enough non-option arguments: got %s, need at least %s": "Недастаткова неапцыйных аргументаў: ёсць %s, трэба як мінімум %s",
- "Too many non-option arguments: got %s, maximum of %s": "Занадта шмат неапцыйных аргументаў: ёсць %s, максімум дапушчальна %s",
- "Missing argument value: %s": {
- "one": "Не хапае значэння аргументу: %s",
- "other": "Не хапае значэнняў аргументаў: %s"
- },
- "Missing required argument: %s": {
- "one": "Не хапае неабходнага аргументу: %s",
- "other": "Не хапае неабходных аргументаў: %s"
- },
- "Unknown argument: %s": {
- "one": "Невядомы аргумент: %s",
- "other": "Невядомыя аргументы: %s"
- },
- "Invalid values:": "Несапраўдныя значэння:",
- "Argument: %s, Given: %s, Choices: %s": "Аргумент: %s, Дадзенае значэнне: %s, Магчымасці: %s",
- "Argument check failed: %s": "Праверка аргументаў не ўдалася: %s",
- "Implications failed:": "Дадзены аргумент патрабуе наступны дадатковы аргумент:",
- "Not enough arguments following: %s": "Недастаткова наступных аргументаў: %s",
- "Invalid JSON config file: %s": "Несапраўдны файл канфігурацыі JSON: %s",
- "Path to JSON config file": "Шлях да файла канфігурацыі JSON",
- "Show help": "Паказаць дапамогу",
- "Show version number": "Паказаць нумар версіі",
- "Did you mean %s?": "Вы мелі на ўвазе %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/de.json b/node_modules/@iarna/cli/node_modules/yargs/locales/de.json
deleted file mode 100644
index d805710b0..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/de.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Kommandos:",
- "Options:": "Optionen:",
- "Examples:": "Beispiele:",
- "boolean": "boolean",
- "count": "Zähler",
- "string": "string",
- "number": "Zahl",
- "array": "array",
- "required": "erforderlich",
- "default:": "Standard:",
- "choices:": "Möglichkeiten:",
- "aliases:": "Aliase:",
- "generated-value": "Generierter-Wert",
- "Not enough non-option arguments: got %s, need at least %s": "Nicht genügend Argumente ohne Optionen: %s vorhanden, mindestens %s benötigt",
- "Too many non-option arguments: got %s, maximum of %s": "Zu viele Argumente ohne Optionen: %s vorhanden, maximal %s erlaubt",
- "Missing argument value: %s": {
- "one": "Fehlender Argumentwert: %s",
- "other": "Fehlende Argumentwerte: %s"
- },
- "Missing required argument: %s": {
- "one": "Fehlendes Argument: %s",
- "other": "Fehlende Argumente: %s"
- },
- "Unknown argument: %s": {
- "one": "Unbekanntes Argument: %s",
- "other": "Unbekannte Argumente: %s"
- },
- "Invalid values:": "Unzulässige Werte:",
- "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gegeben: %s, Möglichkeiten: %s",
- "Argument check failed: %s": "Argumente-Check fehlgeschlagen: %s",
- "Implications failed:": "Implikationen fehlgeschlagen:",
- "Not enough arguments following: %s": "Nicht genügend Argumente nach: %s",
- "Invalid JSON config file: %s": "Fehlerhafte JSON-Config Datei: %s",
- "Path to JSON config file": "Pfad zur JSON-Config Datei",
- "Show help": "Hilfe anzeigen",
- "Show version number": "Version anzeigen",
- "Did you mean %s?": "Meintest du %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/en.json b/node_modules/@iarna/cli/node_modules/yargs/locales/en.json
deleted file mode 100644
index 4a618e705..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/en.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "Commands:": "Commands:",
- "Options:": "Options:",
- "Examples:": "Examples:",
- "boolean": "boolean",
- "count": "count",
- "string": "string",
- "number": "number",
- "array": "array",
- "required": "required",
- "default:": "default:",
- "choices:": "choices:",
- "aliases:": "aliases:",
- "generated-value": "generated-value",
- "Not enough non-option arguments: got %s, need at least %s": "Not enough non-option arguments: got %s, need at least %s",
- "Too many non-option arguments: got %s, maximum of %s": "Too many non-option arguments: got %s, maximum of %s",
- "Missing argument value: %s": {
- "one": "Missing argument value: %s",
- "other": "Missing argument values: %s"
- },
- "Missing required argument: %s": {
- "one": "Missing required argument: %s",
- "other": "Missing required arguments: %s"
- },
- "Unknown argument: %s": {
- "one": "Unknown argument: %s",
- "other": "Unknown arguments: %s"
- },
- "Invalid values:": "Invalid values:",
- "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Given: %s, Choices: %s",
- "Argument check failed: %s": "Argument check failed: %s",
- "Implications failed:": "Implications failed:",
- "Not enough arguments following: %s": "Not enough arguments following: %s",
- "Invalid JSON config file: %s": "Invalid JSON config file: %s",
- "Path to JSON config file": "Path to JSON config file",
- "Show help": "Show help",
- "Show version number": "Show version number",
- "Did you mean %s?": "Did you mean %s?",
- "Arguments %s and %s are mutually exclusive" : "Arguments %s and %s are mutually exclusive"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/es.json b/node_modules/@iarna/cli/node_modules/yargs/locales/es.json
deleted file mode 100644
index d7c8af9f8..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/es.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Comandos:",
- "Options:": "Opciones:",
- "Examples:": "Ejemplos:",
- "boolean": "booleano",
- "count": "cuenta",
- "string": "cadena de caracteres",
- "number": "número",
- "array": "tabla",
- "required": "requerido",
- "default:": "defecto:",
- "choices:": "selección:",
- "aliases:": "alias:",
- "generated-value": "valor-generado",
- "Not enough non-option arguments: got %s, need at least %s": "Hacen falta argumentos no-opcionales: Número recibido %s, necesita por lo menos %s",
- "Too many non-option arguments: got %s, maximum of %s": "Demasiados argumentos no-opcionales: Número recibido %s, máximo es %s",
- "Missing argument value: %s": {
- "one": "Falta argumento: %s",
- "other": "Faltan argumentos: %s"
- },
- "Missing required argument: %s": {
- "one": "Falta argumento requerido: %s",
- "other": "Faltan argumentos requeridos: %s"
- },
- "Unknown argument: %s": {
- "one": "Argumento desconocido: %s",
- "other": "Argumentos desconocidos: %s"
- },
- "Invalid values:": "Valores inválidos:",
- "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Recibido: %s, Seleccionados: %s",
- "Argument check failed: %s": "Verificación de argumento ha fallado: %s",
- "Implications failed:": "Implicaciones fallidas:",
- "Not enough arguments following: %s": "No hay suficientes argumentos después de: %s",
- "Invalid JSON config file: %s": "Archivo de configuración JSON inválido: %s",
- "Path to JSON config file": "Ruta al archivo de configuración JSON",
- "Show help": "Muestra ayuda",
- "Show version number": "Muestra número de versión",
- "Did you mean %s?": "Quisiste decir %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/fr.json b/node_modules/@iarna/cli/node_modules/yargs/locales/fr.json
deleted file mode 100644
index 481f47e37..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/fr.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "Commands:": "Commandes:",
- "Options:": "Options:",
- "Examples:": "Exemples:",
- "boolean": "booléen",
- "count": "comptage",
- "string": "chaine de caractère",
- "number": "nombre",
- "array": "tableau",
- "required": "requis",
- "default:": "défaut:",
- "choices:": "choix:",
- "generated-value": "valeur générée",
- "Not enough non-option arguments: got %s, need at least %s": "Pas assez d'arguments non-option: reçu %s, besoin d'au moins %s",
- "Too many non-option arguments: got %s, maximum of %s": "Trop d'arguments non-option: reçu %s, maximum %s",
- "Missing argument value: %s": {
- "one": "Argument manquant: %s",
- "other": "Arguments manquants: %s"
- },
- "Missing required argument: %s": {
- "one": "Argument requis manquant: %s",
- "other": "Arguments requis manquants: %s"
- },
- "Unknown argument: %s": {
- "one": "Argument inconnu: %s",
- "other": "Arguments inconnus: %s"
- },
- "Invalid values:": "Valeurs invalides:",
- "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Donné: %s, Choix: %s",
- "Argument check failed: %s": "Echec de la vérification de l'argument: %s",
- "Implications failed:": "Implications échouées:",
- "Not enough arguments following: %s": "Pas assez d'arguments suivant: %s",
- "Invalid JSON config file: %s": "Fichier de configuration JSON invalide: %s",
- "Path to JSON config file": "Chemin du fichier de configuration JSON",
- "Show help": "Affiche de l'aide",
- "Show version number": "Affiche le numéro de version"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/hi.json b/node_modules/@iarna/cli/node_modules/yargs/locales/hi.json
deleted file mode 100644
index 2a9826d96..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/hi.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "आदेश:",
- "Options:": "विकल्प:",
- "Examples:": "उदाहरण:",
- "boolean": "सत्यता",
- "count": "संख्या",
- "string": "वर्णों का तार ",
- "number": "अंक",
- "array": "सरणी",
- "required": "आवश्यक",
- "default:": "डिफॉल्ट:",
- "choices:": "विकल्प:",
- "aliases:": "उपनाम:",
- "generated-value": "उत्पन्न-मूल्य",
- "Not enough non-option arguments: got %s, need at least %s": "पर्याप्त गैर-विकल्प तर्क प्राप्त नहीं: %s प्राप्त, कम से कम %s की आवश्यकता है",
- "Too many non-option arguments: got %s, maximum of %s": "बहुत सारे गैर-विकल्प तर्क: %s प्राप्त, अधिकतम %s मान्य",
- "Missing argument value: %s": {
- "one": "कुछ तर्को के मूल्य गुम हैं: %s",
- "other": "कुछ तर्को के मूल्य गुम हैं: %s"
- },
- "Missing required argument: %s": {
- "one": "आवश्यक तर्क गुम हैं: %s",
- "other": "आवश्यक तर्क गुम हैं: %s"
- },
- "Unknown argument: %s": {
- "one": "अज्ञात तर्क प्राप्त: %s",
- "other": "अज्ञात तर्क प्राप्त: %s"
- },
- "Invalid values:": "अमान्य मूल्य:",
- "Argument: %s, Given: %s, Choices: %s": "तर्क: %s, प्राप्त: %s, विकल्प: %s",
- "Argument check failed: %s": "तर्क जांच विफल: %s",
- "Implications failed:": "दिए गए तर्क के लिए अतिरिक्त तर्क की अपेक्षा है:",
- "Not enough arguments following: %s": "निम्नलिखित के बाद पर्याप्त तर्क नहीं प्राप्त: %s",
- "Invalid JSON config file: %s": "अमान्य JSON config फाइल: %s",
- "Path to JSON config file": "JSON config फाइल का पथ",
- "Show help": "सहायता दिखाएँ",
- "Show version number": "Version संख्या दिखाएँ",
- "Did you mean %s?": "क्या आपका मतलब है %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/hu.json b/node_modules/@iarna/cli/node_modules/yargs/locales/hu.json
deleted file mode 100644
index 7b7d16606..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/hu.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Parancsok:",
- "Options:": "Opciók:",
- "Examples:": "Példák:",
- "boolean": "boolean",
- "count": "számláló",
- "string": "szöveg",
- "number": "szám",
- "array": "tömb",
- "required": "kötelező",
- "default:": "alapértelmezett:",
- "choices:": "lehetőségek:",
- "aliases:": "aliaszok:",
- "generated-value": "generált-érték",
- "Not enough non-option arguments: got %s, need at least %s": "Nincs elég nem opcionális argumentum: %s van, legalább %s kell",
- "Too many non-option arguments: got %s, maximum of %s": "Túl sok nem opciánlis argumentum van: %s van, maximum %s lehet",
- "Missing argument value: %s": {
- "one": "Hiányzó argumentum érték: %s",
- "other": "Hiányzó argumentum értékek: %s"
- },
- "Missing required argument: %s": {
- "one": "Hiányzó kötelező argumentum: %s",
- "other": "Hiányzó kötelező argumentumok: %s"
- },
- "Unknown argument: %s": {
- "one": "Ismeretlen argumentum: %s",
- "other": "Ismeretlen argumentumok: %s"
- },
- "Invalid values:": "Érvénytelen érték:",
- "Argument: %s, Given: %s, Choices: %s": "Argumentum: %s, Megadott: %s, Lehetőségek: %s",
- "Argument check failed: %s": "Argumentum ellenőrzés sikertelen: %s",
- "Implications failed:": "Implikációk sikertelenek:",
- "Not enough arguments following: %s": "Nem elég argumentum követi: %s",
- "Invalid JSON config file: %s": "Érvénytelen JSON konfigurációs file: %s",
- "Path to JSON config file": "JSON konfigurációs file helye",
- "Show help": "Súgo megjelenítése",
- "Show version number": "Verziószám megjelenítése",
- "Did you mean %s?": "Erre gondoltál %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/id.json b/node_modules/@iarna/cli/node_modules/yargs/locales/id.json
deleted file mode 100644
index a06e8608d..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/id.json
+++ /dev/null
@@ -1,40 +0,0 @@
-
-{
- "Commands:": "Perintah:",
- "Options:": "Pilihan:",
- "Examples:": "Contoh:",
- "boolean": "boolean",
- "count": "jumlah",
- "number": "nomor",
- "string": "string",
- "array": "larik",
- "required": "diperlukan",
- "default:": "bawaan:",
- "aliases:": "istilah lain:",
- "choices:": "pilihan:",
- "generated-value": "nilai-yang-dihasilkan",
- "Not enough non-option arguments: got %s, need at least %s": "Argumen wajib kurang: hanya %s, minimal %s",
- "Too many non-option arguments: got %s, maximum of %s": "Terlalu banyak argumen wajib: ada %s, maksimal %s",
- "Missing argument value: %s": {
- "one": "Kurang argumen: %s",
- "other": "Kurang argumen: %s"
- },
- "Missing required argument: %s": {
- "one": "Kurang argumen wajib: %s",
- "other": "Kurang argumen wajib: %s"
- },
- "Unknown argument: %s": {
- "one": "Argumen tak diketahui: %s",
- "other": "Argumen tak diketahui: %s"
- },
- "Invalid values:": "Nilai-nilai tidak valid:",
- "Argument: %s, Given: %s, Choices: %s": "Argumen: %s, Diberikan: %s, Pilihan: %s",
- "Argument check failed: %s": "Pemeriksaan argument gagal: %s",
- "Implications failed:": "Implikasi gagal:",
- "Not enough arguments following: %s": "Kurang argumen untuk: %s",
- "Invalid JSON config file: %s": "Berkas konfigurasi JSON tidak valid: %s",
- "Path to JSON config file": "Alamat berkas konfigurasi JSON",
- "Show help": "Lihat bantuan",
- "Show version number": "Lihat nomor versi",
- "Did you mean %s?": "Maksud Anda: %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/it.json b/node_modules/@iarna/cli/node_modules/yargs/locales/it.json
deleted file mode 100644
index f9eb3756e..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/it.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Comandi:",
- "Options:": "Opzioni:",
- "Examples:": "Esempi:",
- "boolean": "booleano",
- "count": "contatore",
- "string": "stringa",
- "number": "numero",
- "array": "vettore",
- "required": "richiesto",
- "default:": "predefinito:",
- "choices:": "scelte:",
- "aliases:": "alias:",
- "generated-value": "valore generato",
- "Not enough non-option arguments: got %s, need at least %s": "Numero insufficiente di argomenti non opzione: inseriti %s, richiesti almeno %s",
- "Too many non-option arguments: got %s, maximum of %s": "Troppi argomenti non opzione: inseriti %s, massimo possibile %s",
- "Missing argument value: %s": {
- "one": "Argomento mancante: %s",
- "other": "Argomenti mancanti: %s"
- },
- "Missing required argument: %s": {
- "one": "Argomento richiesto mancante: %s",
- "other": "Argomenti richiesti mancanti: %s"
- },
- "Unknown argument: %s": {
- "one": "Argomento sconosciuto: %s",
- "other": "Argomenti sconosciuti: %s"
- },
- "Invalid values:": "Valori non validi:",
- "Argument: %s, Given: %s, Choices: %s": "Argomento: %s, Richiesto: %s, Scelte: %s",
- "Argument check failed: %s": "Controllo dell'argomento fallito: %s",
- "Implications failed:": "Argomenti impliciti non soddisfatti:",
- "Not enough arguments following: %s": "Argomenti insufficienti dopo: %s",
- "Invalid JSON config file: %s": "File di configurazione JSON non valido: %s",
- "Path to JSON config file": "Percorso del file di configurazione JSON",
- "Show help": "Mostra la schermata di aiuto",
- "Show version number": "Mostra il numero di versione",
- "Did you mean %s?": "Intendi forse %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/ja.json b/node_modules/@iarna/cli/node_modules/yargs/locales/ja.json
deleted file mode 100644
index 45a64a812..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/ja.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "コマンド:",
- "Options:": "オプション:",
- "Examples:": "例:",
- "boolean": "真偽",
- "count": "カウント",
- "string": "文字列",
- "number": "数値",
- "array": "配列",
- "required": "必須",
- "default:": "デフォルト:",
- "choices:": "選択してください:",
- "aliases:": "エイリアス:",
- "generated-value": "生成された値",
- "Not enough non-option arguments: got %s, need at least %s": "オプションではない引数が %s 個では不足しています。少なくとも %s 個の引数が必要です:",
- "Too many non-option arguments: got %s, maximum of %s": "オプションではない引数が %s 個では多すぎます。最大で %s 個までです:",
- "Missing argument value: %s": {
- "one": "引数が見つかりません: %s",
- "other": "引数が見つかりません: %s"
- },
- "Missing required argument: %s": {
- "one": "必須の引数が見つかりません: %s",
- "other": "必須の引数が見つかりません: %s"
- },
- "Unknown argument: %s": {
- "one": "未知の引数です: %s",
- "other": "未知の引数です: %s"
- },
- "Invalid values:": "不正な値です:",
- "Argument: %s, Given: %s, Choices: %s": "引数は %s です。指定できるのは %s つです。選択してください: %s",
- "Argument check failed: %s": "引数のチェックに失敗しました: %s",
- "Implications failed:": "オプションの組み合わせで不正が生じました:",
- "Not enough arguments following: %s": "次の引数が不足しています。: %s",
- "Invalid JSON config file: %s": "JSONの設定ファイルが不正です: %s",
- "Path to JSON config file": "JSONの設定ファイルまでのpath",
- "Show help": "ヘルプを表示",
- "Show version number": "バージョンを表示",
- "Did you mean %s?": "もしかして %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/ko.json b/node_modules/@iarna/cli/node_modules/yargs/locales/ko.json
deleted file mode 100644
index e71498479..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/ko.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "명령:",
- "Options:": "옵션:",
- "Examples:": "예시:",
- "boolean": "여부",
- "count": "개수",
- "string": "문자열",
- "number": "숫자",
- "array": "배열",
- "required": "필수",
- "default:": "기본:",
- "choices:": "선택:",
- "aliases:": "별칭:",
- "generated-value": "생성된 값",
- "Not enough non-option arguments: got %s, need at least %s": "옵션이 아닌 인자가 충분치 않습니다: %s개를 받았지만, 적어도 %s개는 필요합니다",
- "Too many non-option arguments: got %s, maximum of %s": "옵션이 아닌 인자가 너무 많습니다: %s개를 받았지만, %s개 이하여야 합니다",
- "Missing argument value: %s": {
- "one": "인자값을 받지 못했습니다: %s",
- "other": "인자값들을 받지 못했습니다: %s"
- },
- "Missing required argument: %s": {
- "one": "필수 인자를 받지 못했습니다: %s",
- "other": "필수 인자들을 받지 못했습니다: %s"
- },
- "Unknown argument: %s": {
- "one": "알 수 없는 인자입니다: %s",
- "other": "알 수 없는 인자들입니다: %s"
- },
- "Invalid values:": "잘못된 값입니다:",
- "Argument: %s, Given: %s, Choices: %s": "인자: %s, 입력받은 값: %s, 선택지: %s",
- "Argument check failed: %s": "유효하지 않은 인자입니다: %s",
- "Implications failed:": "옵션의 조합이 잘못되었습니다:",
- "Not enough arguments following: %s": "인자가 충분하게 주어지지 않았습니다: %s",
- "Invalid JSON config file: %s": "유효하지 않은 JSON 설정파일입니다: %s",
- "Path to JSON config file": "JSON 설정파일 경로",
- "Show help": "도움말을 보여줍니다",
- "Show version number": "버전 넘버를 보여줍니다",
- "Did you mean %s?": "찾고계신게 %s입니까?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/nb.json b/node_modules/@iarna/cli/node_modules/yargs/locales/nb.json
deleted file mode 100644
index fc607fb1e..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/nb.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "Commands:": "Kommandoer:",
- "Options:": "Alternativer:",
- "Examples:": "Eksempler:",
- "boolean": "boolsk",
- "count": "antall",
- "string": "streng",
- "number": "nummer",
- "array": "matrise",
- "required": "obligatorisk",
- "default:": "standard:",
- "choices:": "valg:",
- "generated-value": "generert-verdi",
- "Not enough non-option arguments: got %s, need at least %s": "Ikke nok ikke-alternativ argumenter: fikk %s, trenger minst %s",
- "Too many non-option arguments: got %s, maximum of %s": "For mange ikke-alternativ argumenter: fikk %s, maksimum %s",
- "Missing argument value: %s": {
- "one": "Mangler argument verdi: %s",
- "other": "Mangler argument verdier: %s"
- },
- "Missing required argument: %s": {
- "one": "Mangler obligatorisk argument: %s",
- "other": "Mangler obligatoriske argumenter: %s"
- },
- "Unknown argument: %s": {
- "one": "Ukjent argument: %s",
- "other": "Ukjente argumenter: %s"
- },
- "Invalid values:": "Ugyldige verdier:",
- "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gitt: %s, Valg: %s",
- "Argument check failed: %s": "Argument sjekk mislyktes: %s",
- "Implications failed:": "Konsekvensene mislyktes:",
- "Not enough arguments following: %s": "Ikke nok følgende argumenter: %s",
- "Invalid JSON config file: %s": "Ugyldig JSON konfigurasjonsfil: %s",
- "Path to JSON config file": "Bane til JSON konfigurasjonsfil",
- "Show help": "Vis hjelp",
- "Show version number": "Vis versjonsnummer"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/nl.json b/node_modules/@iarna/cli/node_modules/yargs/locales/nl.json
deleted file mode 100644
index fc029dbeb..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/nl.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Opdrachten:",
- "Options:": "Opties:",
- "Examples:": "Voorbeelden:",
- "boolean": "boolean",
- "count": "aantal",
- "string": "text",
- "number": "nummer",
- "array": "lijst",
- "required": "verplicht",
- "default:": "standaard:",
- "choices:": "keuzes:",
- "aliases:": "aliassen:",
- "generated-value": "gegenereerde waarde",
- "Not enough non-option arguments: got %s, need at least %s": "Niet genoeg non-optie argumenten. Gekregen: %s, minstens nodig: %s",
- "Too many non-option arguments: got %s, maximum of %s": "Te veel non-optie argumenten. Gekregen: %s, maximum: %s",
- "Missing argument value: %s": {
- "one": "Missing argument value: %s",
- "other": "Missing argument values: %s"
- },
- "Missing required argument: %s": {
- "one": "Missend verplichte argument: %s",
- "other": "Missende verplichte argumenten: %s"
- },
- "Unknown argument: %s": {
- "one": "Onbekend argument: %s",
- "other": "Onbekende argumenten: %s"
- },
- "Invalid values:": "Ongeldige waardes:",
- "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gegeven: %s, Keuzes: %s",
- "Argument check failed: %s": "Argument check mislukt: %s",
- "Implications failed:": "Implicaties mislukt:",
- "Not enough arguments following: %s": "Niet genoeg argumenten na: %s",
- "Invalid JSON config file: %s": "Ongeldig JSON configuratiebestand: %s",
- "Path to JSON config file": "Pad naar JSON configuratiebestand",
- "Show help": "Toon help",
- "Show version number": "Toon versie nummer",
- "Did you mean %s?": "Bedoelde u misschien %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/pirate.json b/node_modules/@iarna/cli/node_modules/yargs/locales/pirate.json
deleted file mode 100644
index 1f4e19e65..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/pirate.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "Commands:": "Choose yer command:",
- "Options:": "Options for me hearties!",
- "Examples:": "Ex. marks the spot:",
- "required": "requi-yar-ed",
- "Missing required argument: %s": {
- "one": "Ye be havin' to set the followin' argument land lubber: %s",
- "other": "Ye be havin' to set the followin' arguments land lubber: %s"
- },
- "Show help": "Parlay this here code of conduct",
- "Show version number": "'Tis the version ye be askin' fer"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/pl.json b/node_modules/@iarna/cli/node_modules/yargs/locales/pl.json
deleted file mode 100644
index 1c834f693..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/pl.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Polecenia:",
- "Options:": "Opcje:",
- "Examples:": "Przykłady:",
- "boolean": "boolean",
- "count": "ilość",
- "string": "ciąg znaków",
- "number": "liczba",
- "array": "tablica",
- "required": "wymagany",
- "default:": "domyślny:",
- "choices:": "dostępne:",
- "aliases:": "aliasy:",
- "generated-value": "wygenerowana-wartość",
- "Not enough non-option arguments: got %s, need at least %s": "Niewystarczająca ilość argumentów: otrzymano %s, wymagane co najmniej %s",
- "Too many non-option arguments: got %s, maximum of %s": "Zbyt duża ilość argumentów: otrzymano %s, wymagane co najwyżej %s",
- "Missing argument value: %s": {
- "one": "Brak wartości dla argumentu: %s",
- "other": "Brak wartości dla argumentów: %s"
- },
- "Missing required argument: %s": {
- "one": "Brak wymaganego argumentu: %s",
- "other": "Brak wymaganych argumentów: %s"
- },
- "Unknown argument: %s": {
- "one": "Nieznany argument: %s",
- "other": "Nieznane argumenty: %s"
- },
- "Invalid values:": "Nieprawidłowe wartości:",
- "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Otrzymano: %s, Dostępne: %s",
- "Argument check failed: %s": "Weryfikacja argumentów nie powiodła się: %s",
- "Implications failed:": "Założenia nie zostały spełnione:",
- "Not enough arguments following: %s": "Niewystarczająca ilość argumentów następujących po: %s",
- "Invalid JSON config file: %s": "Nieprawidłowy plik konfiguracyjny JSON: %s",
- "Path to JSON config file": "Ścieżka do pliku konfiguracyjnego JSON",
- "Show help": "Pokaż pomoc",
- "Show version number": "Pokaż numer wersji",
- "Did you mean %s?": "Czy chodziło Ci o %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/pt.json b/node_modules/@iarna/cli/node_modules/yargs/locales/pt.json
deleted file mode 100644
index 75c3921c8..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/pt.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "Commands:": "Comandos:",
- "Options:": "Opções:",
- "Examples:": "Exemplos:",
- "boolean": "boolean",
- "count": "contagem",
- "string": "cadeia de caracteres",
- "number": "número",
- "array": "arranjo",
- "required": "requerido",
- "default:": "padrão:",
- "choices:": "escolhas:",
- "generated-value": "valor-gerado",
- "Not enough non-option arguments: got %s, need at least %s": "Argumentos insuficientes não opcionais: Argumento %s, necessário pelo menos %s",
- "Too many non-option arguments: got %s, maximum of %s": "Excesso de argumentos não opcionais: recebido %s, máximo de %s",
- "Missing argument value: %s": {
- "one": "Falta valor de argumento: %s",
- "other": "Falta valores de argumento: %s"
- },
- "Missing required argument: %s": {
- "one": "Falta argumento obrigatório: %s",
- "other": "Faltando argumentos obrigatórios: %s"
- },
- "Unknown argument: %s": {
- "one": "Argumento desconhecido: %s",
- "other": "Argumentos desconhecidos: %s"
- },
- "Invalid values:": "Valores inválidos:",
- "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Dado: %s, Escolhas: %s",
- "Argument check failed: %s": "Verificação de argumento falhou: %s",
- "Implications failed:": "Implicações falharam:",
- "Not enough arguments following: %s": "Insuficientes argumentos a seguir: %s",
- "Invalid JSON config file: %s": "Arquivo de configuração em JSON esta inválido: %s",
- "Path to JSON config file": "Caminho para o arquivo de configuração em JSON",
- "Show help": "Mostra ajuda",
- "Show version number": "Mostra número de versão",
- "Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/pt_BR.json b/node_modules/@iarna/cli/node_modules/yargs/locales/pt_BR.json
deleted file mode 100644
index 60e5ffa24..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/pt_BR.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "Commands:": "Comandos:",
- "Options:": "Opções:",
- "Examples:": "Exemplos:",
- "boolean": "boolean",
- "count": "contagem",
- "string": "string",
- "number": "número",
- "array": "array",
- "required": "obrigatório",
- "default:": "padrão:",
- "choices:": "opções:",
- "aliases:": "sinônimos:",
- "generated-value": "valor-gerado",
- "Not enough non-option arguments: got %s, need at least %s": "Argumentos insuficientes: Argumento %s, necessário pelo menos %s",
- "Too many non-option arguments: got %s, maximum of %s": "Excesso de argumentos: recebido %s, máximo de %s",
- "Missing argument value: %s": {
- "one": "Falta valor de argumento: %s",
- "other": "Falta valores de argumento: %s"
- },
- "Missing required argument: %s": {
- "one": "Falta argumento obrigatório: %s",
- "other": "Faltando argumentos obrigatórios: %s"
- },
- "Unknown argument: %s": {
- "one": "Argumento desconhecido: %s",
- "other": "Argumentos desconhecidos: %s"
- },
- "Invalid values:": "Valores inválidos:",
- "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Dado: %s, Opções: %s",
- "Argument check failed: %s": "Verificação de argumento falhou: %s",
- "Implications failed:": "Implicações falharam:",
- "Not enough arguments following: %s": "Argumentos insuficientes a seguir: %s",
- "Invalid JSON config file: %s": "Arquivo JSON de configuração inválido: %s",
- "Path to JSON config file": "Caminho para o arquivo JSON de configuração",
- "Show help": "Exibe ajuda",
- "Show version number": "Exibe a versão",
- "Did you mean %s?": "Você quis dizer %s?",
- "Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/ru.json b/node_modules/@iarna/cli/node_modules/yargs/locales/ru.json
deleted file mode 100644
index cb7b88b49..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/ru.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Команды:",
- "Options:": "Опции:",
- "Examples:": "Примеры:",
- "boolean": "булевый тип",
- "count": "подсчет",
- "string": "строковой тип",
- "number": "число",
- "array": "массив",
- "required": "необходимо",
- "default:": "по умолчанию:",
- "choices:": "возможности:",
- "aliases:": "алиасы:",
- "generated-value": "генерированное значение",
- "Not enough non-option arguments: got %s, need at least %s": "Недостаточно неопционных аргументов: есть %s, нужно как минимум %s",
- "Too many non-option arguments: got %s, maximum of %s": "Слишком много неопционных аргументов: есть %s, максимум допустимо %s",
- "Missing argument value: %s": {
- "one": "Не хватает значения аргумента: %s",
- "other": "Не хватает значений аргументов: %s"
- },
- "Missing required argument: %s": {
- "one": "Не хватает необходимого аргумента: %s",
- "other": "Не хватает необходимых аргументов: %s"
- },
- "Unknown argument: %s": {
- "one": "Неизвестный аргумент: %s",
- "other": "Неизвестные аргументы: %s"
- },
- "Invalid values:": "Недействительные значения:",
- "Argument: %s, Given: %s, Choices: %s": "Аргумент: %s, Данное значение: %s, Возможности: %s",
- "Argument check failed: %s": "Проверка аргументов не удалась: %s",
- "Implications failed:": "Данный аргумент требует следующий дополнительный аргумент:",
- "Not enough arguments following: %s": "Недостаточно следующих аргументов: %s",
- "Invalid JSON config file: %s": "Недействительный файл конфигурации JSON: %s",
- "Path to JSON config file": "Путь к файлу конфигурации JSON",
- "Show help": "Показать помощь",
- "Show version number": "Показать номер версии",
- "Did you mean %s?": "Вы имели в виду %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/th.json b/node_modules/@iarna/cli/node_modules/yargs/locales/th.json
deleted file mode 100644
index 3f08dcd23..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/th.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "คอมมาน",
- "Options:": "ออฟชั่น",
- "Examples:": "ตัวอย่าง",
- "boolean": "บูลีน",
- "count": "นับ",
- "string": "สตริง",
- "number": "ตัวเลข",
- "array": "อาเรย์",
- "required": "จำเป็น",
- "default:": "ค่าเริ่มต้น",
- "choices:": "ตัวเลือก",
- "aliases:": "เอเลียส",
- "generated-value": "ค่าที่ถูกสร้างขึ้น",
- "Not enough non-option arguments: got %s, need at least %s": "ใส่อาร์กิวเมนต์ไม่ครบตามจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการอย่างน้อย %s ค่า",
- "Too many non-option arguments: got %s, maximum of %s": "ใส่อาร์กิวเมนต์เกินจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการมากที่สุด %s ค่า",
- "Missing argument value: %s": {
- "one": "ค่าอาร์กิวเมนต์ที่ขาดไป: %s",
- "other": "ค่าอาร์กิวเมนต์ที่ขาดไป: %s"
- },
- "Missing required argument: %s": {
- "one": "อาร์กิวเมนต์จำเป็นที่ขาดไป: %s",
- "other": "อาร์กิวเมนต์จำเป็นที่ขาดไป: %s"
- },
- "Unknown argument: %s": {
- "one": "อาร์กิวเมนต์ที่ไม่รู้จัก: %s",
- "other": "อาร์กิวเมนต์ที่ไม่รู้จัก: %s"
- },
- "Invalid values:": "ค่าไม่ถูกต้อง:",
- "Argument: %s, Given: %s, Choices: %s": "อาร์กิวเมนต์: %s, ได้รับ: %s, ตัวเลือก: %s",
- "Argument check failed: %s": "ตรวจสอบพบอาร์กิวเมนต์ที่ไม่ถูกต้อง: %s",
- "Implications failed:": "Implications ไม่สำเร็จ:",
- "Not enough arguments following: %s": "ใส่อาร์กิวเมนต์ไม่ครบ: %s",
- "Invalid JSON config file: %s": "ไฟล์คอนฟิค JSON ไม่ถูกต้อง: %s",
- "Path to JSON config file": "พาทไฟล์คอนฟิค JSON",
- "Show help": "ขอความช่วยเหลือ",
- "Show version number": "แสดงตัวเลขเวอร์ชั่น",
- "Did you mean %s?": "คุณหมายถึง %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/tr.json b/node_modules/@iarna/cli/node_modules/yargs/locales/tr.json
deleted file mode 100644
index 000060b91..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/tr.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Commands:": "Komutlar:",
- "Options:": "Seçenekler:",
- "Examples:": "Örnekler:",
- "boolean": "boolean",
- "count": "sayı",
- "string": "string",
- "number": "numara",
- "array": "array",
- "required": "zorunlu",
- "default:": "varsayılan:",
- "choices:": "seçimler:",
- "aliases:": "takma adlar:",
- "generated-value": "oluşturulan-değer",
- "Not enough non-option arguments: got %s, need at least %s": "Seçenek dışı argümanlar yetersiz: %s bulundu, %s gerekli",
- "Too many non-option arguments: got %s, maximum of %s": "Seçenek dışı argümanlar gereğinden fazla: %s bulundu, azami %s",
- "Missing argument value: %s": {
- "one": "Eksik argüman değeri: %s",
- "other": "Eksik argüman değerleri: %s"
- },
- "Missing required argument: %s": {
- "one": "Eksik zorunlu argüman: %s",
- "other": "Eksik zorunlu argümanlar: %s"
- },
- "Unknown argument: %s": {
- "one": "Bilinmeyen argüman: %s",
- "other": "Bilinmeyen argümanlar: %s"
- },
- "Invalid values:": "Geçersiz değerler:",
- "Argument: %s, Given: %s, Choices: %s": "Argüman: %s, Verilen: %s, Seçimler: %s",
- "Argument check failed: %s": "Argüman kontrolü başarısız oldu: %s",
- "Implications failed:": "Sonuçlar başarısız oldu:",
- "Not enough arguments following: %s": "%s için yeterli argüman bulunamadı",
- "Invalid JSON config file: %s": "Geçersiz JSON yapılandırma dosyası: %s",
- "Path to JSON config file": "JSON yapılandırma dosya konumu",
- "Show help": "Yardım detaylarını göster",
- "Show version number": "Versiyon detaylarını göster",
- "Did you mean %s?": "Bunu mu demek istediniz: %s?"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/zh_CN.json b/node_modules/@iarna/cli/node_modules/yargs/locales/zh_CN.json
deleted file mode 100644
index b25c7b9d2..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/zh_CN.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "Commands:": "命令:",
- "Options:": "选项:",
- "Examples:": "示例:",
- "boolean": "布尔",
- "count": "计数",
- "string": "字符串",
- "number": "数字",
- "array": "数组",
- "required": "必需",
- "default:": "默认值:",
- "choices:": "可选值:",
- "generated-value": "生成的值",
- "Not enough non-option arguments: got %s, need at least %s": "缺少 non-option 参数:传入了 %s 个, 至少需要 %s 个",
- "Too many non-option arguments: got %s, maximum of %s": "non-option 参数过多:传入了 %s 个, 最大允许 %s 个",
- "Missing argument value: %s": {
- "one": "没有给此选项指定值:%s",
- "other": "没有给这些选项指定值:%s"
- },
- "Missing required argument: %s": {
- "one": "缺少必须的选项:%s",
- "other": "缺少这些必须的选项:%s"
- },
- "Unknown argument: %s": {
- "one": "无法识别的选项:%s",
- "other": "无法识别这些选项:%s"
- },
- "Invalid values:": "无效的选项值:",
- "Argument: %s, Given: %s, Choices: %s": "选项名称: %s, 传入的值: %s, 可选的值:%s",
- "Argument check failed: %s": "选项值验证失败:%s",
- "Implications failed:": "缺少依赖的选项:",
- "Not enough arguments following: %s": "没有提供足够的值给此选项:%s",
- "Invalid JSON config file: %s": "无效的 JSON 配置文件:%s",
- "Path to JSON config file": "JSON 配置文件的路径",
- "Show help": "显示帮助信息",
- "Show version number": "显示版本号"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/locales/zh_TW.json b/node_modules/@iarna/cli/node_modules/yargs/locales/zh_TW.json
deleted file mode 100644
index 12498888a..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/locales/zh_TW.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "Commands:": "命令:",
- "Options:": "選項:",
- "Examples:": "例:",
- "boolean": "布林",
- "count": "次數",
- "string": "字串",
- "number": "數字",
- "array": "陣列",
- "required": "必須",
- "default:": "預設值:",
- "choices:": "可選值:",
- "aliases:": "別名:",
- "generated-value": "生成的值",
- "Not enough non-option arguments: got %s, need at least %s": "non-option 引數不足:只傳入了 %s 個, 至少要 %s 個",
- "Too many non-option arguments: got %s, maximum of %s": "non-option 引數過多:傳入了 %s 個, 但最多 %s 個",
- "Missing argument value: %s": {
- "one": "此引數無指定值:%s",
- "other": "這些引數無指定值:%s"
- },
- "Missing required argument: %s": {
- "one": "缺少必須的引數:%s",
- "other": "缺少這些必須的引數:%s"
- },
- "Unknown argument: %s": {
- "one": "未知的引數:%s",
- "other": "未知的這些引數:%s"
- },
- "Invalid values:": "無效的選項值:",
- "Argument: %s, Given: %s, Choices: %s": "引數名稱: %s, 傳入的值: %s, 可選的值:%s",
- "Argument check failed: %s": "引數驗證失敗:%s",
- "Implications failed:": "缺少依賴的選項:",
- "Not enough arguments following: %s": "沒有提供足夠的值給此引數:%s",
- "Invalid JSON config file: %s": "無效的 JSON 設置文件:%s",
- "Path to JSON config file": "JSON 設置文件的路徑",
- "Show help": "顯示說明",
- "Show version number": "顯示版本",
- "Did you mean %s?": "是指 %s?",
- "Arguments %s and %s are mutually exclusive" : "引數 %s 和 %s 是互斥的"
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/package.json b/node_modules/@iarna/cli/node_modules/yargs/package.json
deleted file mode 100644
index c9a799f7a..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/package.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "name": "yargs",
- "version": "8.0.2",
- "description": "yargs the modern, pirate-themed, successor to optimist.",
- "main": "./index.js",
- "files": [
- "index.js",
- "yargs.js",
- "lib",
- "locales",
- "completion.sh.hbs",
- "LICENSE"
- ],
- "dependencies": {
- "camelcase": "^4.1.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "read-pkg-up": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^7.0.0"
- },
- "devDependencies": {
- "chai": "^3.4.1",
- "chalk": "^1.1.3",
- "coveralls": "^2.11.11",
- "cpr": "^2.0.0",
- "cross-spawn": "^5.0.1",
- "es6-promise": "^4.0.2",
- "hashish": "0.0.4",
- "mocha": "^3.0.1",
- "nyc": "^10.3.0",
- "rimraf": "^2.5.0",
- "standard": "^8.6.0",
- "standard-version": "^4.2.0",
- "which": "^1.2.9",
- "yargs-test-extends": "^1.0.1"
- },
- "scripts": {
- "pretest": "standard",
- "test": "nyc --cache mocha --require ./test/before.js --timeout=8000 --check-leaks",
- "coverage": "nyc report --reporter=text-lcov | coveralls",
- "release": "standard-version"
- },
- "repository": {
- "type": "git",
- "url": "http://github.com/yargs/yargs.git"
- },
- "homepage": "http://yargs.js.org/",
- "standard": {
- "ignore": [
- "**/example/**"
- ]
- },
- "keywords": [
- "argument",
- "args",
- "option",
- "parser",
- "parsing",
- "cli",
- "command"
- ],
- "license": "MIT",
- "engine": {
- "node": ">=0.10"
- }
-}
diff --git a/node_modules/@iarna/cli/node_modules/yargs/yargs.js b/node_modules/@iarna/cli/node_modules/yargs/yargs.js
deleted file mode 100644
index 078bf8f14..000000000
--- a/node_modules/@iarna/cli/node_modules/yargs/yargs.js
+++ /dev/null
@@ -1,1127 +0,0 @@
-const argsert = require('./lib/argsert')
-const assign = require('./lib/assign')
-const Command = require('./lib/command')
-const Completion = require('./lib/completion')
-const Parser = require('yargs-parser')
-const path = require('path')
-const Usage = require('./lib/usage')
-const Validation = require('./lib/validation')
-const Y18n = require('y18n')
-const objFilter = require('./lib/obj-filter')
-const setBlocking = require('set-blocking')
-const applyExtends = require('./lib/apply-extends')
-const YError = require('./lib/yerror')
-
-var exports = module.exports = Yargs
-function Yargs (processArgs, cwd, parentRequire) {
- processArgs = processArgs || [] // handle calling yargs().
-
- const self = {}
- var command = null
- var completion = null
- var groups = {}
- var output = ''
- var preservedGroups = {}
- var usage = null
- var validation = null
-
- const y18n = Y18n({
- directory: path.resolve(__dirname, './locales'),
- updateFiles: false
- })
-
- if (!cwd) cwd = process.cwd()
-
- self.$0 = process.argv
- .slice(0, 2)
- .map(function (x, i) {
- // ignore the node bin, specify this in your
- // bin file with #!/usr/bin/env node
- if (i === 0 && /\b(node|iojs)(\.exe)?$/.test(x)) return
- var b = rebase(cwd, x)
- return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x
- })
- .join(' ').trim()
-
- if (process.env._ !== undefined && process.argv[1] === process.env._) {
- self.$0 = process.env._.replace(
- path.dirname(process.execPath) + '/', ''
- )
- }
-
- // use context object to keep track of resets, subcommand execution, etc
- // submodules should modify and check the state of context as necessary
- const context = { resets: -1, commands: [], files: [] }
- self.getContext = function () {
- return context
- }
-
- // puts yargs back into an initial state. any keys
- // that have been set to "global" will not be reset
- // by this action.
- var options
- self.resetOptions = self.reset = function (aliases) {
- context.resets++
- aliases = aliases || {}
- options = options || {}
- // put yargs back into an initial state, this
- // logic is used to build a nested command
- // hierarchy.
- var tmpOptions = {}
- tmpOptions.local = options.local ? options.local : []
- tmpOptions.configObjects = options.configObjects ? options.configObjects : []
-
- // if a key has been explicitly set as local,
- // we should reset it before passing options to command.
- var localLookup = {}
- tmpOptions.local.forEach(function (l) {
- localLookup[l] = true
- ;(aliases[l] || []).forEach(function (a) {
- localLookup[a] = true
- })
- })
-
- // preserve all groups not set to local.
- preservedGroups = Object.keys(groups).reduce(function (acc, groupName) {
- var keys = groups[groupName].filter(function (key) {
- return !(key in localLookup)
- })
- if (keys.length > 0) {
- acc[groupName] = keys
- }
- return acc
- }, {})
- // groups can now be reset
- groups = {}
-
- var arrayOptions = [
- 'array', 'boolean', 'string', 'requiresArg', 'skipValidation',
- 'count', 'normalize', 'number'
- ]
-
- var objectOptions = [
- 'narg', 'key', 'alias', 'default', 'defaultDescription',
- 'config', 'choices', 'demandedOptions', 'demandedCommands', 'coerce'
- ]
-
- arrayOptions.forEach(function (k) {
- tmpOptions[k] = (options[k] || []).filter(function (k) {
- return !localLookup[k]
- })
- })
-
- objectOptions.forEach(function (k) {
- tmpOptions[k] = objFilter(options[k], function (k, v) {
- return !localLookup[k]
- })
- })
-
- tmpOptions.envPrefix = options.envPrefix
- options = tmpOptions
-
- // if this is the first time being executed, create
- // instances of all our helpers -- otherwise just reset.
- usage = usage ? usage.reset(localLookup) : Usage(self, y18n)
- validation = validation ? validation.reset(localLookup) : Validation(self, usage, y18n)
- command = command ? command.reset() : Command(self, usage, validation)
- if (!completion) completion = Completion(self, usage, command)
-
- completionCommand = null
- output = ''
- exitError = null
- hasOutput = false
- self.parsed = false
-
- return self
- }
- self.resetOptions()
-
- // temporary hack: allow "freezing" of reset-able state for parse(msg, cb)
- var frozen
- function freeze () {
- frozen = {}
- frozen.options = options
- frozen.configObjects = options.configObjects.slice(0)
- frozen.exitProcess = exitProcess
- frozen.groups = groups
- usage.freeze()
- validation.freeze()
- command.freeze()
- frozen.strict = strict
- frozen.completionCommand = completionCommand
- frozen.output = output
- frozen.exitError = exitError
- frozen.hasOutput = hasOutput
- frozen.parsed = self.parsed
- }
- function unfreeze () {
- options = frozen.options
- options.configObjects = frozen.configObjects
- exitProcess = frozen.exitProcess
- groups = frozen.groups
- output = frozen.output
- exitError = frozen.exitError
- hasOutput = frozen.hasOutput
- self.parsed = frozen.parsed
- usage.unfreeze()
- validation.unfreeze()
- command.unfreeze()
- strict = frozen.strict
- completionCommand = frozen.completionCommand
- parseFn = null
- parseContext = null
- frozen = undefined
- }
-
- self.boolean = function (keys) {
- argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('boolean', keys)
- return self
- }
-
- self.array = function (keys) {
- argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('array', keys)
- return self
- }
-
- self.number = function (keys) {
- argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('number', keys)
- return self
- }
-
- self.normalize = function (keys) {
- argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('normalize', keys)
- return self
- }
-
- self.count = function (keys) {
- argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('count', keys)
- return self
- }
-
- self.string = function (keys) {
- argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('string', keys)
- return self
- }
-
- self.requiresArg = function (keys) {
- argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('requiresArg', keys)
- return self
- }
-
- self.skipValidation = function (keys) {
- argsert('<array|string>', [keys], arguments.length)
- populateParserHintArray('skipValidation', keys)
- return self
- }
-
- function populateParserHintArray (type, keys, value) {
- keys = [].concat(keys)
- keys.forEach(function (key) {
- options[type].push(key)
- })
- }
-
- self.nargs = function (key, value) {
- argsert('<string|object|array> [number]', [key, value], arguments.length)
- populateParserHintObject(self.nargs, false, 'narg', key, value)
- return self
- }
-
- self.choices = function (key, value) {
- argsert('<object|string|array> [string|array]', [key, value], arguments.length)
- populateParserHintObject(self.choices, true, 'choices', key, value)
- return self
- }
-
- self.alias = function (key, value) {
- argsert('<object|string|array> [string|array]', [key, value], arguments.length)
- populateParserHintObject(self.alias, true, 'alias', key, value)
- return self
- }
-
- // TODO: actually deprecate self.defaults.
- self.default = self.defaults = function (key, value, defaultDescription) {
- argsert('<object|string|array> [*] [string]', [key, value, defaultDescription], arguments.length)
- if (defaultDescription) options.defaultDescription[key] = defaultDescription
- if (typeof value === 'function') {
- if (!options.defaultDescription[key]) options.defaultDescription[key] = usage.functionDescription(value)
- value = value.call()
- }
- populateParserHintObject(self.default, false, 'default', key, value)
- return self
- }
-
- self.describe = function (key, desc) {
- argsert('<object|string|array> [string]', [key, desc], arguments.length)
- populateParserHintObject(self.describe, false, 'key', key, true)
- usage.describe(key, desc)
- return self
- }
-
- self.demandOption = function (keys, msg) {
- argsert('<object|string|array> [string]', [keys, msg], arguments.length)
- populateParserHintObject(self.demandOption, false, 'demandedOptions', keys, msg)
- return self
- }
-
- self.coerce = function (keys, value) {
- argsert('<object|string|array> [function]', [keys, value], arguments.length)
- populateParserHintObject(self.coerce, false, 'coerce', keys, value)
- return self
- }
-
- function populateParserHintObject (builder, isArray, type, key, value) {
- if (Array.isArray(key)) {
- // an array of keys with one value ['x', 'y', 'z'], function parse () {}
- var temp = {}
- key.forEach(function (k) {
- temp[k] = value
- })
- builder(temp)
- } else if (typeof key === 'object') {
- // an object of key value pairs: {'x': parse () {}, 'y': parse() {}}
- Object.keys(key).forEach(function (k) {
- builder(k, key[k])
- })
- } else {
- // a single key value pair 'x', parse() {}
- if (isArray) {
- options[type][key] = (options[type][key] || []).concat(value)
- } else {
- options[type][key] = value
- }
- }
- }
-
- self.config = function (key, msg, parseFn) {
- argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length)
- // allow a config object to be provided directly.
- if (typeof key === 'object') {
- key = applyExtends(key, cwd)
- options.configObjects = (options.configObjects || []).concat(key)
- return self
- }
-
- // allow for a custom parsing function.
- if (typeof msg === 'function') {
- parseFn = msg
- msg = null
- }
-
- key = key || 'config'
- self.describe(key, msg || usage.deferY18nLookup('Path to JSON config file'))
- ;(Array.isArray(key) ? key : [key]).forEach(function (k) {
- options.config[k] = parseFn || true
- })
-
- return self
- }
-
- self.example = function (cmd, description) {
- argsert('<string> [string]', [cmd, description], arguments.length)
- usage.example(cmd, description)
- return self
- }
-
- self.command = function (cmd, description, builder, handler) {
- argsert('<string|array|object> [string|boolean] [function|object] [function]', [cmd, description, builder, handler], arguments.length)
- command.addHandler(cmd, description, builder, handler)
- return self
- }
-
- self.commandDir = function (dir, opts) {
- argsert('<string> [object]', [dir, opts], arguments.length)
- const req = parentRequire || require
- command.addDirectory(dir, self.getContext(), req, require('get-caller-file')(), opts)
- return self
- }
-
- // TODO: deprecate self.demand in favor of
- // .demandCommand() .demandOption().
- self.demand = self.required = self.require = function (keys, max, msg) {
- // you can optionally provide a 'max' key,
- // which will raise an exception if too many '_'
- // options are provided.
- if (Array.isArray(max)) {
- max.forEach(function (key) {
- self.demandOption(key, msg)
- })
- max = Infinity
- } else if (typeof max !== 'number') {
- msg = max
- max = Infinity
- }
-
- if (typeof keys === 'number') {
- self.demandCommand(keys, max, msg, msg)
- } else if (Array.isArray(keys)) {
- keys.forEach(function (key) {
- self.demandOption(key, msg)
- })
- } else {
- if (typeof msg === 'string') {
- self.demandOption(keys, msg)
- } else if (msg === true || typeof msg === 'undefined') {
- self.demandOption(keys)
- }
- }
-
- return self
- }
-
- self.demandCommand = function (min, max, minMsg, maxMsg) {
- argsert('[number] [number|string] [string|null] [string|null]', [min, max, minMsg, maxMsg], arguments.length)
-
- if (typeof min === 'undefined') min = 1
-
- if (typeof max !== 'number') {
- minMsg = max
- max = Infinity
- }
-
- self.global('_', false)
-
- options.demandedCommands._ = {
- min: min,
- max: max,
- minMsg: minMsg,
- maxMsg: maxMsg
- }
-
- return self
- }
-
- self.getDemandedOptions = function () {
- argsert([], 0)
- return options.demandedOptions
- }
-
- self.getDemandedCommands = function () {
- argsert([], 0)
- return options.demandedCommands
- }
-
- self.implies = function (key, value) {
- argsert('<string|object> [string]', [key, value], arguments.length)
- validation.implies(key, value)
- return self
- }
-
- self.conflicts = function (key1, key2) {
- argsert('<string|object> [string]', [key1, key2], arguments.length)
- validation.conflicts(key1, key2)
- return self
- }
-
- self.usage = function (msg, opts) {
- argsert('<string|null|object> [object]', [msg, opts], arguments.length)
-
- if (!opts && typeof msg === 'object') {
- opts = msg
- msg = null
- }
-
- usage.usage(msg)
-
- if (opts) self.options(opts)
-
- return self
- }
-
- self.epilogue = self.epilog = function (msg) {
- argsert('<string>', [msg], arguments.length)
- usage.epilog(msg)
- return self
- }
-
- self.fail = function (f) {
- argsert('<function>', [f], arguments.length)
- usage.failFn(f)
- return self
- }
-
- self.check = function (f, _global) {
- argsert('<function> [boolean]', [f, _global], arguments.length)
- validation.check(f, _global !== false)
- return self
- }
-
- self.global = function (globals, global) {
- argsert('<string|array> [boolean]', [globals, global], arguments.length)
- globals = [].concat(globals)
- if (global !== false) {
- options.local = options.local.filter(function (l) {
- return globals.indexOf(l) === -1
- })
- } else {
- globals.forEach(function (g) {
- if (options.local.indexOf(g) === -1) options.local.push(g)
- })
- }
- return self
- }
-
- self.pkgConf = function (key, path) {
- argsert('<string> [string]', [key, path], arguments.length)
- var conf = null
- // prefer cwd to require-main-filename in this method
- // since we're looking for e.g. "nyc" config in nyc consumer
- // rather than "yargs" config in nyc (where nyc is the main filename)
- var obj = pkgUp(path || cwd)
-
- // If an object exists in the key, add it to options.configObjects
- if (obj[key] && typeof obj[key] === 'object') {
- conf = applyExtends(obj[key], path || cwd)
- options.configObjects = (options.configObjects || []).concat(conf)
- }
-
- return self
- }
-
- var pkgs = {}
- function pkgUp (path) {
- var npath = path || '*'
- if (pkgs[npath]) return pkgs[npath]
- const readPkgUp = require('read-pkg-up')
-
- var obj = {}
- try {
- obj = readPkgUp.sync({
- cwd: path || require('require-main-filename')(parentRequire || require),
- normalize: false
- })
- } catch (noop) {}
-
- pkgs[npath] = obj.pkg || {}
- return pkgs[npath]
- }
-
- var parseFn = null
- var parseContext = null
- self.parse = function (args, shortCircuit, _parseFn) {
- argsert('<string|array> [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length)
-
- // a context object can optionally be provided, this allows
- // additional information to be passed to a command handler.
- if (typeof shortCircuit === 'object') {
- parseContext = shortCircuit
- shortCircuit = _parseFn
- }
-
- // by providing a function as a second argument to
- // parse you can capture output that would otherwise
- // default to printing to stdout/stderr.
- if (typeof shortCircuit === 'function') {
- parseFn = shortCircuit
- shortCircuit = null
- }
- // completion short-circuits the parsing process,
- // skipping validation, etc.
- if (!shortCircuit) processArgs = args
-
- freeze()
- if (parseFn) exitProcess = false
-
- var parsed = self._parseArgs(args, shortCircuit)
- if (parseFn) parseFn(exitError, parsed, output)
- unfreeze()
-
- return parsed
- }
-
- self._getParseContext = function () {
- return parseContext || {}
- }
-
- self._hasParseCallback = function () {
- return !!parseFn
- }
-
- self.option = self.options = function (key, opt) {
- argsert('<string|object> [object]', [key, opt], arguments.length)
- if (typeof key === 'object') {
- Object.keys(key).forEach(function (k) {
- self.options(k, key[k])
- })
- } else {
- if (typeof opt !== 'object') {
- opt = {}
- }
-
- options.key[key] = true // track manually set keys.
-
- if (opt.alias) self.alias(key, opt.alias)
-
- var demand = opt.demand || opt.required || opt.require
-
- // deprecated, use 'demandOption' instead
- if (demand) {
- self.demand(key, demand)
- }
-
- if (opt.demandOption) {
- self.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined)
- }
-
- if ('config' in opt) {
- self.config(key, opt.configParser)
- }
-
- if ('conflicts' in opt) {
- self.conflicts(key, opt.conflicts)
- }
-
- if ('default' in opt) {
- self.default(key, opt.default)
- }
-
- if ('implies' in opt) {
- self.implies(key, opt.implies)
- }
-
- if ('nargs' in opt) {
- self.nargs(key, opt.nargs)
- }
-
- if ('normalize' in opt) {
- self.normalize(key)
- }
-
- if ('choices' in opt) {
- self.choices(key, opt.choices)
- }
-
- if ('coerce' in opt) {
- self.coerce(key, opt.coerce)
- }
-
- if ('group' in opt) {
- self.group(key, opt.group)
- }
-
- if (opt.boolean || opt.type === 'boolean') {
- self.boolean(key)
- if (opt.alias) self.boolean(opt.alias)
- }
-
- if (opt.array || opt.type === 'array') {
- self.array(key)
- if (opt.alias) self.array(opt.alias)
- }
-
- if (opt.number || opt.type === 'number') {
- self.number(key)
- if (opt.alias) self.number(opt.alias)
- }
-
- if (opt.string || opt.type === 'string') {
- self.string(key)
- if (opt.alias) self.string(opt.alias)
- }
-
- if (opt.count || opt.type === 'count') {
- self.count(key)
- }
-
- if (typeof opt.global === 'boolean') {
- self.global(key, opt.global)
- }
-
- if (opt.defaultDescription) {
- options.defaultDescription[key] = opt.defaultDescription
- }
-
- if (opt.skipValidation) {
- self.skipValidation(key)
- }
-
- var desc = opt.describe || opt.description || opt.desc
- if (desc) {
- self.describe(key, desc)
- }
-
- if (opt.requiresArg) {
- self.requiresArg(key)
- }
- }
-
- return self
- }
- self.getOptions = function () {
- return options
- }
-
- self.group = function (opts, groupName) {
- argsert('<string|array> <string>', [opts, groupName], arguments.length)
- var existing = preservedGroups[groupName] || groups[groupName]
- if (preservedGroups[groupName]) {
- // we now only need to track this group name in groups.
- delete preservedGroups[groupName]
- }
-
- var seen = {}
- groups[groupName] = (existing || []).concat(opts).filter(function (key) {
- if (seen[key]) return false
- return (seen[key] = true)
- })
- return self
- }
- self.getGroups = function () {
- // combine explicit and preserved groups. explicit groups should be first
- return assign(groups, preservedGroups)
- }
-
- // as long as options.envPrefix is not undefined,
- // parser will apply env vars matching prefix to argv
- self.env = function (prefix) {
- argsert('[string|boolean]', [prefix], arguments.length)
- if (prefix === false) options.envPrefix = undefined
- else options.envPrefix = prefix || ''
- return self
- }
-
- self.wrap = function (cols) {
- argsert('<number|null>', [cols], arguments.length)
- usage.wrap(cols)
- return self
- }
-
- var strict = false
- self.strict = function (enabled) {
- argsert('[boolean]', [enabled], arguments.length)
- strict = enabled !== false
- return self
- }
- self.getStrict = function () {
- return strict
- }
-
- self.showHelp = function (level) {
- argsert('[string|function]', [level], arguments.length)
- if (!self.parsed) self._parseArgs(processArgs) // run parser, if it has not already been executed.
- usage.showHelp(level)
- return self
- }
-
- var versionOpt = null
- self.version = function (opt, msg, ver) {
- argsert('[string|function] [string|function] [string]', [opt, msg, ver], arguments.length)
- if (arguments.length === 0) {
- ver = guessVersion()
- opt = 'version'
- } else if (arguments.length === 1) {
- ver = opt
- opt = 'version'
- } else if (arguments.length === 2) {
- ver = msg
- msg = null
- }
-
- versionOpt = opt
- msg = msg || usage.deferY18nLookup('Show version number')
-
- usage.version(ver || undefined)
- self.boolean(versionOpt)
- self.describe(versionOpt, msg)
- return self
- }
-
- function guessVersion () {
- var obj = pkgUp()
-
- return obj.version || 'unknown'
- }
-
- var helpOpt = null
- var useHelpOptAsCommand = false // a call to .help() will enable this
- self.addHelpOpt = self.help = function (opt, msg, addImplicitCmd) {
- argsert('[string|boolean] [string|boolean] [boolean]', [opt, msg, addImplicitCmd], arguments.length)
-
- // argument shuffle
- if (arguments.length === 0) {
- useHelpOptAsCommand = true
- } else if (arguments.length === 1) {
- if (typeof opt === 'boolean') {
- useHelpOptAsCommand = opt
- opt = null
- } else {
- useHelpOptAsCommand = true
- }
- } else if (arguments.length === 2) {
- if (typeof msg === 'boolean') {
- useHelpOptAsCommand = msg
- msg = null
- } else {
- useHelpOptAsCommand = true
- }
- } else {
- useHelpOptAsCommand = Boolean(addImplicitCmd)
- }
- // use arguments, fallback to defaults for opt and msg
- helpOpt = opt || 'help'
- self.boolean(helpOpt)
- self.describe(helpOpt, msg || usage.deferY18nLookup('Show help'))
- return self
- }
-
- self.showHelpOnFail = function (enabled, message) {
- argsert('[boolean|string] [string]', [enabled, message], arguments.length)
- usage.showHelpOnFail(enabled, message)
- return self
- }
-
- var exitProcess = true
- self.exitProcess = function (enabled) {
- argsert('[boolean]', [enabled], arguments.length)
- if (typeof enabled !== 'boolean') {
- enabled = true
- }
- exitProcess = enabled
- return self
- }
- self.getExitProcess = function () {
- return exitProcess
- }
-
- var completionCommand = null
- self.completion = function (cmd, desc, fn) {
- argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length)
-
- // a function to execute when generating
- // completions can be provided as the second
- // or third argument to completion.
- if (typeof desc === 'function') {
- fn = desc
- desc = null
- }
-
- // register the completion command.
- completionCommand = cmd || 'completion'
- if (!desc && desc !== false) {
- desc = 'generate bash completion script'
- }
- self.command(completionCommand, desc)
-
- // a function can be provided
- if (fn) completion.registerFunction(fn)
-
- return self
- }
-
- self.showCompletionScript = function ($0) {
- argsert('[string]', [$0], arguments.length)
- $0 = $0 || self.$0
- _logger.log(completion.generateCompletionScript($0))
- return self
- }
-
- self.getCompletion = function (args, done) {
- argsert('<array> <function>', [args, done], arguments.length)
- completion.getCompletion(args, done)
- }
-
- self.locale = function (locale) {
- argsert('[string]', [locale], arguments.length)
- if (arguments.length === 0) {
- guessLocale()
- return y18n.getLocale()
- }
- detectLocale = false
- y18n.setLocale(locale)
- return self
- }
-
- self.updateStrings = self.updateLocale = function (obj) {
- argsert('<object>', [obj], arguments.length)
- detectLocale = false
- y18n.updateLocale(obj)
- return self
- }
-
- var detectLocale = true
- self.detectLocale = function (detect) {
- argsert('<boolean>', [detect], arguments.length)
- detectLocale = detect
- return self
- }
- self.getDetectLocale = function () {
- return detectLocale
- }
-
- var hasOutput = false
- var exitError = null
- // maybe exit, always capture
- // context about why we wanted to exit.
- self.exit = function (code, err) {
- hasOutput = true
- exitError = err
- if (exitProcess) process.exit(code)
- }
-
- // we use a custom logger that buffers output,
- // so that we can print to non-CLIs, e.g., chat-bots.
- var _logger = {
- log: function () {
- const args = []
- for (var i = 0; i < arguments.length; i++) args.push(arguments[i])
- if (!self._hasParseCallback()) console.log.apply(console, args)
- hasOutput = true
- if (output.length) output += '\n'
- output += args.join(' ')
- },
- error: function () {
- const args = []
- for (var i = 0; i < arguments.length; i++) args.push(arguments[i])
- if (!self._hasParseCallback()) console.error.apply(console, args)
- hasOutput = true
- if (output.length) output += '\n'
- output += args.join(' ')
- }
- }
- self._getLoggerInstance = function () {
- return _logger
- }
- // has yargs output an error our help
- // message in the current execution context.
- self._hasOutput = function () {
- return hasOutput
- }
-
- self._setHasOutput = function () {
- hasOutput = true
- }
-
- var recommendCommands
- self.recommendCommands = function (recommend) {
- argsert('[boolean]', [recommend], arguments.length)
- recommendCommands = typeof recommend === 'boolean' ? recommend : true
- return self
- }
-
- self.getUsageInstance = function () {
- return usage
- }
-
- self.getValidationInstance = function () {
- return validation
- }
-
- self.getCommandInstance = function () {
- return command
- }
-
- self.terminalWidth = function () {
- argsert([], 0)
- return typeof process.stdout.columns !== 'undefined' ? process.stdout.columns : null
- }
-
- Object.defineProperty(self, 'argv', {
- get: function () {
- return self._parseArgs(processArgs)
- },
- enumerable: true
- })
-
- self._parseArgs = function (args, shortCircuit, _skipValidation, commandIndex) {
- var skipValidation = !!_skipValidation
- args = args || processArgs
-
- options.__ = y18n.__
- options.configuration = pkgUp()['yargs'] || {}
- const parsed = Parser.detailed(args, options)
- var argv = parsed.argv
- if (parseContext) argv = assign(argv, parseContext)
- var aliases = parsed.aliases
-
- argv.$0 = self.$0
- self.parsed = parsed
-
- try {
- guessLocale() // guess locale lazily, so that it can be turned off in chain.
-
- // while building up the argv object, there
- // are two passes through the parser. If completion
- // is being performed short-circuit on the first pass.
- if (shortCircuit) {
- return argv
- }
-
- if (argv._.length) {
- // check for helpOpt in argv._ before running commands
- // assumes helpOpt must be valid if useHelpOptAsCommand is true
- if (useHelpOptAsCommand) {
- // consider any multi-char helpOpt alias as a valid help command
- // unless all helpOpt aliases are single-char
- // note that parsed.aliases is a normalized bidirectional map :)
- var helpCmds = [helpOpt].concat(aliases[helpOpt] || [])
- var multiCharHelpCmds = helpCmds.filter(function (k) {
- return k.length > 1
- })
- if (multiCharHelpCmds.length) helpCmds = multiCharHelpCmds
- // look for and strip any helpCmds from argv._
- argv._ = argv._.filter(function (cmd) {
- if (~helpCmds.indexOf(cmd)) {
- argv[helpOpt] = true
- return false
- }
- return true
- })
- }
-
- // if there's a handler associated with a
- // command defer processing to it.
- var handlerKeys = command.getCommands()
- if (handlerKeys.length) {
- var firstUnknownCommand
- for (var i = (commandIndex || 0), cmd; argv._[i] !== undefined; i++) {
- cmd = String(argv._[i])
- if (~handlerKeys.indexOf(cmd) && cmd !== completionCommand) {
- setPlaceholderKeys(argv)
- // commands are executed using a recursive algorithm that executes
- // the deepest command first; we keep track of the position in the
- // argv._ array that is currently being executed.
- return command.runCommand(cmd, self, parsed, i + 1)
- } else if (!firstUnknownCommand && cmd !== completionCommand) {
- firstUnknownCommand = cmd
- break
- }
- }
-
- // run the default command, if defined
- if (command.hasDefaultCommand() && !argv[helpOpt]) {
- setPlaceholderKeys(argv)
- return command.runCommand(null, self, parsed)
- }
-
- // recommend a command if recommendCommands() has
- // been enabled, and no commands were found to execute
- if (recommendCommands && firstUnknownCommand && !argv[helpOpt]) {
- validation.recommendCommands(firstUnknownCommand, handlerKeys)
- }
- }
-
- // generate a completion script for adding to ~/.bashrc.
- if (completionCommand && ~argv._.indexOf(completionCommand) && !argv[completion.completionKey]) {
- if (exitProcess) setBlocking(true)
- self.showCompletionScript()
- self.exit(0)
- }
- } else if (command.hasDefaultCommand() && !argv[helpOpt]) {
- setPlaceholderKeys(argv)
- return command.runCommand(null, self, parsed)
- }
-
- // we must run completions first, a user might
- // want to complete the --help or --version option.
- if (completion.completionKey in argv) {
- if (exitProcess) setBlocking(true)
-
- // we allow for asynchronous completions,
- // e.g., loading in a list of commands from an API.
- var completionArgs = args.slice(args.indexOf('--' + completion.completionKey) + 1)
- completion.getCompletion(completionArgs, function (completions) {
- ;(completions || []).forEach(function (completion) {
- _logger.log(completion)
- })
-
- self.exit(0)
- })
- return setPlaceholderKeys(argv)
- }
-
- // Handle 'help' and 'version' options
- // if we haven't already output help!
- if (!hasOutput) {
- Object.keys(argv).forEach(function (key) {
- if (key === helpOpt && argv[key]) {
- if (exitProcess) setBlocking(true)
-
- skipValidation = true
- self.showHelp('log')
- self.exit(0)
- } else if (key === versionOpt && argv[key]) {
- if (exitProcess) setBlocking(true)
-
- skipValidation = true
- usage.showVersion()
- self.exit(0)
- }
- })
- }
-
- // Check if any of the options to skip validation were provided
- if (!skipValidation && options.skipValidation.length > 0) {
- skipValidation = Object.keys(argv).some(function (key) {
- return options.skipValidation.indexOf(key) >= 0 && argv[key] === true
- })
- }
-
- // If the help or version options where used and exitProcess is false,
- // or if explicitly skipped, we won't run validations.
- if (!skipValidation) {
- if (parsed.error) throw new YError(parsed.error.message)
-
- // if we're executed via bash completion, don't
- // bother with validation.
- if (!argv[completion.completionKey]) {
- self._runValidation(argv, aliases, {}, parsed.error)
- }
- }
- } catch (err) {
- if (err instanceof YError) usage.fail(err.message, err)
- else throw err
- }
-
- return setPlaceholderKeys(argv)
- }
-
- self._runValidation = function (argv, aliases, positionalMap, parseErrors) {
- if (parseErrors) throw new YError(parseErrors.message)
- validation.nonOptionCount(argv)
- validation.missingArgumentValue(argv)
- validation.requiredArguments(argv)
- if (strict) validation.unknownArguments(argv, aliases, positionalMap)
- validation.customChecks(argv, aliases)
- validation.limitedChoices(argv)
- validation.implications(argv)
- validation.conflicting(argv)
- }
-
- function guessLocale () {
- if (!detectLocale) return
-
- try {
- const osLocale = require('os-locale')
- self.locale(osLocale.sync({ spawn: false }))
- } catch (err) {
- // if we explode looking up locale just noop
- // we'll keep using the default language 'en'.
- }
- }
-
- function setPlaceholderKeys (argv) {
- Object.keys(options.key).forEach(function (key) {
- // don't set placeholder keys for dot
- // notation options 'foo.bar'.
- if (~key.indexOf('.')) return
- if (typeof argv[key] === 'undefined') argv[key] = undefined
- })
- return argv
- }
-
- return self
-}
-
-// rebase an absolute path to a relative one with respect to a base directory
-// exported for tests
-exports.rebase = rebase
-function rebase (base, dir) {
- return path.relative(base, dir)
-}
diff --git a/node_modules/@iarna/cli/package.json b/node_modules/@iarna/cli/package.json
deleted file mode 100644
index edd4d1408..000000000
--- a/node_modules/@iarna/cli/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "@iarna/cli",
- "version": "1.2.0",
- "description": "Some simple CLI scaffolding for promise returning applications.",
- "main": "app.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Rebecca Turner <me@re-becca.org> (http://re-becca.org/)",
- "license": "ISC",
- "dependencies": {
- "signal-exit": "^3.0.2",
- "update-notifier": "^2.2.0",
- "yargs": "^8.0.2"
- },
- "files": [
- "app.js"
- ],
- "devDependencies": {},
- "repository": {
- "type": "git",
- "url": "git+https://github.com/iarna/cli.git"
- },
- "bugs": {
- "url": "https://github.com/iarna/cli/issues"
- },
- "homepage": "https://github.com/iarna/cli#readme"
-}
diff --git a/node_modules/JSONStream/.travis.yml b/node_modules/JSONStream/.travis.yml
deleted file mode 100644
index 5f30bb5bd..000000000
--- a/node_modules/JSONStream/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - 4
- - 5
- - 6
-sudo: false
-
-
diff --git a/node_modules/JSONStream/LICENSE.APACHE2 b/node_modules/JSONStream/LICENSE.APACHE2
deleted file mode 100644
index 6366c0471..000000000
--- a/node_modules/JSONStream/LICENSE.APACHE2
+++ /dev/null
@@ -1,15 +0,0 @@
-Apache License, Version 2.0
-
-Copyright (c) 2011 Dominic Tarr
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/node_modules/JSONStream/LICENSE.MIT b/node_modules/JSONStream/LICENSE.MIT
deleted file mode 100644
index 6eafbd734..000000000
--- a/node_modules/JSONStream/LICENSE.MIT
+++ /dev/null
@@ -1,24 +0,0 @@
-The MIT License
-
-Copyright (c) 2011 Dominic Tarr
-
-Permission is hereby granted, free of charge,
-to any person obtaining a copy of this software and
-associated documentation files (the "Software"), to
-deal in the Software without restriction, including
-without limitation the rights to use, copy, modify,
-merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom
-the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/JSONStream/bin.js b/node_modules/JSONStream/bin.js
deleted file mode 100755
index af2b6ac6c..000000000
--- a/node_modules/JSONStream/bin.js
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /usr/bin/env node
-
-var JSONStream = require('./')
-
-if(!module.parent && process.title !== 'browser') {
- process.stdin
- .pipe(JSONStream.parse(process.argv[2]))
- .pipe(JSONStream.stringify('[', ',\n', ']\n', 2))
- .pipe(process.stdout)
-}
-
-
diff --git a/node_modules/JSONStream/examples/all_docs.js b/node_modules/JSONStream/examples/all_docs.js
deleted file mode 100644
index fa87fe52d..000000000
--- a/node_modules/JSONStream/examples/all_docs.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var request = require('request')
- , JSONStream = require('JSONStream')
- , es = require('event-stream')
-
-var parser = JSONStream.parse(['rows', true]) //emit parts that match this path (any element of the rows array)
- , req = request({url: 'http://isaacs.couchone.com/registry/_all_docs'})
- , logger = es.mapSync(function (data) { //create a stream that logs to stderr,
- console.error(data)
- return data
- })
-
-req.pipe(parser)
-parser.pipe(logger)
diff --git a/node_modules/JSONStream/index.js b/node_modules/JSONStream/index.js
deleted file mode 100755
index f4ed901f9..000000000
--- a/node_modules/JSONStream/index.js
+++ /dev/null
@@ -1,247 +0,0 @@
-'use strict'
-
-var Parser = require('jsonparse')
- , through = require('through')
-
-var bufferFrom = Buffer.from && Buffer.from !== Uint8Array.from
-
-/*
-
- the value of this.stack that creationix's jsonparse has is weird.
-
- it makes this code ugly, but his problem is way harder that mine,
- so i'll forgive him.
-
-*/
-
-exports.parse = function (path, map) {
- var header, footer
- var parser = new Parser()
- var stream = through(function (chunk) {
- if('string' === typeof chunk)
- chunk = bufferFrom ? Buffer.from(chunk) : new Buffer(chunk)
- parser.write(chunk)
- },
- function (data) {
- if(data)
- stream.write(data)
- if (header)
- stream.emit('header', header)
- if (footer)
- stream.emit('footer', footer)
- stream.queue(null)
- })
-
- if('string' === typeof path)
- path = path.split('.').map(function (e) {
- if (e === '$*')
- return {emitKey: true}
- else if (e === '*')
- return true
- else if (e === '') // '..'.split('.') returns an empty string
- return {recurse: true}
- else
- return e
- })
-
-
- var count = 0, _key
- if(!path || !path.length)
- path = null
-
- parser.onValue = function (value) {
- if (!this.root)
- stream.root = value
-
- if(! path) return
-
- var i = 0 // iterates on path
- var j = 0 // iterates on stack
- var emitKey = false;
- var emitPath = false;
- while (i < path.length) {
- var key = path[i]
- var c
- j++
-
- if (key && !key.recurse) {
- c = (j === this.stack.length) ? this : this.stack[j]
- if (!c) return
- if (! check(key, c.key)) {
- setHeaderFooter(c.key, value)
- return
- }
- emitKey = !!key.emitKey;
- emitPath = !!key.emitPath;
- i++
- } else {
- i++
- var nextKey = path[i]
- if (! nextKey) return
- while (true) {
- c = (j === this.stack.length) ? this : this.stack[j]
- if (!c) return
- if (check(nextKey, c.key)) {
- i++;
- if (!Object.isFrozen(this.stack[j]))
- this.stack[j].value = null
- break
- } else {
- setHeaderFooter(c.key, value)
- }
- j++
- }
- }
-
- }
-
- // emit header
- if (header) {
- stream.emit('header', header);
- header = false;
- }
- if (j !== this.stack.length) return
-
- count ++
- var actualPath = this.stack.slice(1).map(function(element) { return element.key }).concat([this.key])
- var data = value
- if(null != data)
- if(null != (data = map ? map(data, actualPath) : data)) {
- if (emitKey || emitPath) {
- data = { value: data };
- if (emitKey)
- data["key"] = this.key;
- if (emitPath)
- data["path"] = actualPath;
- }
-
- stream.queue(data)
- }
- if (this.value) delete this.value[this.key]
- for(var k in this.stack)
- if (!Object.isFrozen(this.stack[k]))
- this.stack[k].value = null
- }
- parser._onToken = parser.onToken;
-
- parser.onToken = function (token, value) {
- parser._onToken(token, value);
- if (this.stack.length === 0) {
- if (stream.root) {
- if(!path)
- stream.queue(stream.root)
- count = 0;
- stream.root = null;
- }
- }
- }
-
- parser.onError = function (err) {
- if(err.message.indexOf("at position") > -1)
- err.message = "Invalid JSON (" + err.message + ")";
- stream.emit('error', err)
- }
-
- return stream
-
- function setHeaderFooter(key, value) {
- // header has not been emitted yet
- if (header !== false) {
- header = header || {}
- header[key] = value
- }
-
- // footer has not been emitted yet but header has
- if (footer !== false && header === false) {
- footer = footer || {}
- footer[key] = value
- }
- }
-}
-
-function check (x, y) {
- if ('string' === typeof x)
- return y == x
- else if (x && 'function' === typeof x.exec)
- return x.exec(y)
- else if ('boolean' === typeof x || 'object' === typeof x)
- return x
- else if ('function' === typeof x)
- return x(y)
- return false
-}
-
-exports.stringify = function (op, sep, cl, indent) {
- indent = indent || 0
- if (op === false){
- op = ''
- sep = '\n'
- cl = ''
- } else if (op == null) {
-
- op = '[\n'
- sep = '\n,\n'
- cl = '\n]\n'
-
- }
-
- //else, what ever you like
-
- var stream
- , first = true
- , anyData = false
- stream = through(function (data) {
- anyData = true
- try {
- var json = JSON.stringify(data, null, indent)
- } catch (err) {
- return stream.emit('error', err)
- }
- if(first) { first = false ; stream.queue(op + json)}
- else stream.queue(sep + json)
- },
- function (data) {
- if(!anyData)
- stream.queue(op)
- stream.queue(cl)
- stream.queue(null)
- })
-
- return stream
-}
-
-exports.stringifyObject = function (op, sep, cl, indent) {
- indent = indent || 0
- if (op === false){
- op = ''
- sep = '\n'
- cl = ''
- } else if (op == null) {
-
- op = '{\n'
- sep = '\n,\n'
- cl = '\n}\n'
-
- }
-
- //else, what ever you like
-
- var first = true
- var anyData = false
- var stream = through(function (data) {
- anyData = true
- var json = JSON.stringify(data[0]) + ':' + JSON.stringify(data[1], null, indent)
- if(first) { first = false ; this.queue(op + json)}
- else this.queue(sep + json)
- },
- function (data) {
- if(!anyData) this.queue(op)
- this.queue(cl)
-
- this.queue(null)
- })
-
- return stream
-}
-
-
diff --git a/node_modules/JSONStream/package.json b/node_modules/JSONStream/package.json
deleted file mode 100644
index f2350e89d..000000000
--- a/node_modules/JSONStream/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "JSONStream",
- "version": "1.3.5",
- "description": "rawStream.pipe(JSONStream.parse()).pipe(streamOfObjects)",
- "homepage": "http://github.com/dominictarr/JSONStream",
- "repository": {
- "type": "git",
- "url": "git://github.com/dominictarr/JSONStream.git"
- },
- "license": "(MIT OR Apache-2.0)",
- "keywords": [
- "json",
- "stream",
- "streaming",
- "parser",
- "async",
- "parsing"
- ],
- "dependencies": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- },
- "devDependencies": {
- "it-is": "~1",
- "assertions": "~2.2.2",
- "render": "~0.1.1",
- "trees": "~0.0.3",
- "event-stream": "~0.7.0",
- "tape": "~2.12.3"
- },
- "bin": "./bin.js",
- "author": "Dominic Tarr <dominic.tarr@gmail.com> (http://bit.ly/dominictarr)",
- "scripts": {
- "test": "node test/run.js"
- },
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- }
-}
diff --git a/node_modules/JSONStream/readme.markdown b/node_modules/JSONStream/readme.markdown
deleted file mode 100644
index 422c3df2c..000000000
--- a/node_modules/JSONStream/readme.markdown
+++ /dev/null
@@ -1,207 +0,0 @@
-# JSONStream
-
-streaming JSON.parse and stringify
-
-![](https://secure.travis-ci.org/dominictarr/JSONStream.png?branch=master)
-
-## install
-```npm install JSONStream```
-
-## example
-
-``` js
-
-var request = require('request')
- , JSONStream = require('JSONStream')
- , es = require('event-stream')
-
-request({url: 'http://isaacs.couchone.com/registry/_all_docs'})
- .pipe(JSONStream.parse('rows.*'))
- .pipe(es.mapSync(function (data) {
- console.error(data)
- return data
- }))
-```
-
-## JSONStream.parse(path)
-
-parse stream of values that match a path
-
-``` js
- JSONStream.parse('rows.*.doc')
-```
-
-The `..` operator is the recursive descent operator from [JSONPath](http://goessner.net/articles/JsonPath/), which will match a child at any depth (see examples below).
-
-If your keys have keys that include `.` or `*` etc, use an array instead.
-`['row', true, /^doc/]`.
-
-If you use an array, `RegExp`s, booleans, and/or functions. The `..` operator is also available in array representation, using `{recurse: true}`.
-any object that matches the path will be emitted as 'data' (and `pipe`d down stream)
-
-If `path` is empty or null, no 'data' events are emitted.
-
-If you want to have keys emitted, you can prefix your `*` operator with `$`: `obj.$*` - in this case the data passed to the stream is an object with a `key` holding the key and a `value` property holding the data.
-
-### Examples
-
-query a couchdb view:
-
-``` bash
-curl -sS localhost:5984/tests/_all_docs&include_docs=true
-```
-you will get something like this:
-
-``` js
-{"total_rows":129,"offset":0,"rows":[
- { "id":"change1_0.6995461115147918"
- , "key":"change1_0.6995461115147918"
- , "value":{"rev":"1-e240bae28c7bb3667f02760f6398d508"}
- , "doc":{
- "_id": "change1_0.6995461115147918"
- , "_rev": "1-e240bae28c7bb3667f02760f6398d508","hello":1}
- },
- { "id":"change2_0.6995461115147918"
- , "key":"change2_0.6995461115147918"
- , "value":{"rev":"1-13677d36b98c0c075145bb8975105153"}
- , "doc":{
- "_id":"change2_0.6995461115147918"
- , "_rev":"1-13677d36b98c0c075145bb8975105153"
- , "hello":2
- }
- },
-]}
-
-```
-
-we are probably most interested in the `rows.*.doc`
-
-create a `Stream` that parses the documents from the feed like this:
-
-``` js
-var stream = JSONStream.parse(['rows', true, 'doc']) //rows, ANYTHING, doc
-
-stream.on('data', function(data) {
- console.log('received:', data);
-});
-//emits anything from _before_ the first match
-stream.on('header', function (data) {
- console.log('header:', data) // => {"total_rows":129,"offset":0}
-})
-
-```
-awesome!
-
-In case you wanted the contents the doc emitted:
-
-``` js
-var stream = JSONStream.parse(['rows', true, 'doc', {emitKey: true}]) //rows, ANYTHING, doc, items in docs with keys
-
-stream.on('data', function(data) {
- console.log('key:', data.key);
- console.log('value:', data.value);
-});
-
-```
-
-You can also emit the path:
-
-``` js
-var stream = JSONStream.parse(['rows', true, 'doc', {emitPath: true}]) //rows, ANYTHING, doc, items in docs with keys
-
-stream.on('data', function(data) {
- console.log('path:', data.path);
- console.log('value:', data.value);
-});
-
-```
-
-### recursive patterns (..)
-
-`JSONStream.parse('docs..value')`
-(or `JSONStream.parse(['docs', {recurse: true}, 'value'])` using an array)
-will emit every `value` object that is a child, grand-child, etc. of the
-`docs` object. In this example, it will match exactly 5 times at various depth
-levels, emitting 0, 1, 2, 3 and 4 as results.
-
-```js
-{
- "total": 5,
- "docs": [
- {
- "key": {
- "value": 0,
- "some": "property"
- }
- },
- {"value": 1},
- {"value": 2},
- {"blbl": [{}, {"a":0, "b":1, "value":3}, 10]},
- {"value": 4}
- ]
-}
-```
-
-## JSONStream.parse(pattern, map)
-
-provide a function that can be used to map or filter
-the json output. `map` is passed the value at that node of the pattern,
-if `map` return non-nullish (anything but `null` or `undefined`)
-that value will be emitted in the stream. If it returns a nullish value,
-nothing will be emitted.
-
-`JSONStream` also emits `'header'` and `'footer'` events,
-the `'header'` event contains anything in the output that was before
-the first match, and the `'footer'`, is anything after the last match.
-
-## JSONStream.stringify(open, sep, close)
-
-Create a writable stream.
-
-you may pass in custom `open`, `close`, and `seperator` strings.
-But, by default, `JSONStream.stringify()` will create an array,
-(with default options `open='[\n', sep='\n,\n', close='\n]\n'`)
-
-If you call `JSONStream.stringify(false)`
-the elements will only be seperated by a newline.
-
-If you only write one item this will be valid JSON.
-
-If you write many items,
-you can use a `RegExp` to split it into valid chunks.
-
-## JSONStream.stringifyObject(open, sep, close)
-
-Very much like `JSONStream.stringify`,
-but creates a writable stream for objects instead of arrays.
-
-Accordingly, `open='{\n', sep='\n,\n', close='\n}\n'`.
-
-When you `.write()` to the stream you must supply an array with `[ key, data ]`
-as the first argument.
-
-## unix tool
-
-query npm to see all the modules that browserify has ever depended on.
-
-``` bash
-curl https://registry.npmjs.org/browserify | JSONStream 'versions.*.dependencies'
-```
-
-## numbers
-
-numbers will be emitted as numbers.
-huge numbers that cannot be represented in memory as javascript numbers will be emitted as strings.
-cf https://github.com/creationix/jsonparse/commit/044b268f01c4b8f97fb936fc85d3bcfba179e5bb for details.
-
-## Acknowlegements
-
-this module depends on https://github.com/creationix/jsonparse
-by Tim Caswell
-and also thanks to Florent Jaby for teaching me about parsing with:
-https://github.com/Floby/node-json-streams
-
-## license
-
-Dual-licensed under the MIT License or the Apache License, version 2.0
-
diff --git a/node_modules/JSONStream/test/bool.js b/node_modules/JSONStream/test/bool.js
deleted file mode 100644
index 6c386d609..000000000
--- a/node_modules/JSONStream/test/bool.js
+++ /dev/null
@@ -1,41 +0,0 @@
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','all_npm.json')
- , JSONStream = require('../')
- , it = require('it-is').style('colour')
-
- function randomObj () {
- return (
- Math.random () < 0.4
- ? {hello: 'eonuhckmqjk',
- whatever: 236515,
- lies: true,
- nothing: [null],
-// stuff: [Math.random(),Math.random(),Math.random()]
- }
- : ['AOREC', 'reoubaor', {ouec: 62642}, [[[], {}, 53]]]
- )
- }
-
-var expected = []
- , stringify = JSONStream.stringify()
- , es = require('event-stream')
- , stringified = ''
- , called = 0
- , count = 10
- , ended = false
-
-while (count --)
- expected.push(randomObj())
-
- es.connect(
- es.readArray(expected),
- stringify,
- JSONStream.parse([true]),
- es.writeArray(function (err, lines) {
-
- it(lines).has(expected)
- console.error('PASSED')
- })
- )
diff --git a/node_modules/JSONStream/test/browser.js b/node_modules/JSONStream/test/browser.js
deleted file mode 100644
index 3c28d4919..000000000
--- a/node_modules/JSONStream/test/browser.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var test = require('tape')
-var JSONStream = require('../')
-var testData = '{"rows":[{"hello":"world"}, {"foo": "bar"}]}'
-
-test('basic parsing', function (t) {
- t.plan(2)
- var parsed = JSONStream.parse("rows.*")
- var parsedKeys = {}
- parsed.on('data', function(match) {
- parsedKeys[Object.keys(match)[0]] = true
- })
- parsed.on('end', function() {
- t.equal(!!parsedKeys['hello'], true)
- t.equal(!!parsedKeys['foo'], true)
- })
- parsed.write(testData)
- parsed.end()
-}) \ No newline at end of file
diff --git a/node_modules/JSONStream/test/destroy_missing.js b/node_modules/JSONStream/test/destroy_missing.js
deleted file mode 100644
index 315fdc834..000000000
--- a/node_modules/JSONStream/test/destroy_missing.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var fs = require ('fs');
-var net = require('net');
-var join = require('path').join;
-var file = join(__dirname, 'fixtures','all_npm.json');
-var JSONStream = require('../');
-
-
-var server = net.createServer(function(client) {
- var parser = JSONStream.parse([]);
- parser.on('end', function() {
- console.log('close')
- console.error('PASSED');
- server.close();
- });
- client.pipe(parser);
- var n = 4
- client.on('data', function () {
- if(--n) return
- client.end();
- })
-});
-server.listen(9999);
-
-
-var client = net.connect({ port : 9999 }, function() {
- fs.createReadStream(file).pipe(client).on('data', console.log) //.resume();
-});
diff --git a/node_modules/JSONStream/test/doubledot1.js b/node_modules/JSONStream/test/doubledot1.js
deleted file mode 100644
index 78149b93f..000000000
--- a/node_modules/JSONStream/test/doubledot1.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','all_npm.json')
- , JSONStream = require('../')
- , it = require('it-is')
-
-var expected = JSON.parse(fs.readFileSync(file))
- , parser = JSONStream.parse('rows..rev')
- , called = 0
- , ended = false
- , parsed = []
-
-fs.createReadStream(file).pipe(parser)
-
-parser.on('data', function (data) {
- called ++
- parsed.push(data)
-})
-
-parser.on('end', function () {
- ended = true
-})
-
-process.on('exit', function () {
- it(called).equal(expected.rows.length)
- for (var i = 0 ; i < expected.rows.length ; i++)
- it(parsed[i]).deepEqual(expected.rows[i].value.rev)
- console.error('PASSED')
-})
diff --git a/node_modules/JSONStream/test/doubledot2.js b/node_modules/JSONStream/test/doubledot2.js
deleted file mode 100644
index b0bc5b167..000000000
--- a/node_modules/JSONStream/test/doubledot2.js
+++ /dev/null
@@ -1,30 +0,0 @@
- var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','depth.json')
- , JSONStream = require('../')
- , it = require('it-is')
-
- var expected = JSON.parse(fs.readFileSync(file))
- , parser = JSONStream.parse(['docs', {recurse: true}, 'value'])
- , called = 0
- , ended = false
- , parsed = []
-
- fs.createReadStream(file).pipe(parser)
-
- parser.on('data', function (data) {
- called ++
- parsed.push(data)
- })
-
- parser.on('end', function () {
- ended = true
- })
-
- process.on('exit', function () {
- var expectedValues = [0, [1], {"a": 2}, "3", 4]
- it(called).equal(expectedValues.length)
- for (var i = 0 ; i < 5 ; i++)
- it(parsed[i]).deepEqual(expectedValues[i])
- console.error('PASSED')
- })
diff --git a/node_modules/JSONStream/test/empty.js b/node_modules/JSONStream/test/empty.js
deleted file mode 100644
index 19e888c1e..000000000
--- a/node_modules/JSONStream/test/empty.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var JSONStream = require('../')
- , stream = require('stream')
- , it = require('it-is')
-
-var output = [ [], [] ]
-
-var parser1 = JSONStream.parse(['docs', /./])
-parser1.on('data', function(data) {
- output[0].push(data)
-})
-
-var parser2 = JSONStream.parse(['docs', /./])
-parser2.on('data', function(data) {
- output[1].push(data)
-})
-
-var pending = 2
-function onend () {
- if (--pending > 0) return
- it(output).deepEqual([
- [], [{hello: 'world'}]
- ])
- console.error('PASSED')
-}
-parser1.on('end', onend)
-parser2.on('end', onend)
-
-function makeReadableStream() {
- var readStream = new stream.Stream()
- readStream.readable = true
- readStream.write = function (data) { this.emit('data', data) }
- readStream.end = function (data) { this.emit('end') }
- return readStream
-}
-
-var emptyArray = makeReadableStream()
-emptyArray.pipe(parser1)
-emptyArray.write('{"docs":[]}')
-emptyArray.end()
-
-var objectArray = makeReadableStream()
-objectArray.pipe(parser2)
-objectArray.write('{"docs":[{"hello":"world"}]}')
-objectArray.end()
diff --git a/node_modules/JSONStream/test/error_contents.js b/node_modules/JSONStream/test/error_contents.js
deleted file mode 100644
index 13c27aec0..000000000
--- a/node_modules/JSONStream/test/error_contents.js
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','error.json')
- , JSONStream = require('../')
- , it = require('it-is')
-
-var expected = JSON.parse(fs.readFileSync(file))
- , parser = JSONStream.parse(['rows'])
- , called = 0
- , headerCalled = 0
- , footerCalled = 0
- , ended = false
- , parsed = []
-
-fs.createReadStream(file).pipe(parser)
-
-parser.on('header', function (data) {
- headerCalled ++
- it(data).deepEqual({
- error: 'error_code',
- message: 'this is an error message'
- })
-})
-
-parser.on('footer', function (data) {
- footerCalled ++
-})
-
-parser.on('data', function (data) {
- called ++
- parsed.push(data)
-})
-
-parser.on('end', function () {
- ended = true
-})
-
-process.on('exit', function () {
- it(called).equal(0)
- it(headerCalled).equal(1)
- it(footerCalled).equal(0)
- console.error('PASSED')
-})
diff --git a/node_modules/JSONStream/test/fixtures/all_npm.json b/node_modules/JSONStream/test/fixtures/all_npm.json
deleted file mode 100644
index 6303ea2f0..000000000
--- a/node_modules/JSONStream/test/fixtures/all_npm.json
+++ /dev/null
@@ -1,4030 +0,0 @@
-{"total_rows":4028,"offset":0,"rows":[
-{"id":"","key":"","value":{"rev":"1-2f11e026763c10730d8b19ba5dce7565"}},
-{"id":"3scale","key":"3scale","value":{"rev":"3-db3d574bf0ecdfdf627afeaa21b4bdaa"}},
-{"id":"7digital-api","key":"7digital-api","value":{"rev":"20-21d11832780e2368aabc946598a41dd5"}},
-{"id":"AMD","key":"AMD","value":{"rev":"7-3b4305a9c786ab4c5ce611e7f0de0aca"}},
-{"id":"AriesNode","key":"AriesNode","value":{"rev":"3-9d88392bca6582c5c54784927dbfdee6"}},
-{"id":"Array.prototype.forEachAsync","key":"Array.prototype.forEachAsync","value":{"rev":"3-85696441ba6bef77cc1e7de7b073110e"}},
-{"id":"Babel","key":"Babel","value":{"rev":"5-9d8370c6ac6fd9cd3d530f26a9379814"}},
-{"id":"Blaggie-System","key":"Blaggie-System","value":{"rev":"3-47782b1e5cbfa425170192799510e148"}},
-{"id":"Blob","key":"Blob","value":{"rev":"3-cf5fb5d69da4dd00bc4f2be8870ca698"}},
-{"id":"BlobBuilder","key":"BlobBuilder","value":{"rev":"3-eb977ff1713a915384fac994f9d8fa7c"}},
-{"id":"Buffer","key":"Buffer","value":{"rev":"3-549594b58e83d6d07bb219e73de558e5"}},
-{"id":"CLI-UI","key":"CLI-UI","value":{"rev":"5-5912625f27b4bdfb4d3eed16726c48a8"}},
-{"id":"CLoader","key":"CLoader","value":{"rev":"1-ad3c317ddf3497e73ab41cb1ddbc6ba8"}},
-{"id":"CM1","key":"CM1","value":{"rev":"15-a325a2dc28bc6967a1a14beed86f3b80"}},
-{"id":"CONFIGURATOR","key":"CONFIGURATOR","value":{"rev":"3-c76bf9282a75cc4d3fb349e831ccb8a5"}},
-{"id":"Cashew","key":"Cashew","value":{"rev":"7-6a74dc51dbecc47d2c15bfb7d056a20f"}},
-{"id":"Class","key":"Class","value":{"rev":"5-958c6365f76a60a8b3dafbbd9730ac7e"}},
-{"id":"ClassLoader","key":"ClassLoader","value":{"rev":"3-27fe8faa8a1d60d639f87af52826ed47"}},
-{"id":"ClearSilver","key":"ClearSilver","value":{"rev":"3-f3e54eb9ce64fc6a090186e61f15ed0b"}},
-{"id":"Couch-cleaner","key":"Couch-cleaner","value":{"rev":"3-fc77270917d967a4e2e8637cfa9f0fe0"}},
-{"id":"CouchCover","key":"CouchCover","value":{"rev":"15-3b2d87d314f57272a5c27c42bbb3eaf9"}},
-{"id":"DOM-js","key":"DOM-js","value":{"rev":"8-748cdc96566a7b65bbd0b12be2eeb386"}},
-{"id":"DOMBuilder","key":"DOMBuilder","value":{"rev":"19-41a518f2ce16fabc0241535ccd967300"}},
-{"id":"DateZ","key":"DateZ","value":{"rev":"15-69d8115a9bd521e614eaad3cf2611264"}},
-{"id":"Dateselect","key":"Dateselect","value":{"rev":"3-6511567a876d8fe15724bbc7f247214c"}},
-{"id":"Deferred","key":"Deferred","value":{"rev":"3-c61dfc4a0d1bd3e9f35c7182f161f1f2"}},
-{"id":"DeskSet","key":"DeskSet","value":{"rev":"5-359bf760718898ff3591eb366e336cf9"}},
-{"id":"Estro","key":"Estro","value":{"rev":"11-97192e2d0327469bb30f814963db6dff"}},
-{"id":"EventProxy.js","key":"EventProxy.js","value":{"rev":"5-106696b56c6959cec4bfd37f406ee60a"}},
-{"id":"EventServer","key":"EventServer","value":{"rev":"3-59d174119435e99e2affe0c4ba7caae0"}},
-{"id":"Expressive","key":"Expressive","value":{"rev":"3-7eae0ea010eb9014b28108e814918eac"}},
-{"id":"F","key":"F","value":{"rev":"12-91a3db69527b46cf43e36b7ec64a4336"}},
-{"id":"Faker","key":"Faker","value":{"rev":"9-77951c352cb6f9a0b824be620a8fa40d"}},
-{"id":"FastLegS","key":"FastLegS","value":{"rev":"27-4399791981235021a36c94bb9e9b52b5"}},
-{"id":"Fayer","key":"Fayer","value":{"rev":"7-7e4974ff2716329375f9711bcabef701"}},
-{"id":"File","key":"File","value":{"rev":"3-45e353a984038bc48248dfc32b18f9a8"}},
-{"id":"FileError","key":"FileError","value":{"rev":"3-bb4b03a2548e3c229e2c7e92242946c3"}},
-{"id":"FileList","key":"FileList","value":{"rev":"3-ec4a3fc91794ef7fdd3fe88b19cec7b0"}},
-{"id":"FileReader","key":"FileReader","value":{"rev":"7-e81b58a2d8a765ae4781b41bbfadb4cb"}},
-{"id":"FileSaver","key":"FileSaver","value":{"rev":"3-476dcb3f63f4d10feee08d41a8128cb8"}},
-{"id":"FileWriter","key":"FileWriter","value":{"rev":"3-f2fcdbc4938de480cce2e8e8416a93dd"}},
-{"id":"FileWriterSync","key":"FileWriterSync","value":{"rev":"3-9494c3fe7a1230238f37a724ec10895b"}},
-{"id":"FormData","key":"FormData","value":{"rev":"3-8872d717575f7090107a96d81583f6fe"}},
-{"id":"Frenchpress","key":"Frenchpress","value":{"rev":"3-6d916fc15b9e77535771578f96c47c52"}},
-{"id":"FreshDocs","key":"FreshDocs","value":{"rev":"5-f1f3e76c85267faf21d06d911cc6c203"}},
-{"id":"Google_Plus_API","key":"Google_Plus_API","value":{"rev":"3-3302bc9846726d996a45daee3dc5922c"}},
-{"id":"Gord","key":"Gord","value":{"rev":"11-32fddef1453773ac7270ba0e7c83f727"}},
-{"id":"Graph","key":"Graph","value":{"rev":"7-c346edea4f90e3e18d50a62473868cf4"}},
-{"id":"GridFS","key":"GridFS","value":{"rev":"27-4fc649aaa007fddec4947bdb7111560f"}},
-{"id":"Haraka","key":"Haraka","value":{"rev":"39-ee8f890521c1579b3cc779c8ebe03480"}},
-{"id":"Index","key":"Index","value":{"rev":"29-d8f4881c1544bf51dea1927e87ebb3f3"}},
-{"id":"JS-Entities","key":"JS-Entities","value":{"rev":"7-905636d8b46f273210233b60063d079b"}},
-{"id":"JSLint-commonJS","key":"JSLint-commonJS","value":{"rev":"3-759a81f82af7055e85ee89c9707c9609"}},
-{"id":"JSON","key":"JSON","value":{"rev":"3-7966a79067c34fb5de2e62c796f67341"}},
-{"id":"JSONPath","key":"JSONPath","value":{"rev":"7-58789d57ae366a5b0ae4b36837f15d59"}},
-{"id":"JSONSelect","key":"JSONSelect","value":{"rev":"9-5b0730da91eeb52e8f54da516367dc0f"}},
-{"id":"JSONloops","key":"JSONloops","value":{"rev":"3-3d4a1f8bfcfd778ab7def54155324331"}},
-{"id":"JSPP","key":"JSPP","value":{"rev":"7-af09a2bb193b3ff44775e8fbb7d4f522"}},
-{"id":"JSV","key":"JSV","value":{"rev":"3-41a7af86909046111be8ee9b56b077c8"}},
-{"id":"Jody","key":"Jody","value":{"rev":"43-70c1cf40e93cd8ce53249e5295d6b159"}},
-{"id":"Journaling-Hash","key":"Journaling-Hash","value":{"rev":"3-ac676eecb40a4dff301c671fa4bb6be9"}},
-{"id":"Kahana","key":"Kahana","value":{"rev":"33-1cb7e291ae02cee4e8105509571223f5"}},
-{"id":"LazyBoy","key":"LazyBoy","value":{"rev":"13-20a8894e3a957f184f5ae2a3e709551c"}},
-{"id":"Lingo","key":"Lingo","value":{"rev":"9-1af9a6df616e601f09c8cec07ccad1ae"}},
-{"id":"Loggy","key":"Loggy","value":{"rev":"33-e115c25163ab468314eedbe497d1c51e"}},
-{"id":"MeCab","key":"MeCab","value":{"rev":"4-2687176c7b878930e812a534976a6988"}},
-{"id":"Mercury","key":"Mercury","value":{"rev":"3-09a6bff1332ed829bd2c37bfec244a41"}},
-{"id":"Mu","key":"Mu","value":{"rev":"7-28e6ab82c402c3a75fe0f79dea846b97"}},
-{"id":"N","key":"N","value":{"rev":"7-e265046b5bdd299b2cad1584083ce2d5"}},
-{"id":"NORRIS","key":"NORRIS","value":{"rev":"3-4b5b23b09118582c44414f8d480619e6"}},
-{"id":"NetOS","key":"NetOS","value":{"rev":"3-3f943f87a24c11e6dd8c265469914e80"}},
-{"id":"NewBase60","key":"NewBase60","value":{"rev":"3-fd84758db79870e82917d358c6673f32"}},
-{"id":"NoCR","key":"NoCR","value":{"rev":"3-8f6cddd528f2d6045e3dda6006fb6948"}},
-{"id":"NodObjC","key":"NodObjC","value":{"rev":"15-ea6ab2df532c90fcefe5a428950bfdbb"}},
-{"id":"Node-JavaScript-Preprocessor","key":"Node-JavaScript-Preprocessor","value":{"rev":"13-4662b5ad742caaa467ec5d6c8e77b1e5"}},
-{"id":"NodeInterval","key":"NodeInterval","value":{"rev":"3-dc3446db2e0cd5be29a3c07942dba66d"}},
-{"id":"NodeSSH","key":"NodeSSH","value":{"rev":"3-45530fae5a69c44a6dd92357910f4212"}},
-{"id":"Nonsense","key":"Nonsense","value":{"rev":"3-9d86191475bc76dc3dd496d4dfe5d94e"}},
-{"id":"NormAndVal","key":"NormAndVal","value":{"rev":"9-d3b3d6ffd046292f4733aa5f3eb7be61"}},
-{"id":"Olive","key":"Olive","value":{"rev":"5-67f3057f09cae5104f09472db1d215aa"}},
-{"id":"OnCollect","key":"OnCollect","value":{"rev":"16-6dbe3afd04f123dda87bb1e21cdfd776"}},
-{"id":"PJsonCouch","key":"PJsonCouch","value":{"rev":"3-be9588f49d85094c36288eb63f8236b3"}},
-{"id":"PMInject","key":"PMInject","value":{"rev":"5-da518047d8273dbf3b3c05ea25e77836"}},
-{"id":"PanPG","key":"PanPG","value":{"rev":"13-beb54225a6b1be4c157434c28adca016"}},
-{"id":"PerfDriver","key":"PerfDriver","value":{"rev":"2-b448fb2f407f341b8df7032f29e4920f"}},
-{"id":"PostgresClient","key":"PostgresClient","value":{"rev":"8-2baec6847f8ad7dcf24b7d61a4034163"}},
-{"id":"QuickWeb","key":"QuickWeb","value":{"rev":"13-d388df9c484021ecd75bc9650d659a67"}},
-{"id":"R.js","key":"R.js","value":{"rev":"3-3f154b95ec6fc744f95a29750f16667e"}},
-{"id":"R2","key":"R2","value":{"rev":"11-f5ccff6f108f6b928caafb62b80d1056"}},
-{"id":"Reston","key":"Reston","value":{"rev":"5-9d234010f32f593edafc04620f3cf2bd"}},
-{"id":"Sardines","key":"Sardines","value":{"rev":"5-d7d3d2269420e21c2c62b86ff5a0021e"}},
-{"id":"SessionWebSocket","key":"SessionWebSocket","value":{"rev":"8-d9fc9beaf90057aefeb701addd7fc845"}},
-{"id":"Sheet","key":"Sheet","value":{"rev":"8-c827c713564e4ae5a17988ffea520d0d"}},
-{"id":"Spec_My_Node","key":"Spec_My_Node","value":{"rev":"8-fa58408e9d9736d9c6fa8daf5d632106"}},
-{"id":"Spot","key":"Spot","value":{"rev":"3-6b6c2131451fed28fb57c924c4fa44cc"}},
-{"id":"Sslac","key":"Sslac","value":{"rev":"3-70a2215cc7505729254aa6fa1d9a25d9"}},
-{"id":"StaticServer","key":"StaticServer","value":{"rev":"3-6f5433177ef4d76a52f01c093117a532"}},
-{"id":"StringScanner","key":"StringScanner","value":{"rev":"3-e85d0646c25ec477c1c45538712d3a38"}},
-{"id":"Structr","key":"Structr","value":{"rev":"3-449720001801cff5831c2cc0e0f1fcf8"}},
-{"id":"Templ8","key":"Templ8","value":{"rev":"11-4e6edb250bc250df20b2d557ca7f6589"}},
-{"id":"Template","key":"Template","value":{"rev":"6-1f055c73524d2b7e82eb6c225bd4b8e0"}},
-{"id":"Thimble","key":"Thimble","value":{"rev":"3-8499b261206f2f2e9acf92d8a4e54afb"}},
-{"id":"Toji","key":"Toji","value":{"rev":"96-511e171ad9f32a9264c2cdf01accacfb"}},
-{"id":"TwigJS","key":"TwigJS","value":{"rev":"3-1aaefc6d6895d7d4824174d410a747b9"}},
-{"id":"UkGeoTool","key":"UkGeoTool","value":{"rev":"5-e84291128e12f66cebb972a60c1d710f"}},
-{"id":"Vector","key":"Vector","value":{"rev":"3-bf5dc97abe7cf1057260b70638175a96"}},
-{"id":"_design/app","key":"_design/app","value":{"rev":"421-b1661d854599a58d0904d68aa44d8b63"}},
-{"id":"_design/ui","key":"_design/ui","value":{"rev":"78-db00aeb91a59a326e38e2bef7f1126cf"}},
-{"id":"aaronblohowiak-plugify-js","key":"aaronblohowiak-plugify-js","value":{"rev":"3-0272c269eacd0c86bfc1711566922577"}},
-{"id":"aaronblohowiak-uglify-js","key":"aaronblohowiak-uglify-js","value":{"rev":"3-77844a6def6ec428d75caa0846c95502"}},
-{"id":"aasm-js","key":"aasm-js","value":{"rev":"3-01a48108d55909575440d9e0ef114f37"}},
-{"id":"abbrev","key":"abbrev","value":{"rev":"16-e17a2b6c7360955b950edf2cb2ef1602"}},
-{"id":"abhispeak","key":"abhispeak","value":{"rev":"5-9889431f68ec10212db3be91796608e2"}},
-{"id":"ace","key":"ace","value":{"rev":"3-e8d267de6c17ebaa82c2869aff983c74"}},
-{"id":"acl","key":"acl","value":{"rev":"13-87c131a1801dc50840a177be73ce1c37"}},
-{"id":"active-client","key":"active-client","value":{"rev":"5-0ca16ae2e48a3ba9de2f6830a8c2d3a0"}},
-{"id":"activenode-monitor","key":"activenode-monitor","value":{"rev":"9-2634fa446379c39475d0ce4183fb92f2"}},
-{"id":"activeobject","key":"activeobject","value":{"rev":"43-6d73e28412612aaee37771e3ab292c3d"}},
-{"id":"actor","key":"actor","value":{"rev":"3-f6b84acd7d2e689b860e3142a18cd460"}},
-{"id":"actors","key":"actors","value":{"rev":"3-6df913bbe5b99968a2e71ae4ef07b2d2"}},
-{"id":"addTimeout","key":"addTimeout","value":{"rev":"15-e5170f0597fe8cf5ed0b54b7e6f2cde1"}},
-{"id":"addressable","key":"addressable","value":{"rev":"27-0c74fde458d92e4b93a29317da15bb3c"}},
-{"id":"aejs","key":"aejs","value":{"rev":"7-4928e2ce6151067cd6c585c0ba3e0bc3"}},
-{"id":"aenoa-supervisor","key":"aenoa-supervisor","value":{"rev":"7-6d399675981e76cfdfb9144bc2f7fb6d"}},
-{"id":"after","key":"after","value":{"rev":"9-baee7683ff54182cf7544cc05b0a4ad7"}},
-{"id":"ahr","key":"ahr","value":{"rev":"27-4ed272c516f3f2f9310e4f0ef28254e9"}},
-{"id":"ahr.browser","key":"ahr.browser","value":{"rev":"3-f7226aab4a1a3ab5f77379f92aae87f9"}},
-{"id":"ahr.browser.jsonp","key":"ahr.browser.jsonp","value":{"rev":"3-abed17143cf5e3c451c3d7da457e6f5b"}},
-{"id":"ahr.browser.request","key":"ahr.browser.request","value":{"rev":"7-fafd7b079d0415f388b64a20509a270b"}},
-{"id":"ahr.node","key":"ahr.node","value":{"rev":"17-f487a4a9896bd3876a11f9dfa1c639a7"}},
-{"id":"ahr.options","key":"ahr.options","value":{"rev":"13-904a4cea763a4455f7b2ae0abba18b8d"}},
-{"id":"ahr.utils","key":"ahr.utils","value":{"rev":"3-5f7b4104ea280d1fd36370c8f3356ead"}},
-{"id":"ahr2","key":"ahr2","value":{"rev":"87-ddf57f3ee158dcd23b2df330e2883a1d"}},
-{"id":"ain","key":"ain","value":{"rev":"7-d840736668fb36e9be3c26a68c5cd411"}},
-{"id":"ain-tcp","key":"ain-tcp","value":{"rev":"11-d18a1780bced8981d1d9dbd262ac4045"}},
-{"id":"ain2","key":"ain2","value":{"rev":"5-0b67879174f5f0a06448c7c737d98b5e"}},
-{"id":"airbrake","key":"airbrake","value":{"rev":"33-4bb9f822162e0c930c31b7f961938dc9"}},
-{"id":"ajaxrunner","key":"ajaxrunner","value":{"rev":"2-17e6a5de4f0339f4e6ce0b7681d0ba0c"}},
-{"id":"ajs","key":"ajs","value":{"rev":"13-063a29dec829fdaf4ca63d622137d1c6"}},
-{"id":"ajs-xgettext","key":"ajs-xgettext","value":{"rev":"3-cd4bbcc1c9d87fa7119d3bbbca99b793"}},
-{"id":"akismet","key":"akismet","value":{"rev":"13-a144e15dd6c2b13177572e80a526edd1"}},
-{"id":"alfred","key":"alfred","value":{"rev":"45-9a69041b18d2587c016b1b1deccdb2ce"}},
-{"id":"alfred-bcrypt","key":"alfred-bcrypt","value":{"rev":"11-7ed10ef318e5515d1ef7c040818ddb22"}},
-{"id":"algorithm","key":"algorithm","value":{"rev":"3-9ec0b38298cc15b0f295152de8763358"}},
-{"id":"algorithm-js","key":"algorithm-js","value":{"rev":"9-dd7496b7ec2e3b23cc7bb182ae3aac6d"}},
-{"id":"alists","key":"alists","value":{"rev":"5-22cc13c86d84081a826ac79a0ae5cda3"}},
-{"id":"altshift","key":"altshift","value":{"rev":"53-1c51d8657f271f390503a6fe988d09db"}},
-{"id":"amazon-ses","key":"amazon-ses","value":{"rev":"5-c175d60de2232a5664666a80832269e5"}},
-{"id":"ambrosia","key":"ambrosia","value":{"rev":"3-8c648ec7393cf842838c20e2c5d9bce4"}},
-{"id":"amd","key":"amd","value":{"rev":"3-d78c4df97a577af598a7def2a38379fa"}},
-{"id":"amionline","key":"amionline","value":{"rev":"3-a62887a632523700402b0f4ebb896812"}},
-{"id":"amo-version-reduce","key":"amo-version-reduce","value":{"rev":"3-05f6956269e5e921ca3486d3d6ea74b0"}},
-{"id":"amqp","key":"amqp","value":{"rev":"17-ee62d2b8248f8eb13f3369422d66df26"}},
-{"id":"amqpsnoop","key":"amqpsnoop","value":{"rev":"3-36a1c45647bcfb2f56cf68dbc24b0426"}},
-{"id":"ams","key":"ams","value":{"rev":"40-1c0cc53ad942d2fd23c89618263befc8"}},
-{"id":"amulet","key":"amulet","value":{"rev":"7-d1ed71811e45652799982e4f2e9ffb36"}},
-{"id":"anachronism","key":"anachronism","value":{"rev":"11-468bdb40f9a5aa146bae3c1c6253d0e1"}},
-{"id":"analytics","key":"analytics","value":{"rev":"3-a143ccdd863b5f7dbee4d2f7732390b3"}},
-{"id":"ann","key":"ann","value":{"rev":"9-41f00594d6216c439f05f7116a697cac"}},
-{"id":"ansi-color","key":"ansi-color","value":{"rev":"6-d6f02b32525c1909d5134afa20f470de"}},
-{"id":"ansi-font","key":"ansi-font","value":{"rev":"3-b039661ad9b6aa7baf34741b449c4420"}},
-{"id":"ant","key":"ant","value":{"rev":"3-35a64e0b7f6eb63a90c32971694b0d93"}},
-{"id":"anvil.js","key":"anvil.js","value":{"rev":"19-290c82075f0a9ad764cdf6dc5c558e0f"}},
-{"id":"aop","key":"aop","value":{"rev":"7-5963506c9e7912aa56fda065c56fd472"}},
-{"id":"ap","key":"ap","value":{"rev":"3-f525b5b490a1ada4452f46307bf92d08"}},
-{"id":"apac","key":"apac","value":{"rev":"12-945d0313a84797b4c3df19da4bec14d4"}},
-{"id":"aparser","key":"aparser","value":{"rev":"5-cb35cfc9184ace6642413dad97e49dca"}},
-{"id":"api-easy","key":"api-easy","value":{"rev":"15-2ab5eefef1377ff217cb020e80343d65"}},
-{"id":"api.js","key":"api.js","value":{"rev":"5-a14b8112fbda17022c80356a010de59a"}},
-{"id":"api_request","key":"api_request","value":{"rev":"3-8531e71f5cf2f3f811684269132d72d4"}},
-{"id":"apimaker","key":"apimaker","value":{"rev":"3-bdbd4a2ebf5b67276d89ea73eaa20025"}},
-{"id":"apn","key":"apn","value":{"rev":"30-0513d27341f587b39db54300c380921f"}},
-{"id":"app","key":"app","value":{"rev":"3-d349ddb47167f60c03d259649569e002"}},
-{"id":"app.js","key":"app.js","value":{"rev":"3-bff3646634daccfd964b4bbe510acb25"}},
-{"id":"append","key":"append","value":{"rev":"7-53e2f4ab2a69dc0c5e92f10a154998b6"}},
-{"id":"applescript","key":"applescript","value":{"rev":"10-ef5ab30ccd660dc71fb89e173f30994a"}},
-{"id":"appzone","key":"appzone","value":{"rev":"21-fb27e24d460677fe9c7eda0d9fb1fead"}},
-{"id":"apricot","key":"apricot","value":{"rev":"14-b55361574a0715f78afc76ddf6125845"}},
-{"id":"arcane","key":"arcane","value":{"rev":"3-f846c96e890ed6150d4271c93cc05a24"}},
-{"id":"archetype","key":"archetype","value":{"rev":"3-441336def3b7aade89c8c1c19a84f56d"}},
-{"id":"ardrone","key":"ardrone","value":{"rev":"8-540e95b796da734366a89bb06dc430c5"}},
-{"id":"ardrone-web","key":"ardrone-web","value":{"rev":"3-8a53cc85a95be20cd44921347e82bbe4"}},
-{"id":"arduino","key":"arduino","value":{"rev":"3-22f6359c47412d086d50dc7f1a994139"}},
-{"id":"argon","key":"argon","value":{"rev":"3-ba12426ce67fac01273310cb3909b855"}},
-{"id":"argparse","key":"argparse","value":{"rev":"8-5e841e38cca6cfc3fe1d1f507a7f47ee"}},
-{"id":"argparser","key":"argparser","value":{"rev":"19-b8793bfc005dd84e1213ee53ae56206d"}},
-{"id":"argsparser","key":"argsparser","value":{"rev":"26-d31eca2f41546172763af629fc50631f"}},
-{"id":"argtype","key":"argtype","value":{"rev":"10-96a7d23e571d56cf598472115bcac571"}},
-{"id":"arguments","key":"arguments","value":{"rev":"7-767de2797f41702690bef5928ec7c6e9"}},
-{"id":"armory","key":"armory","value":{"rev":"41-ea0f7bd0868c11fc9986fa708e11e071"}},
-{"id":"armrest","key":"armrest","value":{"rev":"3-bbe40b6320b6328211be33425bed20c8"}},
-{"id":"arnold","key":"arnold","value":{"rev":"3-4896fc8d02b8623f47a024f0dbfa44bf"}},
-{"id":"arouter","key":"arouter","value":{"rev":"7-55cab1f7128df54f27be94039a8d8dc5"}},
-{"id":"array-promise","key":"array-promise","value":{"rev":"3-e2184561ee65de64c2dfeb57955c758f"}},
-{"id":"arrayemitter","key":"arrayemitter","value":{"rev":"3-d64c917ac1095bfcbf173dac88d3d148"}},
-{"id":"asEvented","key":"asEvented","value":{"rev":"3-2ad3693b49d4d9dc9a11c669033a356e"}},
-{"id":"asciimo","key":"asciimo","value":{"rev":"12-50130f5ac2ef4d95df190be2c8ede893"}},
-{"id":"asereje","key":"asereje","value":{"rev":"15-84853499f89a87109ddf47ba692323ba"}},
-{"id":"ash","key":"ash","value":{"rev":"6-3697a3aee708bece8a08c7e0d1010476"}},
-{"id":"ask","key":"ask","value":{"rev":"3-321bbc3837d749b5d97bff251693a825"}},
-{"id":"asn1","key":"asn1","value":{"rev":"13-e681a814a4a1439a22b19e141b45006f"}},
-{"id":"aspsms","key":"aspsms","value":{"rev":"9-7b82d722bdac29a4da8c88b642ad64f2"}},
-{"id":"assert","key":"assert","value":{"rev":"3-85480762f5cb0be2cb85f80918257189"}},
-{"id":"assertions","key":"assertions","value":{"rev":"9-d797d4c09aa994556c7d5fdb4e86fe1b"}},
-{"id":"assertn","key":"assertn","value":{"rev":"6-080a4fb5d2700a6850d56b58c6f6ee9e"}},
-{"id":"assertvanish","key":"assertvanish","value":{"rev":"13-3b0b555ff77c1bfc2fe2642d50879648"}},
-{"id":"asset","key":"asset","value":{"rev":"33-cb70b68e0e05e9c9a18b3d89f1bb43fc"}},
-{"id":"assetgraph","key":"assetgraph","value":{"rev":"82-7853d644e64741b46fdd29a997ec4852"}},
-{"id":"assetgraph-builder","key":"assetgraph-builder","value":{"rev":"61-1ed98d95f3589050037851edde760a01"}},
-{"id":"assetgraph-sprite","key":"assetgraph-sprite","value":{"rev":"15-351b5fd9e50a3dda8580d014383423e0"}},
-{"id":"assets-expander","key":"assets-expander","value":{"rev":"11-f9e1197b773d0031dd015f1d871b87c6"}},
-{"id":"assets-packager","key":"assets-packager","value":{"rev":"13-51f7d2d57ed35be6aff2cc2aa2fa74db"}},
-{"id":"assoc","key":"assoc","value":{"rev":"9-07098388f501da16bf6afe6c9babefd5"}},
-{"id":"ast-inlining","key":"ast-inlining","value":{"rev":"5-02e7e2c3a06ed81ddc61980f778ac413"}},
-{"id":"ast-transformer","key":"ast-transformer","value":{"rev":"5-b4020bb763b8839afa8d3ac0d54a6f26"}},
-{"id":"astar","key":"astar","value":{"rev":"3-3df8c56c64c3863ef0650c0c74e2801b"}},
-{"id":"aster","key":"aster","value":{"rev":"7-b187c1270d3924f5ee04044e579d2df9"}},
-{"id":"asterisk-manager","key":"asterisk-manager","value":{"rev":"3-7fbf4294dafee04cc17cca4692c09c33"}},
-{"id":"astrolin","key":"astrolin","value":{"rev":"3-30ac515a2388e7dc22b25c15346f6d7e"}},
-{"id":"asyn","key":"asyn","value":{"rev":"3-51996b0197c21e85858559045c1481b7"}},
-{"id":"async","key":"async","value":{"rev":"26-73aea795f46345a7e65d89ec75dff2f1"}},
-{"id":"async-array","key":"async-array","value":{"rev":"17-3ef5faff03333aa5b2a733ef36118066"}},
-{"id":"async-chain","key":"async-chain","value":{"rev":"9-10ec3e50b01567390d55973494e36d43"}},
-{"id":"async-ejs","key":"async-ejs","value":{"rev":"19-6f0e6e0eeb3cdb4c816ea427d8288d7d"}},
-{"id":"async-fs","key":"async-fs","value":{"rev":"3-b96906283d345604f784dfcdbeb21a63"}},
-{"id":"async-it","key":"async-it","value":{"rev":"7-6aed4439df25989cfa040fa4b5dd4ff2"}},
-{"id":"async-json","key":"async-json","value":{"rev":"5-589d5b6665d00c5bffb99bb142cac5d0"}},
-{"id":"async-memoizer","key":"async-memoizer","value":{"rev":"9-01d56f4dff95e61a39dab5ebee49d5dc"}},
-{"id":"async-object","key":"async-object","value":{"rev":"21-1bf28b0f8a7d875b54126437f3539f9b"}},
-{"id":"asyncEJS","key":"asyncEJS","value":{"rev":"3-28b1c94255381f23a4d4f52366255937"}},
-{"id":"async_testing","key":"async_testing","value":{"rev":"14-0275d8b608d8644dfe8d68a81fa07e98"}},
-{"id":"asyncevents","key":"asyncevents","value":{"rev":"3-de104847994365dcab5042db2b46fb84"}},
-{"id":"asyncify","key":"asyncify","value":{"rev":"3-3f6deb82ee1c6cb25e83a48fe6379b75"}},
-{"id":"asyncjs","key":"asyncjs","value":{"rev":"27-15903d7351f80ed37cb069aedbfc26cc"}},
-{"id":"asynct","key":"asynct","value":{"rev":"5-6be002b3e005d2d53b80fff32ccbd2ac"}},
-{"id":"at_scheduler","key":"at_scheduler","value":{"rev":"3-5587061c90218d2e99b6e22d5b488b0b"}},
-{"id":"atbar","key":"atbar","value":{"rev":"19-e9e906d4874afd4d8bf2d8349ed46dff"}},
-{"id":"atob","key":"atob","value":{"rev":"3-bc907d10dd2cfc940de586dc090451da"}},
-{"id":"audiolib","key":"audiolib","value":{"rev":"17-cb2f55ff50061081b440f0605cf0450c"}},
-{"id":"audit_couchdb","key":"audit_couchdb","value":{"rev":"24-6e620895b454b345b2aed13db847c237"}},
-{"id":"auditor","key":"auditor","value":{"rev":"11-c4df509d40650c015943dd90315a12c0"}},
-{"id":"authnet_cim","key":"authnet_cim","value":{"rev":"7-f02bbd206ac2b8c05255bcd8171ac1eb"}},
-{"id":"autocomplete","key":"autocomplete","value":{"rev":"3-f2773bca040d5abcd0536dbebe5847bf"}},
-{"id":"autodafe","key":"autodafe","value":{"rev":"7-a75262b53a9dd1a25693adecde7206d7"}},
-{"id":"autolint","key":"autolint","value":{"rev":"7-07f885902d72b52678fcc57aa4b9c592"}},
-{"id":"autoload","key":"autoload","value":{"rev":"5-9247704d9a992a175e3ae49f4af757d0"}},
-{"id":"autoloader","key":"autoloader","value":{"rev":"11-293c20c34d0c81fac5c06b699576b1fe"}},
-{"id":"auton","key":"auton","value":{"rev":"25-4fcb7a62b607b7929b62a9b792afef55"}},
-{"id":"autoreleasepool","key":"autoreleasepool","value":{"rev":"5-5d2798bf74bbec583cc6f19127e3c89e"}},
-{"id":"autorequire","key":"autorequire","value":{"rev":"9-564a46b355532fcec24db0afc99daed5"}},
-{"id":"autotest","key":"autotest","value":{"rev":"7-e319995dd0e1fbd935c14c46b1234f77"}},
-{"id":"awesome","key":"awesome","value":{"rev":"15-4458b746e4722214bd26ea15e453288e"}},
-{"id":"aws","key":"aws","value":{"rev":"14-9a8f0989be29034d3fa5c66c594b649b"}},
-{"id":"aws-js","key":"aws-js","value":{"rev":"6-c61d87b8ad948cd065d2ca222808c209"}},
-{"id":"aws-lib","key":"aws-lib","value":{"rev":"36-9733e215c03d185a860574600a8feb14"}},
-{"id":"aws2js","key":"aws2js","value":{"rev":"35-42498f44a5ae7d4f3c84096b435d0e0b"}},
-{"id":"azure","key":"azure","value":{"rev":"5-2c4e05bd842d3dcfa419f4d2b67121e2"}},
-{"id":"b64","key":"b64","value":{"rev":"3-e5e727a46df4c8aad38acd117d717140"}},
-{"id":"b64url","key":"b64url","value":{"rev":"9-ab3b017f00a53b0078261254704c30ba"}},
-{"id":"ba","key":"ba","value":{"rev":"11-3cec7ec9a566fe95fbeb34271538d60a"}},
-{"id":"babelweb","key":"babelweb","value":{"rev":"11-8e6a2fe00822cec15573cdda48b6d0a0"}},
-{"id":"backbone","key":"backbone","value":{"rev":"37-79b95355f8af59bf9131e14d52b68edc"}},
-{"id":"backbone-browserify","key":"backbone-browserify","value":{"rev":"3-f25dac0b05a7f7aa5dbc0f4a1ad97969"}},
-{"id":"backbone-celtra","key":"backbone-celtra","value":{"rev":"3-775a5ebb25c1cd84723add52774ece84"}},
-{"id":"backbone-couch","key":"backbone-couch","value":{"rev":"8-548327b3cd7ee7a4144c9070377be5f6"}},
-{"id":"backbone-cradle","key":"backbone-cradle","value":{"rev":"3-b9bc220ec48b05eed1d4d77a746b10db"}},
-{"id":"backbone-dirty","key":"backbone-dirty","value":{"rev":"21-fa0f688cc95a85c0fc440733f09243b5"}},
-{"id":"backbone-dnode","key":"backbone-dnode","value":{"rev":"65-3212d3aa3284efb3bc0732bac71b5a2e"}},
-{"id":"backbone-proxy","key":"backbone-proxy","value":{"rev":"3-3602cb984bdd266516a3145663f9a5c6"}},
-{"id":"backbone-redis","key":"backbone-redis","value":{"rev":"9-2e3f6a9e095b00ccec9aa19b3fbc65eb"}},
-{"id":"backbone-rel","key":"backbone-rel","value":{"rev":"5-f9773dc85f1c502e61c163a22d2f74aa"}},
-{"id":"backbone-simpledb","key":"backbone-simpledb","value":{"rev":"5-a815128e1e3593696f666f8b3da36d78"}},
-{"id":"backbone-stash","key":"backbone-stash","value":{"rev":"19-8d3cc5f9ed28f9a56856154e2b4e7f78"}},
-{"id":"backplane","key":"backplane","value":{"rev":"7-f69188dac21e007b09efe1b5b3575087"}},
-{"id":"backport-0.4","key":"backport-0.4","value":{"rev":"11-25e15f01f1ef9e626433a82284bc00d6"}},
-{"id":"backuptweets","key":"backuptweets","value":{"rev":"3-68712682aada41082d3ae36c03c8f899"}},
-{"id":"bake","key":"bake","value":{"rev":"113-ce13508ba2b4f15aa4df06d796aa4573"}},
-{"id":"bal-util","key":"bal-util","value":{"rev":"31-b818725a5af131c89ec66b9fdebf2122"}},
-{"id":"balancer","key":"balancer","value":{"rev":"7-63dcb4327081a8ec4d6c51a21253cb4b"}},
-{"id":"bancroft","key":"bancroft","value":{"rev":"11-8fa3370a4615a0ed4ba411b05c0285f4"}},
-{"id":"bandcamp","key":"bandcamp","value":{"rev":"41-f2fee472d63257fdba9e5fa8ad570ee8"}},
-{"id":"banner","key":"banner","value":{"rev":"19-89a447e2136b2fabddbad84abcd63a27"}},
-{"id":"banzai-docstore-couchdb","key":"banzai-docstore-couchdb","value":{"rev":"5-950c115737d634e2f48ee1c772788321"}},
-{"id":"banzai-redis","key":"banzai-redis","value":{"rev":"3-446f29e0819fd79c810fdfa8ce05bdcf"}},
-{"id":"banzai-statestore-couchdb","key":"banzai-statestore-couchdb","value":{"rev":"5-c965442821741ce6f20e266fe43aea4a"}},
-{"id":"banzai-statestore-mem","key":"banzai-statestore-mem","value":{"rev":"3-a0891a1a2344922d91781c332ed26528"}},
-{"id":"bar","key":"bar","value":{"rev":"7-fbb44a76cb023e6a8941f15576cf190b"}},
-{"id":"barc","key":"barc","value":{"rev":"7-dfe352b410782543d6b1aea292f123eb"}},
-{"id":"barista","key":"barista","value":{"rev":"9-d3f3c776453ba69a81947f34d7cc3cbf"}},
-{"id":"bark","key":"bark","value":{"rev":"20-fc1a94f80cfa199c16aa075e940e06dc"}},
-{"id":"barricane-db","key":"barricane-db","value":{"rev":"3-450947b9a05047fe195f76a69a3144e8"}},
-{"id":"base-converter","key":"base-converter","value":{"rev":"7-1b49b01df111176b89343ad56ac68d5c"}},
-{"id":"base32","key":"base32","value":{"rev":"11-d686c54c9de557681356e74b83d916e8"}},
-{"id":"base64","key":"base64","value":{"rev":"24-bd713c3d7e96fad180263ed7563c595e"}},
-{"id":"bash","key":"bash","value":{"rev":"3-86a1c61babfa47da0ebc14c2f4e59a6a"}},
-{"id":"basic-auth","key":"basic-auth","value":{"rev":"3-472a87af27264ae81bd4394d70792e55"}},
-{"id":"basicFFmpeg","key":"basicFFmpeg","value":{"rev":"15-3e87a41c543bde1e6f7c49d021fda62f"}},
-{"id":"basicauth","key":"basicauth","value":{"rev":"3-15d95a05b6f5e7b6d7261f87c4eb73de"}},
-{"id":"basil-cookie","key":"basil-cookie","value":{"rev":"11-fff96b263f31b9d017e3cf59bf6fb23f"}},
-{"id":"batik","key":"batik","value":{"rev":"7-a19ce28cbbf54649fa225ed5474eff02"}},
-{"id":"batman","key":"batman","value":{"rev":"15-6af5469bf143790cbb4af196824c9e95"}},
-{"id":"batteries","key":"batteries","value":{"rev":"13-656c68fe887f4af3ef1e720e64275f4e"}},
-{"id":"bbcode","key":"bbcode","value":{"rev":"5-e79a8b62125f8a3a1751bf7bd8875f33"}},
-{"id":"bcrypt","key":"bcrypt","value":{"rev":"31-db8496d1239362a97a26f1e5eeb8a733"}},
-{"id":"beaconpush","key":"beaconpush","value":{"rev":"3-956fcd87a6d3f9d5b9775d47e36aa3e5"}},
-{"id":"bean","key":"bean","value":{"rev":"56-151c1558e15016205e65bd515eab9ee0"}},
-{"id":"bean.database.mongo","key":"bean.database.mongo","value":{"rev":"3-ede73166710137cbf570385b7e8f17fe"}},
-{"id":"beandocs","key":"beandocs","value":{"rev":"3-9f7492984c95b69ca1ad30d40223f117"}},
-{"id":"beanpole","key":"beanpole","value":{"rev":"53-565a78a2304405cdc9f4a6b6101160fa"}},
-{"id":"beanprep","key":"beanprep","value":{"rev":"3-bd387f0072514b8e44131671f9aad1b0"}},
-{"id":"beans","key":"beans","value":{"rev":"54-7f6d40a2a5bf228fe3547cce43edaa63"}},
-{"id":"beanstalk_client","key":"beanstalk_client","value":{"rev":"6-13c8c80aa6469b5dcf20d65909289383"}},
-{"id":"beanstalk_worker","key":"beanstalk_worker","value":{"rev":"6-45500991db97ed5a18ea96f3621bf99f"}},
-{"id":"beantest","key":"beantest","value":{"rev":"7-52d8160a0c0420c7d659b2ee10f26644"}},
-{"id":"beatit","key":"beatit","value":{"rev":"7-c0ba5f95b0601dcb628e4820555cc252"}},
-{"id":"beatport","key":"beatport","value":{"rev":"5-3b186b633ceea7f047e1df91e7b683a5"}},
-{"id":"beautifyjs","key":"beautifyjs","value":{"rev":"3-89ce050152aca0727c099060229ddc73"}},
-{"id":"beaver","key":"beaver","value":{"rev":"17-3b56116e8e40205e8efcedefee0319e3"}},
-{"id":"beeline","key":"beeline","value":{"rev":"11-92a4bd9524cc7aec3106efcacff6faed"}},
-{"id":"beet","key":"beet","value":{"rev":"95-3c9d9de63c363319b2201ac83bc0ee7d"}},
-{"id":"begin","key":"begin","value":{"rev":"3-b32a5eb1b9475353b37f90813ed89dce"}},
-{"id":"begin.js","key":"begin.js","value":{"rev":"7-9156869392a448595bf3e5723fcb7b57"}},
-{"id":"bejesus-api","key":"bejesus-api","value":{"rev":"11-6b42f8ffc370c494d01481b64536e91e"}},
-{"id":"bejesus-cli","key":"bejesus-cli","value":{"rev":"31-5fbbfe5ec1f6a0a7a3fafdf69230434a"}},
-{"id":"bem","key":"bem","value":{"rev":"22-c0e0f8d9e92b355246fd15058199b73c"}},
-{"id":"ben","key":"ben","value":{"rev":"3-debe52552a86f1e71895dd5d32add585"}},
-{"id":"bench","key":"bench","value":{"rev":"14-20987e1becf3acd1bd1833b04712c87c"}},
-{"id":"bencher","key":"bencher","value":{"rev":"3-08866a8fdcf180582b43690bbbf21087"}},
-{"id":"benchmark","key":"benchmark","value":{"rev":"219-0669bc24f3f2918d93369bb0d801abf3"}},
-{"id":"bencode","key":"bencode","value":{"rev":"8-7b9eff4c1658fb3a054ebc6f50e6edcd"}},
-{"id":"beseda","key":"beseda","value":{"rev":"49-5cc8c4e9bb3e836de7db58c3adf9a5bb"}},
-{"id":"bf","key":"bf","value":{"rev":"14-d81312e1bf4f7202b801b4343199aa55"}},
-{"id":"biggie-router","key":"biggie-router","value":{"rev":"42-56a546a78d5abd4402183b3d300d563e"}},
-{"id":"bigint","key":"bigint","value":{"rev":"58-02f368567849596219d6a0e87d9bc6b9"}},
-{"id":"bignumber","key":"bignumber","value":{"rev":"3-6e372428992a767e0a991ec3f39b8343"}},
-{"id":"binary","key":"binary","value":{"rev":"47-947aa2f5238a68e34b164ef7e50ece28"}},
-{"id":"binarySearch","key":"binarySearch","value":{"rev":"15-93a3d2f9c2690457023b5ae5f3d00446"}},
-{"id":"bind","key":"bind","value":{"rev":"9-b74d0af83e90a2655e564ab64bf1d27d"}},
-{"id":"binpack","key":"binpack","value":{"rev":"7-3dc67a64e0ef01f3aa59441c5150e04f"}},
-{"id":"bintrees","key":"bintrees","value":{"rev":"12-507fcd92f447f81842cba08cacb425cf"}},
-{"id":"bisection","key":"bisection","value":{"rev":"5-f785ea3bbd8fcc7cd9381d20417b87bb"}},
-{"id":"bison","key":"bison","value":{"rev":"12-e663b2ef96650b3b5a0cc36524e1b94a"}},
-{"id":"bitcoder","key":"bitcoder","value":{"rev":"8-19c957d6b845f4d7ad531951c971e03d"}},
-{"id":"bitcoin","key":"bitcoin","value":{"rev":"13-af88a28c02ab146622743c4c1c32e87b"}},
-{"id":"bitcoin-impl","key":"bitcoin-impl","value":{"rev":"8-99068f1d259e3c75209a6bd08e3e06a2"}},
-{"id":"bitcoin-p2p","key":"bitcoin-p2p","value":{"rev":"25-6df0283eb6e419bc3a1571f17721b100"}},
-{"id":"bitcoinjs-mongoose","key":"bitcoinjs-mongoose","value":{"rev":"3-57e239b31e218693f8cf3cf1cf098437"}},
-{"id":"bitly","key":"bitly","value":{"rev":"8-d6bfac8338e223fe62538954d2e9246a"}},
-{"id":"bitly.node","key":"bitly.node","value":{"rev":"3-15329b7a77633e0dae2c720e592420fb"}},
-{"id":"biwascheme","key":"biwascheme","value":{"rev":"3-37a85eed1bd2d4ee85ef1e100e7ebe8f"}},
-{"id":"black","key":"black","value":{"rev":"3-e07ae2273357da5894f4b7cdf1b20560"}},
-{"id":"black_coffee","key":"black_coffee","value":{"rev":"3-c5c764cf550ad3c831a085509f64cdfb"}},
-{"id":"bleach","key":"bleach","value":{"rev":"5-ef3ab7e761a6903eb70da1550a07e53d"}},
-{"id":"blend","key":"blend","value":{"rev":"16-c5dd075b3ede45f91056b4b768b2bfe8"}},
-{"id":"bless","key":"bless","value":{"rev":"29-1b9bc6f17acd144f51a297e4bdccfe0e"}},
-{"id":"blitz","key":"blitz","value":{"rev":"5-8bf6786f6fd7dbc0570ba21f803f35e6"}},
-{"id":"blo","key":"blo","value":{"rev":"5-9e752ea37438ea026e88a7aa7e7a91ba"}},
-{"id":"blog","key":"blog","value":{"rev":"13-80fc7b11d73e23ca7e518d271d1836ee"}},
-{"id":"blogmate","key":"blogmate","value":{"rev":"11-e503081be9290647c841aa8c04eb6e70"}},
-{"id":"bloodmoney","key":"bloodmoney","value":{"rev":"3-859b0235de3a29bf241323a31f9aa730"}},
-{"id":"bloom","key":"bloom","value":{"rev":"15-c609882b29d61a771d7dbf17f43016ad"}},
-{"id":"blue","key":"blue","value":{"rev":"6-e84221f7286dffbfda6f8abc6306064c"}},
-{"id":"bluemold","key":"bluemold","value":{"rev":"11-f48528b642b5d38d7c02b03622117fa7"}},
-{"id":"bn-lang","key":"bn-lang","value":{"rev":"3-266f186334f69448a940081589e82b04"}},
-{"id":"bn-lang-util","key":"bn-lang-util","value":{"rev":"3-0bc44f1d7d3746120dd835bfb685e229"}},
-{"id":"bn-log","key":"bn-log","value":{"rev":"5-db81a8a978071efd24b45e350e8b8954"}},
-{"id":"bn-template","key":"bn-template","value":{"rev":"3-604e77465ab1dc7e17f3b325089651ec"}},
-{"id":"bn-time","key":"bn-time","value":{"rev":"3-9c33587e783a98e1ccea409cacd5bbfb"}},
-{"id":"bn-unit","key":"bn-unit","value":{"rev":"3-5f35e3fd446241f682231bedcf846c0a"}},
-{"id":"bncode","key":"bncode","value":{"rev":"7-915a1759135a9837954c0ead58bf8e5a"}},
-{"id":"bnf","key":"bnf","value":{"rev":"5-4fe80fcafcc7a263f28b8dc62093bd8d"}},
-{"id":"bob","key":"bob","value":{"rev":"9-9ceeb581263c04793a2231b3726ab22b"}},
-{"id":"bogart","key":"bogart","value":{"rev":"30-70aed6f0827d2bd09963afddcad7a34a"}},
-{"id":"boil","key":"boil","value":{"rev":"3-7ab0fc3b831c591fd15711c27a6f5de0"}},
-{"id":"bolt","key":"bolt","value":{"rev":"3-138dfbdea2ab53ca714ca51494d32610"}},
-{"id":"bones","key":"bones","value":{"rev":"70-c74f0845c167cd755250fc7b4b9b40c2"}},
-{"id":"bones-admin","key":"bones-admin","value":{"rev":"11-2cdfe738d66aacff8569712a279c041d"}},
-{"id":"bones-auth","key":"bones-auth","value":{"rev":"35-2224f95bf3521809ce805ff215d2856c"}},
-{"id":"bones-document","key":"bones-document","value":{"rev":"13-95971fed1f47005c282e0fa60498e31c"}},
-{"id":"bonsai","key":"bonsai","value":{"rev":"3-67eb8935492d4ae9182a7ec74c1f36a6"}},
-{"id":"bonzo","key":"bonzo","value":{"rev":"142-7c5680b0f841c2263f06e96eb5237825"}},
-{"id":"bookbu","key":"bookbu","value":{"rev":"3-d9a104bccc67eae8a5dc6f0f4c3ba5fc"}},
-{"id":"bootstrap","key":"bootstrap","value":{"rev":"17-7a62dbe5e3323beb47165f13265f1a96"}},
-{"id":"borschik","key":"borschik","value":{"rev":"7-2570b5d6555a031394a55ff054797cb9"}},
-{"id":"bots","key":"bots","value":{"rev":"9-df43539c13d2996d9e32dff848615e8a"}},
-{"id":"bounce","key":"bounce","value":{"rev":"8-a3e424b2be1379743e9628c726facaa8"}},
-{"id":"bowser","key":"bowser","value":{"rev":"11-23ecc98edf5fde63fda626bb03da597f"}},
-{"id":"box2d","key":"box2d","value":{"rev":"6-5c920e9829764cbf904b9a59474c1672"}},
-{"id":"box2dnode","key":"box2dnode","value":{"rev":"3-12ffe24dcc1478ea0008c60c4ef7118f"}},
-{"id":"boxcar","key":"boxcar","value":{"rev":"5-a9ba953c547585285559d0e05c16e29e"}},
-{"id":"boxer","key":"boxer","value":{"rev":"8-60c49ff8574d5a47616796ad991463ad"}},
-{"id":"bracket-matcher","key":"bracket-matcher","value":{"rev":"27-a01c946c69665629e212a0f702be1b38"}},
-{"id":"brain","key":"brain","value":{"rev":"24-3aba33914e0f823505c69ef01361681b"}},
-{"id":"brainfuck","key":"brainfuck","value":{"rev":"7-adf33477ffe8640c9fdd6a0f8b349953"}},
-{"id":"brains","key":"brains","value":{"rev":"3-d7e7a95ea742f9b42fefb594c67c726a"}},
-{"id":"braintree","key":"braintree","value":{"rev":"14-eabe1c3e4e7cfd1f521f4bfd337611f7"}},
-{"id":"brazilnut","key":"brazilnut","value":{"rev":"3-4163b5a5598a8905c1283db9d260e5cc"}},
-{"id":"brazln","key":"brazln","value":{"rev":"29-15895bb5b193552826c196efe084caf2"}},
-{"id":"bread","key":"bread","value":{"rev":"9-093c9dd71fffb9a5b1c9eb8ac3e2a9b0"}},
-{"id":"breakfast","key":"breakfast","value":{"rev":"3-231e3046ede5e35e272dfab4a379015d"}},
-{"id":"brequire","key":"brequire","value":{"rev":"18-58b386e08541b222238aa12a13119fd9"}},
-{"id":"bricks","key":"bricks","value":{"rev":"15-f72e6c858c5bceb00cc34a16d52a7b59"}},
-{"id":"bricks-analytics","key":"bricks-analytics","value":{"rev":"3-dc2b6d2157c5039a4c36ceda46761b37"}},
-{"id":"bricks-compress","key":"bricks-compress","value":{"rev":"5-580eeecaa30c210502f42c5e184344a3"}},
-{"id":"bricks-rewrite","key":"bricks-rewrite","value":{"rev":"5-7a141aacaa3fd706b97847c6e8f9830a"}},
-{"id":"brokenbin","key":"brokenbin","value":{"rev":"5-bbc7a1c9628ed9f49b6d23e80c242852"}},
-{"id":"broker","key":"broker","value":{"rev":"9-756a097b948756e4bd7609b6f83a0847"}},
-{"id":"browscap","key":"browscap","value":{"rev":"12-c6fed16796d1ad84913f2617c66f0c7b"}},
-{"id":"browser-require","key":"browser-require","value":{"rev":"27-99f61fb3036ebc643282625649cc674f"}},
-{"id":"browserify","key":"browserify","value":{"rev":"163-c307ee153caf2160e5c32abd58898139"}},
-{"id":"browserjet","key":"browserjet","value":{"rev":"3-a386ab8911c410362eb8fceab5a998fe"}},
-{"id":"brt","key":"brt","value":{"rev":"3-b8452659a92039571ff1f877c8f874c7"}},
-{"id":"brunch","key":"brunch","value":{"rev":"113-64ae44857425c5d860d36f38ab3cf797"}},
-{"id":"brushes.js","key":"brushes.js","value":{"rev":"3-e28bd6597b949d84965a788928738f53"}},
-{"id":"bson","key":"bson","value":{"rev":"50-9d9db515dd9d2a4d873d186f324767a5"}},
-{"id":"btc-ex-api","key":"btc-ex-api","value":{"rev":"3-cabbf284cb01af79ee183d8023106762"}},
-{"id":"btoa","key":"btoa","value":{"rev":"3-b4a124b3650a746b8da9c9f93f386bac"}},
-{"id":"btoa-atob","key":"btoa-atob","value":{"rev":"3-baac60a3f04487333cc0364301220a53"}},
-{"id":"bucket","key":"bucket","value":{"rev":"3-5c2da8f67e29de1c29adbf51ad7d7299"}},
-{"id":"buffalo","key":"buffalo","value":{"rev":"9-6c763d939d775a255c65ba8dcf0d5372"}},
-{"id":"bufferjs","key":"bufferjs","value":{"rev":"13-b6e09e35ec822714d3ec485ac2010272"}},
-{"id":"bufferlib","key":"bufferlib","value":{"rev":"16-d48d96815fc7709d6b7d0a8bfc67f053"}},
-{"id":"bufferlist","key":"bufferlist","value":{"rev":"18-6fcedc10ffbca1afdc866e208d2f906a"}},
-{"id":"buffers","key":"buffers","value":{"rev":"11-3a70ec2da112befdc65b8c02772b8c44"}},
-{"id":"bufferstream","key":"bufferstream","value":{"rev":"82-6f82c5affb3906ebbaa0b116baf73c54"}},
-{"id":"buffertools","key":"buffertools","value":{"rev":"20-68f90e224f81fab81295f9079dc3c0fc"}},
-{"id":"buffoon","key":"buffoon","value":{"rev":"9-1cdc1cbced94691e836d4266eed7c143"}},
-{"id":"builder","key":"builder","value":{"rev":"25-b9679e2aaffec1ac6d59fdd259d9590c"}},
-{"id":"buildr","key":"buildr","value":{"rev":"69-cb3a756903a6322c6f9f4dd1c384a607"}},
-{"id":"bumper","key":"bumper","value":{"rev":"3-1e8d17aa3b29815e4069294cc9ce572c"}},
-{"id":"bundle","key":"bundle","value":{"rev":"39-46fde9cd841bce1fbdd92f6a1235c308"}},
-{"id":"bunker","key":"bunker","value":{"rev":"7-ed993a296fa0b8d3c3a7cd759d6f371e"}},
-{"id":"burari","key":"burari","value":{"rev":"11-08b61073d6ad0ef0c7449a574dc8f54b"}},
-{"id":"burrito","key":"burrito","value":{"rev":"38-3f3b109972720647f5412f3a2478859b"}},
-{"id":"busbuddy","key":"busbuddy","value":{"rev":"5-298ec29f6307351cf7a19bceebe957c7"}},
-{"id":"buster","key":"buster","value":{"rev":"9-870a6e9638806adde2f40105900cd4b3"}},
-{"id":"buster-args","key":"buster-args","value":{"rev":"7-9b189c602e437a505625dbf7fef5dead"}},
-{"id":"buster-assertions","key":"buster-assertions","value":{"rev":"5-fa34a8a5e7cf4dd08c2d02c39de3b563"}},
-{"id":"buster-cli","key":"buster-cli","value":{"rev":"5-b1a85006e41dbf74313253c571e63874"}},
-{"id":"buster-client","key":"buster-client","value":{"rev":"5-340637ec63b54bb01c1313a78db01945"}},
-{"id":"buster-configuration","key":"buster-configuration","value":{"rev":"3-a12e7ff172562b513534fc26be00aaed"}},
-{"id":"buster-core","key":"buster-core","value":{"rev":"5-871df160645e6684111a8fd02ff0eee9"}},
-{"id":"buster-evented-logger","key":"buster-evented-logger","value":{"rev":"5-c46681e6275a76723e3bc834555dbe32"}},
-{"id":"buster-format","key":"buster-format","value":{"rev":"5-e193e90436c7f941739b82adad86bdd8"}},
-{"id":"buster-module-loader","key":"buster-module-loader","value":{"rev":"5-4148b61f8b718e6181aa6054664a7c44"}},
-{"id":"buster-multicast","key":"buster-multicast","value":{"rev":"3-79480b5be761d243b274cb1e77375afc"}},
-{"id":"buster-promise","key":"buster-promise","value":{"rev":"5-b50030957fbd70e65576faa9c541b739"}},
-{"id":"buster-script-loader","key":"buster-script-loader","value":{"rev":"3-85af28b5bc4e647f27514fede19a144e"}},
-{"id":"buster-server","key":"buster-server","value":{"rev":"7-57b8b43047504818322018d2bbfee1f1"}},
-{"id":"buster-static","key":"buster-static","value":{"rev":"3-018c89d1524f7823934087f18dab9047"}},
-{"id":"buster-terminal","key":"buster-terminal","value":{"rev":"5-2c54c30ffa4a2d4b061e4c38e6b9b0e7"}},
-{"id":"buster-test","key":"buster-test","value":{"rev":"5-f7ee9c9f3b379e0ad5aa03d07581ad6f"}},
-{"id":"buster-test-cli","key":"buster-test-cli","value":{"rev":"9-c207974d20e95029cad5fa4c9435d152"}},
-{"id":"buster-user-agent-parser","key":"buster-user-agent-parser","value":{"rev":"5-7883085a203b3047b28ad08361219d1d"}},
-{"id":"buster-util","key":"buster-util","value":{"rev":"3-81977275a9c467ad79bb7e3f2b1caaa8"}},
-{"id":"butler","key":"butler","value":{"rev":"7-c964c4d213da6b0de2492ee57514d0f8"}},
-{"id":"byline","key":"byline","value":{"rev":"9-0b236ed5986c20136c0d581a244d52ac"}},
-{"id":"bz","key":"bz","value":{"rev":"7-d2a463b259c4e09dc9a79ddee9575ca0"}},
-{"id":"c2dm","key":"c2dm","value":{"rev":"11-a1e6a6643506bed3e1443155706aa5fe"}},
-{"id":"cabin","key":"cabin","value":{"rev":"7-df81ef56f0bb085d381c36600496dc57"}},
-{"id":"caboose","key":"caboose","value":{"rev":"49-7226441f91b63fb5c3ac240bd99d142a"}},
-{"id":"caboose-authentication","key":"caboose-authentication","value":{"rev":"3-9c71a9d7315fdea7d5f52fe52ecef118"}},
-{"id":"caboose-model","key":"caboose-model","value":{"rev":"3-967426d5acb8bb70e133f0052075dc1b"}},
-{"id":"cache2file","key":"cache2file","value":{"rev":"17-ac9caec611a38e1752d91f8cc80cfb04"}},
-{"id":"caching","key":"caching","value":{"rev":"11-06041aaaa46b63ed36843685cac63245"}},
-{"id":"calais","key":"calais","value":{"rev":"11-f8ac2064ca45dd5b7db7ea099cd61dfb"}},
-{"id":"calc","key":"calc","value":{"rev":"3-bead9c5b0bee34e44e7c04aa2bf9cd68"}},
-{"id":"calipso","key":"calipso","value":{"rev":"87-b562676045a66a3ec702591c67a9635e"}},
-{"id":"caman","key":"caman","value":{"rev":"15-4b97c73f0ac101c68335de2937483893"}},
-{"id":"camanjs","key":"camanjs","value":{"rev":"3-2856bbdf7a1d454929b4a80b119e3da0"}},
-{"id":"camelot","key":"camelot","value":{"rev":"7-8e257c5213861ecbd229ee737a3a8bb4"}},
-{"id":"campusbooks","key":"campusbooks","value":{"rev":"18-489be33c6ac2d6cbcf93355f2b129389"}},
-{"id":"canvas","key":"canvas","value":{"rev":"78-27dbf5b6e0a25ba5886d485fd897d701"}},
-{"id":"canvasutil","key":"canvasutil","value":{"rev":"7-0b87a370d673886efb7763aaf500b744"}},
-{"id":"capoo","key":"capoo","value":{"rev":"9-136a3ddf489228d5f4b504b1da619447"}},
-{"id":"capsule","key":"capsule","value":{"rev":"19-ad3c9ba0af71a84228e6dd360017f379"}},
-{"id":"capt","key":"capt","value":{"rev":"13-0805d789000fb2e361103a5e62379196"}},
-{"id":"carena","key":"carena","value":{"rev":"10-d38e8c336a0dbb8091514f638b22b96b"}},
-{"id":"carrier","key":"carrier","value":{"rev":"20-b2b4a0560d40eeac617000e9e22a9e9d"}},
-{"id":"cart","key":"cart","value":{"rev":"12-493e79c6fa0b099626e90da79a69f1e5"}},
-{"id":"carto","key":"carto","value":{"rev":"45-8eab07e2fac57396dd62af5805062387"}},
-{"id":"caruso","key":"caruso","value":{"rev":"5-d58e22212b0bcebbab4b42adc68799aa"}},
-{"id":"cas","key":"cas","value":{"rev":"3-82a93160eb9add99bde1599e55d18fd8"}},
-{"id":"cas-auth","key":"cas-auth","value":{"rev":"3-b02f77c198050b99f1df18f637e77c10"}},
-{"id":"cas-client","key":"cas-client","value":{"rev":"3-ca69e32a3053bc680d1dddc57271483b"}},
-{"id":"cashew","key":"cashew","value":{"rev":"7-9e81cde34263adad6949875c4b33ee99"}},
-{"id":"cassandra","key":"cassandra","value":{"rev":"3-8617ef73fdc73d02ecec74d31f98e463"}},
-{"id":"cassandra-client","key":"cassandra-client","value":{"rev":"19-aa1aef5d203be5b0eac678284f1a979f"}},
-{"id":"casset","key":"casset","value":{"rev":"3-2052c7feb5b89c77aaa279c8b50126ce"}},
-{"id":"castaneum","key":"castaneum","value":{"rev":"26-4dc55ba2482cca4230b4bc77ecb5b70d"}},
-{"id":"cat","key":"cat","value":{"rev":"3-75f20119b363b85c1a8433e26b86c943"}},
-{"id":"catchjs","key":"catchjs","value":{"rev":"3-ffda7eff7613de37f629dc7a831ffda1"}},
-{"id":"caterpillar","key":"caterpillar","value":{"rev":"5-bc003e3af33240e67b4c3042f308b7da"}},
-{"id":"causeeffect","key":"causeeffect","value":{"rev":"9-7e4e25bff656170c97cb0cce1b2ab6ca"}},
-{"id":"cayenne","key":"cayenne","value":{"rev":"5-2797f561467b41cc45804e5498917800"}},
-{"id":"ccn4bnode","key":"ccn4bnode","value":{"rev":"17-96f55189e5c98f0fa8200e403a04eb39"}},
-{"id":"ccnq3_config","key":"ccnq3_config","value":{"rev":"21-40345771769a9cadff4af9113b8124c2"}},
-{"id":"ccnq3_logger","key":"ccnq3_logger","value":{"rev":"5-4aa168dc24425938a29cf9ac456158d7"}},
-{"id":"ccnq3_portal","key":"ccnq3_portal","value":{"rev":"17-84e629ec1eaba1722327ccb9dddb05cf"}},
-{"id":"ccnq3_roles","key":"ccnq3_roles","value":{"rev":"43-97de74b08b1af103da8905533a84b749"}},
-{"id":"ccss","key":"ccss","value":{"rev":"11-b9beb506410ea81581ba4c7dfe9b2a7d"}},
-{"id":"cdb","key":"cdb","value":{"rev":"13-d7b6f609f069dc738912b405aac558ab"}},
-{"id":"cdb_changes","key":"cdb_changes","value":{"rev":"13-1dc99b096cb91c276332b651396789e8"}},
-{"id":"celeri","key":"celeri","value":{"rev":"17-b19294619ef6c2056f3bf6641e8945c2"}},
-{"id":"celery","key":"celery","value":{"rev":"5-bdfccd483cf30c4c10c5ec0963de1248"}},
-{"id":"cempl8","key":"cempl8","value":{"rev":"21-bb9547b78a1548fe11dc1d5b816b6da1"}},
-{"id":"cfg","key":"cfg","value":{"rev":"3-85c7651bb8f16b057e60a46946eb95af"}},
-{"id":"cgi","key":"cgi","value":{"rev":"17-7ceac458c7f141d4fbbf05d267a72aa8"}},
-{"id":"chain","key":"chain","value":{"rev":"9-b0f175c5ad0173bcb7e11e58b02a7394"}},
-{"id":"chain-gang","key":"chain-gang","value":{"rev":"22-b0e6841a344b65530ea2a83a038e5aa6"}},
-{"id":"chainer","key":"chainer","value":{"rev":"15-8c6a565035225a1dcca0177e92ccf42d"}},
-{"id":"chainify","key":"chainify","value":{"rev":"3-0926790f18a0016a9943cfb4830e0187"}},
-{"id":"chains","key":"chains","value":{"rev":"5-d9e1ac38056e2638e38d9a7c415929c6"}},
-{"id":"chainsaw","key":"chainsaw","value":{"rev":"24-82e078efbbc59f798d29a0259481012e"}},
-{"id":"changelog","key":"changelog","value":{"rev":"27-317e473de0bf596b273a9dadecea126d"}},
-{"id":"channel-server","key":"channel-server","value":{"rev":"3-3c882f7e61686e8a124b5198c638a18e"}},
-{"id":"channels","key":"channels","value":{"rev":"5-0b532f054886d9094cb98493ee0a7a16"}},
-{"id":"chaos","key":"chaos","value":{"rev":"40-7caa4459d398f5ec30fea91d087f0d71"}},
-{"id":"chard","key":"chard","value":{"rev":"3-f2de35f7a390ea86ac0eb78bf720d0de"}},
-{"id":"charenc","key":"charenc","value":{"rev":"3-092036302311a8f5779b800c98170b5b"}},
-{"id":"chargify","key":"chargify","value":{"rev":"5-e3f29f2816b04c26ca047d345928e2c1"}},
-{"id":"charm","key":"charm","value":{"rev":"13-3e7e7b5babc1efc472e3ce62eec2c0c7"}},
-{"id":"chat-server","key":"chat-server","value":{"rev":"7-c73b785372474e083fb8f3e9690761da"}},
-{"id":"chatroom","key":"chatroom","value":{"rev":"3-f4fa8330b7eb277d11407f968bffb6a2"}},
-{"id":"chatspire","key":"chatspire","value":{"rev":"3-081e167e3f7c1982ab1b7fc3679cb87c"}},
-{"id":"checkip","key":"checkip","value":{"rev":"3-b31d58a160a4a3fe2f14cfbf2217949e"}},
-{"id":"cheddar-getter","key":"cheddar-getter","value":{"rev":"3-d675ec138ea704df127fabab6a52a8dc"}},
-{"id":"chess","key":"chess","value":{"rev":"3-8b15268c8b0fb500dcbc83b259e7fb88"}},
-{"id":"chessathome-worker","key":"chessathome-worker","value":{"rev":"7-cdfd411554c35ba7a52e54f7744bed35"}},
-{"id":"chirkut.js","key":"chirkut.js","value":{"rev":"3-c0e515eee0f719c5261a43e692a3585c"}},
-{"id":"chiron","key":"chiron","value":{"rev":"6-ccb575e432c1c1981fc34b4e27329c85"}},
-{"id":"chopper","key":"chopper","value":{"rev":"5-168681c58c2a50796676dea73dc5398b"}},
-{"id":"choreographer","key":"choreographer","value":{"rev":"14-b0159823becdf0b4552967293968b2a8"}},
-{"id":"chromic","key":"chromic","value":{"rev":"3-c4ca0bb1f951db96c727241092afa9cd"}},
-{"id":"chrono","key":"chrono","value":{"rev":"9-6399d715df1a2f4696f89f2ab5d4d83a"}},
-{"id":"chuck","key":"chuck","value":{"rev":"3-71f2ee071d4b6fb2af3b8b828c51d8ab"}},
-{"id":"chunkedstream","key":"chunkedstream","value":{"rev":"3-b145ed7d1abd94ac44343413e4f823e7"}},
-{"id":"cider","key":"cider","value":{"rev":"10-dc20cd3eac9470e96911dcf75ac6492b"}},
-{"id":"cinch","key":"cinch","value":{"rev":"5-086af7f72caefb57284e4101cbe3c905"}},
-{"id":"cipherpipe","key":"cipherpipe","value":{"rev":"5-0b5590f808415a7297de6d45947d911f"}},
-{"id":"cjson","key":"cjson","value":{"rev":"25-02e3d327b48e77dc0f9e070ce9454ac2"}},
-{"id":"ck","key":"ck","value":{"rev":"3-f482385f5392a49353d8ba5eb9c7afef"}},
-{"id":"ckup","key":"ckup","value":{"rev":"26-90a76ec0cdf951dc2ea6058098407ee2"}},
-{"id":"class","key":"class","value":{"rev":"6-e2805f7d87586a66fb5fd170cf74b3b0"}},
-{"id":"class-42","key":"class-42","value":{"rev":"3-14c988567a2c78a857f15c9661bd6430"}},
-{"id":"class-js","key":"class-js","value":{"rev":"5-792fd04288a651dad87bc47eb91c2042"}},
-{"id":"classify","key":"classify","value":{"rev":"23-35eb336c350446f5ed49069df151dbb7"}},
-{"id":"clean-css","key":"clean-css","value":{"rev":"13-e30ea1007f6c5bb49e07276228b8a960"}},
-{"id":"clearInterval","key":"clearInterval","value":{"rev":"3-a49fa235d3dc14d28a3d15f8db291986"}},
-{"id":"clearTimeout","key":"clearTimeout","value":{"rev":"3-e838bd25adc825112922913c1a35b934"}},
-{"id":"cli","key":"cli","value":{"rev":"65-9e79c37c12d21b9b9114093de0773c54"}},
-{"id":"cli-color","key":"cli-color","value":{"rev":"9-0a8e775e713b1351f6a6648748dd16ec"}},
-{"id":"cli-table","key":"cli-table","value":{"rev":"3-9e447a8bb392fb7d9c534445a650e328"}},
-{"id":"clickatell","key":"clickatell","value":{"rev":"3-31f1a66d08a789976919df0c9280de88"}},
-{"id":"clicktime","key":"clicktime","value":{"rev":"9-697a99f5f704bfebbb454df47c9c472a"}},
-{"id":"clientexpress","key":"clientexpress","value":{"rev":"3-9b07041cd7b0c3967c4625ac74c9b50c"}},
-{"id":"cliff","key":"cliff","value":{"rev":"15-ef9ef25dbad08c0e346388522d94c5c3"}},
-{"id":"clip","key":"clip","value":{"rev":"21-c3936e566feebfe0beddb0bbb686c00d"}},
-{"id":"clock","key":"clock","value":{"rev":"5-19bc51841d41408b4446c0862487dc5e"}},
-{"id":"clog","key":"clog","value":{"rev":"5-1610fe2c0f435d2694a1707ee15cd11e"}},
-{"id":"clone","key":"clone","value":{"rev":"11-099d07f38381b54902c4cf5b93671ed4"}},
-{"id":"closure","key":"closure","value":{"rev":"7-9c2ac6b6ec9f14d12d10bfbfad58ec14"}},
-{"id":"closure-compiler","key":"closure-compiler","value":{"rev":"8-b3d2f9e3287dd33094a35d797d6beaf2"}},
-{"id":"cloud","key":"cloud","value":{"rev":"27-407c7aa77d3d4a6cc903d18b383de8b8"}},
-{"id":"cloud9","key":"cloud9","value":{"rev":"71-4af631e3fa2eb28058cb0d18ef3a6a3e"}},
-{"id":"cloudcontrol","key":"cloudcontrol","value":{"rev":"15-2df57385aa9bd92f7ed81e6892e23696"}},
-{"id":"cloudfiles","key":"cloudfiles","value":{"rev":"30-01f84ebda1d8f151b3e467590329960c"}},
-{"id":"cloudfoundry","key":"cloudfoundry","value":{"rev":"3-66fafd3d6b1353b1699d35e634686ab6"}},
-{"id":"cloudmailin","key":"cloudmailin","value":{"rev":"3-a4e3e4d457f5a18261bb8df145cfb418"}},
-{"id":"cloudnode-cli","key":"cloudnode-cli","value":{"rev":"17-3a80f7855ce618f7aee68bd693ed485b"}},
-{"id":"cloudservers","key":"cloudservers","value":{"rev":"42-6bc34f7e34f84a24078b43a609e96c59"}},
-{"id":"clucene","key":"clucene","value":{"rev":"37-3d613f12a857b8fe22fbf420bcca0dc3"}},
-{"id":"cluster","key":"cluster","value":{"rev":"83-63fb7a468d95502f94ea45208ba0a890"}},
-{"id":"cluster-isolatable","key":"cluster-isolatable","value":{"rev":"5-6af883cea9ab1c90bb126d8b3be2d156"}},
-{"id":"cluster-live","key":"cluster-live","value":{"rev":"7-549d19e9727f460c7de48f93b92e9bb3"}},
-{"id":"cluster-log","key":"cluster-log","value":{"rev":"7-9c47854df8ec911e679743185668a5f7"}},
-{"id":"cluster-loggly","key":"cluster-loggly","value":{"rev":"3-e1f7e331282d7b8317ce55e0fce7f934"}},
-{"id":"cluster-mail","key":"cluster-mail","value":{"rev":"9-dc18c5c1b2b265f3d531b92467b6cc35"}},
-{"id":"cluster-responsetimes","key":"cluster-responsetimes","value":{"rev":"3-c9e16daee15eb84910493264e973275c"}},
-{"id":"cluster-socket.io","key":"cluster-socket.io","value":{"rev":"7-29032f0b42575e9fe183a0af92191132"}},
-{"id":"cluster.exception","key":"cluster.exception","value":{"rev":"3-10856526e2f61e3000d62b12abd750e3"}},
-{"id":"clutch","key":"clutch","value":{"rev":"8-50283f7263c430cdd1d293c033571012"}},
-{"id":"cm1-route","key":"cm1-route","value":{"rev":"13-40e72b5a4277b500c98c966bcd2a8a86"}},
-{"id":"cmd","key":"cmd","value":{"rev":"9-9168fcd96fb1ba9449050162023f3570"}},
-{"id":"cmdopt","key":"cmdopt","value":{"rev":"3-85677533e299bf195e78942929cf9839"}},
-{"id":"cmp","key":"cmp","value":{"rev":"5-b10f873b78eb64e406fe55bd001ae0fa"}},
-{"id":"cmudict","key":"cmudict","value":{"rev":"3-cd028380bba917d5ed2be7a8d3b3b0b7"}},
-{"id":"cnlogger","key":"cnlogger","value":{"rev":"9-dbe7e0e50d25ca5ae939fe999c3c562b"}},
-{"id":"coa","key":"coa","value":{"rev":"11-ff4e634fbebd3f80b9461ebe58b3f64e"}},
-{"id":"cobra","key":"cobra","value":{"rev":"5-a3e0963830d350f4a7e91b438caf9117"}},
-{"id":"cockpit","key":"cockpit","value":{"rev":"3-1757b37245ee990999e4456b9a6b963e"}},
-{"id":"coco","key":"coco","value":{"rev":"104-eabc4d7096295c2156144a7581d89b35"}},
-{"id":"cocos2d","key":"cocos2d","value":{"rev":"19-88a5c75ceb6e7667665c056d174f5f1a"}},
-{"id":"codem-transcode","key":"codem-transcode","value":{"rev":"9-1faa2657d53271ccc44cce27de723e99"}},
-{"id":"codepad","key":"codepad","value":{"rev":"5-094ddce74dc057dc0a4d423d6d2fbc3a"}},
-{"id":"codetube","key":"codetube","value":{"rev":"3-819794145f199330e724864db70da53b"}},
-{"id":"coerce","key":"coerce","value":{"rev":"3-e7d392d497c0b8491b89fcbbd1a5a89f"}},
-{"id":"coffee-conf","key":"coffee-conf","value":{"rev":"3-883bc4767d70810ece2fdf1ccae883de"}},
-{"id":"coffee-css","key":"coffee-css","value":{"rev":"11-66ca197173751389b24945f020f198f9"}},
-{"id":"coffee-echonest","key":"coffee-echonest","value":{"rev":"3-3cd0e2b77103e334eccf6cf4168f39b2"}},
-{"id":"coffee-machine","key":"coffee-machine","value":{"rev":"9-02deb4d27fd5d56002ead122e9bb213e"}},
-{"id":"coffee-new","key":"coffee-new","value":{"rev":"67-0664b0f289030c38d113070fd26f4f71"}},
-{"id":"coffee-resque","key":"coffee-resque","value":{"rev":"22-5b022809317d3a873be900f1a697c5eb"}},
-{"id":"coffee-resque-retry","key":"coffee-resque-retry","value":{"rev":"29-1fb64819a4a21ebb4d774d9d4108e419"}},
-{"id":"coffee-revup","key":"coffee-revup","value":{"rev":"3-23aafa258bcdcf2bb68d143d61383551"}},
-{"id":"coffee-script","key":"coffee-script","value":{"rev":"60-a6c3739655f43953bd86283776586b95"}},
-{"id":"coffee-son","key":"coffee-son","value":{"rev":"3-84a81e7e24c8cb23293940fc1b87adfe"}},
-{"id":"coffee-toaster","key":"coffee-toaster","value":{"rev":"17-d43d7276c08b526c229c78b7d5acd6cc"}},
-{"id":"coffee-watcher","key":"coffee-watcher","value":{"rev":"3-3d861a748f0928c789cbdb8ff62b6091"}},
-{"id":"coffee-world","key":"coffee-world","value":{"rev":"15-46dc320f94fa64c39e183224ec59f47a"}},
-{"id":"coffee4clients","key":"coffee4clients","value":{"rev":"15-58fba7dd10bced0411cfe546b9336145"}},
-{"id":"coffeeapp","key":"coffeeapp","value":{"rev":"48-bece0a26b78afc18cd37d577f90369d9"}},
-{"id":"coffeebot","key":"coffeebot","value":{"rev":"3-a9007053f25a4c13b324f0ac7066803e"}},
-{"id":"coffeedoc","key":"coffeedoc","value":{"rev":"21-a955faafafd10375baf3101ad2c142d0"}},
-{"id":"coffeegrinder","key":"coffeegrinder","value":{"rev":"9-6e725aad7fd39cd38f41c743ef8a7563"}},
-{"id":"coffeekup","key":"coffeekup","value":{"rev":"35-9b1eecdb7b13d3e75cdc7b1045cf910a"}},
-{"id":"coffeemaker","key":"coffeemaker","value":{"rev":"9-4c5e665aa2a5b4efa2b7d077d0a4f9c1"}},
-{"id":"coffeemate","key":"coffeemate","value":{"rev":"71-03d0221fb495f2dc6732009884027b47"}},
-{"id":"coffeepack","key":"coffeepack","value":{"rev":"3-bbf0e27cb4865392164e7ab33f131d58"}},
-{"id":"coffeeq","key":"coffeeq","value":{"rev":"9-4e38e9742a0b9d7b308565729fbfd123"}},
-{"id":"coffeescript-growl","key":"coffeescript-growl","value":{"rev":"7-2bc1f93c4aad5fa8fb4bcfd1b3ecc279"}},
-{"id":"coffeescript-notify","key":"coffeescript-notify","value":{"rev":"3-8aeb31f8e892d3fefa421ff28a1b3de9"}},
-{"id":"collectd","key":"collectd","value":{"rev":"5-3d4c84b0363aa9c078157d82695557a1"}},
-{"id":"collection","key":"collection","value":{"rev":"3-a47e1fe91b9eebb3e75954e350ec2ca3"}},
-{"id":"collection_functions","key":"collection_functions","value":{"rev":"3-7366c721008062373ec924a409415189"}},
-{"id":"collections","key":"collections","value":{"rev":"3-0237a40d08a0da36c2dd01ce73a89bb2"}},
-{"id":"color","key":"color","value":{"rev":"15-4898b2cd9744feb3249ba10828c186f8"}},
-{"id":"color-convert","key":"color-convert","value":{"rev":"7-2ccb47c7f07a47286d9a2f39383d28f0"}},
-{"id":"color-string","key":"color-string","value":{"rev":"5-9a6336f420e001e301a15b88b0103696"}},
-{"id":"colorize","key":"colorize","value":{"rev":"3-ff380385edacc0c46e4c7b5c05302576"}},
-{"id":"colors","key":"colors","value":{"rev":"8-7c7fb9c5af038c978f0868c7706fe145"}},
-{"id":"colour-extractor","key":"colour-extractor","value":{"rev":"3-62e96a84c6adf23f438b5aac76c7b257"}},
-{"id":"coloured","key":"coloured","value":{"rev":"8-c5295f2d5a8fc08e93d180a4e64f8d38"}},
-{"id":"coloured-log","key":"coloured-log","value":{"rev":"14-8627a3625959443acad71e2c23dfc582"}},
-{"id":"comb","key":"comb","value":{"rev":"5-7f201b621ae9a890c7f5a31867eba3e9"}},
-{"id":"combine","key":"combine","value":{"rev":"14-bed33cd4389a2e4bb826a0516c6ae307"}},
-{"id":"combined-stream","key":"combined-stream","value":{"rev":"13-678f560200ac2835b9026e9e2b955cb0"}},
-{"id":"combiner","key":"combiner","value":{"rev":"3-5e7f133c8c14958eaf9e92bd79ae8ee1"}},
-{"id":"combohandler","key":"combohandler","value":{"rev":"7-d7e1a402f0066caa6756a8866de81dd9"}},
-{"id":"combyne","key":"combyne","value":{"rev":"23-05ebee9666a769e32600bc5548d10ce9"}},
-{"id":"comfy","key":"comfy","value":{"rev":"5-8bfe55bc16611dfe51a184b8f3eb31c1"}},
-{"id":"command-parser","key":"command-parser","value":{"rev":"5-8a5c3ed6dfa0fa55cc71b32cf52332fc"}},
-{"id":"commander","key":"commander","value":{"rev":"11-9dd16c00844d464bf66c101a57075401"}},
-{"id":"commando","key":"commando","value":{"rev":"3-e159f1890f3771dfd6e04f4d984f26f3"}},
-{"id":"common","key":"common","value":{"rev":"16-94eafcf104c0c7d1090e668ddcc12a5f"}},
-{"id":"common-exception","key":"common-exception","value":{"rev":"7-bd46358014299da814691c835548ef21"}},
-{"id":"common-node","key":"common-node","value":{"rev":"5-b2c4bef0e7022d5d453661a9c43497a8"}},
-{"id":"common-pool","key":"common-pool","value":{"rev":"5-c495fa945361ba4fdfb2ee8733d791b4"}},
-{"id":"common-utils","key":"common-utils","value":{"rev":"3-e5a047f118fc304281d2bc5e9ab18e62"}},
-{"id":"commondir","key":"commondir","value":{"rev":"3-ea49874d12eeb9adf28ca28989dfb5a9"}},
-{"id":"commonjs","key":"commonjs","value":{"rev":"6-39fcd0de1ec265890cf063effd0672e3"}},
-{"id":"commonjs-utils","key":"commonjs-utils","value":{"rev":"6-c0266a91dbd0a43effb7d30da5d9f35c"}},
-{"id":"commonkv","key":"commonkv","value":{"rev":"3-90b2fe4c79e263b044303706c4d5485a"}},
-{"id":"commons","key":"commons","value":{"rev":"6-0ecb654aa2bd17cf9519f86d354f8a50"}},
-{"id":"complete","key":"complete","value":{"rev":"7-acde8cba7677747d09c3d53ff165754e"}},
-{"id":"complex-search","key":"complex-search","value":{"rev":"5-c80b2c7f049f333bde89435f3de497ca"}},
-{"id":"compose","key":"compose","value":{"rev":"1-cf8a97d6ead3bef056d85daec5d36c70"}},
-{"id":"composer","key":"composer","value":{"rev":"6-1deb43725051f845efd4a7c8e68aa6d6"}},
-{"id":"compress","key":"compress","value":{"rev":"17-f0aacce1356f807b51e083490fb353bd"}},
-{"id":"compress-buffer","key":"compress-buffer","value":{"rev":"12-2886014c7f2541f4ddff9f0f55f4c171"}},
-{"id":"compress-ds","key":"compress-ds","value":{"rev":"5-9e4c6931edf104443353594ef50aa127"}},
-{"id":"compressor","key":"compressor","value":{"rev":"3-ee8ad155a98e1483d899ebcf82d5fb63"}},
-{"id":"concrete","key":"concrete","value":{"rev":"5-bc70bbffb7c6fe9e8c399db578fb3bae"}},
-{"id":"condo","key":"condo","value":{"rev":"9-5f03d58ee7dc29465defa3758f3b138a"}},
-{"id":"conductor","key":"conductor","value":{"rev":"8-1878afadcda7398063de6286c2d2c5c1"}},
-{"id":"conf","key":"conf","value":{"rev":"11-dcf0f6a93827d1b143cb1d0858f2be4a"}},
-{"id":"config","key":"config","value":{"rev":"37-2b741a1e6951a74b7f1de0d0547418a0"}},
-{"id":"config-loader","key":"config-loader","value":{"rev":"3-708cc96d1206de46fb450eb57ca07b0d"}},
-{"id":"configurator","key":"configurator","value":{"rev":"5-b31ad9731741d19f28241f6af5b41fee"}},
-{"id":"confu","key":"confu","value":{"rev":"7-c46f82c4aa9a17db6530b00669461eaf"}},
-{"id":"confy","key":"confy","value":{"rev":"3-893b33743830a0318dc99b1788aa92ee"}},
-{"id":"connect","key":"connect","value":{"rev":"151-8b5617fc6ece6c125b5f628936159bd6"}},
-{"id":"connect-access-control","key":"connect-access-control","value":{"rev":"3-ccf5fb09533d41eb0b564eb1caecf910"}},
-{"id":"connect-airbrake","key":"connect-airbrake","value":{"rev":"5-19db5e5828977540814d09f9eb7f028f"}},
-{"id":"connect-analytics","key":"connect-analytics","value":{"rev":"3-6f71c8b08ed9f5762c1a4425c196fb2a"}},
-{"id":"connect-app-cache","key":"connect-app-cache","value":{"rev":"27-3e69452dfe51cc907f8b188aede1bda8"}},
-{"id":"connect-assetmanager","key":"connect-assetmanager","value":{"rev":"46-f2a8834d2749e0c069cee06244e7501c"}},
-{"id":"connect-assetmanager-handlers","key":"connect-assetmanager-handlers","value":{"rev":"38-8b93821fcf46f20bbad4319fb39302c1"}},
-{"id":"connect-assets","key":"connect-assets","value":{"rev":"33-7ec2940217e29a9514d20cfd49af10f5"}},
-{"id":"connect-auth","key":"connect-auth","value":{"rev":"36-5640e82f3e2773e44ce47b0687436305"}},
-{"id":"connect-cache","key":"connect-cache","value":{"rev":"11-efe1f0ab00c181b1a4dece446ef13a90"}},
-{"id":"connect-coffee","key":"connect-coffee","value":{"rev":"3-3d4ebcfe083c9e5a5d587090f1bb4d65"}},
-{"id":"connect-conneg","key":"connect-conneg","value":{"rev":"3-bc3e04e65cf1f5233a38cc846e9a4a75"}},
-{"id":"connect-cookie-session","key":"connect-cookie-session","value":{"rev":"3-f48ca73aa1ce1111a2c962d219b59c1a"}},
-{"id":"connect-cors","key":"connect-cors","value":{"rev":"10-5bc9e3759671a0157fdc307872d38844"}},
-{"id":"connect-couchdb","key":"connect-couchdb","value":{"rev":"9-9adb6d24c7fb6de58bafe6d06fb4a230"}},
-{"id":"connect-cradle","key":"connect-cradle","value":{"rev":"5-0e5e32e00a9b98eff1ab010173d26ffb"}},
-{"id":"connect-docco","key":"connect-docco","value":{"rev":"9-c8e379f9a89db53f8921895ac4e87ed6"}},
-{"id":"connect-dojo","key":"connect-dojo","value":{"rev":"17-f323c634536b9b948ad9607f4ca0847f"}},
-{"id":"connect-esi","key":"connect-esi","value":{"rev":"45-01de7506d405856586ea77cb14022192"}},
-{"id":"connect-facebook","key":"connect-facebook","value":{"rev":"3-bf77eb01c0476e607b25bc9d93416b7e"}},
-{"id":"connect-force-domain","key":"connect-force-domain","value":{"rev":"5-a65755f93aaea8a21c7ce7dd4734dca0"}},
-{"id":"connect-form","key":"connect-form","value":{"rev":"16-fa786af79f062a05ecdf3e7cf48317e2"}},
-{"id":"connect-geoip","key":"connect-geoip","value":{"rev":"3-d87f93bcac58aa7904886a8fb6c45899"}},
-{"id":"connect-googleapps","key":"connect-googleapps","value":{"rev":"13-49c5c6c6724b21eea9a8eaae2165978d"}},
-{"id":"connect-gzip","key":"connect-gzip","value":{"rev":"7-2e1d4bb887c1ddda278fc8465ee5645b"}},
-{"id":"connect-heroku-redis","key":"connect-heroku-redis","value":{"rev":"13-92da2be67451e5f55f6fbe3672c86dc4"}},
-{"id":"connect-i18n","key":"connect-i18n","value":{"rev":"8-09d47d7c220770fc80d1b6fd87ffcd07"}},
-{"id":"connect-identity","key":"connect-identity","value":{"rev":"8-8eb9e21bbf80045e0243720955d6070f"}},
-{"id":"connect-image-resizer","key":"connect-image-resizer","value":{"rev":"7-5f82563f87145f3cc06086afe3a14a62"}},
-{"id":"connect-index","key":"connect-index","value":{"rev":"3-8b8373334079eb26c8735b39483889a0"}},
-{"id":"connect-jsonp","key":"connect-jsonp","value":{"rev":"16-9e80af455e490710f06039d3c0025840"}},
-{"id":"connect-jsonrpc","key":"connect-jsonrpc","value":{"rev":"6-6556800f0bef6ae5eb10496d751048e7"}},
-{"id":"connect-kyoto","key":"connect-kyoto","value":{"rev":"5-8f6a9e9b24d1a71c786645402f509645"}},
-{"id":"connect-less","key":"connect-less","value":{"rev":"3-461ed9a80b462b978a81d5bcee6f3665"}},
-{"id":"connect-load-balance","key":"connect-load-balance","value":{"rev":"3-e74bff5fb47d1490c05a9cc4339af347"}},
-{"id":"connect-memcached","key":"connect-memcached","value":{"rev":"3-5fc92b7f9fb5bcfb364a27e6f052bcc7"}},
-{"id":"connect-mongo","key":"connect-mongo","value":{"rev":"13-c3869bc7337b2f1ee6b9b3364993f321"}},
-{"id":"connect-mongodb","key":"connect-mongodb","value":{"rev":"30-30cb932839ce16e4e496f5a33fdd720a"}},
-{"id":"connect-mongoose","key":"connect-mongoose","value":{"rev":"3-48a5b329e4cfa885442d43bbd1d0db46"}},
-{"id":"connect-mongoose-session","key":"connect-mongoose-session","value":{"rev":"3-6692b8e1225d5cd6a2daabd61cecb1cd"}},
-{"id":"connect-mysql-session","key":"connect-mysql-session","value":{"rev":"9-930abd0279ef7f447e75c95b3e71be12"}},
-{"id":"connect-no-www","key":"connect-no-www","value":{"rev":"3-33bed7417bc8a5e8efc74ce132c33158"}},
-{"id":"connect-notifo","key":"connect-notifo","value":{"rev":"3-4681f8c5a7dfd35aee9634e809c41804"}},
-{"id":"connect-parameter-router","key":"connect-parameter-router","value":{"rev":"3-f435f06d556c208d43ef05c64bcddceb"}},
-{"id":"connect-pg","key":"connect-pg","value":{"rev":"11-d84c53d8f1c24adfc266e7a031dddf0d"}},
-{"id":"connect-proxy","key":"connect-proxy","value":{"rev":"7-a691ff57a9affeab47c54d17dbe613cb"}},
-{"id":"connect-queryparser","key":"connect-queryparser","value":{"rev":"3-bb35a7f3f75297a63bf942a63b842698"}},
-{"id":"connect-redis","key":"connect-redis","value":{"rev":"40-4faa12962b14da49380de2bb183176f9"}},
-{"id":"connect-restreamer","key":"connect-restreamer","value":{"rev":"3-08e637ca685cc63b2b4f9722c763c105"}},
-{"id":"connect-riak","key":"connect-riak","value":{"rev":"5-3268c29a54e430a3f8adb33570afafdb"}},
-{"id":"connect-rpx","key":"connect-rpx","value":{"rev":"28-acc7bb4200c1d30f359151f0a715162c"}},
-{"id":"connect-security","key":"connect-security","value":{"rev":"16-fecd20f486a8ea4d557119af5b5a2960"}},
-{"id":"connect-select","key":"connect-select","value":{"rev":"5-5ca28ec800419e4cb3e97395a6b96153"}},
-{"id":"connect-session-mongo","key":"connect-session-mongo","value":{"rev":"9-9e6a26dfbb9c13a9d6f4060a1895730a"}},
-{"id":"connect-session-redis-store","key":"connect-session-redis-store","value":{"rev":"8-fecfed6e17476eaada5cfe7740d43893"}},
-{"id":"connect-sessionvoc","key":"connect-sessionvoc","value":{"rev":"13-57b6e6ea2158e3b7136054839662ea3d"}},
-{"id":"connect-spdy","key":"connect-spdy","value":{"rev":"11-f9eefd7303295d77d317cba78d299130"}},
-{"id":"connect-sts","key":"connect-sts","value":{"rev":"9-8e3fd563c04ce14b824fc4da42efb70e"}},
-{"id":"connect-timeout","key":"connect-timeout","value":{"rev":"4-6f5f8d97480c16c7acb05fe82400bbc7"}},
-{"id":"connect-unstable","key":"connect-unstable","value":{"rev":"3-1d3a4edc52f005d8cb4d557485095314"}},
-{"id":"connect-wormhole","key":"connect-wormhole","value":{"rev":"3-f33b15acc686bd9ad0c6df716529009f"}},
-{"id":"connect-xcors","key":"connect-xcors","value":{"rev":"7-f8e1cd6805a8779bbd6bb2c1000649fb"}},
-{"id":"connect_facebook","key":"connect_facebook","value":{"rev":"3-b3001d71f619836a009c53c816ce36ed"}},
-{"id":"connect_json","key":"connect_json","value":{"rev":"3-dd0df74291f80f45b4314d56192c19c5"}},
-{"id":"connectables","key":"connectables","value":{"rev":"3-f6e9f8f13883a523b4ea6035281f541b"}},
-{"id":"conseq","key":"conseq","value":{"rev":"3-890d340704322630e7a724333f394c70"}},
-{"id":"consistent-hashing","key":"consistent-hashing","value":{"rev":"3-fcef5d4479d926560cf1bc900f746f2a"}},
-{"id":"console","key":"console","value":{"rev":"3-1e0449b07c840eeac6b536e2552844f4"}},
-{"id":"console.log","key":"console.log","value":{"rev":"9-d608afe50e732ca453365befcb87bad5"}},
-{"id":"consolemark","key":"consolemark","value":{"rev":"13-320f003fc2c3cec909ab3e9c3bce9743"}},
-{"id":"construct","key":"construct","value":{"rev":"3-75bdc809ee0572172e6acff537af7d9b"}},
-{"id":"context","key":"context","value":{"rev":"3-86b1a6a0f77ef86d4d9ccfff47ceaf6a"}},
-{"id":"contextify","key":"contextify","value":{"rev":"9-547b8019ef66e0d1c84fe00be832e750"}},
-{"id":"contract","key":"contract","value":{"rev":"3-d09e775c2c1e297b6cbbfcd5efbae3c7"}},
-{"id":"contracts","key":"contracts","value":{"rev":"13-3fd75c77e688937734f51cf97f10dd7d"}},
-{"id":"control","key":"control","value":{"rev":"31-7abf0cb81d19761f3ff59917e56ecedf"}},
-{"id":"controljs","key":"controljs","value":{"rev":"3-a8e80f93e389ca07509fa7addd6cb805"}},
-{"id":"convert","key":"convert","value":{"rev":"3-6c962b92274bcbe82b82a30806559d47"}},
-{"id":"conway","key":"conway","value":{"rev":"5-93ce24976e7dd5ba02fe4addb2b44267"}},
-{"id":"cookie","key":"cookie","value":{"rev":"14-946d98bf46e940d13ca485148b1bd609"}},
-{"id":"cookie-sessions","key":"cookie-sessions","value":{"rev":"8-4b399ac8cc4baea15f6c5e7ac94399f0"}},
-{"id":"cookiejar","key":"cookiejar","value":{"rev":"20-220b41a4c2a8f2b7b14aafece7dcc1b5"}},
-{"id":"cookies","key":"cookies","value":{"rev":"15-b3b35c32a99ed79accc724685d131d18"}},
-{"id":"cool","key":"cool","value":{"rev":"3-007d1123eb2dc52cf845d625f7ccf198"}},
-{"id":"coolmonitor","key":"coolmonitor","value":{"rev":"3-69c3779c596527f63e49c5e507dff1e1"}},
-{"id":"coop","key":"coop","value":{"rev":"9-39dee3260858cf8c079f31bdf02cea1d"}},
-{"id":"coordinator","key":"coordinator","value":{"rev":"32-9d92f2033a041d5c40f8e1018d512755"}},
-{"id":"core-utils","key":"core-utils","value":{"rev":"9-98f2412938a67d83e53e76a26b5601e0"}},
-{"id":"cornify","key":"cornify","value":{"rev":"6-6913172d09c52f9e8dc0ea19ec49972c"}},
-{"id":"corpus","key":"corpus","value":{"rev":"3-a357e7779f8d4ec020b755c71dd1e57b"}},
-{"id":"corrector","key":"corrector","value":{"rev":"3-ef3cf99fc59a581aee3590bdb8615269"}},
-{"id":"cosmos","key":"cosmos","value":{"rev":"3-3eb292c59758fb5215f22739fa9531ce"}},
-{"id":"couch-ar","key":"couch-ar","value":{"rev":"25-f106d2965ab74b25b18328ca44ca4a02"}},
-{"id":"couch-cleaner","key":"couch-cleaner","value":{"rev":"15-74e61ef98a770d76be4c7e7571d18381"}},
-{"id":"couch-client","key":"couch-client","value":{"rev":"10-94945ebd3e17f509fcc71fb6c6ef5d35"}},
-{"id":"couch-session","key":"couch-session","value":{"rev":"4-c73dea41ceed26a2a0bde9a9c8ffffc4"}},
-{"id":"couch-sqlite","key":"couch-sqlite","value":{"rev":"3-3e420fe6623542475595aa7e55a4e4bd"}},
-{"id":"couch-stream","key":"couch-stream","value":{"rev":"5-911704fc984bc49acce1e10adefff7ff"}},
-{"id":"couchapp","key":"couchapp","value":{"rev":"16-ded0f4742bb3f5fd42ec8f9c6b21ae8e"}},
-{"id":"couchcmd","key":"couchcmd","value":{"rev":"3-651ea2b435e031481b5d3d968bd3d1eb"}},
-{"id":"couchdb","key":"couchdb","value":{"rev":"12-8abcfd649751226c10edf7cf0508a09f"}},
-{"id":"couchdb-api","key":"couchdb-api","value":{"rev":"23-f2c82f08f52f266df7ac2aa709615244"}},
-{"id":"couchdb-tmp","key":"couchdb-tmp","value":{"rev":"3-9a695fb4ba352f3be2d57c5995718520"}},
-{"id":"couchdev","key":"couchdev","value":{"rev":"3-50a0ca3ed0395dd72de62a1b96619e66"}},
-{"id":"couchlegs","key":"couchlegs","value":{"rev":"5-be78e7922ad4ff86dbe5c17a87fdf4f1"}},
-{"id":"couchtato","key":"couchtato","value":{"rev":"11-15a1ce8de9a8cf1e81d96de6afbb4f45"}},
-{"id":"couchy","key":"couchy","value":{"rev":"13-0a52b2712fb8447f213866612e3ccbf7"}},
-{"id":"courier","key":"courier","value":{"rev":"17-eb94fe01aeaad43805f4bce21d23bcba"}},
-{"id":"coverage","key":"coverage","value":{"rev":"10-a333448996d0b0d420168d1b5748db32"}},
-{"id":"coverage_testing","key":"coverage_testing","value":{"rev":"3-62834678206fae7911401aa86ec1a85e"}},
-{"id":"cqs","key":"cqs","value":{"rev":"6-0dad8b969c70abccc27a146a99399533"}},
-{"id":"crab","key":"crab","value":{"rev":"9-599fc7757f0c9efbe3889f30981ebe93"}},
-{"id":"cradle","key":"cradle","value":{"rev":"60-8fb414b66cb07b4bae59c0316d5c45b4"}},
-{"id":"cradle-fixed","key":"cradle-fixed","value":{"rev":"4-589afffa26fca22244ad2038abb77dc5"}},
-{"id":"cradle-init","key":"cradle-init","value":{"rev":"13-499d63592141f1e200616952bbdea015"}},
-{"id":"crawler","key":"crawler","value":{"rev":"5-ec4a8d77f90d86d17d6d14d631360188"}},
-{"id":"crc","key":"crc","value":{"rev":"3-25ab83f8b1333e6d4e4e5fb286682422"}},
-{"id":"creatary","key":"creatary","value":{"rev":"3-770ad84ecb2e2a3994637d419384740d"}},
-{"id":"createsend","key":"createsend","value":{"rev":"7-19885346e4d7a01ac2e9ad70ea0e822a"}},
-{"id":"creationix","key":"creationix","value":{"rev":"61-7ede1759afbd41e8b4dedc348b72202e"}},
-{"id":"creek","key":"creek","value":{"rev":"33-4f511aa4dd379e04bba7ac333744325e"}},
-{"id":"cron","key":"cron","value":{"rev":"12-8d794edb5f9b7cb6322acaef1c848043"}},
-{"id":"cron2","key":"cron2","value":{"rev":"13-bae2f1b02ffcbb0e77bde6c33b566f80"}},
-{"id":"crontab","key":"crontab","value":{"rev":"36-14d26bf316289fb4841940eee2932f37"}},
-{"id":"crossroads","key":"crossroads","value":{"rev":"7-d73d51cde30f24caad91e6a3c5b420f2"}},
-{"id":"crowdflower","key":"crowdflower","value":{"rev":"3-16c2dfc9fd505f75068f75bd19e3d227"}},
-{"id":"cruvee","key":"cruvee","value":{"rev":"3-979ccf0286b1701e9e7483a10451d975"}},
-{"id":"crypt","key":"crypt","value":{"rev":"3-031b338129bebc3749b42fb3d442fc4b"}},
-{"id":"crypto","key":"crypto","value":{"rev":"3-66a444b64481c85987dd3f22c32e0630"}},
-{"id":"csj","key":"csj","value":{"rev":"3-bc3133c7a0a8827e89aa03897b81d177"}},
-{"id":"cson","key":"cson","value":{"rev":"7-3ac3e1e10572e74e58874cfe3200eb87"}},
-{"id":"csrf-express","key":"csrf-express","value":{"rev":"3-4cc36d88e8ad10b9c2cc8a7318f0abd3"}},
-{"id":"css-crawler","key":"css-crawler","value":{"rev":"13-4739c7bf1decc72d7682b53303f93ec6"}},
-{"id":"css-smasher","key":"css-smasher","value":{"rev":"3-631128f966135c97d648efa3eadf7bfb"}},
-{"id":"css-sourcery","key":"css-sourcery","value":{"rev":"3-571343da3a09af7de473d29ed7dd788b"}},
-{"id":"css2json","key":"css2json","value":{"rev":"5-fb6d84c1da4a9391fa05d782860fe7c4"}},
-{"id":"csskeeper","key":"csskeeper","value":{"rev":"5-ea667a572832ea515b044d4b87ea7d98"}},
-{"id":"csslike","key":"csslike","value":{"rev":"3-6e957cce81f6e790f8562526d907ad94"}},
-{"id":"csslint","key":"csslint","value":{"rev":"19-b1e973274a0a6b8eb81b4d715a249612"}},
-{"id":"cssmin","key":"cssmin","value":{"rev":"10-4bb4280ec56f110c43abe01189f95818"}},
-{"id":"csso","key":"csso","value":{"rev":"17-ccfe2a72d377919b07973bbb1d19b8f2"}},
-{"id":"cssom","key":"cssom","value":{"rev":"3-f96b884b63b4c04bac18b8d9c0a4c4cb"}},
-{"id":"cssp","key":"cssp","value":{"rev":"5-abf69f9ff99b7d0bf2731a5b5da0897c"}},
-{"id":"cssunminifier","key":"cssunminifier","value":{"rev":"3-7bb0c27006af682af92d1969fcb4fa73"}},
-{"id":"cssutils","key":"cssutils","value":{"rev":"3-4759f9db3b8eac0964e36f5229260526"}},
-{"id":"csv","key":"csv","value":{"rev":"21-0420554e9c08e001063cfb0a69a48255"}},
-{"id":"csv2mongo","key":"csv2mongo","value":{"rev":"9-373f11c05e5d1744c3187d9aaeaae0ab"}},
-{"id":"csvutils","key":"csvutils","value":{"rev":"15-84aa82e56b49cd425a059c8f0735a23c"}},
-{"id":"ctrlflow","key":"ctrlflow","value":{"rev":"33-0b817baf6c744dc17b83d5d8ab1ba74e"}},
-{"id":"ctrlflow_tests","key":"ctrlflow_tests","value":{"rev":"3-d9ed35503d27b0736c59669eecb4c4fe"}},
-{"id":"ctype","key":"ctype","value":{"rev":"9-c5cc231475f23a01682d0b1a3b6e49c2"}},
-{"id":"cube","key":"cube","value":{"rev":"5-40320a20d260e082f5c4ca508659b4d1"}},
-{"id":"cucumber","key":"cucumber","value":{"rev":"11-8489af0361b6981cf9001a0403815936"}},
-{"id":"cucumis","key":"cucumis","value":{"rev":"33-6dc38f1161fae3efa2a89c8288b6e040"}},
-{"id":"cucumis-rm","key":"cucumis-rm","value":{"rev":"3-6179249ad15166f8d77eb136b3fa87ca"}},
-{"id":"cupcake","key":"cupcake","value":{"rev":"15-1dd13a85415a366942e7f0a3de06aa2a"}},
-{"id":"curator","key":"curator","value":{"rev":"19-d798ab7fbca11ba0e9c6c40c0a2f9440"}},
-{"id":"curl","key":"curl","value":{"rev":"11-ac7143ac07c64ea169ba7d4e58be232a"}},
-{"id":"curly","key":"curly","value":{"rev":"30-0248a5563b6e96457315ad0cc2fe22c1"}},
-{"id":"curry","key":"curry","value":{"rev":"11-ce13fa80e84eb25d9cf76cf4162a634e"}},
-{"id":"cursory","key":"cursory","value":{"rev":"3-ea2f4b1b47caf38460402d1a565c18b8"}},
-{"id":"d-utils","key":"d-utils","value":{"rev":"37-699ad471caa28183d75c06f0f2aab41c"}},
-{"id":"d3","key":"d3","value":{"rev":"5-4d867844bd7dce21b34cd7283bb9cad4"}},
-{"id":"d3bench","key":"d3bench","value":{"rev":"3-617cc625bfd91c175d037bfcace9c4e9"}},
-{"id":"daemon","key":"daemon","value":{"rev":"11-8654f90bc609ca2c3ec260c7d6b7793e"}},
-{"id":"daemon-tools","key":"daemon-tools","value":{"rev":"18-8197fce2054de67925e6f2c3fa3cd90a"}},
-{"id":"daimyo","key":"daimyo","value":{"rev":"25-531b0b0afdc5ae3d41b4131da40af6cf"}},
-{"id":"daleth","key":"daleth","value":{"rev":"7-4824619205289ba237ef2a4dc1fba1ec"}},
-{"id":"dali","key":"dali","value":{"rev":"9-037c4c76f739ecb537a064c07d3c63e3"}},
-{"id":"damncomma","key":"damncomma","value":{"rev":"3-b1472eada01efb8a12d521e5a248834b"}},
-{"id":"dana","key":"dana","value":{"rev":"3-2a3c0ff58a6d13fedd17e1d192080e59"}},
-{"id":"dandy","key":"dandy","value":{"rev":"9-f4ae43659dd812a010b0333bf8e5a282"}},
-{"id":"dash","key":"dash","value":{"rev":"5-698513f86165f429a5f55320d5a700f0"}},
-{"id":"dash-fu","key":"dash-fu","value":{"rev":"3-848e99a544f9f78f311c7ebfc5a172c4"}},
-{"id":"dashboard","key":"dashboard","value":{"rev":"3-71844d1fc1140b7533f9e57740d2b666"}},
-{"id":"data","key":"data","value":{"rev":"23-b594e2bd1ffef1cda8b7e94dbf15ad5b"}},
-{"id":"data-layer","key":"data-layer","value":{"rev":"9-9205d35cc6eaf1067ee0cec1b421d749"}},
-{"id":"data-page","key":"data-page","value":{"rev":"3-d7a3346a788a0c07132e50585db11c99"}},
-{"id":"data-section","key":"data-section","value":{"rev":"9-d3fff313977667c53cbadb134d993412"}},
-{"id":"data-uuid","key":"data-uuid","value":{"rev":"8-24001fe9f37c4cc7ac01079ee4767363"}},
-{"id":"data-visitor","key":"data-visitor","value":{"rev":"6-7fe5da9d118fab27157dba97050c6487"}},
-{"id":"database-cleaner","key":"database-cleaner","value":{"rev":"19-4bdfc8b324e95e6da9f72e7b7b708b98"}},
-{"id":"datapool","key":"datapool","value":{"rev":"3-f99c93ca812d2f4725bbaea99122832c"}},
-{"id":"datasift","key":"datasift","value":{"rev":"3-6de3ae25c9a99f651101e191595bcf64"}},
-{"id":"date","key":"date","value":{"rev":"9-b334fc6450d093de40a664a4a835cfc4"}},
-{"id":"date-utils","key":"date-utils","value":{"rev":"31-7be8fcf1919564a8fb7223a86a5954ac"}},
-{"id":"dateformat","key":"dateformat","value":{"rev":"11-5b924e1d29056a0ef9b89b9d7984d5c4"}},
-{"id":"dateformatjs","key":"dateformatjs","value":{"rev":"3-4c50a38ecc493535ee2570a838673937"}},
-{"id":"datejs","key":"datejs","value":{"rev":"5-f47e3e6532817f822aa910b59a45717c"}},
-{"id":"dateselect","key":"dateselect","value":{"rev":"3-ce58def02fd8c8feda8c6f2004726f97"}},
-{"id":"datetime","key":"datetime","value":{"rev":"7-14227b0677eb93b8eb519db47f46bf36"}},
-{"id":"db","key":"db","value":{"rev":"3-636e9ea922a85c92bc11aa9691a2e67f"}},
-{"id":"db-drizzle","key":"db-drizzle","value":{"rev":"157-955f74f49ac4236df317e227c08afaa3"}},
-{"id":"db-mysql","key":"db-mysql","value":{"rev":"224-e596a18d9af33ff1fbcf085a9f4f56fd"}},
-{"id":"db-oracle","key":"db-oracle","value":{"rev":"13-a1e2924d87b4badfddeccf6581525b08"}},
-{"id":"dcrypt","key":"dcrypt","value":{"rev":"29-a144a609bef5004781df901440d67b2d"}},
-{"id":"decafscript","key":"decafscript","value":{"rev":"3-f3a239dc7d503c900fc9854603d716e6"}},
-{"id":"decimal","key":"decimal","value":{"rev":"3-614ed56d4d6c5eb7883d8fd215705a12"}},
-{"id":"decimaljson","key":"decimaljson","value":{"rev":"9-7cb23f4b2b1168b1a213f1eefc85fa51"}},
-{"id":"deck","key":"deck","value":{"rev":"7-da422df97f13c7d84e8f3690c1e1ca32"}},
-{"id":"deckard","key":"deckard","value":{"rev":"3-85e0cd76cdd88ff60a617239060d6f46"}},
-{"id":"deckem","key":"deckem","value":{"rev":"9-03ca75ea35960ccd5779b4cfa8cfb9f9"}},
-{"id":"defensio","key":"defensio","value":{"rev":"5-0ad0ae70b4e184626d914cc4005ee34c"}},
-{"id":"defer","key":"defer","value":{"rev":"3-8d003c96f4263a26b7955e251cddbd95"}},
-{"id":"deferrable","key":"deferrable","value":{"rev":"8-3ae57ce4391105962d09ad619d4c4670"}},
-{"id":"deferred","key":"deferred","value":{"rev":"17-9cee7948dbdf7b6dcc00bbdc60041dd0"}},
-{"id":"define","key":"define","value":{"rev":"45-9d422f2ac5ab693f881df85898d68e3a"}},
-{"id":"deflate","key":"deflate","value":{"rev":"10-3ebe2b87e09f4ae51857cae02e1af788"}},
-{"id":"degrees","key":"degrees","value":{"rev":"5-707c57cfa3e589e8059fe9860cc0c10b"}},
-{"id":"deimos","key":"deimos","value":{"rev":"11-6481696be774d14254fe7c427107dc2a"}},
-{"id":"deja","key":"deja","value":{"rev":"47-bde4457402db895aad46198433842668"}},
-{"id":"delayed-stream","key":"delayed-stream","value":{"rev":"13-f6ca393b08582350f78c5c66f183489b"}},
-{"id":"delegator","key":"delegator","value":{"rev":"3-650651749c1df44ef544c919fae74f82"}},
-{"id":"dep-graph","key":"dep-graph","value":{"rev":"3-e404af87822756da52754e2cc5c576b1"}},
-{"id":"dependency-promise","key":"dependency-promise","value":{"rev":"11-1cc2be8465d736ec8f3cc8940ab22823"}},
-{"id":"depends","key":"depends","value":{"rev":"30-adc9604bbd8117592f82eee923d8703e"}},
-{"id":"deploy","key":"deploy","value":{"rev":"3-82020957528bd0bdd675bed9ac4e4cc5"}},
-{"id":"deployjs","key":"deployjs","value":{"rev":"5-a3e99a5ed81d4b1ad44b6477e6a5a985"}},
-{"id":"deputy-client","key":"deputy-client","value":{"rev":"3-31fd224b301ec0f073df7afa790050ec"}},
-{"id":"deputy-server","key":"deputy-server","value":{"rev":"3-0d790cce82aadfd2b8f39a6b056f2792"}},
-{"id":"derby","key":"derby","value":{"rev":"40-b642048a1a639d77ab139160a4da0fd2"}},
-{"id":"des","key":"des","value":{"rev":"24-fcbdc086e657aef356b75433b3e65ab6"}},
-{"id":"descent","key":"descent","value":{"rev":"7-9cc259b25fc688597fc7efaa516d03c6"}},
-{"id":"describe","key":"describe","value":{"rev":"6-788c7f2feaf2e88f4b1179976b273744"}},
-{"id":"deserver","key":"deserver","value":{"rev":"5-da8083694e89b8434123fe7482a3cc7e"}},
-{"id":"detect","key":"detect","value":{"rev":"3-c27f258d39d7905c2b92383809bb5988"}},
-{"id":"detective","key":"detective","value":{"rev":"9-d6cfa0c6389783cdc9c9ffa9e4082c64"}},
-{"id":"dev","key":"dev","value":{"rev":"23-5c2ce4a4f6a4f24d3cff3b7db997d8bc"}},
-{"id":"dev-warnings","key":"dev-warnings","value":{"rev":"5-5a7d7f36d09893df96441be8b09e41d6"}},
-{"id":"dhcpjs","key":"dhcpjs","value":{"rev":"3-1bc01bd612f3ab1fce178c979aa34e43"}},
-{"id":"dht","key":"dht","value":{"rev":"3-40c0b909b6c0e2305e19d10cea1881b0"}},
-{"id":"dht-bencode","key":"dht-bencode","value":{"rev":"5-88a1da8de312a54097507d72a049f0f3"}},
-{"id":"dialect","key":"dialect","value":{"rev":"18-db7928ce4756eea35db1732d4f2ebc88"}},
-{"id":"dialect-http","key":"dialect-http","value":{"rev":"19-23a927d28cb43733dbd05294134a5b8c"}},
-{"id":"dicks","key":"dicks","value":{"rev":"11-ba64897899e336d366ffd4b68cac99f5"}},
-{"id":"diff","key":"diff","value":{"rev":"13-1a88acb0369ab8ae096a2323d65a2811"}},
-{"id":"diff_match_patch","key":"diff_match_patch","value":{"rev":"8-2f6f467e483b23b217a2047e4aded850"}},
-{"id":"diffbot","key":"diffbot","value":{"rev":"3-8cb8e34af89cb477a5da52e3fd9a13f7"}},
-{"id":"digest","key":"digest","value":{"rev":"7-bc6fb9e68c83197381b0d9ac7db16c1c"}},
-{"id":"dir","key":"dir","value":{"rev":"7-574462bb241a39eeffe6c5184d40c57a"}},
-{"id":"dir-watcher","key":"dir-watcher","value":{"rev":"31-1a3ca4d6aa8aa32c619efad5fbfce494"}},
-{"id":"dir2html","key":"dir2html","value":{"rev":"5-b4bfb2916c2d94c85aa75ffa29ad1af4"}},
-{"id":"directive","key":"directive","value":{"rev":"3-3373f02b8762cb1505c8f8cbcc50d3d4"}},
-{"id":"dirsum","key":"dirsum","value":{"rev":"5-8545445faaa41d2225ec7ff226a10750"}},
-{"id":"dirty","key":"dirty","value":{"rev":"13-d636ea0d1ed35560c0bc7272965c1a6f"}},
-{"id":"dirty-uuid","key":"dirty-uuid","value":{"rev":"5-65acdfda886afca65ae52f0ac21ce1b2"}},
-{"id":"discogs","key":"discogs","value":{"rev":"21-839410e6bf3bee1435ff837daaeaf9f8"}},
-{"id":"discount","key":"discount","value":{"rev":"13-a8fb2a8f668ac0a55fffada1ea94a4b7"}},
-{"id":"discovery","key":"discovery","value":{"rev":"3-46f4496224d132e56cbc702df403219d"}},
-{"id":"diskcache","key":"diskcache","value":{"rev":"23-7b14ad41fc199184fb939828e9122099"}},
-{"id":"dispatch","key":"dispatch","value":{"rev":"6-e72cc7b2bcc97faf897ae4e4fa3ec681"}},
-{"id":"distribute.it","key":"distribute.it","value":{"rev":"12-0978757eb25d22117af675806cf6eef2"}},
-{"id":"dive","key":"dive","value":{"rev":"21-9cbd1281c5a3c2dae0cc0407863f3336"}},
-{"id":"diveSync","key":"diveSync","value":{"rev":"3-015ec4803903106bf24cb4f17cedee68"}},
-{"id":"dk-assets","key":"dk-assets","value":{"rev":"3-25d9b6ac727caf1e227e6436af835d03"}},
-{"id":"dk-core","key":"dk-core","value":{"rev":"3-0b6a2f4dfc0484a3908159a897920bae"}},
-{"id":"dk-couchdb","key":"dk-couchdb","value":{"rev":"3-cc9ef511f9ed46be9d7099f10b1ee776"}},
-{"id":"dk-model","key":"dk-model","value":{"rev":"3-3a61006be57d304724c049e4dcf2fc9b"}},
-{"id":"dk-model-couchdb","key":"dk-model-couchdb","value":{"rev":"3-5163def21660db8428e623909bbfcb4d"}},
-{"id":"dk-routes","key":"dk-routes","value":{"rev":"3-4563357f850248d7d0fb37f9bdcb893b"}},
-{"id":"dk-server","key":"dk-server","value":{"rev":"3-9aef13fc5814785c9805b26828e8d114"}},
-{"id":"dk-template","key":"dk-template","value":{"rev":"3-809c94776252441129705fbe1d93e752"}},
-{"id":"dk-transport","key":"dk-transport","value":{"rev":"3-9271da6f86079027535179b743d0d4c3"}},
-{"id":"dk-websockets","key":"dk-websockets","value":{"rev":"3-426b44c04180d6caf7cf765f03fc52c2"}},
-{"id":"dnet-index-proxy","key":"dnet-index-proxy","value":{"rev":"51-1f3cf4f534c154369d5e774a8f599106"}},
-{"id":"dnode","key":"dnode","value":{"rev":"129-68db10c25c23d635dc828aa698d1279e"}},
-{"id":"dnode-ez","key":"dnode-ez","value":{"rev":"17-75877eab5cf3976b8876c49afd2f7e38"}},
-{"id":"dnode-protocol","key":"dnode-protocol","value":{"rev":"23-fb28f8e1180e6aa44fa564e0d55b3d1e"}},
-{"id":"dnode-smoothiecharts","key":"dnode-smoothiecharts","value":{"rev":"3-d1483028e5768527c2786b9ed5d76463"}},
-{"id":"dnode-stack","key":"dnode-stack","value":{"rev":"9-c1ad8ce01282ce4fa72b5993c580e58e"}},
-{"id":"dnode-worker","key":"dnode-worker","value":{"rev":"3-4c73c0d7ed225197fd8fb0555eaf1152"}},
-{"id":"dns-server","key":"dns-server","value":{"rev":"3-4858a1773da514fea68eac6d9d39f69e"}},
-{"id":"dns-srv","key":"dns-srv","value":{"rev":"12-867c769437fa0ad8a83306aa9e2a158e"}},
-{"id":"doc","key":"doc","value":{"rev":"5-2c077b3fd3b6efa4e927b66f1390e4ea"}},
-{"id":"doc.md","key":"doc.md","value":{"rev":"7-8e8e51be4956550388699222b2e039e7"}},
-{"id":"docco","key":"docco","value":{"rev":"18-891bde1584809c3b1f40fef9961b4f28"}},
-{"id":"docdown","key":"docdown","value":{"rev":"5-fcf5be2ab6ceaed76c1980b462359057"}},
-{"id":"docket","key":"docket","value":{"rev":"13-a4969e0fb17af8dba7df178e364161c2"}},
-{"id":"docpad","key":"docpad","value":{"rev":"77-a478ac8c7ac86e304f9213380ea4b550"}},
-{"id":"docs","key":"docs","value":{"rev":"3-6b1fae9738a3327a3a3be826c0981c3a"}},
-{"id":"dojo-node","key":"dojo-node","value":{"rev":"13-e0dc12e9ce8ab3f40b228c2af8c41064"}},
-{"id":"dom","key":"dom","value":{"rev":"3-cecd9285d0d5b1cab0f18350aac1b2b0"}},
-{"id":"dom-js","key":"dom-js","value":{"rev":"8-dd20e8b23028f4541668501650b52a71"}},
-{"id":"dom-js-ns","key":"dom-js-ns","value":{"rev":"3-787567fc1d6f4ca7e853215a4307b593"}},
-{"id":"domjs","key":"domjs","value":{"rev":"3-d2d05a20dccb57fb6db7da08916c6c0f"}},
-{"id":"doml","key":"doml","value":{"rev":"11-c3b49c50906d9875b546413e4acd1b38"}},
-{"id":"domo","key":"domo","value":{"rev":"3-a4321e6c0c688f773068365b44b08b6b"}},
-{"id":"domready","key":"domready","value":{"rev":"46-21c6b137bbed79ddbff31fdf0ef7d61f"}},
-{"id":"donkey","key":"donkey","value":{"rev":"3-1454aa878654886e8495ebb060aa10f7"}},
-{"id":"dot","key":"dot","value":{"rev":"19-b6d2d53cb9ae1a608a0956aeb8092578"}},
-{"id":"dotaccess","key":"dotaccess","value":{"rev":"13-63ddef6740e84f4517f7dd1bb0d68c56"}},
-{"id":"douche","key":"douche","value":{"rev":"3-6a200f908ccfc9ae549e80209e117cbf"}},
-{"id":"dox","key":"dox","value":{"rev":"10-856cc6bf3dc7c44e028173fea8323c24"}},
-{"id":"drag","key":"drag","value":{"rev":"9-00f27e241269c3df1d71e45b698e9b3b"}},
-{"id":"drain","key":"drain","value":{"rev":"3-8827a0ee7ed74b948bf56d5a33455fc8"}},
-{"id":"drawback","key":"drawback","value":{"rev":"74-dd356b3e55175525317e53c24979a431"}},
-{"id":"drev","key":"drev","value":{"rev":"9-43529419a69529dd7af9a83985aab1f2"}},
-{"id":"drews-mixins","key":"drews-mixins","value":{"rev":"17-63373bae6525859bddfc8d6ad19bdb06"}},
-{"id":"drnu","key":"drnu","value":{"rev":"3-b9b14b2241ded1e52a92fc4225b4ddc5"}},
-{"id":"dropbox","key":"dropbox","value":{"rev":"19-2cb7a40d253621fdfa96f23b96e42ecb"}},
-{"id":"drtoms-nodehelpers","key":"drtoms-nodehelpers","value":{"rev":"3-be0a75cdd7c2d49b1ec4ad1d2c3bc911"}},
-{"id":"drty","key":"drty","value":{"rev":"3-56eabd39b9badfa0af601c5cc64cee2c"}},
-{"id":"drty-facebook","key":"drty-facebook","value":{"rev":"3-fd07af7fb87d7f1d35e13f458a02c127"}},
-{"id":"drumkit","key":"drumkit","value":{"rev":"3-f3cdacef51453d3ac630759aff2a8b58"}},
-{"id":"drupal","key":"drupal","value":{"rev":"13-13835b1e1c8a0e8f0b0e8479640a8d7e"}},
-{"id":"dryice","key":"dryice","value":{"rev":"15-9990fdbde5475a8dbdcc055cb08d654d"}},
-{"id":"dryml","key":"dryml","value":{"rev":"33-483ff8cc3ab1431790cc2587c0bce989"}},
-{"id":"ds","key":"ds","value":{"rev":"9-743274a1d0143927851af07ff0f86d8d"}},
-{"id":"dt","key":"dt","value":{"rev":"3-ab59016f28e182c763b78ba49a59191c"}},
-{"id":"dtl","key":"dtl","value":{"rev":"11-415b4aeec93f096523569615e80f1be1"}},
-{"id":"dtrace-provider","key":"dtrace-provider","value":{"rev":"12-7f01510bd2b1d543f11e3dc02d98ab69"}},
-{"id":"dtrejo","key":"dtrejo","value":{"rev":"3-85f5bb2b9faec499e6aa77fe22e6e3ec"}},
-{"id":"dude","key":"dude","value":{"rev":"3-006528c1efd98312991273ba6ee45f7b"}},
-{"id":"dunce","key":"dunce","value":{"rev":"3-fa4fa5cafdfd1d86c650746f60b7bc0e"}},
-{"id":"duostack","key":"duostack","value":{"rev":"15-47824bdf6e32f49f64014e75421dc42e"}},
-{"id":"duplex-stream","key":"duplex-stream","value":{"rev":"3-2d0e12876e7ad4e5d3ea5520dcbad861"}},
-{"id":"durilka","key":"durilka","value":{"rev":"15-54400496515c8625e8bedf19f8a41cad"}},
-{"id":"dust","key":"dust","value":{"rev":"18-9bc9cae2e48c54f4389e9fce5dfc021e"}},
-{"id":"dustfs","key":"dustfs","value":{"rev":"5-944770c24f06989f3fc62427f2ddebc4"}},
-{"id":"dx","key":"dx","value":{"rev":"3-6000afd60be07d9ff91e7231a388f22f"}},
-{"id":"dynamic","key":"dynamic","value":{"rev":"3-33b83464ed56eb33c052a13dfb709c9c"}},
-{"id":"dynobj","key":"dynobj","value":{"rev":"5-3eb168dae1f9c20369fa1d5ae45f9021"}},
-{"id":"each","key":"each","value":{"rev":"3-5063799b0afcbb61378b1d605660a864"}},
-{"id":"ears","key":"ears","value":{"rev":"11-e77cd2b865409be7ba2e072e98b1c8a1"}},
-{"id":"easey","key":"easey","value":{"rev":"3-a380d8d945e03f55732ae8769cd6dbbf"}},
-{"id":"easy","key":"easy","value":{"rev":"3-73b836a34beafa31cdd8129fe158bf6e"}},
-{"id":"easy-oauth","key":"easy-oauth","value":{"rev":"5-2c1db698e61d77f99633042113099528"}},
-{"id":"easyfs","key":"easyfs","value":{"rev":"3-b807671a77c2a8cc27a9f1aa20ff74c0"}},
-{"id":"easyhash","key":"easyhash","value":{"rev":"3-2eeb24098bc4d201766dcc92dc7325f7"}},
-{"id":"easyrss","key":"easyrss","value":{"rev":"9-1687a54348670ef9ca387ea7ec87f0be"}},
-{"id":"ebnf-diagram","key":"ebnf-diagram","value":{"rev":"3-704e4605bf933b281a6821259a531055"}},
-{"id":"ec2","key":"ec2","value":{"rev":"22-25e562ae8898807c7b4c696c809cf387"}},
-{"id":"echo","key":"echo","value":{"rev":"19-75c2421f623ecc9fe2771f3658589ce8"}},
-{"id":"eco","key":"eco","value":{"rev":"14-b4db836928c91cbf22628cc65ca94f56"}},
-{"id":"ed","key":"ed","value":{"rev":"3-bed9b8225e83a02241d48254077a7df4"}},
-{"id":"edate","key":"edate","value":{"rev":"3-5ec1441ffe3b56d5d01561003b9844f2"}},
-{"id":"eden","key":"eden","value":{"rev":"35-9aa2ff880c2d4f45e3da881b15e58d0a"}},
-{"id":"eio","key":"eio","value":{"rev":"5-e6dd895635596d826ccdf4439761d5fa"}},
-{"id":"ejs","key":"ejs","value":{"rev":"30-c7b020b6cb8ee2626f47db21fc5fedb4"}},
-{"id":"ejs-ext","key":"ejs-ext","value":{"rev":"15-820393685191bbed37938acb7af5885e"}},
-{"id":"elastical","key":"elastical","value":{"rev":"3-c652af043bc4256a29a87e3de9b78093"}},
-{"id":"elasticsearchclient","key":"elasticsearchclient","value":{"rev":"33-bcb59deb7d9d56737a6946c56830ae6b"}},
-{"id":"elastiseahclient","key":"elastiseahclient","value":{"rev":"3-c4e525605859e249f04fb07d31739002"}},
-{"id":"elementtree","key":"elementtree","value":{"rev":"3-ef2017fe67ae425253de911c2f219d31"}},
-{"id":"elf-logger","key":"elf-logger","value":{"rev":"6-98d61588cfc171611568cf86004aa2e1"}},
-{"id":"elk","key":"elk","value":{"rev":"25-8b92241d0218c6593a7dc8a8cc69b7ce"}},
-{"id":"elucidata-build-tools","key":"elucidata-build-tools","value":{"rev":"7-0ad3de708aaac2eebfcfce273bfe6edf"}},
-{"id":"email","key":"email","value":{"rev":"16-110ae6a99ab3e37f4edd9357c03d78c2"}},
-{"id":"email-verificationtoken","key":"email-verificationtoken","value":{"rev":"7-ef37672bc6e9ee806ecc22fd5257ae03"}},
-{"id":"emailjs","key":"emailjs","value":{"rev":"31-0dd24f9aba8d96e9493e55e8345f3d21"}},
-{"id":"embedly","key":"embedly","value":{"rev":"21-47838d8015e9b927c56a7bd52c52e4fc"}},
-{"id":"emile","key":"emile","value":{"rev":"11-05d4715964b5bf2e1fd98096cb7ccc83"}},
-{"id":"emit.io","key":"emit.io","value":{"rev":"3-faacb1c30bb92c06a55a44bb027a9475"}},
-{"id":"emre","key":"emre","value":{"rev":"3-5686f4782f1f5171fff83b662ce68802"}},
-{"id":"encrypt","key":"encrypt","value":{"rev":"3-77e2e2007b452f7fcdfa9e8696a188f5"}},
-{"id":"ender","key":"ender","value":{"rev":"95-89b8c6ccfcaf3eb56f5dbe48bf3c2e24"}},
-{"id":"ender-dragdealer","key":"ender-dragdealer","value":{"rev":"9-e12bb3492614f20fe5781f20e3bb17dc"}},
-{"id":"ender-fermata","key":"ender-fermata","value":{"rev":"3-e52d772042852408ae070b361c247068"}},
-{"id":"ender-fittext","key":"ender-fittext","value":{"rev":"5-e46f5a384d790ea6f65a5f8b9e43bac6"}},
-{"id":"ender-flowplayer","key":"ender-flowplayer","value":{"rev":"3-87267072fb566112315254fdf6547500"}},
-{"id":"ender-js","key":"ender-js","value":{"rev":"80-aa18576f782e3aa14c2ba7ba05658a30"}},
-{"id":"ender-json","key":"ender-json","value":{"rev":"3-5606608389aef832e4d4ecaa6c088a94"}},
-{"id":"ender-lettering","key":"ender-lettering","value":{"rev":"3-6fc6ad3869fad6374a1de69ba4e9301d"}},
-{"id":"ender-modules","key":"ender-modules","value":{"rev":"5-2bbb354d6219b5e13e6c897c562b8c83"}},
-{"id":"ender-poke","key":"ender-poke","value":{"rev":"5-3afa2fd690ebc4f2d75125b2c57e2a43"}},
-{"id":"ender-test","key":"ender-test","value":{"rev":"5-f8e90a951e5ad58199e53645067fad0c"}},
-{"id":"ender-tipsy","key":"ender-tipsy","value":{"rev":"5-cefd04c5d89707dfe31023702328d417"}},
-{"id":"ender-tween","key":"ender-tween","value":{"rev":"13-035312bb47bb3d29e7157932d4d29dcb"}},
-{"id":"ender-vows","key":"ender-vows","value":{"rev":"5-d48e088816d71779a80a74c43cd61b80"}},
-{"id":"ender-wallet","key":"ender-wallet","value":{"rev":"21-93723cd24fbf14d0f58f2ee41df9910d"}},
-{"id":"endtable","key":"endtable","value":{"rev":"36-8febf1be0120d867f9ff90e5c5058ef9"}},
-{"id":"enhance-css","key":"enhance-css","value":{"rev":"7-ae1cf6dee7d3116103781edaa7d47ba4"}},
-{"id":"ensure","key":"ensure","value":{"rev":"27-47e0874d1823188965a02a41abb61739"}},
-{"id":"ent","key":"ent","value":{"rev":"9-51924cd76fabcc4a244db66d65d48eff"}},
-{"id":"entropy","key":"entropy","value":{"rev":"17-84bfbbc0689b3b55e4fa3881888f0c12"}},
-{"id":"enumerable","key":"enumerable","value":{"rev":"3-d31bfcaca3b53eacc9ce09983efffe35"}},
-{"id":"envious","key":"envious","value":{"rev":"3-08d1e6d9c25c4e2350a0dd6759a27426"}},
-{"id":"environ","key":"environ","value":{"rev":"5-6f78def4743dfbeb77c1cb62d41eb671"}},
-{"id":"epub","key":"epub","value":{"rev":"3-5c3604eab851bce0a6ac66db6a6ce77a"}},
-{"id":"erlang","key":"erlang","value":{"rev":"3-3bd8e8e8ed416a32567475d984028b65"}},
-{"id":"err","key":"err","value":{"rev":"11-61d11f26b47d29ef819136214830f24c"}},
-{"id":"errbacker","key":"errbacker","value":{"rev":"5-0ad6d62207abb9822118ae69d0b9181d"}},
-{"id":"es5","key":"es5","value":{"rev":"3-5497cb0c821f3e17234c09ab0e67e1de"}},
-{"id":"es5-basic","key":"es5-basic","value":{"rev":"9-2ff708ae54ae223923cb810f799bfb2d"}},
-{"id":"es5-ext","key":"es5-ext","value":{"rev":"21-04537d704412a631596beeba4d534b33"}},
-{"id":"es5-shim","key":"es5-shim","value":{"rev":"34-3c4c40a6dab9ff137d1a7d4349d72c5b"}},
-{"id":"es5-shimify","key":"es5-shimify","value":{"rev":"3-f85700407e9c129d22b45c15700c82f1"}},
-{"id":"esc","key":"esc","value":{"rev":"5-42911775f391330f361105b8a0cefe47"}},
-{"id":"escaperoute","key":"escaperoute","value":{"rev":"18-e1372f35e6dcdb353b8c11e3c7e2f3b4"}},
-{"id":"escort","key":"escort","value":{"rev":"27-bf43341e15d565c9f67dd3300dc57734"}},
-{"id":"escrito","key":"escrito","value":{"rev":"5-c39d5b373486327b2e13670f921a2c7b"}},
-{"id":"esl","key":"esl","value":{"rev":"9-562ff6239a3b9910989bdf04746fa9d1"}},
-{"id":"espresso","key":"espresso","value":{"rev":"75-4c3692f1e92ea841e2d04338f4f2432e"}},
-{"id":"esproxy","key":"esproxy","value":{"rev":"7-be629dc6e1428f0fdb22fdbe7ab2ee99"}},
-{"id":"etch-a-sketch","key":"etch-a-sketch","value":{"rev":"3-a4e23b8e9f298d4844d6bff0a9688e53"}},
-{"id":"etherpad-lite-client","key":"etherpad-lite-client","value":{"rev":"55-58ca439a697db64ee66652da2d327fcb"}},
-{"id":"etsy","key":"etsy","value":{"rev":"5-1b795b360c28261f11c07d849637047c"}},
-{"id":"eve","key":"eve","value":{"rev":"3-16e72b336a1f354f4dfc8fa783fa2e72"}},
-{"id":"event-emitter","key":"event-emitter","value":{"rev":"5-15fe3e2e19b206929b815909737b15ac"}},
-{"id":"event-queue","key":"event-queue","value":{"rev":"12-200cd3bcd8e0b35bc4b15c1d8b6161e2"}},
-{"id":"event-stream","key":"event-stream","value":{"rev":"15-811a6329b5820d998731a604accf83db"}},
-{"id":"eventable","key":"eventable","value":{"rev":"3-08e9cd94a9aae280f406d043039e545e"}},
-{"id":"eventbrite","key":"eventbrite","value":{"rev":"13-cac3c9bda2da1c7b115de04264bb440f"}},
-{"id":"evented","key":"evented","value":{"rev":"6-ade6271c40a19aab6c4e3bb18b0987b6"}},
-{"id":"evented-twitter","key":"evented-twitter","value":{"rev":"6-3ebb7327022d6d6a8c49d684febb236b"}},
-{"id":"eventedsocket","key":"eventedsocket","value":{"rev":"59-cd2158c47b676a58ca3064a42c5274f7"}},
-{"id":"eventemitter","key":"eventemitter","value":{"rev":"5-7766fd7ebc44d52efbd0e7088e2321ec"}},
-{"id":"eventemitter2","key":"eventemitter2","value":{"rev":"41-927ce7996d4056a21f543e1f928f9699"}},
-{"id":"eventful","key":"eventful","value":{"rev":"7-9505f3c621f50addf02a457cfcc8ae78"}},
-{"id":"eventhub","key":"eventhub","value":{"rev":"15-5390d210a4d3ba079dd6e26bda652caa"}},
-{"id":"eventpipe","key":"eventpipe","value":{"rev":"7-41f0f93a9dcea477f08782af28e5b0f1"}},
-{"id":"events","key":"events","value":{"rev":"12-e3ead8eac62799cb299c139687135289"}},
-{"id":"events.io","key":"events.io","value":{"rev":"3-56c6955024cbb1765a1f9f37d8a739a4"}},
-{"id":"events.node","key":"events.node","value":{"rev":"3-e072f9c457fd8a3882ccd41ce52c5d00"}},
-{"id":"eventstream","key":"eventstream","value":{"rev":"5-a578a3a2a62d50631b3fb4d44a058bd1"}},
-{"id":"eventvat","key":"eventvat","value":{"rev":"3-e26d7fe8a226c7bc7f9e55abf1630e9c"}},
-{"id":"everyauth","key":"everyauth","value":{"rev":"107-a621f3028a230f9f3ade6a4e729a9a38"}},
-{"id":"ewdDOM","key":"ewdDOM","value":{"rev":"7-28188ec27fe011bf7fcb330a5fc90b55"}},
-{"id":"ewdGateway","key":"ewdGateway","value":{"rev":"7-81fe5ec1a3e920894b560fbf96160258"}},
-{"id":"exceptional","key":"exceptional","value":{"rev":"5-5842d306b2cf084c4e7c2ecb1d715280"}},
-{"id":"exceptional-node","key":"exceptional-node","value":{"rev":"5-3385b42af0a6ea8a943cb686d5789b0c"}},
-{"id":"executor","key":"executor","value":{"rev":"3-aee4f949a4d140a439965e137200c4fb"}},
-{"id":"exif","key":"exif","value":{"rev":"3-da6fd2bd837633f673b325231c164a0f"}},
-{"id":"expanda","key":"expanda","value":{"rev":"3-dcbc59c5db0017d25748ec8094aeeb0a"}},
-{"id":"express","key":"express","value":{"rev":"157-24ef0cdd4ba6c6697c66f3e78bc777bb"}},
-{"id":"express-aid","key":"express-aid","value":{"rev":"21-6d3831e93b823f800e6a22eb08aa41d6"}},
-{"id":"express-app-bootstrap","key":"express-app-bootstrap","value":{"rev":"3-4b5a256bef5ca3bd41b0958f594907b9"}},
-{"id":"express-asset","key":"express-asset","value":{"rev":"3-7d5e23bc753851c576e429e7901301d9"}},
-{"id":"express-blocks","key":"express-blocks","value":{"rev":"7-305b6e046355c8e7a4bb0f1f225092ef"}},
-{"id":"express-cache","key":"express-cache","value":{"rev":"5-eebbea6c0e5db5fd4c12847933c853e1"}},
-{"id":"express-chromeframe","key":"express-chromeframe","value":{"rev":"5-1bb72d30b7a1f00d3eaf248285942d5e"}},
-{"id":"express-coffee","key":"express-coffee","value":{"rev":"39-14eff195c9352c6c3898befb3d613807"}},
-{"id":"express-config","key":"express-config","value":{"rev":"3-27ea0d27e20afa9ece375878aab846ed"}},
-{"id":"express-configure","key":"express-configure","value":{"rev":"7-46bd636c0b56dfcfa4f1ee46b43d6ca0"}},
-{"id":"express-contrib","key":"express-contrib","value":{"rev":"20-472c93fefe0a9a6440a76b2c843b2e0e"}},
-{"id":"express-controllers","key":"express-controllers","value":{"rev":"3-296d54f3b5bf26bfa057cd8c5f0a11ea"}},
-{"id":"express-controllers-new","key":"express-controllers-new","value":{"rev":"15-11f73e4a8ab935987a3b8f132d80afa5"}},
-{"id":"express-cross-site","key":"express-cross-site","value":{"rev":"11-b76814fdd58a616b3cafe6e97f3c7c98"}},
-{"id":"express-csrf","key":"express-csrf","value":{"rev":"20-2a79f0fdc65ed91120e7417a5cf8ce6c"}},
-{"id":"express-custom-errors","key":"express-custom-errors","value":{"rev":"6-bd131169ccac73fa3766195147e34404"}},
-{"id":"express-dialect","key":"express-dialect","value":{"rev":"34-1fbc5baf7ea464abbadcfaf3c1971660"}},
-{"id":"express-dust","key":"express-dust","value":{"rev":"5-33a1d8dd9c113d6fb8f1818c8a749c1b"}},
-{"id":"express-expose","key":"express-expose","value":{"rev":"7-f8757d8bf8d3fac8395ee8ce5117a895"}},
-{"id":"express-extras","key":"express-extras","value":{"rev":"6-53c7bfc68a41043eb5e11321673a2c48"}},
-{"id":"express-form","key":"express-form","value":{"rev":"27-533598a1bd5a0e9b8d694f5b38228c6c"}},
-{"id":"express-helpers","key":"express-helpers","value":{"rev":"3-7b9123b0ea6b840bb5a6e4da9c28308c"}},
-{"id":"express-livejade","key":"express-livejade","value":{"rev":"9-1320996d4ed3db352a2c853226880a17"}},
-{"id":"express-logger","key":"express-logger","value":{"rev":"5-c485b1020742310a313cac87abdde67b"}},
-{"id":"express-messages","key":"express-messages","value":{"rev":"5-f6225b906d0ac33ba1bfc5409b227edb"}},
-{"id":"express-messages-bootstrap","key":"express-messages-bootstrap","value":{"rev":"5-fb8fc70c1cbd6df0e07b2e0148bdf8bf"}},
-{"id":"express-mongoose","key":"express-mongoose","value":{"rev":"29-2d6907a23c8c3bbfdf9b6f9b6b3c00e3"}},
-{"id":"express-mvc-bootstrap","key":"express-mvc-bootstrap","value":{"rev":"15-c53ecb696af1d34ff94efe5ab5d89287"}},
-{"id":"express-namespace","key":"express-namespace","value":{"rev":"7-d209feb707821b06426aed233295df75"}},
-{"id":"express-on-railway","key":"express-on-railway","value":{"rev":"7-784b533cbf29930d04039bafb2c03cc0"}},
-{"id":"express-params","key":"express-params","value":{"rev":"3-13f0ed9c17d10fd01d1ff869e625c91f"}},
-{"id":"express-resource","key":"express-resource","value":{"rev":"13-cca556327152588a87112c6bf2613bc9"}},
-{"id":"express-rewrite","key":"express-rewrite","value":{"rev":"7-c76ca2616eb6e70209ace6499f5b961a"}},
-{"id":"express-route-util","key":"express-route-util","value":{"rev":"9-4b7bad7e8ab3bf71daf85362b47ec8be"}},
-{"id":"express-rpx","key":"express-rpx","value":{"rev":"9-54d48f5e24174500c73f07d97a7d3f9f"}},
-{"id":"express-session-mongo","key":"express-session-mongo","value":{"rev":"3-850cf5b42f65a6f27af6edf1ad1aa966"}},
-{"id":"express-session-mongo-russp","key":"express-session-mongo-russp","value":{"rev":"7-441e8afcd466a4cbb5e65a1949190f97"}},
-{"id":"express-session-redis","key":"express-session-redis","value":{"rev":"6-5f4f16092a0706d2daef89470d6971e6"}},
-{"id":"express-share","key":"express-share","value":{"rev":"5-f5327a97738e9c8e6e05a51cb7153f82"}},
-{"id":"express-spdy","key":"express-spdy","value":{"rev":"11-2634f388338c45b2d6f020d2a6739ba1"}},
-{"id":"express-template-override","key":"express-template-override","value":{"rev":"5-758cf2eb0c9cbc32f205c4ba2ece24f9"}},
-{"id":"express-trace","key":"express-trace","value":{"rev":"5-ba59571f8881e02e2b297ed9ffb4e48c"}},
-{"id":"express-unstable","key":"express-unstable","value":{"rev":"3-06467336e1610ba9915401df26c936c1"}},
-{"id":"express-validate","key":"express-validate","value":{"rev":"15-b63bd9b18fadfc2345d0a10a7a2fb2e7"}},
-{"id":"express-view-helpers","key":"express-view-helpers","value":{"rev":"7-4d07ba11f81788783c6f9fd48fdf8834"}},
-{"id":"express-with-ease","key":"express-with-ease","value":{"rev":"3-604d9176a4a03f9f7c74679604c7bbf9"}},
-{"id":"express-wormhole","key":"express-wormhole","value":{"rev":"3-7e06cf63b070e0f54b2aa71b48db9a40"}},
-{"id":"expresso","key":"expresso","value":{"rev":"79-a27b6ef2f9e7bb9f85da34f728d124a8"}},
-{"id":"expressobdd","key":"expressobdd","value":{"rev":"5-e8cae7a17a9e8c1779c08abedc674e03"}},
-{"id":"ext","key":"ext","value":{"rev":"6-8790c06324c5f057b1713ba420e8bf27"}},
-{"id":"extend","key":"extend","value":{"rev":"3-934d0de77bbaefb1b52ec18a17f46d7d"}},
-{"id":"extendables","key":"extendables","value":{"rev":"11-e4db9b62a4047e95fb4d7f88e351a14e"}},
-{"id":"extjs-node","key":"extjs-node","value":{"rev":"3-2b2033dbbf0b99d41e876498886b0995"}},
-{"id":"extractcontent","key":"extractcontent","value":{"rev":"6-ad70764c834ecd3414cbc15dbda317c3"}},
-{"id":"extractor","key":"extractor","value":{"rev":"9-f95bde04bb8db37350c9cc95c5578c03"}},
-{"id":"extx-layout","key":"extx-layout","value":{"rev":"3-f6bbc3a923ebce17f62cbf382b096ac7"}},
-{"id":"extx-reference-slot","key":"extx-reference-slot","value":{"rev":"14-b1b92573492f7239144693ee9e1d1aac"}},
-{"id":"extx-shotenjin","key":"extx-shotenjin","value":{"rev":"5-c641121ba57fb960d8db766511ecf6cd"}},
-{"id":"eyes","key":"eyes","value":{"rev":"16-fab6b201646fb12986e396c33a7cd428"}},
-{"id":"f","key":"f","value":{"rev":"3-23b73ffafbe5b56b6a0736db6a7256a6"}},
-{"id":"f-core","key":"f-core","value":{"rev":"3-9a6898e007acf48d956f0a70ff07a273"}},
-{"id":"f7u12rl","key":"f7u12rl","value":{"rev":"3-7b5e15d106db8b7f8784b27f7d2c9bdc"}},
-{"id":"fab","key":"fab","value":{"rev":"10-149dec0b653ce481af013c63fec125e8"}},
-{"id":"fab.accept","key":"fab.accept","value":{"rev":"6-d6b08e7054d823906c6c64c92b008d3a"}},
-{"id":"fab.static","key":"fab.static","value":{"rev":"6-5bdb6db53223bb5203ba91a5b2b87566"}},
-{"id":"fabric","key":"fabric","value":{"rev":"15-30e99e486c58962c049bea54e00b7cb9"}},
-{"id":"face-detect","key":"face-detect","value":{"rev":"3-d4d3f1a894c807f79ba541d2f2ed630d"}},
-{"id":"facebook","key":"facebook","value":{"rev":"17-e241999000e34aed62ee0f9f358bfd06"}},
-{"id":"facebook-api","key":"facebook-api","value":{"rev":"5-cb9d07b2eba18d8fb960768d69f80326"}},
-{"id":"facebook-client","key":"facebook-client","value":{"rev":"17-84c106420b183ca791b0c80fd8c3fe00"}},
-{"id":"facebook-connect","key":"facebook-connect","value":{"rev":"6-471f28bb12928e32610d02c0b03aa972"}},
-{"id":"facebook-express","key":"facebook-express","value":{"rev":"11-6e6d98b8252907b05c41aac7e0418f4e"}},
-{"id":"facebook-graph","key":"facebook-graph","value":{"rev":"9-c92149825fef42ad76bcffdd232cc9a5"}},
-{"id":"facebook-graph-client","key":"facebook-graph-client","value":{"rev":"10-c3136a2b2e5c5d80b78404a4102af7b5"}},
-{"id":"facebook-js","key":"facebook-js","value":{"rev":"22-dd9d916550ebccb71e451acbd7a4b315"}},
-{"id":"facebook-realtime-graph","key":"facebook-realtime-graph","value":{"rev":"6-c4fe01ac036585394cd59f01c6fc7df1"}},
-{"id":"facebook-sdk","key":"facebook-sdk","value":{"rev":"21-77daf7eba51bb913e54381995718e13d"}},
-{"id":"facebook-session-cookie","key":"facebook-session-cookie","value":{"rev":"9-70e14cac759dacadacb0af17387ab230"}},
-{"id":"facebook-signed-request","key":"facebook-signed-request","value":{"rev":"5-11cb36123a94e37fff6a7efd6f7d88b9"}},
-{"id":"facebook.node","key":"facebook.node","value":{"rev":"3-f6760795e71c1d5734ae34f9288d02be"}},
-{"id":"factory-worker","key":"factory-worker","value":{"rev":"7-1c365b3dd92b12573d00c08b090e01ae"}},
-{"id":"fake","key":"fake","value":{"rev":"25-2d1ae2299168d95edb8d115fb7961c8e"}},
-{"id":"fake-queue","key":"fake-queue","value":{"rev":"7-d6970de6141c1345c6ad3cd1586cfe7b"}},
-{"id":"fakedb","key":"fakedb","value":{"rev":"34-889fb5c9fa328b536f9deb138ff125b1"}},
-{"id":"fakeweb","key":"fakeweb","value":{"rev":"3-7fb1394b4bac70f9ab26e60b1864b41f"}},
-{"id":"fanfeedr","key":"fanfeedr","value":{"rev":"22-de3d485ad60c8642eda260afe5620973"}},
-{"id":"fantomex","key":"fantomex","value":{"rev":"3-79b26bcf9aa365485ed8131c474bf6f8"}},
-{"id":"far","key":"far","value":{"rev":"19-c8d9f1e8bc12a31cb27bef3ed44759ce"}},
-{"id":"farm","key":"farm","value":{"rev":"31-ab77f7f48b24bf6f0388b926d2ac370b"}},
-{"id":"fast-detective","key":"fast-detective","value":{"rev":"5-b0b6c8901458f3f07044d4266db0aa52"}},
-{"id":"fast-msgpack-rpc","key":"fast-msgpack-rpc","value":{"rev":"7-b2dfd3d331459382fe1e8166288ffef6"}},
-{"id":"fast-or-slow","key":"fast-or-slow","value":{"rev":"13-4118190cd6a0185af8ea9b381ee2bc98"}},
-{"id":"fast-stats","key":"fast-stats","value":{"rev":"3-15cdd56d9efa38f08ff20ca731867d4d"}},
-{"id":"fastcgi-stream","key":"fastcgi-stream","value":{"rev":"5-99c0c4dfc7a874e1af71e5ef3ac95ba4"}},
-{"id":"faye","key":"faye","value":{"rev":"30-49b7d05534c35527972a4d5e07ac8895"}},
-{"id":"faye-service","key":"faye-service","value":{"rev":"3-bad8bf6722461627eac7d0141e09b3f7"}},
-{"id":"fe-fu","key":"fe-fu","value":{"rev":"21-f3cb04870621ce40da8ffa009686bdeb"}},
-{"id":"feed-tables","key":"feed-tables","value":{"rev":"9-4410bad138f4df570e7be37bb17209b3"}},
-{"id":"feedBum","key":"feedBum","value":{"rev":"3-b4ff9edffb0c5c33c4ed40f60a12611a"}},
-{"id":"feedparser","key":"feedparser","value":{"rev":"5-eb2c32e00832ed7036eb1b87d2eea33e"}},
-{"id":"feral","key":"feral","value":{"rev":"19-0b512b6301a26ca5502710254bd5a9ba"}},
-{"id":"fermata","key":"fermata","value":{"rev":"25-eeafa3e5b769a38b8a1065c0a66e0653"}},
-{"id":"ferret","key":"ferret","value":{"rev":"9-7ab6b29cb0cad9855d927855c2a27bff"}},
-{"id":"ffmpeg-node","key":"ffmpeg-node","value":{"rev":"3-e55011ecb147f599475a12b10724a583"}},
-{"id":"ffmpeg2theora","key":"ffmpeg2theora","value":{"rev":"13-05d2f83dbbb90e832176ebb7fdc2ae2e"}},
-{"id":"fiberize","key":"fiberize","value":{"rev":"5-dfb978d6b88db702f68a13e363fb21af"}},
-{"id":"fibers","key":"fibers","value":{"rev":"71-4b22dbb449839723ed9b0d533339c764"}},
-{"id":"fibers-promise","key":"fibers-promise","value":{"rev":"9-3a9977528f8df079969d4ae48db7a0a7"}},
-{"id":"fidel","key":"fidel","value":{"rev":"37-370838ed9984cfe6807114b5fef789e6"}},
-{"id":"fig","key":"fig","value":{"rev":"7-24acf90e7d06dc8b83adb02b5776de3c"}},
-{"id":"file","key":"file","value":{"rev":"6-1131008db6855f20969413be7cc2e968"}},
-{"id":"file-api","key":"file-api","value":{"rev":"9-a9cc8f3de14eef5bba86a80f6705651c"}},
-{"id":"fileify","key":"fileify","value":{"rev":"17-50603c037d5e3a0a405ff4af3e71211f"}},
-{"id":"filepad","key":"filepad","value":{"rev":"23-8c4b2c04151723033523369c42144cc9"}},
-{"id":"filerepl","key":"filerepl","value":{"rev":"5-94999cc91621e08f96ded7423ed6d6f0"}},
-{"id":"fileset","key":"fileset","value":{"rev":"3-ea6a9f45aaa5e65279463041ee629dbe"}},
-{"id":"filestore","key":"filestore","value":{"rev":"9-6cce7c9cd2b2b11d12905885933ad25a"}},
-{"id":"filesystem-composer","key":"filesystem-composer","value":{"rev":"34-f1d04d711909f3683c1d00cd4ab7ca47"}},
-{"id":"fileutils","key":"fileutils","value":{"rev":"3-88876b61c9d0a915f95ce0f258e5ce51"}},
-{"id":"filter","key":"filter","value":{"rev":"3-4032087a5cf2de3dd164c95454a2ab05"}},
-{"id":"filter-chain","key":"filter-chain","value":{"rev":"5-c522429dc83ccc7dde4eaf5409070332"}},
-{"id":"fin","key":"fin","value":{"rev":"23-77cf12e84eb62958b40aa08fdcbb259d"}},
-{"id":"fin-id","key":"fin-id","value":{"rev":"3-9f85ee1e426d4bdad5904002a6d9342c"}},
-{"id":"finance","key":"finance","value":{"rev":"3-cf97ddb6af3f6601bfb1e49a600f56af"}},
-{"id":"finder","key":"finder","value":{"rev":"13-65767fe51799a397ddd9b348ead12ed2"}},
-{"id":"findit","key":"findit","value":{"rev":"15-435e4168208548a2853f6efcd4529de3"}},
-{"id":"fingerprint","key":"fingerprint","value":{"rev":"3-c40e2169260010cac472e688c392ea3d"}},
-{"id":"finjector","key":"finjector","value":{"rev":"5-646da199b0b336d20e421ef6ad613e90"}},
-{"id":"firebird","key":"firebird","value":{"rev":"5-7e7ec03bc00e562f5f7afc7cad76da77"}},
-{"id":"firmata","key":"firmata","value":{"rev":"20-f3cbde43ce2677a208bcf3599af5b670"}},
-{"id":"first","key":"first","value":{"rev":"3-c647f6fc1353a1c7b49f5e6cd1905b1e"}},
-{"id":"fishback","key":"fishback","value":{"rev":"19-27a0fdc8c3abe4d61fff9c7a098f3fd9"}},
-{"id":"fitbit-js","key":"fitbit-js","value":{"rev":"3-62fe0869ddefd2949d8c1e568f994c93"}},
-{"id":"fix","key":"fix","value":{"rev":"17-4a79db9924922da010df71e5194bcac6"}},
-{"id":"flagpoll","key":"flagpoll","value":{"rev":"3-0eb7b98e2a0061233aa5228eb7348dff"}},
-{"id":"flags","key":"flags","value":{"rev":"3-594f0ec2e903ac74556d1c1f7c6cca3b"}},
-{"id":"flexcache","key":"flexcache","value":{"rev":"11-e1e4eeaa0793d95056a857bec04282ae"}},
-{"id":"flickr-conduit","key":"flickr-conduit","value":{"rev":"7-d3b2b610171589db68809c3ec3bf2bcb"}},
-{"id":"flickr-js","key":"flickr-js","value":{"rev":"5-66c8e8a00ad0a906f632ff99cf490163"}},
-{"id":"flickr-reflection","key":"flickr-reflection","value":{"rev":"6-3c34c3ac904b6d6f26182807fbb95c5e"}},
-{"id":"flo","key":"flo","value":{"rev":"3-ce440035f0ec9a10575b1c8fab0c77da"}},
-{"id":"flow","key":"flow","value":{"rev":"6-95841a07c96f664d49d1af35373b3dbc"}},
-{"id":"flowcontrol","key":"flowcontrol","value":{"rev":"3-093bbbc7496072d9ecb136a826680366"}},
-{"id":"flowjs","key":"flowjs","value":{"rev":"3-403fc9e107ec70fe06236c27e70451c7"}},
-{"id":"fluent-ffmpeg","key":"fluent-ffmpeg","value":{"rev":"33-5982779d5f55a5915f0f8b0353f1fe2a"}},
-{"id":"flume-rpc","key":"flume-rpc","value":{"rev":"7-4214a2db407a3e64f036facbdd34df91"}},
-{"id":"flux","key":"flux","value":{"rev":"3-1ad83106af7ee83547c797246bd2c8b1"}},
-{"id":"fly","key":"fly","value":{"rev":"9-0a45b1b97f56ba0faf4af4777b473fad"}},
-{"id":"fn","key":"fn","value":{"rev":"5-110bab5d623b3628e413d972e040ed26"}},
-{"id":"fnProxy","key":"fnProxy","value":{"rev":"3-db1c90e5a06992ed290c679ac6dbff6a"}},
-{"id":"follow","key":"follow","value":{"rev":"3-44256c802b4576fcbae1264e9b824e6a"}},
-{"id":"fomatto","key":"fomatto","value":{"rev":"7-31ce5c9eba7f084ccab2dc5994796f2d"}},
-{"id":"foounit","key":"foounit","value":{"rev":"20-caf9cd90d6c94d19be0b3a9c9cb33ee0"}},
-{"id":"forEachAsync","key":"forEachAsync","value":{"rev":"3-d9cd8021ea9d5014583327752a9d01c4"}},
-{"id":"forever","key":"forever","value":{"rev":"99-90060d5d1754b1bf749e5278a2a4516b"}},
-{"id":"forge","key":"forge","value":{"rev":"9-0d9d59fd2d47a804e600aaef538ebbbf"}},
-{"id":"fork","key":"fork","value":{"rev":"13-f355105e07608de5ae2f3e7c0817af52"}},
-{"id":"forker","key":"forker","value":{"rev":"11-9717e2e3fa60b46df08261d936d9e5d7"}},
-{"id":"form-data","key":"form-data","value":{"rev":"3-5750e73f7a0902ec2fafee1db6d2e6f6"}},
-{"id":"form-validator","key":"form-validator","value":{"rev":"25-7d016b35895dc58ffd0bbe54fd9be241"}},
-{"id":"form2json","key":"form2json","value":{"rev":"8-7501dd9b43b9fbb7194b94e647816e5e"}},
-{"id":"formaline","key":"formaline","value":{"rev":"3-2d45fbb3e83b7e77bde0456607e6f1e3"}},
-{"id":"format","key":"format","value":{"rev":"7-5dddc67c10de521ef06a7a07bb3f7e2e"}},
-{"id":"formatdate","key":"formatdate","value":{"rev":"3-6d522e3196fe3b438fcc4aed0f7cf690"}},
-{"id":"formidable","key":"formidable","value":{"rev":"87-d27408b00793fee36f6632a895372590"}},
-{"id":"forms","key":"forms","value":{"rev":"6-253e032f07979b79c2e7dfa01be085dc"}},
-{"id":"forrst","key":"forrst","value":{"rev":"3-ef553ff1b6383bab0f81f062cdebac53"}},
-{"id":"fortumo","key":"fortumo","value":{"rev":"6-def3d146b29b6104019c513ce20bb61f"}},
-{"id":"foss-credits","key":"foss-credits","value":{"rev":"3-c824326e289e093406b2de4efef70cb7"}},
-{"id":"foss-credits-collection","key":"foss-credits-collection","value":{"rev":"17-de4ffca51768a36c8fb1b9c2bc66c80f"}},
-{"id":"foursquareonnode","key":"foursquareonnode","value":{"rev":"5-a4f0a1ed5d3be3056f10f0e9517efa83"}},
-{"id":"fraggle","key":"fraggle","value":{"rev":"7-b9383baf96bcdbd4022b4b887e4a3729"}},
-{"id":"framework","key":"framework","value":{"rev":"3-afb19a9598a0d50320b4f1faab1ae2c6"}},
-{"id":"frameworkjs","key":"frameworkjs","value":{"rev":"7-cd418da3272c1e8349126e442ed15dbd"}},
-{"id":"frank","key":"frank","value":{"rev":"12-98031fb56f1c89dfc7888f5d8ca7f0a9"}},
-{"id":"freakset","key":"freakset","value":{"rev":"21-ba60d0840bfa3da2c8713c3c2e6856a0"}},
-{"id":"freckle","key":"freckle","value":{"rev":"3-8e2e9a07b2650fbbd0a598b948ef993b"}},
-{"id":"freebase","key":"freebase","value":{"rev":"7-a1daf1cc2259b886f574f5c902eebcf4"}},
-{"id":"freecontrol","key":"freecontrol","value":{"rev":"6-7a51776b8764f406573d5192bab36adf"}},
-{"id":"freestyle","key":"freestyle","value":{"rev":"9-100f9e9d3504d6e1c6a2d47651c70f51"}},
-{"id":"frenchpress","key":"frenchpress","value":{"rev":"9-306d6ac21837879b8040d7f9aa69fc20"}},
-{"id":"fs-boot","key":"fs-boot","value":{"rev":"20-72b44b403767aa486bf1dc987c750733"}},
-{"id":"fs-ext","key":"fs-ext","value":{"rev":"10-3360831c3852590a762f8f82525c025e"}},
-{"id":"fsevents","key":"fsevents","value":{"rev":"6-bb994f41842e144cf43249fdf6bf51e1"}},
-{"id":"fsext","key":"fsext","value":{"rev":"9-a1507d84e91ddf26ffaa76016253b4fe"}},
-{"id":"fsh","key":"fsh","value":{"rev":"5-1e3784b2df1c1a28b81f27907945f48b"}},
-{"id":"fsm","key":"fsm","value":{"rev":"5-b113be7b30b2a2c9089edcb6fa4c15d3"}},
-{"id":"fswatch","key":"fswatch","value":{"rev":"11-287eea565c9562161eb8969d765bb191"}},
-{"id":"ftp","key":"ftp","value":{"rev":"5-751e312520c29e76f7d79c648248c56c"}},
-{"id":"ftp-get","key":"ftp-get","value":{"rev":"27-1e908bd075a0743dbb1d30eff06485e2"}},
-{"id":"fugue","key":"fugue","value":{"rev":"81-0c08e67e8deb4b5b677fe19f8362dbd8"}},
-{"id":"fullauto","key":"fullauto","value":{"rev":"9-ef915156026dabded5a4a76c5a751916"}},
-{"id":"fun","key":"fun","value":{"rev":"12-8396e3583e206dbf90bbea4316976f66"}},
-{"id":"functional","key":"functional","value":{"rev":"5-955979028270f5d3749bdf86b4d2c925"}},
-{"id":"functools","key":"functools","value":{"rev":"5-42ba84ce365bf8c0aaf3e5e6c369920b"}},
-{"id":"funk","key":"funk","value":{"rev":"14-67440a9b2118d8f44358bf3b17590243"}},
-{"id":"fusion","key":"fusion","value":{"rev":"19-64983fc6e5496c836be26e5fbc8527d1"}},
-{"id":"fusker","key":"fusker","value":{"rev":"48-58f05561c65ad288a78fa7210f146ba1"}},
-{"id":"future","key":"future","value":{"rev":"3-0ca60d8ae330e40ef6cf8c17a421d668"}},
-{"id":"futures","key":"futures","value":{"rev":"44-8a2aaf0f40cf84c9475824d9cec006ad"}},
-{"id":"fuzzy_file_finder","key":"fuzzy_file_finder","value":{"rev":"8-ee555aae1d433e60166d2af1d72ac6b9"}},
-{"id":"fuzzylogic","key":"fuzzylogic","value":{"rev":"8-596a8f4744d1dabcb8eb6466d9980fca"}},
-{"id":"fxs","key":"fxs","value":{"rev":"3-d3cb81151b0ddd9a4a5934fb63ffff75"}},
-{"id":"g","key":"g","value":{"rev":"3-55742a045425a9b4c9fe0e8925fad048"}},
-{"id":"g.raphael","key":"g.raphael","value":{"rev":"4-190d0235dc08f783dda77b3ecb60b11a"}},
-{"id":"ga","key":"ga","value":{"rev":"3-c47d516ac5e6de8ef7ef9d16fabcf6c7"}},
-{"id":"galletita","key":"galletita","value":{"rev":"3-aa7a01c3362a01794f36e7aa9664b850"}},
-{"id":"game","key":"game","value":{"rev":"3-0f1539e4717a2780205d98ef6ec0886d"}},
-{"id":"gamina","key":"gamina","value":{"rev":"15-871f4970f1e87b7c8ad361456001c76f"}},
-{"id":"gang-bang","key":"gang-bang","value":{"rev":"6-f565cb7027a8ca109481df49a6d41114"}},
-{"id":"gapserver","key":"gapserver","value":{"rev":"9-b25eb0eefc21e407cba596a0946cb3a0"}},
-{"id":"garbage","key":"garbage","value":{"rev":"3-80f4097d5f1f2c75f509430a11c8a15e"}},
-{"id":"gaseous","key":"gaseous","value":{"rev":"3-8021582ab9dde42d235193e6067be72d"}},
-{"id":"gaudium","key":"gaudium","value":{"rev":"11-7d612f1c5d921180ccf1c162fe2c7446"}},
-{"id":"gauss","key":"gauss","value":{"rev":"3-8fd18b2d7a223372f190797e4270a535"}},
-{"id":"gcli","key":"gcli","value":{"rev":"3-210404347cc643e924cec678d0195099"}},
-{"id":"gcw2html","key":"gcw2html","value":{"rev":"3-2aff7bff7981f2f9800c5f65812aa0a6"}},
-{"id":"gd","key":"gd","value":{"rev":"4-ac5a662e709a2993ed1fd1cbf7c4d7b4"}},
-{"id":"gdata","key":"gdata","value":{"rev":"3-c6b3a95064a1e1e0bb74f248ab4e73c4"}},
-{"id":"gdata-js","key":"gdata-js","value":{"rev":"17-0959500a4000d7058d8116af1e01b0d9"}},
-{"id":"gearman","key":"gearman","value":{"rev":"8-ac9fb7af75421ca2988d6098dbfd4c7c"}},
-{"id":"gearnode","key":"gearnode","value":{"rev":"7-8e40ec257984e887e2ff5948a6dde04e"}},
-{"id":"geck","key":"geck","value":{"rev":"161-c8117106ef58a6d7d21920df80159eab"}},
-{"id":"geddy","key":"geddy","value":{"rev":"13-da16f903aca1ec1f47086fa250b58abb"}},
-{"id":"gen","key":"gen","value":{"rev":"3-849005c8b8294c2a811ff4eccdedf436"}},
-{"id":"generic-function","key":"generic-function","value":{"rev":"5-dc046f58f96119225efb17ea5334a60f"}},
-{"id":"generic-pool","key":"generic-pool","value":{"rev":"18-65ff988620293fe7ffbd0891745c3ded"}},
-{"id":"genji","key":"genji","value":{"rev":"49-4c72bcaa57572ad0d43a1b7e9e5a963a"}},
-{"id":"genstatic","key":"genstatic","value":{"rev":"19-4278d0766226af4db924bb0f6b127699"}},
-{"id":"gently","key":"gently","value":{"rev":"24-c9a3ba6b6fd183ee1b5dda569122e978"}},
-{"id":"genx","key":"genx","value":{"rev":"7-f0c0ff65e08e045e8dd1bfcb25ca48d4"}},
-{"id":"geo","key":"geo","value":{"rev":"7-fa2a79f7260b849c277735503a8622e9"}},
-{"id":"geo-distance","key":"geo-distance","value":{"rev":"7-819a30e9b4776e4416fe9510ca79cd93"}},
-{"id":"geocoder","key":"geocoder","value":{"rev":"15-736e627571ad8dba3a9d0da1ae019c35"}},
-{"id":"geohash","key":"geohash","value":{"rev":"6-b9e62c804abe565425a8e6a01354407a"}},
-{"id":"geoip","key":"geoip","value":{"rev":"231-e5aa7acd5fb44833a67f96476b4fac49"}},
-{"id":"geoip-lite","key":"geoip-lite","value":{"rev":"9-efd916135c056406ede1ad0fe15534fa"}},
-{"id":"geojs","key":"geojs","value":{"rev":"35-b0f97b7c72397d6eb714602dc1121183"}},
-{"id":"geolib","key":"geolib","value":{"rev":"3-923a8622d1bd97c22f71ed6537ba5062"}},
-{"id":"geonode","key":"geonode","value":{"rev":"35-c2060653af72123f2f9994fca1c86d70"}},
-{"id":"geoutils","key":"geoutils","value":{"rev":"6-2df101fcbb01849533b2fbc80dc0eb7a"}},
-{"id":"gerbil","key":"gerbil","value":{"rev":"3-b5961044bda490a34085ca826aeb3022"}},
-{"id":"gerenuk","key":"gerenuk","value":{"rev":"13-4e45a640bcbadc3112e105ec5b60b907"}},
-{"id":"get","key":"get","value":{"rev":"18-dd215d673f19bbd8b321a7dd63e004e8"}},
-{"id":"getopt","key":"getopt","value":{"rev":"3-454354e4557d5e7205410acc95c9baae"}},
-{"id":"getrusage","key":"getrusage","value":{"rev":"8-d6ef24793b8e4c46f3cdd14937cbabe1"}},
-{"id":"gettext","key":"gettext","value":{"rev":"3-4c12268a4cab64ec4ef3ac8c9ec7912b"}},
-{"id":"getz","key":"getz","value":{"rev":"9-f3f43934139c9af6ddfb8b91e9a121ba"}},
-{"id":"gevorg.me","key":"gevorg.me","value":{"rev":"33-700502b8ca7041bf8d29368069cac365"}},
-{"id":"gex","key":"gex","value":{"rev":"3-105824d7a3f9c2ac7313f284c3f81d22"}},
-{"id":"gexode","key":"gexode","value":{"rev":"3-4a3552eae4ff3ba4443f9371a1ab4b2e"}},
-{"id":"gfx","key":"gfx","value":{"rev":"8-1f6c90bc3819c3b237e8d1f28ad1b136"}},
-{"id":"gherkin","key":"gherkin","value":{"rev":"77-6e835c8107bb4c7c8ad1fa072ac12c20"}},
-{"id":"ghm","key":"ghm","value":{"rev":"3-c440ae39832a575087ff1920b33c275b"}},
-{"id":"gif","key":"gif","value":{"rev":"14-e65638621d05b99ffe71b18097f29134"}},
-{"id":"gimme","key":"gimme","value":{"rev":"7-caab8354fe257fc307f8597e34ede547"}},
-{"id":"gist","key":"gist","value":{"rev":"11-eea7ea1adf3cde3a0804d2e1b0d6f7d6"}},
-{"id":"gista","key":"gista","value":{"rev":"23-48b8c374cfb8fc4e8310f3469cead6d5"}},
-{"id":"gisty","key":"gisty","value":{"rev":"5-1a898d0816f4129ab9a0d3f03ff9feb4"}},
-{"id":"git","key":"git","value":{"rev":"39-1f77df3ebeec9aae47ae8df56de6757f"}},
-{"id":"git-fs","key":"git-fs","value":{"rev":"14-7d365cddff5029a9d11fa8778a7296d2"}},
-{"id":"gitProvider","key":"gitProvider","value":{"rev":"9-c704ae702ef27bb57c0efd279a464e28"}},
-{"id":"github","key":"github","value":{"rev":"16-9345138ca7507c12be4a817b1abfeef6"}},
-{"id":"github-flavored-markdown","key":"github-flavored-markdown","value":{"rev":"3-f12043eb2969aff51db742b13d329446"}},
-{"id":"gitteh","key":"gitteh","value":{"rev":"39-88b00491fd4ce3294b8cdf61b9708383"}},
-{"id":"gitter","key":"gitter","value":{"rev":"16-88d7ef1ab6a7e751ca2cf6b50894deb4"}},
-{"id":"gittyup","key":"gittyup","value":{"rev":"37-ed6030c1acdd8b989ac34cd10d6dfd1e"}},
-{"id":"gitweb","key":"gitweb","value":{"rev":"9-5331e94c6df9ee7724cde3738a0c6230"}},
-{"id":"gitwiki","key":"gitwiki","value":{"rev":"9-0f167a3a87bce7f3e941136a06e91810"}},
-{"id":"gizmo","key":"gizmo","value":{"rev":"5-1da4da8d66690457c0bf743473b755f6"}},
-{"id":"gleak","key":"gleak","value":{"rev":"17-d44a968b32e4fdc7d27bacb146391422"}},
-{"id":"glob","key":"glob","value":{"rev":"203-4a79e232cf6684a48ccb9134a6ce938c"}},
-{"id":"glob-trie.js","key":"glob-trie.js","value":{"rev":"7-bff534e3aba8f6333fa5ea871b070de2"}},
-{"id":"global","key":"global","value":{"rev":"3-f15b0c9ae0ea9508890bff25c8e0f795"}},
-{"id":"globalize","key":"globalize","value":{"rev":"5-33d10c33fb24af273104f66098e246c4"}},
-{"id":"glossary","key":"glossary","value":{"rev":"3-5e143d09d22a01eb2ee742ceb3e18f6e"}},
-{"id":"glossy","key":"glossy","value":{"rev":"9-f31e00844e8be49e5812fe64a6f1e1cc"}},
-{"id":"gm","key":"gm","value":{"rev":"28-669722d34a3dc29c8c0b27abd73493a1"}},
-{"id":"gnarly","key":"gnarly","value":{"rev":"3-796f5df3483f304cb404cc7ac7702512"}},
-{"id":"gnomenotify","key":"gnomenotify","value":{"rev":"9-bc066c0556ad4a20e7a7ae58cdc4cf91"}},
-{"id":"gofer","key":"gofer","value":{"rev":"15-3fc77ce34e95ffecd12d3854a1bb2da9"}},
-{"id":"goo.gl","key":"goo.gl","value":{"rev":"37-eac7c44d33cc42c618372f0bdd4365c2"}},
-{"id":"goodreads","key":"goodreads","value":{"rev":"5-acd9fe24139aa8b81b26431dce9954aa"}},
-{"id":"goog","key":"goog","value":{"rev":"13-c964ecfcef4d20c8c7d7526323257c04"}},
-{"id":"googl","key":"googl","value":{"rev":"8-2d4d80ef0c5f93400ec2ec8ef80de433"}},
-{"id":"google-openid","key":"google-openid","value":{"rev":"19-380884ba97e3d6fc48c8c7db3dc0e91b"}},
-{"id":"google-spreadsheets","key":"google-spreadsheets","value":{"rev":"3-f640ef136c4b5e90210c2d5d43102b38"}},
-{"id":"google-voice","key":"google-voice","value":{"rev":"37-2e1c3cba3455852f26b0ccaf1fed7125"}},
-{"id":"googleanalytics","key":"googleanalytics","value":{"rev":"8-1d3e470ce4aacadb0418dd125887813d"}},
-{"id":"googleclientlogin","key":"googleclientlogin","value":{"rev":"23-5de8ee62c0ddbc63a001a36a6afe730e"}},
-{"id":"googlediff","key":"googlediff","value":{"rev":"3-438a2f0758e9770a157ae4cce9b6f49e"}},
-{"id":"googlemaps","key":"googlemaps","value":{"rev":"18-bc939560c587711f3d96f3caadd65a7f"}},
-{"id":"googleplus-scraper","key":"googleplus-scraper","value":{"rev":"7-598ea99bd64f4ad69cccb74095abae59"}},
-{"id":"googlereaderauth","key":"googlereaderauth","value":{"rev":"5-cd0eb8ca36ea78620af0fce270339a7b"}},
-{"id":"googlesets","key":"googlesets","value":{"rev":"5-1b2e597e903c080182b3306d63278fd9"}},
-{"id":"googleweather","key":"googleweather","value":{"rev":"3-6bfdaaeedb8a712ee3e89a8ed27508eb"}},
-{"id":"gopostal.node","key":"gopostal.node","value":{"rev":"3-14ff3a655dc3680c9e8e2751ebe294bc"}},
-{"id":"gowallan","key":"gowallan","value":{"rev":"3-23adc9c01a6b309eada47602fdc8ed90"}},
-{"id":"gowiththeflow","key":"gowiththeflow","value":{"rev":"3-52bb6cf6294f67ba5a892db4666d3790"}},
-{"id":"gpg","key":"gpg","value":{"rev":"5-0ca2b5af23e108a4f44f367992a75fed"}},
-{"id":"graceful-fs","key":"graceful-fs","value":{"rev":"3-01e9f7d1c0f6e6a611a60ee84de1f5cc"}},
-{"id":"gracie","key":"gracie","value":{"rev":"3-aa0f7c01a33c7c1e9a49b86886ef5255"}},
-{"id":"graff","key":"graff","value":{"rev":"7-5ab558cb24e30abd67f2a1dbf47cd639"}},
-{"id":"graft","key":"graft","value":{"rev":"3-7419de38b249b891bf7998bcdd2bf557"}},
-{"id":"grain","key":"grain","value":{"rev":"3-e57cbf02121970da230964ddbfd31432"}},
-{"id":"grainstore","key":"grainstore","value":{"rev":"19-5f9c5bb13b2c9ac4e6a05aec33aeb7c5"}},
-{"id":"graph","key":"graph","value":{"rev":"7-909d2fefcc84b5dd1512b60d631ea4e5"}},
-{"id":"graphquire","key":"graphquire","value":{"rev":"27-246e798f80b3310419644302405d68ad"}},
-{"id":"graphviz","key":"graphviz","value":{"rev":"8-3b79341eaf3f67f91bce7c88c08b9f0d"}},
-{"id":"grasshopper","key":"grasshopper","value":{"rev":"45-4002406990476b74dac5108bd19c4274"}},
-{"id":"gravatar","key":"gravatar","value":{"rev":"11-0164b7ac97e8a477b4e8791eae2e7fea"}},
-{"id":"grave","key":"grave","value":{"rev":"3-136f6378b956bc5dd9773250f8813038"}},
-{"id":"gravity","key":"gravity","value":{"rev":"5-dd40fcee1a769ce786337e9536d24244"}},
-{"id":"graylog","key":"graylog","value":{"rev":"5-abcff9cd91ff20e36f8a70a3f2de658b"}},
-{"id":"greg","key":"greg","value":{"rev":"5-ececb0a3bb552b6da4f66b8bf6f75cf0"}},
-{"id":"gridcentric","key":"gridcentric","value":{"rev":"4-4378e1c280e18b5aaabd23038b80d76c"}},
-{"id":"gridly","key":"gridly","value":{"rev":"3-86e878756b493da8f66cbd633a15f821"}},
-{"id":"grinder","key":"grinder","value":{"rev":"9-0aaeecf0c81b1c9c93a924c5eb0bff45"}},
-{"id":"grir.am","key":"grir.am","value":{"rev":"3-3ec153c764af1c26b50fefa437318c5a"}},
-{"id":"groundcrew","key":"groundcrew","value":{"rev":"3-9e9ed9b1c70c00c432f36bb853fa21a0"}},
-{"id":"groupie","key":"groupie","value":{"rev":"6-b5e3f0891a7e8811d6112b24bd5a46b4"}},
-{"id":"groupon","key":"groupon","value":{"rev":"21-8b74723c153695f4ed4917575abcca8f"}},
-{"id":"growing-file","key":"growing-file","value":{"rev":"7-995b233a1add5b9ea80aec7ac3f60dc5"}},
-{"id":"growl","key":"growl","value":{"rev":"10-4be41ae10ec96e1334dccdcdced12fe3"}},
-{"id":"gsl","key":"gsl","value":{"rev":"49-3367acfb521b30d3ddb9b80305009553"}},
-{"id":"gss","key":"gss","value":{"rev":"3-e4cffbbbc4536d952d13d46376d899b7"}},
-{"id":"guards","key":"guards","value":{"rev":"8-d7318d3d9dc842ab41e6ef5b88f9d37f"}},
-{"id":"guardtime","key":"guardtime","value":{"rev":"3-5a2942efabab100ffb3dc0fa3b581b7a"}},
-{"id":"guava","key":"guava","value":{"rev":"11-d9390d298b503f0ffb8e3ba92eeb9759"}},
-{"id":"guid","key":"guid","value":{"rev":"16-d99e725bbbf97a326833858767b7ed08"}},
-{"id":"gumbo","key":"gumbo","value":{"rev":"31-727cf5a3b7d8590fff871f27da114d9d"}},
-{"id":"gunther","key":"gunther","value":{"rev":"9-f95c89128412208d16acd3e615844115"}},
-{"id":"gzbz2","key":"gzbz2","value":{"rev":"3-e1844b1b3a7881a0c8dc0dd4edcc11ca"}},
-{"id":"gzip","key":"gzip","value":{"rev":"17-37afa05944f055d6f43ddc87c1b163c2"}},
-{"id":"gzip-stack","key":"gzip-stack","value":{"rev":"8-cf455d60277832c60ee622d198c0c51a"}},
-{"id":"gzippo","key":"gzippo","value":{"rev":"15-6416c13ecbbe1c5cd3e30adf4112ead7"}},
-{"id":"h5eb","key":"h5eb","value":{"rev":"3-11ed2566fa4b8a01ff63a720c94574cd"}},
-{"id":"hack","key":"hack","value":{"rev":"3-70f536dd46719e8201a6ac5cc96231f6"}},
-{"id":"hack.io","key":"hack.io","value":{"rev":"18-128305614e7fd6b461248bf3bfdd7ab7"}},
-{"id":"hacktor","key":"hacktor","value":{"rev":"3-51b438df35ba8a955d434ab25a4dad67"}},
-{"id":"haibu","key":"haibu","value":{"rev":"99-b29b8c37be42f90985c6d433d53c8679"}},
-{"id":"haibu-carapace","key":"haibu-carapace","value":{"rev":"22-9a89b2f495e533d0f93e4ee34121e48c"}},
-{"id":"haibu-nginx","key":"haibu-nginx","value":{"rev":"7-e176128dc6dbb0d7f5f33369edf1f7ee"}},
-{"id":"halfstreamxml","key":"halfstreamxml","value":{"rev":"7-5c0f3defa6ba921f8edb564584553df4"}},
-{"id":"ham","key":"ham","value":{"rev":"3-1500dc495cade7334f6a051f2758f748"}},
-{"id":"haml","key":"haml","value":{"rev":"15-a93e7762c7d43469a06519472497fd93"}},
-{"id":"haml-edge","key":"haml-edge","value":{"rev":"5-c4e44a73263ac9b7e632375de7e43d7c"}},
-{"id":"hamljs","key":"hamljs","value":{"rev":"10-a01c7214b69992352bde44938418ebf4"}},
-{"id":"hamljs-coffee","key":"hamljs-coffee","value":{"rev":"3-c2733c8ff38f5676075b84cd7f3d8684"}},
-{"id":"handlebars","key":"handlebars","value":{"rev":"4-0e21906b78605f7a1d5ec7cb4c7d35d7"}},
-{"id":"hanging-gardens","key":"hanging-gardens","value":{"rev":"27-3244e37f08bea0e31759e9f38983f59a"}},
-{"id":"hanging_gardens_registry","key":"hanging_gardens_registry","value":{"rev":"17-d87aa3a26f91dc314f02c686672a5ec6"}},
-{"id":"hapi","key":"hapi","value":{"rev":"3-ed721fe9aae4a459fe0945dabd7d680a"}},
-{"id":"harmony","key":"harmony","value":{"rev":"3-d6c9d6acc29d29c97c75c77f7c8e1390"}},
-{"id":"hascan","key":"hascan","value":{"rev":"13-a7ab15c72f464b013cbc55dc426543ca"}},
-{"id":"hash_ring","key":"hash_ring","value":{"rev":"12-0f072b1dd1fd93ae2f2b79f5ea72074d"}},
-{"id":"hashbangify","key":"hashbangify","value":{"rev":"5-738e0cf99649d41c19d3449c0e9a1cbf"}},
-{"id":"hashish","key":"hashish","value":{"rev":"9-62c5e74355458e1ead819d87151b7d38"}},
-{"id":"hashkeys","key":"hashkeys","value":{"rev":"3-490809bdb61f930f0d9f370eaadf36ea"}},
-{"id":"hashlib","key":"hashlib","value":{"rev":"7-1f19c9d6062ff22ed2e963204a1bd405"}},
-{"id":"hashring","key":"hashring","value":{"rev":"11-4c9f2b1ba7931c8bab310f4ecaf91419"}},
-{"id":"hashtable","key":"hashtable","value":{"rev":"7-2aaf2667cbdb74eb8da61e2e138059ca"}},
-{"id":"hat","key":"hat","value":{"rev":"9-6f37874d9703eab62dc875e2373837a8"}},
-{"id":"hbase","key":"hbase","value":{"rev":"20-7ca92712de26ffb18d275a21696aa263"}},
-{"id":"hbase-thrift","key":"hbase-thrift","value":{"rev":"7-39afb33a4e61cc2b3dc94f0c7fd32c65"}},
-{"id":"hbs","key":"hbs","value":{"rev":"29-aa2676e6790c5716f84f128dcd03e797"}},
-{"id":"header-stack","key":"header-stack","value":{"rev":"13-7ad1ccf3c454d77029c000ceb18ce5ab"}},
-{"id":"headers","key":"headers","value":{"rev":"13-04f8f5f25e2dd9890f6b2f120adf297a"}},
-{"id":"healthety","key":"healthety","value":{"rev":"60-07c67c22ee2a13d0ad675739d1814a6d"}},
-{"id":"heatmap","key":"heatmap","value":{"rev":"9-c53f4656d9517f184df7aea9226c1765"}},
-{"id":"heavy-flow","key":"heavy-flow","value":{"rev":"5-0b9188334339e7372b364a7fc730c639"}},
-{"id":"heckle","key":"heckle","value":{"rev":"13-b462abef7b9d1471ed8fb8f23af463e0"}},
-{"id":"helium","key":"helium","value":{"rev":"3-4d6ce9618c1be522268944240873f53e"}},
-{"id":"hello-world","key":"hello-world","value":{"rev":"3-e87f287308a209491c011064a87100b7"}},
-{"id":"hello.io","key":"hello.io","value":{"rev":"3-39b78278fa638495522edc7a84f6a52e"}},
-{"id":"helloworld","key":"helloworld","value":{"rev":"3-8f163aebdcf7d8761709bdbb634c3689"}},
-{"id":"helpers","key":"helpers","value":{"rev":"3-67d75b1c8e5ad2a268dd4ea191d4754b"}},
-{"id":"helpful","key":"helpful","value":{"rev":"41-e11bed25d5a0ca7e7ad116d5a339ec2a"}},
-{"id":"hem","key":"hem","value":{"rev":"27-042fc9d4b96f20112cd943e019e54d20"}},
-{"id":"hempwick","key":"hempwick","value":{"rev":"11-de1f6f0f23937d9f33286e12ee877540"}},
-{"id":"heritable","key":"heritable","value":{"rev":"13-1468ff92063251a037bbe80ee987a9c3"}},
-{"id":"hermes-raw-client","key":"hermes-raw-client","value":{"rev":"11-5d143c371cb8353612badc72be1917ff"}},
-{"id":"heru","key":"heru","value":{"rev":"3-d124a20939e30e2a3c08f7104b2a1a5c"}},
-{"id":"hexdump","key":"hexdump","value":{"rev":"3-c455710ca80662969ccbca3acc081cb8"}},
-{"id":"hexy","key":"hexy","value":{"rev":"16-5142b0461622436daa2e476d252770f2"}},
-{"id":"highlight","key":"highlight","value":{"rev":"9-4b172b7aef6f40d768f022b2ba4e6748"}},
-{"id":"highlight.js","key":"highlight.js","value":{"rev":"5-16c1ebd28d5f2e781e666c6ee013c30c"}},
-{"id":"hiker","key":"hiker","value":{"rev":"9-89d1ce978b349f1f0df262655299d83c"}},
-{"id":"hipchat","key":"hipchat","value":{"rev":"3-73118782367d474af0f6410290df5f7f"}},
-{"id":"hipchat-js","key":"hipchat-js","value":{"rev":"3-253b83875d3e18e9c89333bc377183c3"}},
-{"id":"hiredis","key":"hiredis","value":{"rev":"46-29ceb03860efbd4b3b995247f27f78b9"}},
-{"id":"hive","key":"hive","value":{"rev":"15-40a4c6fcfa3b80007a18ef4ede80075b"}},
-{"id":"hive-cache","key":"hive-cache","value":{"rev":"3-36b10607b68586fccbfeb856412bd6bf"}},
-{"id":"hoard","key":"hoard","value":{"rev":"13-75d4c484095e2e38ac63a65bd9fd7f4b"}},
-{"id":"hook","key":"hook","value":{"rev":"7-2f1e375058e2b1fa61d3651f6d57a6f8"}},
-{"id":"hook.io","key":"hook.io","value":{"rev":"63-9fac4fb8337d1953963d47144f806f72"}},
-{"id":"hook.io-browser","key":"hook.io-browser","value":{"rev":"3-7e04347d80adc03eb5637b7e4b8ca58b"}},
-{"id":"hook.io-couch","key":"hook.io-couch","value":{"rev":"3-ce0eb281d1ba21aa1caca3a52553a07b"}},
-{"id":"hook.io-cron","key":"hook.io-cron","value":{"rev":"15-50deedc2051ce65bca8a42048154139c"}},
-{"id":"hook.io-helloworld","key":"hook.io-helloworld","value":{"rev":"23-ef5cf0cec9045d28d846a7b0872874e4"}},
-{"id":"hook.io-irc","key":"hook.io-irc","value":{"rev":"5-39c7ac5e192aef34b87af791fa77ee04"}},
-{"id":"hook.io-logger","key":"hook.io-logger","value":{"rev":"13-9e3208ea8eacfe5378cd791f2377d06d"}},
-{"id":"hook.io-mailer","key":"hook.io-mailer","value":{"rev":"9-d9415d53dc086102024cf7400fdfb7a2"}},
-{"id":"hook.io-pinger","key":"hook.io-pinger","value":{"rev":"17-860ab3a892284b91999f86c3882e2ff5"}},
-{"id":"hook.io-repl","key":"hook.io-repl","value":{"rev":"13-c0d430ccdfd197e4746c46d2814b6d92"}},
-{"id":"hook.io-request","key":"hook.io-request","value":{"rev":"13-f0e8d167d59917d90266f921e3ef7c64"}},
-{"id":"hook.io-sitemonitor","key":"hook.io-sitemonitor","value":{"rev":"8-725ea7deb9cb1031eabdc4fd798308ff"}},
-{"id":"hook.io-twilio","key":"hook.io-twilio","value":{"rev":"11-6b2e231307f6174861aa5dcddad264b3"}},
-{"id":"hook.io-twitter","key":"hook.io-twitter","value":{"rev":"3-59296395b22e661e7e5c141c4c7be46d"}},
-{"id":"hook.io-webhook","key":"hook.io-webhook","value":{"rev":"15-b27e51b63c8ec70616c66061d949f388"}},
-{"id":"hook.io-webserver","key":"hook.io-webserver","value":{"rev":"29-eb6bff70736648427329eba08b5f55c3"}},
-{"id":"hook.io-ws","key":"hook.io-ws","value":{"rev":"4-a85578068b54560ef663a7ecfea2731f"}},
-{"id":"hooks","key":"hooks","value":{"rev":"33-6640fb0c27903af6b6ae7b7c41d79e01"}},
-{"id":"hoptoad-notifier","key":"hoptoad-notifier","value":{"rev":"16-8249cb753a3626f2bf2664024ae7a5ee"}},
-{"id":"horaa","key":"horaa","value":{"rev":"5-099e5d6486d10944e10b584eb3f6e924"}},
-{"id":"hornet","key":"hornet","value":{"rev":"22-8c40d7ba4ca832b951e6d5db165f3305"}},
-{"id":"horseman","key":"horseman","value":{"rev":"11-7228e0f84c2036669a218710c22f72c0"}},
-{"id":"hostify","key":"hostify","value":{"rev":"11-8c1a2e73f8b9474a6c26121688c28dc7"}},
-{"id":"hostinfo","key":"hostinfo","value":{"rev":"5-c8d638f40ccf94f4083430966d25e787"}},
-{"id":"hostip","key":"hostip","value":{"rev":"3-d4fd628b94e1f913d97ec1746d96f2a0"}},
-{"id":"hostname","key":"hostname","value":{"rev":"7-55fefb3c37990bbcad3d98684d17f38f"}},
-{"id":"hotnode","key":"hotnode","value":{"rev":"16-d7dad5de3ffc2ca6a04f74686aeb0e4b"}},
-{"id":"howmuchtime","key":"howmuchtime","value":{"rev":"3-351ce870ae6e2c21a798169d074e2a3f"}},
-{"id":"hstore","key":"hstore","value":{"rev":"3-55ab4d359c2fc8725829038e3adb7571"}},
-{"id":"hsume2-socket.io","key":"hsume2-socket.io","value":{"rev":"5-4b537247ae9999c285c802cc36457598"}},
-{"id":"htdoc","key":"htdoc","value":{"rev":"3-80ef9e3202b0d96b79435a2bc90bc899"}},
-{"id":"html","key":"html","value":{"rev":"3-92c4af7de329c92ff2e0be5c13020e78"}},
-{"id":"html-minifier","key":"html-minifier","value":{"rev":"7-2441ed004e2a6e7f1c42003ec03277ec"}},
-{"id":"html-sourcery","key":"html-sourcery","value":{"rev":"11-7ce1d4aa2e1d319fa108b02fb294d4ce"}},
-{"id":"html2coffeekup","key":"html2coffeekup","value":{"rev":"13-bae4a70411f6f549c281c69835fe3276"}},
-{"id":"html2coffeekup-bal","key":"html2coffeekup-bal","value":{"rev":"5-0663ac1339d72932004130b668c949f0"}},
-{"id":"html2jade","key":"html2jade","value":{"rev":"11-e50f504c5c847d7ffcde7328c2ade4fb"}},
-{"id":"html5","key":"html5","value":{"rev":"46-ca85ea99accaf1dc9ded4e2e3aa429c6"}},
-{"id":"html5edit","key":"html5edit","value":{"rev":"10-0383296c33ada4d356740f29121eeb9f"}},
-{"id":"htmlKompressor","key":"htmlKompressor","value":{"rev":"13-95a3afe7f7cfe02e089e41588b937fb1"}},
-{"id":"htmlkup","key":"htmlkup","value":{"rev":"27-5b0115636f38886ae0a40e5f52e2bfdd"}},
-{"id":"htmlparser","key":"htmlparser","value":{"rev":"14-52b2196c1456d821d47bb1d2779b2433"}},
-{"id":"htmlparser2","key":"htmlparser2","value":{"rev":"3-9bc0b807acd913999dfc949b3160a3db"}},
-{"id":"htracr","key":"htracr","value":{"rev":"27-384d0522328e625978b97d8eae8d942d"}},
-{"id":"http","key":"http","value":{"rev":"3-f197d1b599cb9da720d3dd58d9813ace"}},
-{"id":"http-agent","key":"http-agent","value":{"rev":"10-1715dd3a7adccf55bd6637d78bd345d1"}},
-{"id":"http-auth","key":"http-auth","value":{"rev":"3-21636d4430be18a5c6c42e5cb622c2e0"}},
-{"id":"http-basic-auth","key":"http-basic-auth","value":{"rev":"6-0a77e99ce8e31558d5917bd684fa2c9a"}},
-{"id":"http-browserify","key":"http-browserify","value":{"rev":"3-4f720b4af628ed8b5fb22839c1f91f4d"}},
-{"id":"http-console","key":"http-console","value":{"rev":"43-a20cbefed77bcae7de461922286a1f04"}},
-{"id":"http-digest","key":"http-digest","value":{"rev":"6-e0164885dcad21ab6150d537af0edd92"}},
-{"id":"http-digest-auth","key":"http-digest-auth","value":{"rev":"7-613ac841b808fd04e272e050fd5a45ac"}},
-{"id":"http-get","key":"http-get","value":{"rev":"39-b7cfeb2b572d4ecf695493e0886869f4"}},
-{"id":"http-load","key":"http-load","value":{"rev":"3-8c64f4972ff59e89fee041adde99b8ba"}},
-{"id":"http-proxy","key":"http-proxy","value":{"rev":"97-5b8af88886c8c047a9862bf62f6b9294"}},
-{"id":"http-proxy-backward","key":"http-proxy-backward","value":{"rev":"2-4433b04a41e8adade3f6b6b2b939df4b"}},
-{"id":"http-proxy-glimpse","key":"http-proxy-glimpse","value":{"rev":"3-a3e9791d4d9bfef5929ca55d874df18b"}},
-{"id":"http-proxy-no-line-184-error","key":"http-proxy-no-line-184-error","value":{"rev":"3-7e20a990820976d8c6d27c312cc5a67c"}},
-{"id":"http-proxy-selective","key":"http-proxy-selective","value":{"rev":"12-6e273fcd008afeceb6737345c46e1024"}},
-{"id":"http-recorder","key":"http-recorder","value":{"rev":"3-26dd0bc4f5c0bf922db1875e995d025f"}},
-{"id":"http-request-provider","key":"http-request-provider","value":{"rev":"6-436b69971dd1735ac3e41571375f2d15"}},
-{"id":"http-server","key":"http-server","value":{"rev":"21-1b80b6558692afd08c36629b0ecdc18c"}},
-{"id":"http-signature","key":"http-signature","value":{"rev":"9-49ca63427b535f2d18182d92427bc5b6"}},
-{"id":"http-stack","key":"http-stack","value":{"rev":"9-51614060741d6c85a7fd4c714ed1a9b2"}},
-{"id":"http-status","key":"http-status","value":{"rev":"5-1ec72fecc62a41d6f180d15c95e81270"}},
-{"id":"http_compat","key":"http_compat","value":{"rev":"3-88244d4b0fd08a3140fa1b2e8b1b152c"}},
-{"id":"http_router","key":"http_router","value":{"rev":"23-ad52b58b6bfc96d6d4e8215e0c31b294"}},
-{"id":"http_trace","key":"http_trace","value":{"rev":"7-d8024b5e41540e4240120ffefae523e4"}},
-{"id":"httpd","key":"httpd","value":{"rev":"3-9e2a19f007a6a487cdb752f4b8249657"}},
-{"id":"httpmock","key":"httpmock","value":{"rev":"3-b6966ba8ee2c31b0e7729fc59bb00ccf"}},
-{"id":"https-proxied","key":"https-proxied","value":{"rev":"5-f63a4c663d372502b0dcd4997e759e66"}},
-{"id":"httpu","key":"httpu","value":{"rev":"5-88a5b2bac8391d91673fc83d4cfd32df"}},
-{"id":"hungarian-magic","key":"hungarian-magic","value":{"rev":"4-9eae750ac6f30b6687d9a031353f5217"}},
-{"id":"huntergatherer","key":"huntergatherer","value":{"rev":"9-5c9d833a134cfaa901d89dce93f5b013"}},
-{"id":"hxp","key":"hxp","value":{"rev":"8-1f52ba766491826bdc6517c6cc508b2c"}},
-{"id":"hyde","key":"hyde","value":{"rev":"3-5763db65cab423404752b1a6354a7a6c"}},
-{"id":"hydra","key":"hydra","value":{"rev":"8-8bb4ed249fe0f9cdb8b11e492b646b88"}},
-{"id":"hyperpublic","key":"hyperpublic","value":{"rev":"11-5738162f3dbf95803dcb3fb28efd8740"}},
-{"id":"i18n","key":"i18n","value":{"rev":"7-f0d6b3c72ecd34dde02d805041eca996"}},
-{"id":"ical","key":"ical","value":{"rev":"13-baf448be48ab83ec9b3fb8bf83fbb9a1"}},
-{"id":"icalendar","key":"icalendar","value":{"rev":"5-78dd8fd8ed2c219ec56ad26a0727cf76"}},
-{"id":"icecap","key":"icecap","value":{"rev":"9-88d6865078a5e6e1ff998e2e73e593f3"}},
-{"id":"icecapdjs","key":"icecapdjs","value":{"rev":"11-d8e3c718a230d49caa3b5f76cfff7ce9"}},
-{"id":"icecast-stack","key":"icecast-stack","value":{"rev":"9-13b8da6ae373152ab0c8560e2f442af0"}},
-{"id":"ichabod","key":"ichabod","value":{"rev":"19-d0f02ffba80661398ceb80a7e0cbbfe6"}},
-{"id":"icing","key":"icing","value":{"rev":"11-84815e78828190fbaa52d6b93c75cb4f"}},
-{"id":"ico","key":"ico","value":{"rev":"3-5727a35c1df453bfdfa6a03e49725adf"}},
-{"id":"iconv","key":"iconv","value":{"rev":"18-5f5b3193268f1fa099e0112b3e033ffc"}},
-{"id":"iconv-jp","key":"iconv-jp","value":{"rev":"3-660b8f2def930263d2931cae2dcc401d"}},
-{"id":"id3","key":"id3","value":{"rev":"8-afe68aede872cae7b404aaa01c0108a5"}},
-{"id":"idea","key":"idea","value":{"rev":"9-a126c0e52206c51dcf972cf53af0bc32"}},
-{"id":"idiomatic-console","key":"idiomatic-console","value":{"rev":"25-67696c16bf79d1cc8caf4df62677c3ec"}},
-{"id":"idiomatic-stdio","key":"idiomatic-stdio","value":{"rev":"15-9d74c9a8872b1f7c41d6c671d7a14b7d"}},
-{"id":"iglob","key":"iglob","value":{"rev":"6-b8a3518cb67cad20c89f37892a2346a5"}},
-{"id":"ignite","key":"ignite","value":{"rev":"19-06daa730a70f69dc3a0d6d4984905c61"}},
-{"id":"iles-forked-irc-js","key":"iles-forked-irc-js","value":{"rev":"7-eb446f4e0db856e00351a5da2fa20616"}},
-{"id":"image","key":"image","value":{"rev":"8-5f7811db33c210eb38e1880f7cc433f2"}},
-{"id":"imageable","key":"imageable","value":{"rev":"61-9f7e03d3d990d34802f1e9c8019dbbfa"}},
-{"id":"imageinfo","key":"imageinfo","value":{"rev":"11-9bde1a1f0801d94539a4b70b61614849"}},
-{"id":"imagemagick","key":"imagemagick","value":{"rev":"10-b1a1ea405940fecf487da94b733e8c29"}},
-{"id":"imagick","key":"imagick","value":{"rev":"3-21d51d8a265a705881dadbc0c9f7c016"}},
-{"id":"imap","key":"imap","value":{"rev":"13-6a59045496c80b474652d2584edd4acb"}},
-{"id":"imbot","key":"imbot","value":{"rev":"11-0d8075eff5e5ec354683f396378fd101"}},
-{"id":"imdb","key":"imdb","value":{"rev":"7-2bba884d0e8804f4a7e0883abd47b0a7"}},
-{"id":"imgur","key":"imgur","value":{"rev":"3-30c0e5fddc1be3398ba5f7eee1a251d7"}},
-{"id":"impact","key":"impact","value":{"rev":"7-d3390690f11c6f9dcca9f240a7bedfef"}},
-{"id":"imsi","key":"imsi","value":{"rev":"3-0aa9a01c9c79b17afae3684b7b920ced"}},
-{"id":"index","key":"index","value":{"rev":"13-ad5d8d7dfad64512a12db4d820229c07"}},
-{"id":"indexer","key":"indexer","value":{"rev":"9-b0173ce9ad9fa1b80037fa8e33a8ce12"}},
-{"id":"inflect","key":"inflect","value":{"rev":"17-9e5ea2826fe08bd950cf7e22d73371bd"}},
-{"id":"inflectjs","key":"inflectjs","value":{"rev":"3-c59db027b72be720899b4a280ac2518f"}},
-{"id":"inflector","key":"inflector","value":{"rev":"3-191ff29d3b5ed8ef6877032a1d01d864"}},
-{"id":"inheritance","key":"inheritance","value":{"rev":"3-450a1e68bd2d8f16abe7001491abb6a8"}},
-{"id":"inherits","key":"inherits","value":{"rev":"3-284f97a7ae4f777bfabe721b66de07fa"}},
-{"id":"ini","key":"ini","value":{"rev":"5-142c8f9125fbace57689e2837deb1883"}},
-{"id":"iniparser","key":"iniparser","value":{"rev":"14-1053c59ef3d50a46356be45576885c49"}},
-{"id":"inireader","key":"inireader","value":{"rev":"15-9cdc485b18bff6397f5fec45befda402"}},
-{"id":"init","key":"init","value":{"rev":"5-b81610ad72864417dab49f7a3f29cc9f"}},
-{"id":"inject","key":"inject","value":{"rev":"5-82bddb6b4f21ddaa0137fedc8913d60e"}},
-{"id":"inliner","key":"inliner","value":{"rev":"45-8a1c3e8f78438f06865b3237d6c5339a"}},
-{"id":"inode","key":"inode","value":{"rev":"7-118ffafc62dcef5bbeb14e4328c68ab3"}},
-{"id":"inotify","key":"inotify","value":{"rev":"18-03d7b1a318bd283e0185b414b48dd602"}},
-{"id":"inotify-plusplus","key":"inotify-plusplus","value":{"rev":"10-0e0ce9065a62e5e21ee5bb53fac61a6d"}},
-{"id":"inspect","key":"inspect","value":{"rev":"5-b5f18717e29caec3399abe5e4ce7a269"}},
-{"id":"instagram","key":"instagram","value":{"rev":"5-decddf3737a1764518b6a7ce600d720d"}},
-{"id":"instagram-node-lib","key":"instagram-node-lib","value":{"rev":"13-8be77f1180b6afd9066834b3f5ee8de5"}},
-{"id":"instant-styleguide","key":"instant-styleguide","value":{"rev":"9-66c02118993621376ad0b7396db435b3"}},
-{"id":"intercept","key":"intercept","value":{"rev":"9-f5622744c576405516a427b4636ee864"}},
-{"id":"interface","key":"interface","value":{"rev":"10-13806252722402bd18d88533056a863b"}},
-{"id":"interleave","key":"interleave","value":{"rev":"25-69bc136937604863748a029fb88e3605"}},
-{"id":"interstate","key":"interstate","value":{"rev":"3-3bb4a6c35ca765f88a10b9fab6307c59"}},
-{"id":"intervals","key":"intervals","value":{"rev":"21-89b71bd55b8d5f6b670d69fc5b9f847f"}},
-{"id":"intestine","key":"intestine","value":{"rev":"3-66a5531e06865ed9c966d95437ba1371"}},
-{"id":"ios7crypt","key":"ios7crypt","value":{"rev":"7-a2d309a2c074e5c1c456e2b56cbcfd17"}},
-{"id":"iostat","key":"iostat","value":{"rev":"11-f0849c0072e76701b435aa769a614e82"}},
-{"id":"ip2cc","key":"ip2cc","value":{"rev":"9-2c282606fd08d469184a272a2108639c"}},
-{"id":"ipaddr.js","key":"ipaddr.js","value":{"rev":"5-1017fd5342840745614701476ed7e6c4"}},
-{"id":"iptables","key":"iptables","value":{"rev":"7-23e56ef5d7bf0ee8f5bd0e38bde8aae3"}},
-{"id":"iptrie","key":"iptrie","value":{"rev":"4-10317b0e073befe9601e9dc308dc361a"}},
-{"id":"ipv6","key":"ipv6","value":{"rev":"6-85e937f3d79e44dbb76264c7aaaa140f"}},
-{"id":"iqengines","key":"iqengines","value":{"rev":"3-8bdbd32e9dc35b77d80a31edae235178"}},
-{"id":"irc","key":"irc","value":{"rev":"8-ed30964f57b99b1b2f2104cc5e269618"}},
-{"id":"irc-colors","key":"irc-colors","value":{"rev":"9-7ddb19db9a553567aae86bd97f1dcdfc"}},
-{"id":"irc-js","key":"irc-js","value":{"rev":"58-1c898cea420aee60283edb4fadceb90e"}},
-{"id":"ircat.js","key":"ircat.js","value":{"rev":"6-f25f20953ce96697c033315d250615d0"}},
-{"id":"ircbot","key":"ircbot","value":{"rev":"9-85a4a6f88836fc031855736676b10dec"}},
-{"id":"irccd","key":"irccd","value":{"rev":"3-bf598ae8b6af63be41852ae8199416f4"}},
-{"id":"ircd","key":"ircd","value":{"rev":"7-3ba7fc2183d32ee1e58e63092d7e82bb"}},
-{"id":"ircdjs","key":"ircdjs","value":{"rev":"15-8fcdff2bf29cf24c3bbc4b461e6cbe9f"}},
-{"id":"irclog","key":"irclog","value":{"rev":"3-79a99bd8048dd98a93c747a1426aabde"}},
-{"id":"ircrpc","key":"ircrpc","value":{"rev":"5-278bec6fc5519fdbd152ea4fa35dc58c"}},
-{"id":"irrklang","key":"irrklang","value":{"rev":"3-65936dfabf7777027069343c2e72b32e"}},
-{"id":"isaacs","key":"isaacs","value":{"rev":"7-c55a41054056f502bc580bc6819d9d1f"}},
-{"id":"isbn","key":"isbn","value":{"rev":"3-51e784ded2e3ec9ef9b382fecd1c26a1"}},
-{"id":"iscroll","key":"iscroll","value":{"rev":"4-4f6635793806507665503605e7c180f0"}},
-{"id":"isodate","key":"isodate","value":{"rev":"7-ea4b1f77e9557b153264f68fd18a9f23"}},
-{"id":"it-is","key":"it-is","value":{"rev":"14-7617f5831c308d1c4ef914bc5dc30fa7"}},
-{"id":"iterator","key":"iterator","value":{"rev":"3-e6f70367a55cabbb89589f2a88be9ab0"}},
-{"id":"itunes","key":"itunes","value":{"rev":"7-47d151c372d70d0bc311141749c84d5a"}},
-{"id":"iws","key":"iws","value":{"rev":"3-dc7b4d18565b79d3e14aa691e5e632f4"}},
-{"id":"jQuery","key":"jQuery","value":{"rev":"29-f913933259b4ec5f4c5ea63466a4bb08"}},
-{"id":"jWorkflow","key":"jWorkflow","value":{"rev":"7-582cd7aa62085ec807117138b6439550"}},
-{"id":"jaCodeMap","key":"jaCodeMap","value":{"rev":"7-28efcbf4146977bdf1e594e0982ec097"}},
-{"id":"jaaulde-cookies","key":"jaaulde-cookies","value":{"rev":"3-d5b5a75f9cabbebb2804f0b4ae93d0c5"}},
-{"id":"jacker","key":"jacker","value":{"rev":"3-888174c7e3e2a5d241f2844257cf1b10"}},
-{"id":"jade","key":"jade","value":{"rev":"144-318a9d9f63906dc3da1ef7c1ee6420b5"}},
-{"id":"jade-browser","key":"jade-browser","value":{"rev":"9-0ae6b9e321cf04e3ca8fbfe0e38f4d9e"}},
-{"id":"jade-client-connect","key":"jade-client-connect","value":{"rev":"5-96dbafafa31187dd7f829af54432de8e"}},
-{"id":"jade-ext","key":"jade-ext","value":{"rev":"9-aac9a58a4e07d82bc496bcc4241d1be0"}},
-{"id":"jade-i18n","key":"jade-i18n","value":{"rev":"23-76a21a41b5376e10c083672dccf7fc62"}},
-{"id":"jade-serial","key":"jade-serial","value":{"rev":"3-5ec712e1d8cd8d5af20ae3e62ee92854"}},
-{"id":"jadedown","key":"jadedown","value":{"rev":"11-0d16ce847d6afac2939eebcb24a7216c"}},
-{"id":"jadeify","key":"jadeify","value":{"rev":"17-4322b68bb5a7e81e839edabbc8c405a4"}},
-{"id":"jadevu","key":"jadevu","value":{"rev":"15-1fd8557a6db3c23f267de76835f9ee65"}},
-{"id":"jah","key":"jah","value":{"rev":"3-f29704037a1cffe2b08abb4283bee4a4"}},
-{"id":"jake","key":"jake","value":{"rev":"36-5cb64b1c5a89ac53eb4d09d66a5b10e1"}},
-{"id":"jammit-express","key":"jammit-express","value":{"rev":"6-e3dfa928114a2721fe9b8882d284f759"}},
-{"id":"janrain","key":"janrain","value":{"rev":"5-9554501be76fb3a472076858d1abbcd5"}},
-{"id":"janrain-api","key":"janrain-api","value":{"rev":"3-f45a65c695f4c72fdd1bf3593d8aa796"}},
-{"id":"jaque","key":"jaque","value":{"rev":"32-7f269a70c67beefc53ba1684bff5a57b"}},
-{"id":"jar","key":"jar","value":{"rev":"3-7fe0ab4aa3a2ccc5d50853f118e7aeb5"}},
-{"id":"jarvis","key":"jarvis","value":{"rev":"3-fb203b29b397a0b12c1ae56240624e3d"}},
-{"id":"jarvis-test","key":"jarvis-test","value":{"rev":"5-9537ddae8291e6dad03bc0e6acc9ac80"}},
-{"id":"jasbin","key":"jasbin","value":{"rev":"25-ae22f276406ac8bb4293d78595ce02ad"}},
-{"id":"jasmine-dom","key":"jasmine-dom","value":{"rev":"17-686de4c573f507c30ff72c6671dc3d93"}},
-{"id":"jasmine-jquery","key":"jasmine-jquery","value":{"rev":"7-86c077497a367bcd9ea96d5ab8137394"}},
-{"id":"jasmine-node","key":"jasmine-node","value":{"rev":"27-4c544c41c69d2b3cb60b9953d1c46d54"}},
-{"id":"jasmine-reporters","key":"jasmine-reporters","value":{"rev":"3-21ba522ae38402848d5a66d3d4d9a2b3"}},
-{"id":"jasmine-runner","key":"jasmine-runner","value":{"rev":"23-7458777b7a6785efc878cfd40ccb99d8"}},
-{"id":"jasminy","key":"jasminy","value":{"rev":"3-ce76023bac40c5f690cba59d430fd083"}},
-{"id":"jason","key":"jason","value":{"rev":"15-394a59963c579ed5db37fada4d082b5c"}},
-{"id":"javiary","key":"javiary","value":{"rev":"5-661be61fd0f47c9609b7d148e298e2fc"}},
-{"id":"jazz","key":"jazz","value":{"rev":"12-d11d602c1240b134b0593425911242fc"}},
-{"id":"jdoc","key":"jdoc","value":{"rev":"3-0c61fdd6b367a9acac710e553927b290"}},
-{"id":"jeesh","key":"jeesh","value":{"rev":"13-23b4e1ecf9ca76685bf7f1bfc6c076f1"}},
-{"id":"jellyfish","key":"jellyfish","value":{"rev":"25-7fef81f9b5ef5d4abbcecb030a433a72"}},
-{"id":"jen","key":"jen","value":{"rev":"3-ab1b07453318b7e0254e1dadbee7868f"}},
-{"id":"jerk","key":"jerk","value":{"rev":"34-e31f26d5e3b700d0a3e5f5a5acf0d381"}},
-{"id":"jessie","key":"jessie","value":{"rev":"19-829b932e57204f3b7833b34f75d6bf2a"}},
-{"id":"jezebel","key":"jezebel","value":{"rev":"15-b67c259e160390064da69a512382e06f"}},
-{"id":"jimi","key":"jimi","value":{"rev":"10-cc4a8325d6b847362a422304a0057231"}},
-{"id":"jinjs","key":"jinjs","value":{"rev":"37-38fcf1989f1b251a35e4ff725118f55e"}},
-{"id":"jinkies","key":"jinkies","value":{"rev":"30-73fec0e854aa31bcbf3ae1ca04462b22"}},
-{"id":"jison","key":"jison","value":{"rev":"52-d03c6f5e2bdd7624d39d93ec5e88c383"}},
-{"id":"jitsu","key":"jitsu","value":{"rev":"164-95083f8275f0bf2834f62027569b4da2"}},
-{"id":"jitter","key":"jitter","value":{"rev":"16-3f7b183aa7922615f4b5b2fb46653477"}},
-{"id":"jj","key":"jj","value":{"rev":"21-1b3f97e9725e1241c96a884c85dc4e30"}},
-{"id":"jjw","key":"jjw","value":{"rev":"13-835c632dfc5df7dd37860bd0b2c1cb38"}},
-{"id":"jkwery","key":"jkwery","value":{"rev":"11-212429c9c9e1872d4e278da055b5ae0a"}},
-{"id":"jmen","key":"jmen","value":{"rev":"3-a0b67d5b84a077061d3fed2ddbf2c6a8"}},
-{"id":"jobmanager","key":"jobmanager","value":{"rev":"15-1a589ede5f10d1ea2f33f1bb91f9b3aa"}},
-{"id":"jobs","key":"jobs","value":{"rev":"12-3072b6164c5dca8fa9d24021719048ff"}},
-{"id":"jobvite","key":"jobvite","value":{"rev":"56-3d69b0e6d91722ef4908b4fe26bb5432"}},
-{"id":"jodoc","key":"jodoc","value":{"rev":"3-7b05c6d7b4c9a9fa85d3348948d2d52d"}},
-{"id":"johnny-mnemonic","key":"johnny-mnemonic","value":{"rev":"3-e8749d4be597f002aae720011b7c9273"}},
-{"id":"join","key":"join","value":{"rev":"5-ab92491dc83b5e8ed5f0cc49e306d5d5"}},
-{"id":"jolokia-client","key":"jolokia-client","value":{"rev":"26-1f93cb53f4a870b94540cdbf7627b1c4"}},
-{"id":"joo","key":"joo","value":{"rev":"11-e0d4a97eceacdd13769bc5f56e059aa7"}},
-{"id":"jools","key":"jools","value":{"rev":"3-9da332d524a117c4d72a58bb45fa34fd"}},
-{"id":"joose","key":"joose","value":{"rev":"22-ef8a1895680ad2f9c1cd73cd1afbb58e"}},
-{"id":"joosex-attribute","key":"joosex-attribute","value":{"rev":"18-119df97dba1ba2631c94d49e3142bbd7"}},
-{"id":"joosex-bridge-ext","key":"joosex-bridge-ext","value":{"rev":"20-5ad2168291aad2cf021df0a3eb103538"}},
-{"id":"joosex-class-simpleconstructor","key":"joosex-class-simpleconstructor","value":{"rev":"6-f71e02e44f611550374ad9f5d0c37fdf"}},
-{"id":"joosex-class-singleton","key":"joosex-class-singleton","value":{"rev":"6-3ba6b8644722b29febe384a368c18aab"}},
-{"id":"joosex-cps","key":"joosex-cps","value":{"rev":"20-493c65faf1ec59416bae475529c51cd4"}},
-{"id":"joosex-meta-lazy","key":"joosex-meta-lazy","value":{"rev":"13-ef8bc4e57006cfcecd72a344d8dc9da6"}},
-{"id":"joosex-namespace-depended","key":"joosex-namespace-depended","value":{"rev":"22-8a38a21f8564470b96082177e81f3db6"}},
-{"id":"joosex-observable","key":"joosex-observable","value":{"rev":"7-52e7018931e5465920bb6feab88aa468"}},
-{"id":"joosex-role-parameterized","key":"joosex-role-parameterized","value":{"rev":"6-65aa4fa4967c4fbe06357ccda5e6f810"}},
-{"id":"joosex-simplerequest","key":"joosex-simplerequest","value":{"rev":"10-12d105b60b8b3ca3a3626ca0ec53892d"}},
-{"id":"josp","key":"josp","value":{"rev":"3-c4fa8445a0d96037e00fe96d007bcf0c"}},
-{"id":"jot","key":"jot","value":{"rev":"3-8fab571ce3ad993f3594f3c2e0fc6915"}},
-{"id":"journey","key":"journey","value":{"rev":"40-efe1fa6c8d735592077c9a24b3b56a03"}},
-{"id":"jpeg","key":"jpeg","value":{"rev":"8-ab437fbaf88f32a7fb625a0b27521292"}},
-{"id":"jq","key":"jq","value":{"rev":"3-9d83287aa9e6aab25590fac9adbab968"}},
-{"id":"jqNode","key":"jqNode","value":{"rev":"3-fcaf2c47aba5637a4a23c64b6fc778cf"}},
-{"id":"jqbuild","key":"jqbuild","value":{"rev":"3-960edcea36784aa9ca135cd922e0cb9b"}},
-{"id":"jqserve","key":"jqserve","value":{"rev":"3-39272c5479aabaafe66ffa26a6eb3bb5"}},
-{"id":"jqtpl","key":"jqtpl","value":{"rev":"54-ce2b62ced4644d5fe24c3a8ebcb4d528"}},
-{"id":"jquajax","key":"jquajax","value":{"rev":"3-a079cb8f3a686faaafe420760e77a330"}},
-{"id":"jquery","key":"jquery","value":{"rev":"27-60fd58bba99d044ffe6e140bafd72595"}},
-{"id":"jquery-browserify","key":"jquery-browserify","value":{"rev":"9-a4e9afd657f3c632229afa356382f6a4"}},
-{"id":"jquery-deferred","key":"jquery-deferred","value":{"rev":"5-0fd0cec51f7424a50f0dba3cbe74fd58"}},
-{"id":"jquery-drive","key":"jquery-drive","value":{"rev":"3-8474f192fed5c5094e56bc91f5e8a0f8"}},
-{"id":"jquery-mousewheel","key":"jquery-mousewheel","value":{"rev":"3-cff81086cf651e52377a8d5052b09d64"}},
-{"id":"jquery-placeholdize","key":"jquery-placeholdize","value":{"rev":"3-7acc3fbda1b8daabce18876d2b4675e3"}},
-{"id":"jquery-tmpl-jst","key":"jquery-tmpl-jst","value":{"rev":"13-575031eb2f2b1e4c5562e195fce0bc93"}},
-{"id":"jquery.effects.blind","key":"jquery.effects.blind","value":{"rev":"3-5f3bec5913edf1bfcee267891f6204e2"}},
-{"id":"jquery.effects.bounce","key":"jquery.effects.bounce","value":{"rev":"3-245b2e7d9a1295dd0f7d568b8087190d"}},
-{"id":"jquery.effects.clip","key":"jquery.effects.clip","value":{"rev":"3-7aa63a590b6d90d5ea20e21c8dda675d"}},
-{"id":"jquery.effects.core","key":"jquery.effects.core","value":{"rev":"3-dd2fa270d8aea21104c2c92d6b06500d"}},
-{"id":"jquery.effects.drop","key":"jquery.effects.drop","value":{"rev":"3-8d0e30016e99460063a9a9000ce7b032"}},
-{"id":"jquery.effects.explode","key":"jquery.effects.explode","value":{"rev":"3-3d5e3bb2fb451f7eeaeb72b6743b6e6c"}},
-{"id":"jquery.effects.fade","key":"jquery.effects.fade","value":{"rev":"3-f362c762053eb278b5db5f92e248c3a5"}},
-{"id":"jquery.effects.fold","key":"jquery.effects.fold","value":{"rev":"3-c7d823c2b25c4f1e6a1801f4b1bc7a2c"}},
-{"id":"jquery.effects.highlight","key":"jquery.effects.highlight","value":{"rev":"3-44ef3c62a6b829382bffa6393cd31ed9"}},
-{"id":"jquery.effects.pulsate","key":"jquery.effects.pulsate","value":{"rev":"3-3cad87635cecc2602d40682cf669d2fe"}},
-{"id":"jquery.effects.scale","key":"jquery.effects.scale","value":{"rev":"3-2c8df02eeed343088e2253d84064a219"}},
-{"id":"jquery.effects.shake","key":"jquery.effects.shake","value":{"rev":"3-d63ab567d484311744d848b520a720c7"}},
-{"id":"jquery.effects.slide","key":"jquery.effects.slide","value":{"rev":"3-9eb5d1075d67045a8fa305e596981934"}},
-{"id":"jquery.effects.transfer","key":"jquery.effects.transfer","value":{"rev":"3-371bc87350ede6da53a40468b63200a9"}},
-{"id":"jquery.tmpl","key":"jquery.tmpl","value":{"rev":"5-75efd6c8c0ce030f2da12b984f9dfe6c"}},
-{"id":"jquery.ui.accordion","key":"jquery.ui.accordion","value":{"rev":"3-964ee7d6c50f31e7db6631da28e2261a"}},
-{"id":"jquery.ui.autocomplete","key":"jquery.ui.autocomplete","value":{"rev":"3-950d240629d142eab5e07c2776e39bcc"}},
-{"id":"jquery.ui.button","key":"jquery.ui.button","value":{"rev":"3-a1c7f3eeb9298ac0c116d75a176a6d17"}},
-{"id":"jquery.ui.core","key":"jquery.ui.core","value":{"rev":"3-b7ba340b7304a304f85c4d13438d1195"}},
-{"id":"jquery.ui.datepicker","key":"jquery.ui.datepicker","value":{"rev":"3-5b76579057f1b870959a06ab833f1972"}},
-{"id":"jquery.ui.dialog","key":"jquery.ui.dialog","value":{"rev":"3-0c314cee86bf67298759efcfd47246f6"}},
-{"id":"jquery.ui.draggable","key":"jquery.ui.draggable","value":{"rev":"3-b7a15d2bdbcdc6f0f3cd6e4522f9f1f3"}},
-{"id":"jquery.ui.droppable","key":"jquery.ui.droppable","value":{"rev":"3-86d8a1558f5e9383b271b4d968ba081d"}},
-{"id":"jquery.ui.mouse","key":"jquery.ui.mouse","value":{"rev":"3-ccb88d773c452c778c694f9f551cb816"}},
-{"id":"jquery.ui.position","key":"jquery.ui.position","value":{"rev":"3-c49c13b38592a363585600b7af54d977"}},
-{"id":"jquery.ui.progressbar","key":"jquery.ui.progressbar","value":{"rev":"3-b28dfadab64f9548b828c42bf870fcc9"}},
-{"id":"jquery.ui.resizable","key":"jquery.ui.resizable","value":{"rev":"3-aa356230544cbe8ab8dc5fab08cc0fa7"}},
-{"id":"jquery.ui.selectable","key":"jquery.ui.selectable","value":{"rev":"3-6b11846c104d580556e40eb5194c45f2"}},
-{"id":"jquery.ui.slider","key":"jquery.ui.slider","value":{"rev":"3-e8550b76bf58a9cbeca9ea91eb763257"}},
-{"id":"jquery.ui.sortable","key":"jquery.ui.sortable","value":{"rev":"3-1ddd981bd720f055fbd5bb1d06df55ad"}},
-{"id":"jquery.ui.tabs","key":"jquery.ui.tabs","value":{"rev":"3-e0514383f4d920b9dc23ef7a7ea4d8af"}},
-{"id":"jquery.ui.widget","key":"jquery.ui.widget","value":{"rev":"3-3a0800fa067c12d013168f74acf21e6d"}},
-{"id":"jqueryify","key":"jqueryify","value":{"rev":"3-2655cf6a45795a8bd138a464e6c18f04"}},
-{"id":"jrep","key":"jrep","value":{"rev":"3-edbcf6931b8a2b3f550727d8b839acc3"}},
-{"id":"js-beautify-node","key":"js-beautify-node","value":{"rev":"3-401cd1c130aaec2c090b578fe8db6290"}},
-{"id":"js-class","key":"js-class","value":{"rev":"5-a63fbb0136dcd602feee72e70674d5db"}},
-{"id":"js-jango","key":"js-jango","value":{"rev":"3-af4e4a7844791617e66a40a1c403bb98"}},
-{"id":"js-loader","key":"js-loader","value":{"rev":"13-8d9729495c1692e47d2cd923e839b4c8"}},
-{"id":"js-manager","key":"js-manager","value":{"rev":"5-6d384a2ce4737f13d417f85689c3c372"}},
-{"id":"js-nts","key":"js-nts","value":{"rev":"3-7d921611b567d2d890bc983c343558ef"}},
-{"id":"js-openstack","key":"js-openstack","value":{"rev":"11-d56996be276fbe6162573575932b1cba"}},
-{"id":"js-select","key":"js-select","value":{"rev":"9-9d20f6d86d9e6f8a84191346288b76ed"}},
-{"id":"js.io","key":"js.io","value":{"rev":"3-c5e16e13372ba592ccf2ac86ee007a1f"}},
-{"id":"js2","key":"js2","value":{"rev":"35-2dc694e48b67252d8787f5e889a07430"}},
-{"id":"js2coffee","key":"js2coffee","value":{"rev":"19-8eeafa894dcc0dc306b02e728543511e"}},
-{"id":"jsDAV","key":"jsDAV","value":{"rev":"11-4ab1935d98372503439b054daef2e78e"}},
-{"id":"jsDump","key":"jsDump","value":{"rev":"5-32d6e4032bd114245356970f0b76a58a"}},
-{"id":"jsSourceCodeParser","key":"jsSourceCodeParser","value":{"rev":"3-78c5e8624ab25fca99a7bb6cd9be402b"}},
-{"id":"jsapp","key":"jsapp","value":{"rev":"3-6758eb2743cc22f723a6612b34c8d943"}},
-{"id":"jscc-node","key":"jscc-node","value":{"rev":"3-5f52dc20dc2a188bc32e7219c9d2f225"}},
-{"id":"jscheckstyle","key":"jscheckstyle","value":{"rev":"5-82021f06a1bd824ac195e0ab8a3b598c"}},
-{"id":"jsclass","key":"jsclass","value":{"rev":"9-2a0656b9497c5a8208a0fefa5aae3350"}},
-{"id":"jsconfig","key":"jsconfig","value":{"rev":"3-b1afef99468f81eff319453623135a56"}},
-{"id":"jscssp","key":"jscssp","value":{"rev":"6-413ad0701e6dbb412e8a01aadb6672c4"}},
-{"id":"jsdata","key":"jsdata","value":{"rev":"5-53f8b26f28291dccfdff8f14e7f4c44c"}},
-{"id":"jsdeferred","key":"jsdeferred","value":{"rev":"8-bc238b921a1fa465503722756a98e9b7"}},
-{"id":"jsdoc","key":"jsdoc","value":{"rev":"3-386eb47a2761a1ad025996232751fba9"}},
-{"id":"jsdog","key":"jsdog","value":{"rev":"11-d4a523898a7c474b5c7b8cb8b24bafe8"}},
-{"id":"jsdom","key":"jsdom","value":{"rev":"63-86bc6b9d8bfdb99b793ac959e126f7ff"}},
-{"id":"jsftp","key":"jsftp","value":{"rev":"35-89cd772521d7ac3cead71c602ddeb819"}},
-{"id":"jsgi","key":"jsgi","value":{"rev":"20-dbef9d8dfb5c9bf1a3b6014159bb305a"}},
-{"id":"jsgi-node","key":"jsgi-node","value":{"rev":"1-8ec0892e521754aaf88684714d306af9"}},
-{"id":"jsgrep","key":"jsgrep","value":{"rev":"7-be19445481acdbbb684fdc2425d88d08"}},
-{"id":"jshelpers","key":"jshelpers","value":{"rev":"11-9509dcdd48bc494de76cae66217ebedb"}},
-{"id":"jshint","key":"jshint","value":{"rev":"34-ed2e7ea0e849126bd9821b86f23b7314"}},
-{"id":"jshint-autofix","key":"jshint-autofix","value":{"rev":"9-abbb3622aa8a47a8890dbbaab0009b6d"}},
-{"id":"jshint-mode","key":"jshint-mode","value":{"rev":"5-06ec066819b93c7ae6782c755a0e2125"}},
-{"id":"jshint-runner","key":"jshint-runner","value":{"rev":"7-6fc8a15e387a4e81e300a54a86a3a240"}},
-{"id":"jshtml","key":"jshtml","value":{"rev":"5-d3e96c31cf1cd2fcf7743defc1631c3a"}},
-{"id":"jsinc","key":"jsinc","value":{"rev":"9-0e4dc3ba04b440085a79d6001232abfc"}},
-{"id":"jslint","key":"jslint","value":{"rev":"10-ab451352333b5f3d29c6cdbab49187dd"}},
-{"id":"jslint-core","key":"jslint-core","value":{"rev":"3-1f874d8cca07b6f007bc80c23ba15e2e"}},
-{"id":"jslint-strict","key":"jslint-strict","value":{"rev":"8-3d694a0f3079691da1866de16f290ea2"}},
-{"id":"jslinux","key":"jslinux","value":{"rev":"13-033cb60c7867aae599863323a97f45c0"}},
-{"id":"jslitmus","key":"jslitmus","value":{"rev":"6-d3f3f82ea1a376acc2b24c69da003409"}},
-{"id":"jsmeter","key":"jsmeter","value":{"rev":"5-7838bb9b970cbaa29a48802c508fd091"}},
-{"id":"jsmin","key":"jsmin","value":{"rev":"6-002ad1b385915e60f895b5e52492fb94"}},
-{"id":"json","key":"json","value":{"rev":"39-1d24fb8c3bdf0ac533bfc52e74420adc"}},
-{"id":"json-browser","key":"json-browser","value":{"rev":"6-883f051c1297cf631adba1c855ff2e13"}},
-{"id":"json-builder","key":"json-builder","value":{"rev":"5-e7a996ff1ef89114ce2ab6de9b653af8"}},
-{"id":"json-command","key":"json-command","value":{"rev":"16-8239cb65563720c42da5562d3a031b09"}},
-{"id":"json-fu","key":"json-fu","value":{"rev":"5-7933c35711cb9d7673d7514fe495c56d"}},
-{"id":"json-line-protocol","key":"json-line-protocol","value":{"rev":"7-98de63467d154b40a029391af8a26042"}},
-{"id":"json-object","key":"json-object","value":{"rev":"7-534cd9680c386c5b9800848755698f2b"}},
-{"id":"json-ref","key":"json-ref","value":{"rev":"3-cd09776d166c3f77013e429737c7e1e9"}},
-{"id":"json-san","key":"json-san","value":{"rev":"7-8683abde23232c1d84266e7a2d5c4527"}},
-{"id":"json-schema","key":"json-schema","value":{"rev":"1-2f323062e7ec80d2ff765da43c7aaa7d"}},
-{"id":"json-sockets","key":"json-sockets","value":{"rev":"26-bfef71c0d9fb4d56010b05f47f142748"}},
-{"id":"json-storage","key":"json-storage","value":{"rev":"3-46139e3a54c0a27e67820df2c7e87dbf"}},
-{"id":"json-storage-model","key":"json-storage-model","value":{"rev":"3-8b77044e192791613cf92b2f3317357f"}},
-{"id":"json-streamify","key":"json-streamify","value":{"rev":"5-d98cd72265fba652481eef6baa980f46"}},
-{"id":"json-streams","key":"json-streams","value":{"rev":"3-e07fc5ca24b33145c8aacf9995d46723"}},
-{"id":"json-tables","key":"json-tables","value":{"rev":"3-37a652b54880487e66ffeee6822b945b"}},
-{"id":"json-template","key":"json-template","value":{"rev":"3-9ee3a101c60ea682fb88759b2df837e4"}},
-{"id":"json2","key":"json2","value":{"rev":"12-bc3d411db772e0947ca58a54c2084073"}},
-{"id":"json2ify","key":"json2ify","value":{"rev":"3-c2d6677cc35e4668c97cf6800a4728d8"}},
-{"id":"json2xml","key":"json2xml","value":{"rev":"3-e955b994479362685e2197b39909dea2"}},
-{"id":"json_req","key":"json_req","value":{"rev":"15-14520bc890cbb0ab4c142b59bf21c9f1"}},
-{"id":"jsonapi","key":"jsonapi","value":{"rev":"11-2b27aaca5643d6a5b3ab38721cf6342f"}},
-{"id":"jsonconfig","key":"jsonconfig","value":{"rev":"5-0072bb54cb0ae5b13eee4f1657ba6a29"}},
-{"id":"jsond","key":"jsond","value":{"rev":"13-7c3622aeb147dae4698608ee32d81b45"}},
-{"id":"jsondate","key":"jsondate","value":{"rev":"3-1da5d30ee1cf7c6d9605a446efd91478"}},
-{"id":"jsonds","key":"jsonds","value":{"rev":"9-af2867869a46787e58c337e700dbf0dd"}},
-{"id":"jsonds2","key":"jsonds2","value":{"rev":"3-e7ed9647cc1ba72e59b625840358c7ca"}},
-{"id":"jsonfiles","key":"jsonfiles","value":{"rev":"3-5e643ba75c401f653f505e7938540d83"}},
-{"id":"jsonify","key":"jsonify","value":{"rev":"3-91207fd1bc11668be7906f74992de6bb"}},
-{"id":"jsonize","key":"jsonize","value":{"rev":"3-4881031480a5326d9f5966189170db25"}},
-{"id":"jsonlint","key":"jsonlint","value":{"rev":"11-88d3c1c395846e7687f410e0dc405469"}},
-{"id":"jsonml","key":"jsonml","value":{"rev":"3-9990d9515fa554b5c7ff8bf8c7bb3308"}},
-{"id":"jsonparse","key":"jsonparse","value":{"rev":"3-569962847a5fd9d65fdf91af9e3e87a5"}},
-{"id":"jsonpointer","key":"jsonpointer","value":{"rev":"5-0310a11e82e9e22a4e5239dee2bc2213"}},
-{"id":"jsonprettify","key":"jsonprettify","value":{"rev":"3-173ae677f2110dfff8cb17dd2b4c68de"}},
-{"id":"jsonreq","key":"jsonreq","value":{"rev":"5-84b47d8c528ea7efa9aae113e5ff53cf"}},
-{"id":"jsonrpc","key":"jsonrpc","value":{"rev":"10-e40ff49715537320cbbbde67378f099e"}},
-{"id":"jsonrpc-ws","key":"jsonrpc-ws","value":{"rev":"7-73c385f3d35dadbdc87927f6a751e3ca"}},
-{"id":"jsonrpc2","key":"jsonrpc2","value":{"rev":"13-71efdea4f551d3a2550fcf5355ea8c8c"}},
-{"id":"jsontool","key":"jsontool","value":{"rev":"14-44bc979d3a8dc9295c825def01e533b4"}},
-{"id":"jsontoxml","key":"jsontoxml","value":{"rev":"8-2640fd26237ab4a45450748d392dd2d2"}},
-{"id":"jsontry","key":"jsontry","value":{"rev":"3-adb3f32f86419ac4b589ce41ab253952"}},
-{"id":"jsorm-i18n","key":"jsorm-i18n","value":{"rev":"3-54347174039512616ed76cc9a37605ea"}},
-{"id":"jsorm-utilities","key":"jsorm-utilities","value":{"rev":"3-187fc9f86ed8d32ebcb6c451fa7cc3c4"}},
-{"id":"jspack","key":"jspack","value":{"rev":"3-84955792d8b57fc301968daf674bace7"}},
-{"id":"jspkg","key":"jspkg","value":{"rev":"5-f5471c37554dad3492021490a70a1190"}},
-{"id":"jspp","key":"jspp","value":{"rev":"8-7607018fa48586f685dda17d77d0999b"}},
-{"id":"jss","key":"jss","value":{"rev":"20-4517b1daeda4f878debddc9f23347f00"}},
-{"id":"jst","key":"jst","value":{"rev":"27-8372bf5c052b6bd6e28f5d2c89b47e49"}},
-{"id":"jstestdriver","key":"jstestdriver","value":{"rev":"3-d26b172af33d6c45fc3dc96b96865714"}},
-{"id":"jstoxml","key":"jstoxml","value":{"rev":"15-c26b77ed5228500238c7b21a3dbdbbb7"}},
-{"id":"jsup","key":"jsup","value":{"rev":"3-54eb8598ae1a49bd1540e482a44a6abc"}},
-{"id":"jthon","key":"jthon","value":{"rev":"5-d578940ac32497839ff48d3f6205e9e2"}},
-{"id":"juggernaut","key":"juggernaut","value":{"rev":"20-15d33218943b9ec64b642e2a4a05e4b8"}},
-{"id":"juggernaut-yoomee","key":"juggernaut-yoomee","value":{"rev":"7-a58d429e46aac76260e236c64d20ff02"}},
-{"id":"jump","key":"jump","value":{"rev":"19-d47e23c31dc623b54e60004b08f6f624"}},
-{"id":"jumprope","key":"jumprope","value":{"rev":"5-98d4e2452f14d3b0996f04882b07d674"}},
-{"id":"junction","key":"junction","value":{"rev":"3-2b73ea17d862b1e95039141e98e53268"}},
-{"id":"jus-config","key":"jus-config","value":{"rev":"5-d2da00317dceb712d82dbfc776122dbe"}},
-{"id":"jus-i18n","key":"jus-i18n","value":{"rev":"3-d146cfc5f3c9aee769390ed921836b6e"}},
-{"id":"jus-task","key":"jus-task","value":{"rev":"13-d127de2a102eef2eb0d1b67810ecd558"}},
-{"id":"justtest","key":"justtest","value":{"rev":"17-467ee4ca606f0447a0c458550552fd0a"}},
-{"id":"jute","key":"jute","value":{"rev":"99-158d262e9126de5026bbfeb3168d9277"}},
-{"id":"jwt","key":"jwt","value":{"rev":"3-4cb8a706d1bc3c300bdadeba781c7bc4"}},
-{"id":"kaffeine","key":"kaffeine","value":{"rev":"47-261825b8d8cdf168387c6a275682dd0b"}},
-{"id":"kafka","key":"kafka","value":{"rev":"9-7465d4092e6322d0b744f017be8ffcea"}},
-{"id":"kahan","key":"kahan","value":{"rev":"5-107bb2dcdb51faaa00aef1e37eff91eb"}},
-{"id":"kahve-ansi","key":"kahve-ansi","value":{"rev":"5-a86d9a3ea56362fa81c8ee9f1ef8f2ef"}},
-{"id":"kahve-cake","key":"kahve-cake","value":{"rev":"3-873b4e553c4ba417c888aadce3b800f6"}},
-{"id":"kahve-classmethod","key":"kahve-classmethod","value":{"rev":"3-08e0a5786edc15539cc6746fe6c65bec"}},
-{"id":"kahve-exception","key":"kahve-exception","value":{"rev":"3-fb9d839cfdc069271cbc10fa27a87f3c"}},
-{"id":"kahve-progress","key":"kahve-progress","value":{"rev":"3-d2fcdd99793a0c3c3a314afb067a3701"}},
-{"id":"kanso","key":"kanso","value":{"rev":"41-2b18ab56cc86313daa840b7b3f63b318"}},
-{"id":"kaph","key":"kaph","value":{"rev":"7-c24622e38cf23bac67459bfe5a0edd63"}},
-{"id":"karait","key":"karait","value":{"rev":"9-a4abc4bc11c747448c4884cb714737c9"}},
-{"id":"kasabi","key":"kasabi","value":{"rev":"3-36cb65aef11d181c532f4549d58944e6"}},
-{"id":"kassit","key":"kassit","value":{"rev":"27-6fafe5122a4dda542a34ba18dddfc9ea"}},
-{"id":"kdtree","key":"kdtree","value":{"rev":"9-177bf5018be1f177d302af1d746b0462"}},
-{"id":"keeper","key":"keeper","value":{"rev":"13-43ce24b6e1fb8ac23c58a78e3e92d137"}},
-{"id":"kestrel","key":"kestrel","value":{"rev":"3-1303ae0617ed1076eed022176c78b0c4"}},
-{"id":"kettle","key":"kettle","value":{"rev":"3-385c10c43df484666148e796840e72c7"}},
-{"id":"keyed_list","key":"keyed_list","value":{"rev":"5-c98d8bc8619300da1a09098bb298bf16"}},
-{"id":"keyframely","key":"keyframely","value":{"rev":"5-586380d2258a099d8fa4748f2688b571"}},
-{"id":"keygrip","key":"keygrip","value":{"rev":"18-4178954fb4f0e26407851104876f1a03"}},
-{"id":"keyjson","key":"keyjson","value":{"rev":"5-96ab1d8b6fa77864883b657360070af4"}},
-{"id":"keymaster","key":"keymaster","value":{"rev":"8-e7eb722489b02991943e9934b8155162"}},
-{"id":"keys","key":"keys","value":{"rev":"12-8b34b8f593667f0c23f1841edb5b6fa3"}},
-{"id":"keysym","key":"keysym","value":{"rev":"13-ec57906511f8f2f896a9e81dc206ea77"}},
-{"id":"keyx","key":"keyx","value":{"rev":"3-80dc49b56e3ba1d280298c36afa2a82c"}},
-{"id":"khronos","key":"khronos","value":{"rev":"3-1a3772db2725c4c3098d5cf4ca2189a4"}},
-{"id":"kindred","key":"kindred","value":{"rev":"5-99c7f4f06e4a47e476f9d75737f719d7"}},
-{"id":"kiokujs","key":"kiokujs","value":{"rev":"8-4b96a9bc1866f58bb263b310e64df403"}},
-{"id":"kiokujs-backend-batch","key":"kiokujs-backend-batch","value":{"rev":"3-4739de0f2e0c01581ce0b02638d3df02"}},
-{"id":"kiokujs-backend-couchdb","key":"kiokujs-backend-couchdb","value":{"rev":"8-53e830e0a7e8ea810883c00ce79bfeef"}},
-{"id":"kiss.js","key":"kiss.js","value":{"rev":"11-7c9b1d7e2faee25ade6f1cad1bb261d9"}},
-{"id":"kissy","key":"kissy","value":{"rev":"8-3f8f7c169a3e84df6a7f68315f13b3ba"}},
-{"id":"kitkat","key":"kitkat","value":{"rev":"41-5f2600e4e1c503f63702c74195ff3361"}},
-{"id":"kitkat-express","key":"kitkat-express","value":{"rev":"3-91ef779ed9acdad1ca6f776e10a70246"}},
-{"id":"kizzy","key":"kizzy","value":{"rev":"5-f281b9e4037eda414f918ec9021e28c9"}},
-{"id":"kjs","key":"kjs","value":{"rev":"3-2ee03262f843e497161f1aef500dd229"}},
-{"id":"kju","key":"kju","value":{"rev":"5-0a7de1cd26864c85a22c7727c660d441"}},
-{"id":"klass","key":"klass","value":{"rev":"39-61491ef3824772d5ef33f7ea04219461"}},
-{"id":"klout-js","key":"klout-js","value":{"rev":"8-8d99f6dad9c21cb5da0d64fefef8c6d6"}},
-{"id":"knid","key":"knid","value":{"rev":"7-2cbfae088155da1044b568584cd296df"}},
-{"id":"knox","key":"knox","value":{"rev":"19-3c42553bd201b23a6bc15fdd073dad17"}},
-{"id":"knox-stream","key":"knox-stream","value":{"rev":"17-e40275f926b6ed645e4ef04caf8e5df4"}},
-{"id":"kns","key":"kns","value":{"rev":"9-5da1a89ad8c08f4b10cd715036200da3"}},
-{"id":"ko","key":"ko","value":{"rev":"9-9df2853d0e9ed9f7740f53291d0035dd"}},
-{"id":"koala","key":"koala","value":{"rev":"8-9e3fea91917f6d8cfb5aae22115e132f"}},
-{"id":"kohai","key":"kohai","value":{"rev":"3-1721a193589459fa077fea809fd7c9a9"}},
-{"id":"koku","key":"koku","value":{"rev":"5-414736980e0e70d90cd7f29b175fb18c"}},
-{"id":"komainu","key":"komainu","value":{"rev":"5-0f1a8f132fe58385e989dd4f93aefa26"}},
-{"id":"komodo-scheme","key":"komodo-scheme","value":{"rev":"3-97d1bd27f069684c491012e079fd82c4"}},
-{"id":"konphyg","key":"konphyg","value":{"rev":"7-e5fc03d6ddf39f2e0723291800bf0d43"}},
-{"id":"kranium","key":"kranium","value":{"rev":"3-4a78d2eb28e949a55b0dbd2ab00cecaf"}},
-{"id":"kue","key":"kue","value":{"rev":"21-053b32204d89a3067c5a90ca62ede08c"}},
-{"id":"kyatchi","key":"kyatchi","value":{"rev":"21-8dfbbe498f3740a2869c82e4ab4522d1"}},
-{"id":"kyoto","key":"kyoto","value":{"rev":"15-b9acdad89d56c71b6f427a443c16f85f"}},
-{"id":"kyoto-client","key":"kyoto-client","value":{"rev":"11-7fb392ee23ce64a48ae5638d713f4fbd"}},
-{"id":"kyoto-tycoon","key":"kyoto-tycoon","value":{"rev":"18-81ece8df26dbd9986efe1d97d935bec2"}},
-{"id":"kyuri","key":"kyuri","value":{"rev":"9-bedd4c087bd7bf612bde5e862d8b91bb"}},
-{"id":"labBuilder","key":"labBuilder","value":{"rev":"11-37f85b5325f1ccf25193c8b737823185"}},
-{"id":"laconic","key":"laconic","value":{"rev":"3-f5b7b9ac113fe7d32cbf4cb0d01c3052"}},
-{"id":"languagedetect","key":"languagedetect","value":{"rev":"3-ac487c034a3470ebd47b54614ea848f9"}},
-{"id":"lastfm","key":"lastfm","value":{"rev":"52-5af213489ca6ecdf2afc851c4642b082"}},
-{"id":"layers","key":"layers","value":{"rev":"7-62cd47d9645faa588c635dab2fbd2ef0"}},
-{"id":"lazy","key":"lazy","value":{"rev":"18-9b5ccdc9c3a970ec4c2b63b6f882da6a"}},
-{"id":"lazy-image","key":"lazy-image","value":{"rev":"5-34a6bc95017c50b3cb69981c7343e5da"}},
-{"id":"lazyBum","key":"lazyBum","value":{"rev":"15-03da6d744ba8cce7efca88ccb7e18c4d"}},
-{"id":"lazyprop","key":"lazyprop","value":{"rev":"14-82b4bcf318094a7950390f03e2fec252"}},
-{"id":"ldapjs","key":"ldapjs","value":{"rev":"11-e2b28e11a0aebe37b758d8f1ed61dd57"}},
-{"id":"ldapjs-riak","key":"ldapjs-riak","value":{"rev":"7-005413a1d4e371663626a3cca200c7e0"}},
-{"id":"ldifgrep","key":"ldifgrep","value":{"rev":"3-e4f06821a3444abbcd3c0c26300dcdda"}},
-{"id":"leaf","key":"leaf","value":{"rev":"8-0ccf5cdd1b59717b53375fe4bf044ec3"}},
-{"id":"lean","key":"lean","value":{"rev":"3-32dbbc771a3f1f6697c21c5d6c516967"}},
-{"id":"leche","key":"leche","value":{"rev":"7-0f5e19052ae1e3cb25ff2aa73271ae4f"}},
-{"id":"leche.spice.io","key":"leche.spice.io","value":{"rev":"3-07db415fdb746873f211e8155ecdf232"}},
-{"id":"less","key":"less","value":{"rev":"37-160fe5ea5dba44f02defdb8ec8c647d5"}},
-{"id":"less-bal","key":"less-bal","value":{"rev":"3-d50532c7c46013a62d06a0e54f8846ce"}},
-{"id":"less4clients","key":"less4clients","value":{"rev":"5-343d2973a166801681c856558d975ddf"}},
-{"id":"lessup","key":"lessup","value":{"rev":"9-a2e7627ef1b493fe82308d019ae481ac"}},
-{"id":"lessweb","key":"lessweb","value":{"rev":"9-e21794e578884c228dbed7c5d6128a41"}},
-{"id":"leveldb","key":"leveldb","value":{"rev":"11-3809e846a7a5ff883d17263288664195"}},
-{"id":"levenshtein","key":"levenshtein","value":{"rev":"6-44d27b6a6bc407772cafc29af485854f"}},
-{"id":"lib","key":"lib","value":{"rev":"5-a95272f11e927888c8b711503fce670b"}},
-{"id":"libdtrace","key":"libdtrace","value":{"rev":"8-4d4f72b2349154da514700f576e34564"}},
-{"id":"liberator","key":"liberator","value":{"rev":"15-b702710ccb3b45e41e9e2f3ebb6375ae"}},
-{"id":"libirc","key":"libirc","value":{"rev":"3-05b125de0c179dd311129aac2e1c8047"}},
-{"id":"liblzg","key":"liblzg","value":{"rev":"5-445ed45dc3cd166a299f85f6149aa098"}},
-{"id":"libnotify","key":"libnotify","value":{"rev":"10-c6723206898865e4828e963f5acc005e"}},
-{"id":"libxml-to-js","key":"libxml-to-js","value":{"rev":"33-64d3152875d33d6feffd618152bc41df"}},
-{"id":"libxmlext","key":"libxmlext","value":{"rev":"3-6a896dacba6f25fbca9b79d4143aaa9a"}},
-{"id":"libxmljs","key":"libxmljs","value":{"rev":"17-4b2949b53d9ecde79a99361774c1144b"}},
-{"id":"libxpm","key":"libxpm","value":{"rev":"3-c03efe75832c4416ceee5d72be12a8ef"}},
-{"id":"libyaml","key":"libyaml","value":{"rev":"5-f279bde715345a4e81d43c1d798ee608"}},
-{"id":"lift","key":"lift","value":{"rev":"21-61dcb771e5e0dc03fa327120d440ccda"}},
-{"id":"light-traits","key":"light-traits","value":{"rev":"26-b35c49550f9380fd462d57c64d51540f"}},
-{"id":"lightnode","key":"lightnode","value":{"rev":"3-ce37ccbf6a6546d4fa500e0eff84e882"}},
-{"id":"limestone","key":"limestone","value":{"rev":"3-d6f76ae98e4189db4ddfa8e15b4cdea9"}},
-{"id":"limited-file","key":"limited-file","value":{"rev":"3-c1d78250965b541836a70d3e867c694f"}},
-{"id":"lin","key":"lin","value":{"rev":"17-0a26ea2a603df0d14a9c40aad96bfb5e"}},
-{"id":"line-parser","key":"line-parser","value":{"rev":"7-84047425699f5a8a8836f4f2e63777bc"}},
-{"id":"line-reader","key":"line-reader","value":{"rev":"9-d2a7cb3a9793149e643490dc16a1eb50"}},
-{"id":"linebuffer","key":"linebuffer","value":{"rev":"12-8e79075aa213ceb49b28e0af7b3f3861"}},
-{"id":"lines","key":"lines","value":{"rev":"9-01a0565f47c3816919ca75bf77539df5"}},
-{"id":"lines-adapter","key":"lines-adapter","value":{"rev":"23-f287561e42a841c00bbf94bc8741bebc"}},
-{"id":"linestream","key":"linestream","value":{"rev":"5-18c2be87653ecf20407ed70eeb601ae7"}},
-{"id":"lingo","key":"lingo","value":{"rev":"10-b3d62b203c4af108feeaf0e32b2a4186"}},
-{"id":"link","key":"link","value":{"rev":"15-7570cea23333dbe3df11fd71171e6226"}},
-{"id":"linkedin-js","key":"linkedin-js","value":{"rev":"22-1bb1f392a9838684076b422840cf98eb"}},
-{"id":"linkscape","key":"linkscape","value":{"rev":"5-7272f50a54b1db015ce6d1e79eeedad7"}},
-{"id":"linkshare","key":"linkshare","value":{"rev":"3-634c4a18a217f77ccd6b89a9a2473d2a"}},
-{"id":"linode-api","key":"linode-api","value":{"rev":"13-2b43281ec86206312a2c387c9fc2c49f"}},
-{"id":"lint","key":"lint","value":{"rev":"49-fb76fddeb3ca609e5cac75fb0b0ec216"}},
-{"id":"linter","key":"linter","value":{"rev":"18-0fc884c96350f860cf2695f615572dba"}},
-{"id":"lintnode","key":"lintnode","value":{"rev":"8-b70bca986d7bde759521d0693dbc28b8"}},
-{"id":"linux-util","key":"linux-util","value":{"rev":"9-d049e8375e9c50b7f2b6268172d79734"}},
-{"id":"liquid","key":"liquid","value":{"rev":"3-353fa3c93ddf1951e3a75d60e6e8757b"}},
-{"id":"liquor","key":"liquor","value":{"rev":"3-4ee78e69a4a400a4de3491b0954947e7"}},
-{"id":"listener","key":"listener","value":{"rev":"5-02b5858d36aa99dcc5fc03c9274c94ee"}},
-{"id":"litmus","key":"litmus","value":{"rev":"9-7e403d052483301d025e9d09b4e7a9dd"}},
-{"id":"littering","key":"littering","value":{"rev":"5-9026438311ffc18d369bfa886c120bcd"}},
-{"id":"live-twitter-map","key":"live-twitter-map","value":{"rev":"3-45a40054bbab23374a4f1743c8bd711d"}},
-{"id":"livereload","key":"livereload","value":{"rev":"5-11ff486b4014ec1998705dbd396e96f2"}},
-{"id":"load","key":"load","value":{"rev":"7-2fff87aeb91d74bc57c134ee2cf0d65b"}},
-{"id":"loadbuilder","key":"loadbuilder","value":{"rev":"9-fa9c5cb13b3af03f9d9fbf5064fa0e0f"}},
-{"id":"loadit","key":"loadit","value":{"rev":"3-51bee062ed0d985757c6ae24929fa74e"}},
-{"id":"local-cdn","key":"local-cdn","value":{"rev":"9-9c2931766a559cf036318583455456e6"}},
-{"id":"localStorage","key":"localStorage","value":{"rev":"3-455fbe195db27131789b5d59db4504b0"}},
-{"id":"locales","key":"locales","value":{"rev":"5-bee452772e2070ec07af0dd86d6dbc41"}},
-{"id":"localhose","key":"localhose","value":{"rev":"9-3a2f63ecbed2e31400ca7515fd020a77"}},
-{"id":"localhost","key":"localhost","value":{"rev":"3-c6c4f6b5688cbe62865010099c9f461f"}},
-{"id":"localhostapp","key":"localhostapp","value":{"rev":"3-17884c4847c549e07e0c881fdf60d01f"}},
-{"id":"localize","key":"localize","value":{"rev":"7-1f83adb6d1eefcf7222a05f489b5db10"}},
-{"id":"location","key":"location","value":{"rev":"3-cc6fbf77b4ade80312bd95fde4e00015"}},
-{"id":"lockfile","key":"lockfile","value":{"rev":"3-4b4b79c2b0f09cc516db1a9d581c5038"}},
-{"id":"lode","key":"lode","value":{"rev":"15-5062a9a0863770d172097c5074a2bdae"}},
-{"id":"log","key":"log","value":{"rev":"12-0aa7922459ff8397764956c56a106930"}},
-{"id":"log-buddy","key":"log-buddy","value":{"rev":"3-64c6d4927d1d235d927f09c16c874e06"}},
-{"id":"log-watcher","key":"log-watcher","value":{"rev":"3-70f8727054c8e4104f835930578f4ee1"}},
-{"id":"log4js","key":"log4js","value":{"rev":"38-137b28e6e96515da7a6399cae86795dc"}},
-{"id":"log4js-amqp","key":"log4js-amqp","value":{"rev":"3-90530c28ef63d4598c12dfcf450929c0"}},
-{"id":"log5","key":"log5","value":{"rev":"17-920e3765dcfdc31bddf13de6895122b3"}},
-{"id":"logbot","key":"logbot","value":{"rev":"3-234eedc70b5474c713832e642f4dc3b4"}},
-{"id":"logger","key":"logger","value":{"rev":"3-5eef338fb5e845a81452fbb22e582aa7"}},
-{"id":"logging","key":"logging","value":{"rev":"22-99d320792c5445bd04699c4cf19edd89"}},
-{"id":"logging-system","key":"logging-system","value":{"rev":"5-5eda9d0b1d04256f5f44abe51cd14626"}},
-{"id":"loggly","key":"loggly","value":{"rev":"49-944a404e188327431a404e5713691a8c"}},
-{"id":"login","key":"login","value":{"rev":"44-7c450fe861230a5121ff294bcd6f97c9"}},
-{"id":"logly","key":"logly","value":{"rev":"7-832fe9af1cd8bfed84a065822cec398a"}},
-{"id":"logmagic","key":"logmagic","value":{"rev":"11-5d2c7dd32ba55e5ab85127be09723ef8"}},
-{"id":"logmonger","key":"logmonger","value":{"rev":"3-07a101d795f43f7af668210660274a7b"}},
-{"id":"lokki","key":"lokki","value":{"rev":"3-f6efcce38029ea0b4889707764088540"}},
-{"id":"long-stack-traces","key":"long-stack-traces","value":{"rev":"7-4b2fe23359b29e188cb2b8936b63891a"}},
-{"id":"loom","key":"loom","value":{"rev":"3-6348ab890611154da4881a0b351b0cb5"}},
-{"id":"loop","key":"loop","value":{"rev":"3-a56e9a6144f573092bb441106b370e0c"}},
-{"id":"looseleaf","key":"looseleaf","value":{"rev":"57-46ef6f055a40c34c714e3e9b9fe5d4cd"}},
-{"id":"lovely","key":"lovely","value":{"rev":"21-f577923512458f02f48ef59eebe55176"}},
-{"id":"lpd","key":"lpd","value":{"rev":"3-433711ae25002f67aa339380668fd491"}},
-{"id":"lpd-printers","key":"lpd-printers","value":{"rev":"3-47060e6c05fb4aad227d36f6e7941227"}},
-{"id":"lru-cache","key":"lru-cache","value":{"rev":"10-23c5e7423fe315745ef924f58c36e119"}},
-{"id":"ls-r","key":"ls-r","value":{"rev":"7-a769b11a06fae8ff439fe7eeb0806b5e"}},
-{"id":"lsof","key":"lsof","value":{"rev":"5-82aa3bcf23b8026a95e469b6188938f9"}},
-{"id":"ltx","key":"ltx","value":{"rev":"21-89ca85a9ce0c9fc13b20c0f1131168b0"}},
-{"id":"lucky-server","key":"lucky-server","value":{"rev":"3-a50d87239166f0ffc374368463f96b07"}},
-{"id":"lunapark","key":"lunapark","value":{"rev":"3-841d197f404da2e63d69b0c2132d87db"}},
-{"id":"lunchbot","key":"lunchbot","value":{"rev":"3-5d8984bef249e3d9e271560b5753f4cf"}},
-{"id":"lw-nun","key":"lw-nun","value":{"rev":"3-b686f89361b7b405e4581db6c60145ed"}},
-{"id":"lw-sass","key":"lw-sass","value":{"rev":"3-e46f90e0c8eab0c8c5d5eb8cf2a9a6da"}},
-{"id":"lwes","key":"lwes","value":{"rev":"3-939bb87efcbede1c1a70de881686fbce"}},
-{"id":"lwink","key":"lwink","value":{"rev":"3-1c432fafe4809e8d4a7e6214123ae452"}},
-{"id":"lzma","key":"lzma","value":{"rev":"3-31dc39414531e329b42b3a4ea0292c43"}},
-{"id":"m1node","key":"m1node","value":{"rev":"11-b34d55bdbc6f65b1814e77fab4a7e823"}},
-{"id":"m1test","key":"m1test","value":{"rev":"3-815ce56949e41e120082632629439eac"}},
-{"id":"m2node","key":"m2node","value":{"rev":"7-f50ec5578d995dd6a0a38e1049604bfc"}},
-{"id":"m2pdb","key":"m2pdb","value":{"rev":"3-ee798ac17c8c554484aceae2f77a826b"}},
-{"id":"m3u","key":"m3u","value":{"rev":"5-7ca6d768e0aed5b88dd45c943ca9ffa0"}},
-{"id":"mac","key":"mac","value":{"rev":"21-db5883c390108ff9ba46660c78b18b6c"}},
-{"id":"macchiato","key":"macchiato","value":{"rev":"5-0df1c87029e6005577fd8fd5cdb25947"}},
-{"id":"macgyver","key":"macgyver","value":{"rev":"3-f517699102b7bd696d8197d7ce57afb9"}},
-{"id":"macros","key":"macros","value":{"rev":"3-8356bcc0d1b1bd3879eeb880b2f3330b"}},
-{"id":"macrotest","key":"macrotest","value":{"rev":"10-2c6ceffb38f8ce5b0f382dbb02720d70"}},
-{"id":"maddy","key":"maddy","value":{"rev":"9-93d59c65c3f44aa6ed43dc986dd73ca5"}},
-{"id":"madmimi-node","key":"madmimi-node","value":{"rev":"11-257e1b1bd5ee5194a7052542952b8b7a"}},
-{"id":"maga","key":"maga","value":{"rev":"24-c69734f9fc138788db741b862f889583"}},
-{"id":"magic","key":"magic","value":{"rev":"34-aed787cc30ab86c95f547b9555d6a381"}},
-{"id":"magic-templates","key":"magic-templates","value":{"rev":"3-89546e9a038150cf419b4b15a84fd2aa"}},
-{"id":"magickal","key":"magickal","value":{"rev":"3-e9ed74bb90df0a52564d47aed0451ce7"}},
-{"id":"mai","key":"mai","value":{"rev":"5-f3561fe6de2bd25201250ddb6dcf9f01"}},
-{"id":"mail","key":"mail","value":{"rev":"14-9ae558552e6a7c11017f118a71c072e9"}},
-{"id":"mail-stack","key":"mail-stack","value":{"rev":"5-c82567203540076cf4878ea1ab197b52"}},
-{"id":"mailbox","key":"mailbox","value":{"rev":"12-0b582e127dd7cf669de16ec36f8056a4"}},
-{"id":"mailchimp","key":"mailchimp","value":{"rev":"23-3d9328ee938b7940322351254ea54877"}},
-{"id":"mailer","key":"mailer","value":{"rev":"40-7b251b758f9dba4667a3127195ea0380"}},
-{"id":"mailer-bal","key":"mailer-bal","value":{"rev":"3-fc8265b1905ea37638309d7c10852050"}},
-{"id":"mailer-fixed","key":"mailer-fixed","value":{"rev":"13-3004df43c62eb64ed5fb0306b019fe66"}},
-{"id":"mailgun","key":"mailgun","value":{"rev":"25-29de1adb355636822dc21fef51f37aed"}},
-{"id":"mailparser","key":"mailparser","value":{"rev":"14-7142e4168046418afc4a76d1b330f302"}},
-{"id":"mailto-parser","key":"mailto-parser","value":{"rev":"3-f8dea7b60c0e993211f81a86dcf5b18d"}},
-{"id":"makeerror","key":"makeerror","value":{"rev":"17-ceb9789357d80467c9ae75caa64ca8ac"}},
-{"id":"malt","key":"malt","value":{"rev":"7-e5e76a842eb0764a5ebe57290b629097"}},
-{"id":"mango","key":"mango","value":{"rev":"7-6224e74a3132e54f294f62998ed9127f"}},
-{"id":"map-reduce","key":"map-reduce","value":{"rev":"11-a81d8bdc6dae7e7b76d5df74fff40ae1"}},
-{"id":"mapnik","key":"mapnik","value":{"rev":"64-693f5b957b7faf361c2cc2a22747ebf7"}},
-{"id":"maptail","key":"maptail","value":{"rev":"14-8334618ddc20006a5f77ff35b172c152"}},
-{"id":"marak","key":"marak","value":{"rev":"3-27be187af00fc97501035dfb97a11ecf"}},
-{"id":"markdoc","key":"markdoc","value":{"rev":"13-23becdeda44b26ee54c9aaa31457e4ba"}},
-{"id":"markdom","key":"markdom","value":{"rev":"10-3c0df12e4f4a2e675d0f0fde48aa425f"}},
-{"id":"markdown","key":"markdown","value":{"rev":"19-88e02c28ce0179be900bf9e6aadc070f"}},
-{"id":"markdown-js","key":"markdown-js","value":{"rev":"6-964647c2509850358f70f4e23670fbeb"}},
-{"id":"markdown-wiki","key":"markdown-wiki","value":{"rev":"6-ce35fb0612a463db5852c5d3dcc7fdd3"}},
-{"id":"markdown2html","key":"markdown2html","value":{"rev":"3-549babe5d9497785fa8b9305c81d7214"}},
-{"id":"marked","key":"marked","value":{"rev":"21-9371df65f63131c9f24e8805db99a7d9"}},
-{"id":"markov","key":"markov","value":{"rev":"13-9ab795448c54ef87851f1392d6f3671a"}},
-{"id":"maryjane","key":"maryjane","value":{"rev":"3-e2e6cce443850b5df1554bf851d16760"}},
-{"id":"massagist","key":"massagist","value":{"rev":"11-cac3a103aecb4ff3f0f607aca2b1d3fb"}},
-{"id":"masson","key":"masson","value":{"rev":"10-87a5e6fd05bd4b8697fa3fa636238c20"}},
-{"id":"masstransit","key":"masstransit","value":{"rev":"11-74898c746e541ff1a00438017ee66d4a"}},
-{"id":"matchmaker","key":"matchmaker","value":{"rev":"3-192db6fb162bdf84fa3e858092fd3e20"}},
-{"id":"math","key":"math","value":{"rev":"5-16a74d8639e44a5ccb265ab1a3b7703b"}},
-{"id":"math-lexer","key":"math-lexer","value":{"rev":"19-54b42374b0090eeee50f39cb35f2eb40"}},
-{"id":"matrices","key":"matrices","value":{"rev":"43-06d64271a5148f89d649645712f8971f"}},
-{"id":"matrix","key":"matrix","value":{"rev":"3-77cff57242445cf3d76313b72bbc38f4"}},
-{"id":"matrixlib","key":"matrixlib","value":{"rev":"11-b3c105a5e5be1835183e7965d04825d9"}},
-{"id":"matterhorn","key":"matterhorn","value":{"rev":"9-a310dba2ea054bdce65e6df2f6ae85e5"}},
-{"id":"matterhorn-dust","key":"matterhorn-dust","value":{"rev":"3-2fb311986d62cf9f180aa76038ebf7b3"}},
-{"id":"matterhorn-gui","key":"matterhorn-gui","value":{"rev":"3-7921b46c9bff3ee82e4b32bc0a0a977d"}},
-{"id":"matterhorn-prng","key":"matterhorn-prng","value":{"rev":"3-c33fd59c1f1d24fb423553ec242e444b"}},
-{"id":"matterhorn-standard","key":"matterhorn-standard","value":{"rev":"13-0aaab6ecf55cdad6f773736da968afba"}},
-{"id":"matterhorn-state","key":"matterhorn-state","value":{"rev":"3-0ba8fd8a4c644b18aff34f1aef95db33"}},
-{"id":"matterhorn-user","key":"matterhorn-user","value":{"rev":"17-e42dc37a5cb24710803b3bd8dee7484d"}},
-{"id":"matterhorn-view","key":"matterhorn-view","value":{"rev":"3-b39042d665f5912d02e724d33d129a97"}},
-{"id":"mbtiles","key":"mbtiles","value":{"rev":"41-b92035d0ec8f47850734c4bb995baf7d"}},
-{"id":"mcast","key":"mcast","value":{"rev":"8-559b2b09cfa34cb88c16ae72ec90d28a"}},
-{"id":"md5","key":"md5","value":{"rev":"3-43d600c70f6442d3878c447585bf43bf"}},
-{"id":"mdgram","key":"mdgram","value":{"rev":"15-4d65cf0d5edef976de9a612c0cde0907"}},
-{"id":"mdns","key":"mdns","value":{"rev":"11-8b6789c3779fce7f019f9f10c625147a"}},
-{"id":"mecab-binding","key":"mecab-binding","value":{"rev":"3-3395763d23a3f8e3e00ba75cb988f9b4"}},
-{"id":"mechanize","key":"mechanize","value":{"rev":"5-94b72f43e270aa24c00e283fa52ba398"}},
-{"id":"mediatags","key":"mediatags","value":{"rev":"3-d5ea41e140fbbc821590cfefdbd016a5"}},
-{"id":"mediator","key":"mediator","value":{"rev":"3-42aac2225b47f72f97001107a3d242f5"}},
-{"id":"memcache","key":"memcache","value":{"rev":"5-aebcc4babe11b654afd3cede51e945ec"}},
-{"id":"memcached","key":"memcached","value":{"rev":"9-7c46464425c78681a8e6767ef9993c4c"}},
-{"id":"memcouchd","key":"memcouchd","value":{"rev":"3-b57b9fb4f6c60604f616c2f70456b4d6"}},
-{"id":"meme","key":"meme","value":{"rev":"11-53fcb51e1d8f8908b95f0fa12788e9aa"}},
-{"id":"memo","key":"memo","value":{"rev":"9-3a9ca97227ed19cacdacf10ed193ee8b"}},
-{"id":"memoize","key":"memoize","value":{"rev":"15-44bdd127c49035c8bd781a9299c103c2"}},
-{"id":"memoizer","key":"memoizer","value":{"rev":"9-d9a147e8c8a58fd7e8f139dc902592a6"}},
-{"id":"memorystream","key":"memorystream","value":{"rev":"9-6d0656067790e158f3c4628968ed70d3"}},
-{"id":"memstore","key":"memstore","value":{"rev":"5-03dcac59882c8a434e4c2fe2ac354941"}},
-{"id":"mercury","key":"mercury","value":{"rev":"3-147af865af6f7924f44f14f4b5c14dac"}},
-{"id":"mersenne","key":"mersenne","value":{"rev":"7-d8ae550eb8d0deaa1fd60f86351cb548"}},
-{"id":"meryl","key":"meryl","value":{"rev":"23-2c0e3fad99005109c584530e303bc5bf"}},
-{"id":"mesh","key":"mesh","value":{"rev":"5-f3ea4aef5b3f169eab8b518e5044c950"}},
-{"id":"meta-promise","key":"meta-promise","value":{"rev":"5-0badf85ab432341e6256252463468b89"}},
-{"id":"meta-test","key":"meta-test","value":{"rev":"49-92df2922499960ac750ce96d861ddd7e"}},
-{"id":"meta_code","key":"meta_code","value":{"rev":"7-9b4313c0c52a09c788464f1fea05baf7"}},
-{"id":"metamanager","key":"metamanager","value":{"rev":"5-dbb0312dad15416d540eb3d860fbf205"}},
-{"id":"metaweblog","key":"metaweblog","value":{"rev":"3-d3ab090ec27242e220412d6413e388ee"}},
-{"id":"metric","key":"metric","value":{"rev":"3-8a706db5b518421ad640a75e65cb4be9"}},
-{"id":"metrics","key":"metrics","value":{"rev":"13-62e5627c1ca5e6d3b3bde8d17e675298"}},
-{"id":"metrics-broker","key":"metrics-broker","value":{"rev":"15-0fdf57ea4ec84aa1f905f53b4975e72d"}},
-{"id":"mhash","key":"mhash","value":{"rev":"3-f00d65dc939474a5c508d37a327e5074"}},
-{"id":"micro","key":"micro","value":{"rev":"17-882c0ecf34ddaef5c673c547ae80b80b"}},
-{"id":"microcache","key":"microcache","value":{"rev":"3-ef75e04bc6e86d14f93ad9c429503bd9"}},
-{"id":"microevent","key":"microevent","value":{"rev":"3-9c0369289b62873ef6e8624eef724d15"}},
-{"id":"microtest","key":"microtest","value":{"rev":"11-11afdadfb15c1db030768ce52f34de1a"}},
-{"id":"microtime","key":"microtime","value":{"rev":"20-5f75e87316cbb5f7a4be09142cd755e5"}},
-{"id":"middlefiddle","key":"middlefiddle","value":{"rev":"13-bb94c05d75c24bdeb23a4637c7ecf55e"}},
-{"id":"middleware","key":"middleware","value":{"rev":"5-80937a4c620fcc2a5532bf064ec0837b"}},
-{"id":"midi","key":"midi","value":{"rev":"9-96da6599a84a761430adfd41deb3969a"}},
-{"id":"midi-js","key":"midi-js","value":{"rev":"11-1d174af1352e3d37f6ec0df32d56ce1a"}},
-{"id":"migrate","key":"migrate","value":{"rev":"13-7493879fb60a31b9e2a9ad19e94bfef6"}},
-{"id":"mikronode","key":"mikronode","value":{"rev":"31-1edae4ffbdb74c43ea584a7757dacc9b"}},
-{"id":"milk","key":"milk","value":{"rev":"21-81fb117817ed2e4c19e16dc310c09735"}},
-{"id":"millstone","key":"millstone","value":{"rev":"29-73d54de4b4de313b0fec4edfaec741a4"}},
-{"id":"mime","key":"mime","value":{"rev":"33-de72b641474458cb21006dea6a524ceb"}},
-{"id":"mime-magic","key":"mime-magic","value":{"rev":"13-2df6b966d7f29d5ee2dd2e1028d825b1"}},
-{"id":"mimelib","key":"mimelib","value":{"rev":"9-7994cf0fe3007329b9397f4e08481487"}},
-{"id":"mimelib-noiconv","key":"mimelib-noiconv","value":{"rev":"5-c84995d4b2bbe786080c9b54227b5bb4"}},
-{"id":"mimeograph","key":"mimeograph","value":{"rev":"37-bead083230f48f354f3ccac35e11afc0"}},
-{"id":"mimeparse","key":"mimeparse","value":{"rev":"8-5ca7e6702fe7f1f37ed31b05e82f4a87"}},
-{"id":"mingy","key":"mingy","value":{"rev":"19-09b19690c55abc1e940374e25e9a0d26"}},
-{"id":"mini-lzo-wrapper","key":"mini-lzo-wrapper","value":{"rev":"4-d751d61f481363a2786ac0312893dfca"}},
-{"id":"miniee","key":"miniee","value":{"rev":"5-be0833a9f15382695f861a990f3d6108"}},
-{"id":"minifyjs","key":"minifyjs","value":{"rev":"13-f255df8c7567440bc4c0f8eaf04a18c6"}},
-{"id":"minimal","key":"minimal","value":{"rev":"5-6be6b3454d30c59a30f9ee8af0ee606c"}},
-{"id":"minimal-test","key":"minimal-test","value":{"rev":"15-65dca2c1ee27090264577cc8b93983cb"}},
-{"id":"minimatch","key":"minimatch","value":{"rev":"11-449e570c76f4e6015c3dc90f080f8c47"}},
-{"id":"minirpc","key":"minirpc","value":{"rev":"10-e85b92273a97fa86e20faef7a3b50518"}},
-{"id":"ministore","key":"ministore","value":{"rev":"11-f131868141ccd0851bb91800c86dfff1"}},
-{"id":"minitest","key":"minitest","value":{"rev":"13-c92e32499a25ff2d7e484fbbcabe1081"}},
-{"id":"miniweb","key":"miniweb","value":{"rev":"3-e8c413a77e24891138eaa9e73cb08715"}},
-{"id":"minj","key":"minj","value":{"rev":"9-ccf50caf8e38b0fc2508f01a63f80510"}},
-{"id":"minotaur","key":"minotaur","value":{"rev":"29-6d048956b26e8a213f6ccc96027bacde"}},
-{"id":"mirror","key":"mirror","value":{"rev":"21-01bdd78ff03ca3f8f99fce104baab9f9"}},
-{"id":"misao-chan","key":"misao-chan","value":{"rev":"13-f032690f0897fc4a1dc12f1e03926627"}},
-{"id":"mite.node","key":"mite.node","value":{"rev":"13-0bfb15c4a6f172991756660b29869dd4"}},
-{"id":"mixable","key":"mixable","value":{"rev":"3-bc518ab862a6ceacc48952b9bec7d61a"}},
-{"id":"mixin","key":"mixin","value":{"rev":"3-3a7ae89345d21ceaf545d93b20caf2f2"}},
-{"id":"mixinjs","key":"mixinjs","value":{"rev":"3-064173d86b243316ef1b6c5743a60bf9"}},
-{"id":"mixpanel","key":"mixpanel","value":{"rev":"7-f742248bfbfc480658c4c46f7ab7a74a"}},
-{"id":"mixpanel-api","key":"mixpanel-api","value":{"rev":"5-61a3fa28921887344d1af339917e147a"}},
-{"id":"mixpanel_api","key":"mixpanel_api","value":{"rev":"3-11939b6fd20b80bf9537380875bf3996"}},
-{"id":"mjoe","key":"mjoe","value":{"rev":"3-8b3549cd6edcc03112217370b071b076"}},
-{"id":"mjsunit.runner","key":"mjsunit.runner","value":{"rev":"12-94c779b555069ca5fb0bc9688515673e"}},
-{"id":"mkdir","key":"mkdir","value":{"rev":"3-e8fd61b35638f1f3a65d36f09344ff28"}},
-{"id":"mkdirp","key":"mkdirp","value":{"rev":"15-c8eacf17b336ea98d1d9960f02362cbf"}},
-{"id":"mmap","key":"mmap","value":{"rev":"16-df335eb3257dfbd2fb0de341970d2656"}},
-{"id":"mmikulicic-thrift","key":"mmikulicic-thrift","value":{"rev":"3-f4a9f7a97bf50e966d1184fba423a07f"}},
-{"id":"mmmodel","key":"mmmodel","value":{"rev":"7-00d61723742a325aaaa6955ba52cef60"}},
-{"id":"mmodel","key":"mmodel","value":{"rev":"3-717309af27d6c5d98ed188c9c9438a37"}},
-{"id":"mmseg","key":"mmseg","value":{"rev":"17-794d553e67d6023ca3d58dd99fe1da15"}},
-{"id":"mobilize","key":"mobilize","value":{"rev":"25-8a657ec0accf8db2e8d7b935931ab77b"}},
-{"id":"mock","key":"mock","value":{"rev":"3-d8805bff4796462750071cddd3f75ea7"}},
-{"id":"mock-request","key":"mock-request","value":{"rev":"7-4ac4814c23f0899b1100d5f0617e40f4"}},
-{"id":"mock-request-response","key":"mock-request-response","value":{"rev":"5-fe1566c9881039a92a80e0e82a95f096"}},
-{"id":"mocket","key":"mocket","value":{"rev":"13-9001879cd3cb6f52f3b2d85fb14b8f9b"}},
-{"id":"modbus-stack","key":"modbus-stack","value":{"rev":"7-50c56e74d9cb02c5d936b0b44c54f621"}},
-{"id":"model","key":"model","value":{"rev":"3-174181c2f314f35fc289b7a921ba4d39"}},
-{"id":"models","key":"models","value":{"rev":"8-6cc2748edfd96679f9bb3596864874a9"}},
-{"id":"modestmaps","key":"modestmaps","value":{"rev":"8-79265968137a2327f98bfc6943a84da9"}},
-{"id":"modjewel","key":"modjewel","value":{"rev":"3-73efc7b9dc24d82cab1de249896193fd"}},
-{"id":"modlr","key":"modlr","value":{"rev":"17-ccf16db98ab6ccb95e005b3bb76dba64"}},
-{"id":"module-grapher","key":"module-grapher","value":{"rev":"19-b6ba30b41e29fc01d4b679a643f030e5"}},
-{"id":"modulr","key":"modulr","value":{"rev":"15-8e8ffd75c6c6149206de4ce0c2aefad7"}},
-{"id":"mogile","key":"mogile","value":{"rev":"5-79a8af20dbe6bff166ac2197a3998b0c"}},
-{"id":"mojo","key":"mojo","value":{"rev":"25-1d9c26d6afd6ea77253f220d86d60307"}},
-{"id":"monad","key":"monad","value":{"rev":"10-cf20354900b7e67d94c342feb06a1eb9"}},
-{"id":"mongeese","key":"mongeese","value":{"rev":"3-f4b319d98f9f73fb17cd3ebc7fc86412"}},
-{"id":"mongo-pool","key":"mongo-pool","value":{"rev":"3-215481828e69fd874b5938a79a7e0934"}},
-{"id":"mongodb","key":"mongodb","value":{"rev":"147-3dc09965e762787f34131a8739297383"}},
-{"id":"mongodb-async","key":"mongodb-async","value":{"rev":"7-ba9097bdc86b72885fa5a9ebb49a64d0"}},
-{"id":"mongodb-provider","key":"mongodb-provider","value":{"rev":"5-5523643b403e969e0b80c57db08cb9d3"}},
-{"id":"mongodb-rest","key":"mongodb-rest","value":{"rev":"36-60b4abc4a22f31de09407cc7cdd0834f"}},
-{"id":"mongodb-wrapper","key":"mongodb-wrapper","value":{"rev":"13-7a6c5eaff36ede45211aa80f3a506cfe"}},
-{"id":"mongodb_heroku","key":"mongodb_heroku","value":{"rev":"3-05947c1e06e1f8860c7809b063a8d1a0"}},
-{"id":"mongode","key":"mongode","value":{"rev":"11-faa14f050da4a165e2568d413a6b8bc0"}},
-{"id":"mongojs","key":"mongojs","value":{"rev":"26-a628eb51534ffcdd97c1a940d460a52c"}},
-{"id":"mongolia","key":"mongolia","value":{"rev":"76-711c39de0e152e224d4118c9b0de834f"}},
-{"id":"mongolian","key":"mongolian","value":{"rev":"44-3773671b31c406a18cb9f5a1764ebee4"}},
-{"id":"mongoose","key":"mongoose","value":{"rev":"181-03a8aa7f691cbd987995bf6e3354e0f5"}},
-{"id":"mongoose-admin","key":"mongoose-admin","value":{"rev":"7-59078ad5a345e9e66574346d3e70f9ad"}},
-{"id":"mongoose-auth","key":"mongoose-auth","value":{"rev":"49-87c79f3a6164c438a53b7629be87ae5d"}},
-{"id":"mongoose-autoincr","key":"mongoose-autoincr","value":{"rev":"3-9c4dd7c3fdcd8621166665a68fccb602"}},
-{"id":"mongoose-closures","key":"mongoose-closures","value":{"rev":"3-2ff9cff790f387f2236a2c7382ebb55b"}},
-{"id":"mongoose-crypt","key":"mongoose-crypt","value":{"rev":"3-d77ffbf250e39fcc290ad37824fe2236"}},
-{"id":"mongoose-dbref","key":"mongoose-dbref","value":{"rev":"29-02090b9904fd6f5ce72afcfa729f7c96"}},
-{"id":"mongoose-flatmatcher","key":"mongoose-flatmatcher","value":{"rev":"5-4f0565901e8b588cc562ae457ad975a6"}},
-{"id":"mongoose-helpers","key":"mongoose-helpers","value":{"rev":"3-3a57e9819e24c9b0f5b5eabe41037092"}},
-{"id":"mongoose-joins","key":"mongoose-joins","value":{"rev":"3-9bae444730a329473421f50cba1c86a7"}},
-{"id":"mongoose-misc","key":"mongoose-misc","value":{"rev":"3-bcd7f3f450cf6ed233d042ac574409ce"}},
-{"id":"mongoose-relationships","key":"mongoose-relationships","value":{"rev":"9-6155a276b162ec6593b8542f0f769024"}},
-{"id":"mongoose-rest","key":"mongoose-rest","value":{"rev":"29-054330c035adf842ab34423215995113"}},
-{"id":"mongoose-spatial","key":"mongoose-spatial","value":{"rev":"3-88660dabd485edcaa29a2ea01afb90bd"}},
-{"id":"mongoose-temporal","key":"mongoose-temporal","value":{"rev":"3-1dd736395fe9be95498e588df502b7bb"}},
-{"id":"mongoose-types","key":"mongoose-types","value":{"rev":"13-8126458b91ef1bf46e582042f5dbd015"}},
-{"id":"mongoose-units","key":"mongoose-units","value":{"rev":"3-5fcdb7aedb1d5cff6e18ee1352c3d0f7"}},
-{"id":"mongoq","key":"mongoq","value":{"rev":"11-2060d674d5f8a964e800ed4470b92587"}},
-{"id":"mongoskin","key":"mongoskin","value":{"rev":"13-5a7bfacd9e9b95ec469f389751e7e435"}},
-{"id":"mongous","key":"mongous","value":{"rev":"3-4d98b4a4bfdd6d9f46342002a69d8d3a"}},
-{"id":"mongrel2","key":"mongrel2","value":{"rev":"3-93156356e478f30fc32455054e384b80"}},
-{"id":"monguava","key":"monguava","value":{"rev":"9-69ec50128220aba3e16128a4be2799c0"}},
-{"id":"mongueue","key":"mongueue","value":{"rev":"9-fc8d9df5bf15f5a25f68cf58866f11fe"}},
-{"id":"moniker","key":"moniker","value":{"rev":"5-a139616b725ddfdd1db6a376fb6584f7"}},
-{"id":"monitor","key":"monitor","value":{"rev":"56-44d2b8b7dec04b3f320f7dc4a1704c53"}},
-{"id":"monome","key":"monome","value":{"rev":"3-2776736715cbfc045bf7b42e70ccda9c"}},
-{"id":"monomi","key":"monomi","value":{"rev":"6-b6b745441f157cc40c846d23cd14297a"}},
-{"id":"moof","key":"moof","value":{"rev":"13-822b4ebf873b720bd4c7e16fcbbbbb3d"}},
-{"id":"moonshado","key":"moonshado","value":{"rev":"3-b54de1aef733c8fa118fa7cf6af2fb9b"}},
-{"id":"moose","key":"moose","value":{"rev":"5-e11c8b7c09826e3431ed3408ee874779"}},
-{"id":"mootools","key":"mootools","value":{"rev":"9-39f5535072748ccd3cf0212ef4c3d4fa"}},
-{"id":"mootools-array","key":"mootools-array","value":{"rev":"3-d1354704a9fe922d969c2bf718e0dc53"}},
-{"id":"mootools-browser","key":"mootools-browser","value":{"rev":"3-ce0946b357b6ddecc128febef2c5d720"}},
-{"id":"mootools-class","key":"mootools-class","value":{"rev":"3-0ea815d28b61f3880087e3f4b8668354"}},
-{"id":"mootools-class-extras","key":"mootools-class-extras","value":{"rev":"3-575796745bd169c35f4fc0019bb36b76"}},
-{"id":"mootools-client","key":"mootools-client","value":{"rev":"3-b658c331f629f80bfe17c3e6ed44c525"}},
-{"id":"mootools-cookie","key":"mootools-cookie","value":{"rev":"3-af93588531e5a52c76a8e7a4eac3612a"}},
-{"id":"mootools-core","key":"mootools-core","value":{"rev":"3-01b1678fc56d94d29566b7853ad56059"}},
-{"id":"mootools-domready","key":"mootools-domready","value":{"rev":"3-0fc6620e2c8f7d107816cace9c099633"}},
-{"id":"mootools-element","key":"mootools-element","value":{"rev":"3-bac857c1701c91207d1ec6d1eb002d07"}},
-{"id":"mootools-element-dimensions","key":"mootools-element-dimensions","value":{"rev":"3-d82df62b3e97122ad0a7668efb7ba776"}},
-{"id":"mootools-element-event","key":"mootools-element-event","value":{"rev":"3-a30380151989ca31851cf751fcd55e9a"}},
-{"id":"mootools-element-style","key":"mootools-element-style","value":{"rev":"3-6103fa8551a21dc592e410dc7df647f8"}},
-{"id":"mootools-event","key":"mootools-event","value":{"rev":"3-7327279ec157de8c47f3ee24615ead95"}},
-{"id":"mootools-function","key":"mootools-function","value":{"rev":"3-eb3ee17acf40d6cc05463cb88edc6f5e"}},
-{"id":"mootools-fx","key":"mootools-fx","value":{"rev":"3-757ab6c8423e8c434d1ee783ea28cdb5"}},
-{"id":"mootools-fx-css","key":"mootools-fx-css","value":{"rev":"3-8eb0cf468c826b9c485835fab94837e7"}},
-{"id":"mootools-fx-morph","key":"mootools-fx-morph","value":{"rev":"3-b91310f8a81221592970fe7632bd9f7a"}},
-{"id":"mootools-fx-transitions","key":"mootools-fx-transitions","value":{"rev":"3-a1ecde35dfbb80f3a6062005758bb934"}},
-{"id":"mootools-fx-tween","key":"mootools-fx-tween","value":{"rev":"3-39497defbffdf463932cc9f00cde8d5d"}},
-{"id":"mootools-json","key":"mootools-json","value":{"rev":"3-69deb6679a5d1d49f22e19834ae07c32"}},
-{"id":"mootools-more","key":"mootools-more","value":{"rev":"3-d8f46ce319ca0e3deb5fc04ad5f73cb9"}},
-{"id":"mootools-number","key":"mootools-number","value":{"rev":"3-9f4494883ac39f93734fea9af6ef2fc5"}},
-{"id":"mootools-object","key":"mootools-object","value":{"rev":"3-c9632dfa793ab4d9ad4b68a2e27f09fc"}},
-{"id":"mootools-request","key":"mootools-request","value":{"rev":"3-663e5472f351eea3b7488ee441bc6a61"}},
-{"id":"mootools-request-html","key":"mootools-request-html","value":{"rev":"3-0ab9576c11a564d44b3c3ca3ef3dc240"}},
-{"id":"mootools-request-json","key":"mootools-request-json","value":{"rev":"3-c0359201c94ba1684ea6336e35cd70c2"}},
-{"id":"mootools-server","key":"mootools-server","value":{"rev":"3-98e89499f6eab137bbab053a3932a526"}},
-{"id":"mootools-slick-finder","key":"mootools-slick-finder","value":{"rev":"3-9a5820e90d6ea2d797268f3c60a9f177"}},
-{"id":"mootools-slick-parser","key":"mootools-slick-parser","value":{"rev":"3-d4e6b1673e6e2a6bcc66bf4988b2994d"}},
-{"id":"mootools-string","key":"mootools-string","value":{"rev":"3-2fda1c7915295df62e547018a7f05916"}},
-{"id":"mootools-swiff","key":"mootools-swiff","value":{"rev":"3-f0edeead85f3d48cf2af2ca35a4e67a5"}},
-{"id":"mootools.js","key":"mootools.js","value":{"rev":"3-085e50e3529d19e1d6ad630027ba51dc"}},
-{"id":"morestreams","key":"morestreams","value":{"rev":"7-3d0145c2cfb9429dfdcfa872998c9fe8"}},
-{"id":"morpheus","key":"morpheus","value":{"rev":"45-04335640f709335d1828523425a87909"}},
-{"id":"morton","key":"morton","value":{"rev":"11-abd787350e21bef65c1c6776e40a0753"}},
-{"id":"mothermayi","key":"mothermayi","value":{"rev":"5-2c46f9873efd19f543def5eeda0a05f1"}},
-{"id":"mountable-proxy","key":"mountable-proxy","value":{"rev":"7-3b91bd0707447885676727ad183bb051"}},
-{"id":"move","key":"move","value":{"rev":"69-ce11c235c78de6d6184a86aaa93769eb"}},
-{"id":"moviesearch","key":"moviesearch","value":{"rev":"3-72e77965a44264dfdd5af23e4a36d2ce"}},
-{"id":"mp","key":"mp","value":{"rev":"3-47899fb2bdaf21dda16abd037b325c3b"}},
-{"id":"mpdsocket","key":"mpdsocket","value":{"rev":"3-2dd4c9bb019f3f491c55364be7a56229"}},
-{"id":"mrcolor","key":"mrcolor","value":{"rev":"3-4695b11798a65c61714b8f236a40936c"}},
-{"id":"msgbus","key":"msgbus","value":{"rev":"27-a5d861b55c933842226d4e536820ec99"}},
-{"id":"msgme","key":"msgme","value":{"rev":"3-d1968af1234a2059eb3d84eb76cdaa4e"}},
-{"id":"msgpack","key":"msgpack","value":{"rev":"9-ecf7469392d87460ddebef2dd369b0e5"}},
-{"id":"msgpack-0.4","key":"msgpack-0.4","value":{"rev":"3-5d509ddba6c53ed6b8dfe4afb1d1661d"}},
-{"id":"msgpack2","key":"msgpack2","value":{"rev":"4-63b8f3ccf35498eb5c8bd9b8d683179b"}},
-{"id":"mu","key":"mu","value":{"rev":"7-7a8ce1cba5d6d98e696c4e633aa081fa"}},
-{"id":"mu2","key":"mu2","value":{"rev":"3-4ade1c5b1496c720312beae1822da9de"}},
-{"id":"mud","key":"mud","value":{"rev":"66-56e1b1a1e5af14c3df0520c58358e7cd"}},
-{"id":"muffin","key":"muffin","value":{"rev":"22-210c45a888fe1f095becdcf11876a2bc"}},
-{"id":"multi-node","key":"multi-node","value":{"rev":"1-224161d875f0e1cbf4b1e249603c670a"}},
-{"id":"multicast-eventemitter","key":"multicast-eventemitter","value":{"rev":"13-ede3e677d6e21bbfe42aad1b549a137c"}},
-{"id":"multimeter","key":"multimeter","value":{"rev":"7-847f45a6f592a8410a77d3e5efb5cbf3"}},
-{"id":"multipart-stack","key":"multipart-stack","value":{"rev":"9-85aaa2ed2180d3124d1dcd346955b672"}},
-{"id":"muse","key":"muse","value":{"rev":"3-d6bbc06df2e359d6ef285f9da2bd0efd"}},
-{"id":"musicmetadata","key":"musicmetadata","value":{"rev":"21-957bf986aa9d0db02175ea1d79293909"}},
-{"id":"mustache","key":"mustache","value":{"rev":"6-7f8458f2b52de5b37004b105c0f39e62"}},
-{"id":"mustachio","key":"mustachio","value":{"rev":"9-6ed3f41613f886128acd18b73b55439f"}},
-{"id":"mutex","key":"mutex","value":{"rev":"3-de95bdff3dd00271361067b5d70ea03b"}},
-{"id":"muzak","key":"muzak","value":{"rev":"9-5ff968ffadebe957b72a8b77b538b71c"}},
-{"id":"mvc","key":"mvc","value":{"rev":"52-7c954b6c3b90b1b734d8e8c3d2d34f5e"}},
-{"id":"mvc.coffee","key":"mvc.coffee","value":{"rev":"3-f203564ed70c0284455e7f96ea61fdb7"}},
-{"id":"mypackage","key":"mypackage","value":{"rev":"3-49cc95fb2e5ac8ee3dbbab1de451c0d1"}},
-{"id":"mypakege","key":"mypakege","value":{"rev":"3-e74d7dc2c2518304ff1700cf295eb823"}},
-{"id":"myrtle-parser","key":"myrtle-parser","value":{"rev":"3-9089c1a2f3c3a24f0bce3941bc1d534d"}},
-{"id":"mysql","key":"mysql","value":{"rev":"30-a8dc68eb056cb6f69fae2423c1337474"}},
-{"id":"mysql-activerecord","key":"mysql-activerecord","value":{"rev":"17-9d21d0b10a5c84f6cacfd8d2236f9887"}},
-{"id":"mysql-client","key":"mysql-client","value":{"rev":"5-cc877218864c319d17f179e49bf58c99"}},
-{"id":"mysql-helper","key":"mysql-helper","value":{"rev":"3-c6f3b9f00cd9fee675aa2a9942cc336a"}},
-{"id":"mysql-libmysqlclient","key":"mysql-libmysqlclient","value":{"rev":"38-51c08e24257b99bf5591232016ada8ab"}},
-{"id":"mysql-native","key":"mysql-native","value":{"rev":"12-0592fbf66c55e6e9db6a75c97be088c3"}},
-{"id":"mysql-native-prerelease","key":"mysql-native-prerelease","value":{"rev":"7-b1a6f3fc41f6c152f3b178e13f91b5c4"}},
-{"id":"mysql-oil","key":"mysql-oil","value":{"rev":"9-70c07b9c552ff592be8ca89ea6efa408"}},
-{"id":"mysql-pool","key":"mysql-pool","value":{"rev":"15-41f510c45174b6c887856120ce3d5a3b"}},
-{"id":"mysql-simple","key":"mysql-simple","value":{"rev":"13-7ee13f035e8ebcbc27f6fe910058aee9"}},
-{"id":"n","key":"n","value":{"rev":"31-bfaed5022beae2177a090c4c8fce82a4"}},
-{"id":"n-ext","key":"n-ext","value":{"rev":"3-5ad67a300f8e88ef1dd58983c9061bc1"}},
-{"id":"n-pubsub","key":"n-pubsub","value":{"rev":"3-af990bcbf9f94554365788b81715d3b4"}},
-{"id":"n-rest","key":"n-rest","value":{"rev":"7-42f1d92f9229f126a1b063ca27bfc85b"}},
-{"id":"n-util","key":"n-util","value":{"rev":"6-d0c59c7412408bc94e20de4d22396d79"}},
-{"id":"nMemcached","key":"nMemcached","value":{"rev":"3-be350fd46624a1cac0052231101e0594"}},
-{"id":"nStoreSession","key":"nStoreSession","value":{"rev":"3-a3452cddd2b9ff8edb6d46999fa5b0eb"}},
-{"id":"nTPL","key":"nTPL","value":{"rev":"41-16a54848286364d894906333b0c1bb2c"}},
-{"id":"nTunes","key":"nTunes","value":{"rev":"18-76bc566a504100507056316fe8d3cc35"}},
-{"id":"nabe","key":"nabe","value":{"rev":"13-dc93f35018e84a23ace4d5114fa1bb28"}},
-{"id":"nack","key":"nack","value":{"rev":"118-f629c8c208c76fa0c2ce66d21f927ee4"}},
-{"id":"nagari","key":"nagari","value":{"rev":"11-cb200690c6d606d8597178e492b54cde"}},
-{"id":"nailplate","key":"nailplate","value":{"rev":"11-e1532c42d9d83fc32942dec0b87df587"}},
-{"id":"nails","key":"nails","value":{"rev":"12-f472bf005c4a4c2b49fb0118b109bef1"}},
-{"id":"nake","key":"nake","value":{"rev":"11-250933df55fbe7bb19e34a84ed23ca3e"}},
-{"id":"named-routes","key":"named-routes","value":{"rev":"6-ffbdd4caa74a30e87aa6dbb36f2b967c"}},
-{"id":"namespace","key":"namespace","value":{"rev":"7-89e2850e14206af13f26441e75289878"}},
-{"id":"namespaces","key":"namespaces","value":{"rev":"11-7a9b3d2537438211021a472035109f3c"}},
-{"id":"nami","key":"nami","value":{"rev":"29-3d44b1338222a4d994d4030868a94ea8"}},
-{"id":"nano","key":"nano","value":{"rev":"105-50efc49a8f6424706af554872002c014"}},
-{"id":"nanostate","key":"nanostate","value":{"rev":"9-1664d985e8cdbf16e150ba6ba4d79ae5"}},
-{"id":"narcissus","key":"narcissus","value":{"rev":"3-46581eeceff566bd191a14dec7b337f6"}},
-{"id":"nariya","key":"nariya","value":{"rev":"13-d83b8b6162397b154a4b59553be225e9"}},
-{"id":"narrativ","key":"narrativ","value":{"rev":"9-ef215eff6bf222425f73d23e507f7ff3"}},
-{"id":"narrow","key":"narrow","value":{"rev":"5-c6963048ba02adaf819dc51815fa0015"}},
-{"id":"narwhal","key":"narwhal","value":{"rev":"6-13bf3f87e6cfb1e57662cc3e3be450fc"}},
-{"id":"narwhal-lib","key":"narwhal-lib","value":{"rev":"6-4722d9b35fed59a2e8f7345a1eb6769d"}},
-{"id":"nat","key":"nat","value":{"rev":"3-da0906c08792043546f98ace8ce59a78"}},
-{"id":"native2ascii","key":"native2ascii","value":{"rev":"3-9afd51209d67303a8ee807ff862e31fc"}},
-{"id":"nativeUtil","key":"nativeUtil","value":{"rev":"7-6e3e9757b436ebcee35a20e633c08d60"}},
-{"id":"natives","key":"natives","value":{"rev":"24-6c4269c9c7cfb52571bd2c94fa26efc6"}},
-{"id":"natural","key":"natural","value":{"rev":"110-fc92701ad8525f45fbdb5863959ca03c"}},
-{"id":"naturalsort","key":"naturalsort","value":{"rev":"3-4321f5e432aee224af0fee9e4fb901ff"}},
-{"id":"nave","key":"nave","value":{"rev":"29-79baa66065fa9075764cc3e5da2edaef"}},
-{"id":"navigator","key":"navigator","value":{"rev":"3-f2f4f5376afb10753006f40bd49689c3"}},
-{"id":"nbs-api","key":"nbs-api","value":{"rev":"3-94949b1f0797369abc0752482268ef08"}},
-{"id":"nbt","key":"nbt","value":{"rev":"3-b711b9db76f64449df7f43c659ad8e7f"}},
-{"id":"nclosure","key":"nclosure","value":{"rev":"9-042b39740a39f0556d0dc2c0990b7fa8"}},
-{"id":"nclosureultimate","key":"nclosureultimate","value":{"rev":"3-61ff4bc480239304c459374c9a5f5754"}},
-{"id":"nconf","key":"nconf","value":{"rev":"65-8d8c0d2c6d5d9d526b8a3f325f68eca1"}},
-{"id":"nconf-redis","key":"nconf-redis","value":{"rev":"5-21ae138633b20cb29ed49b9fcd425e10"}},
-{"id":"ncp","key":"ncp","value":{"rev":"23-6441091c6c27ecb5b99f5781299a2192"}},
-{"id":"ncss","key":"ncss","value":{"rev":"9-1d2330e0fdbc40f0810747c2b156ecf2"}},
-{"id":"ncurses","key":"ncurses","value":{"rev":"12-bb059ea6fee12ca77f1fbb7bb6dd9447"}},
-{"id":"ndb","key":"ndb","value":{"rev":"15-b3e826f68a57095413666e9fe74589da"}},
-{"id":"ndistro","key":"ndistro","value":{"rev":"3-fcda3c018d11000b2903ad7104b60b35"}},
-{"id":"ndns","key":"ndns","value":{"rev":"5-1aeaaca119be44af7a83207d76f263fc"}},
-{"id":"nebulog","key":"nebulog","value":{"rev":"3-1863b0ce17cc0f07a50532a830194254"}},
-{"id":"neco","key":"neco","value":{"rev":"43-e830913302b52012ab63177ecf292822"}},
-{"id":"ned","key":"ned","value":{"rev":"15-4230c69fb52dfddfd65526dcfe5c4ec6"}},
-{"id":"nedis","key":"nedis","value":{"rev":"7-d49e329dca586d1a3569266f0595c9ad"}},
-{"id":"neko","key":"neko","value":{"rev":"60-13aa87d2278c3a734733cff2a34a7970"}},
-{"id":"neo4j","key":"neo4j","value":{"rev":"7-dde7066eac32a405df95ccf9c50c8ae7"}},
-{"id":"nerve","key":"nerve","value":{"rev":"3-2c47b79586d7930aabf9325ca88ad7e8"}},
-{"id":"nest","key":"nest","value":{"rev":"23-560d67971e9acddacf087608306def24"}},
-{"id":"nestableflow","key":"nestableflow","value":{"rev":"5-ee8af667a84d333fcc8092c89f4189c3"}},
-{"id":"nestor","key":"nestor","value":{"rev":"3-f1affbc37be3bf4e337365bd172578dc"}},
-{"id":"net","key":"net","value":{"rev":"3-895103ee532ef31396d9c06764df1ed8"}},
-{"id":"netiface","key":"netiface","value":{"rev":"3-885c94284fd3a9601afe291ab68aca84"}},
-{"id":"netpool","key":"netpool","value":{"rev":"3-dadfd09b9eb7ef73e2bff34a381de207"}},
-{"id":"netstring","key":"netstring","value":{"rev":"9-d26e7bf4a3ce5eb91bb1889d362f71e6"}},
-{"id":"neuron","key":"neuron","value":{"rev":"11-edaed50492368ff39eaf7d2004d7f4d8"}},
-{"id":"new","key":"new","value":{"rev":"3-7789b37104d8161b7ccf898a9cda1fc6"}},
-{"id":"newforms","key":"newforms","value":{"rev":"9-2a87cb74477d210fcb1d0c3e3e236f03"}},
-{"id":"nexpect","key":"nexpect","value":{"rev":"15-e7127f41b9f3ec45185ede7bab7b4acd"}},
-{"id":"next","key":"next","value":{"rev":"13-de5e62125b72e48ea142a55a3817589c"}},
-{"id":"nextrip","key":"nextrip","value":{"rev":"5-1ac8103552967af98d3de452ef81a94f"}},
-{"id":"nexttick","key":"nexttick","value":{"rev":"9-c7ec279e713ea8483d33c31871aea0db"}},
-{"id":"ngen","key":"ngen","value":{"rev":"9-972980a439c34851d67e4f61a96c2632"}},
-{"id":"ngen-basicexample","key":"ngen-basicexample","value":{"rev":"3-897763c230081d320586bcadfa84499f"}},
-{"id":"ngeohash","key":"ngeohash","value":{"rev":"5-9ca0c06066bc798e934db35cad99453e"}},
-{"id":"ngist","key":"ngist","value":{"rev":"7-592c24e72708219ed1eb078ddff95ab6"}},
-{"id":"ngram","key":"ngram","value":{"rev":"5-00e6b24dc178bdeb49b1ac8cb09f6e77"}},
-{"id":"ngrep","key":"ngrep","value":{"rev":"3-49c1a3839b12083280475177c1a16e38"}},
-{"id":"nhp-body-restreamer","key":"nhp-body-restreamer","value":{"rev":"1-8a4e5e23ae681a3f8be9afb613648230"}},
-{"id":"nhttpd","key":"nhttpd","value":{"rev":"3-cdc73384e1a1a4666e813ff52f2f5e4f"}},
-{"id":"nib","key":"nib","value":{"rev":"25-d67d5a294ba5b8953472cf936b97e13d"}},
-{"id":"nicetime","key":"nicetime","value":{"rev":"3-39fdba269d712064dc1e02a7ab846821"}},
-{"id":"nicknack","key":"nicknack","value":{"rev":"5-7b5477b63f782d0a510b0c15d2824f20"}},
-{"id":"nide","key":"nide","value":{"rev":"9-74f642fced47c934f9bae29f04d17a46"}},
-{"id":"nih-op","key":"nih-op","value":{"rev":"3-6e649b45964f84cb04340ab7f0a36a1c"}},
-{"id":"nimble","key":"nimble","value":{"rev":"5-867b808dd80eab33e5f22f55bb5a7376"}},
-{"id":"ninjs","key":"ninjs","value":{"rev":"3-f59997cc4bacb2d9d9852f955d15199e"}},
-{"id":"ninotify","key":"ninotify","value":{"rev":"3-a0f3c7cbbe7ccf5d547551aa062cc8b5"}},
-{"id":"nirc","key":"nirc","value":{"rev":"3-28197984656939a5a93a77c0a1605406"}},
-{"id":"nithub","key":"nithub","value":{"rev":"3-eaa85e6ac6668a304e4e4a565c54f57d"}},
-{"id":"nix","key":"nix","value":{"rev":"12-7b338b03c0e110aeb348551b14796ff1"}},
-{"id":"nko","key":"nko","value":{"rev":"39-2bf94b2bc279b8cf847bfc7668029d37"}},
-{"id":"nlog","key":"nlog","value":{"rev":"3-ae469820484ca33f346001dcb7b63a2d"}},
-{"id":"nlog4js","key":"nlog4js","value":{"rev":"3-bc17a61a9023d64e192d249144e69f02"}},
-{"id":"nlogger","key":"nlogger","value":{"rev":"11-1e48fc9a5a4214d9e56db6c6b63f1eeb"}},
-{"id":"nmd","key":"nmd","value":{"rev":"27-2dcb60d0258a9cea838f7cc4e0922f90"}},
-{"id":"nntp","key":"nntp","value":{"rev":"5-c86b189e366b9a6a428f9a2ee88dccf1"}},
-{"id":"no.de","key":"no.de","value":{"rev":"10-0dc855fd6b0b36a710b473b2720b22c0"}},
-{"id":"nobj","key":"nobj","value":{"rev":"3-0b4a46b91b70117306a9888202117223"}},
-{"id":"noblemachine","key":"noblemachine","value":{"rev":"3-06fec410fe0c7328e06eec50b4fa5d9a"}},
-{"id":"noblerecord","key":"noblerecord","value":{"rev":"5-22f24c4285bd405785588480bb2bc324"}},
-{"id":"nock","key":"nock","value":{"rev":"5-f94423d37dbdf41001ec097f20635271"}},
-{"id":"nocr-mongo","key":"nocr-mongo","value":{"rev":"5-ce6335ed276187cc38c30cb5872d3d83"}},
-{"id":"nodast","key":"nodast","value":{"rev":"3-1c563107f2d77b79a8f0d0b8ba7041f5"}},
-{"id":"node-api","key":"node-api","value":{"rev":"3-b69cefec93d9f73256acf9fb9edeebd6"}},
-{"id":"node-apidoc","key":"node-apidoc","value":{"rev":"6-cd26945e959403fcbee8ba542e14e667"}},
-{"id":"node-app-reloader","key":"node-app-reloader","value":{"rev":"5-e08cac7656afd6c124f8e2a9b9d6fdd3"}},
-{"id":"node-arse","key":"node-arse","value":{"rev":"9-b643c828541739a5fa972c801f81b212"}},
-{"id":"node-assert-extras","key":"node-assert-extras","value":{"rev":"3-3498e17b996ffc42a29d46c9699a3b52"}},
-{"id":"node-assert-lint-free","key":"node-assert-lint-free","value":{"rev":"5-852130ba6bafc703657b833343bc5646"}},
-{"id":"node-asset","key":"node-asset","value":{"rev":"18-f7cf59be8e0d015a43d05807a1ed9c0c"}},
-{"id":"node-awesm","key":"node-awesm","value":{"rev":"3-539c10145541ac5efc4dd295767b2abc"}},
-{"id":"node-backbone-couch","key":"node-backbone-couch","value":{"rev":"19-c4d8e93436b60e098c81cc0fe50f960c"}},
-{"id":"node-base64","key":"node-base64","value":{"rev":"11-da10a7157fd9e139b48bc8d9e44a98fa"}},
-{"id":"node-bj","key":"node-bj","value":{"rev":"3-5cd21fa259199870d1917574cd167396"}},
-{"id":"node-bosh-stress-tool","key":"node-bosh-stress-tool","value":{"rev":"3-36afc4b47e570964b7f8d705e1d47732"}},
-{"id":"node-brainfuck","key":"node-brainfuck","value":{"rev":"5-c7a6f703a97a409670005cab52664629"}},
-{"id":"node-build","key":"node-build","value":{"rev":"10-4f2f137fb4ef032f9dca3e3c64c15270"}},
-{"id":"node-casa","key":"node-casa","value":{"rev":"3-3f80a478aa47620bfc0c64cc6f140d98"}},
-{"id":"node-ccl","key":"node-ccl","value":{"rev":"13-00498b820cc4cadce8cc5b7b76e30b0f"}},
-{"id":"node-chain","key":"node-chain","value":{"rev":"6-b543f421ac63eeedc667b3395e7b8971"}},
-{"id":"node-child-process-manager","key":"node-child-process-manager","value":{"rev":"36-befb1a0eeac02ad400e2aaa8a076a053"}},
-{"id":"node-chirpstream","key":"node-chirpstream","value":{"rev":"10-f20e404f9ae5d43dfb6bcee15bd9affe"}},
-{"id":"node-clone","key":"node-clone","value":{"rev":"5-5ace5d51179d0e642bf9085b3bbf999b"}},
-{"id":"node-cloudwatch","key":"node-cloudwatch","value":{"rev":"3-7f9d1e075fcc3bd3e7849acd893371d5"}},
-{"id":"node-combine","key":"node-combine","value":{"rev":"3-51891c3c7769ff11a243c89c7e537907"}},
-{"id":"node-compat","key":"node-compat","value":{"rev":"9-24fce8e15eed3e193832b1c93a482d15"}},
-{"id":"node-config","key":"node-config","value":{"rev":"6-8821f6b46347e57258e62e1be841c186"}},
-{"id":"node-crocodoc","key":"node-crocodoc","value":{"rev":"5-ad4436f633f37fe3248dce93777fc26e"}},
-{"id":"node-csv","key":"node-csv","value":{"rev":"10-cd15d347b595f1d9d1fd30b483c52724"}},
-{"id":"node-date","key":"node-date","value":{"rev":"3-a5b41cab3247e12f2beaf1e0b1ffadfa"}},
-{"id":"node-dbi","key":"node-dbi","value":{"rev":"27-96e1df6fdefbae77bfa02eda64c3e3b9"}},
-{"id":"node-debug-proxy","key":"node-debug-proxy","value":{"rev":"9-c00a14832cdd5ee4d489eb41a3d0d621"}},
-{"id":"node-dep","key":"node-dep","value":{"rev":"15-378dedd3f0b3e54329c00c675b19401c"}},
-{"id":"node-dev","key":"node-dev","value":{"rev":"48-6a98f38078fe5678d6c2fb48aec3c1c3"}},
-{"id":"node-downloader","key":"node-downloader","value":{"rev":"3-a541126c56c48681571e5e998c481343"}},
-{"id":"node-evented","key":"node-evented","value":{"rev":"6-a6ce8ab39e01cc0262c80d4bf08fc333"}},
-{"id":"node-exception-notifier","key":"node-exception-notifier","value":{"rev":"3-cebc02c45dace4852f8032adaa4e3c9c"}},
-{"id":"node-expat","key":"node-expat","value":{"rev":"33-261d85273a0a551e7815f835a933d5eb"}},
-{"id":"node-expect","key":"node-expect","value":{"rev":"7-5ba4539adfd3ba95dab21bb5bc0a5193"}},
-{"id":"node-express-boilerplate","key":"node-express-boilerplate","value":{"rev":"3-972f51d1ff9493e48d7cf508461f1114"}},
-{"id":"node-extjs","key":"node-extjs","value":{"rev":"7-33143616b4590523b4e1549dd8ffa991"}},
-{"id":"node-extjs4","key":"node-extjs4","value":{"rev":"3-8e5033aed477629a6fb9812466a90cfd"}},
-{"id":"node-fakeweb","key":"node-fakeweb","value":{"rev":"5-f01377fa6d03461cbe77f41b73577cf4"}},
-{"id":"node-fb","key":"node-fb","value":{"rev":"3-bc5f301a60e475de7c614837d3f9f35a"}},
-{"id":"node-fb-signed-request","key":"node-fb-signed-request","value":{"rev":"3-33c8f043bb947b63a84089d633d68f8e"}},
-{"id":"node-fects","key":"node-fects","value":{"rev":"3-151b7b895b74b24a87792fac34735814"}},
-{"id":"node-ffi","key":"node-ffi","value":{"rev":"22-25cf229f0ad4102333b2b13e03054ac5"}},
-{"id":"node-filter","key":"node-filter","value":{"rev":"3-0e6a86b4abb65df3594e5c93ab04bd31"}},
-{"id":"node-foursquare","key":"node-foursquare","value":{"rev":"25-549bbb0c2b4f96b2c5e6a5f642e8481d"}},
-{"id":"node-fs","key":"node-fs","value":{"rev":"5-14050cbc3887141f6b0e1e7d62736a63"}},
-{"id":"node-fs-synchronize","key":"node-fs-synchronize","value":{"rev":"11-6341e79f3391a9e1daa651a5932c8795"}},
-{"id":"node-gd","key":"node-gd","value":{"rev":"11-2ede7f4af38f062b86cc32bb0125e1bf"}},
-{"id":"node-geocode","key":"node-geocode","value":{"rev":"6-505af45c7ce679ac6738b495cc6b03c2"}},
-{"id":"node-get","key":"node-get","value":{"rev":"9-906945005a594ea1f05d4ad23170a83f"}},
-{"id":"node-gettext","key":"node-gettext","value":{"rev":"5-532ea4b528108b4c8387ddfc8fa690b2"}},
-{"id":"node-gist","key":"node-gist","value":{"rev":"11-3495a499c9496d01235676f429660424"}},
-{"id":"node-glbse","key":"node-glbse","value":{"rev":"5-69a537189610c69cc549f415431b181a"}},
-{"id":"node-google-sql","key":"node-google-sql","value":{"rev":"7-bfe20d25a4423651ecdff3f5054a6946"}},
-{"id":"node-gravatar","key":"node-gravatar","value":{"rev":"6-8265fc1ad003fd8a7383244c92abb346"}},
-{"id":"node-handlersocket","key":"node-handlersocket","value":{"rev":"16-f1dc0246559748a842dd0e1919c569ae"}},
-{"id":"node-hdfs","key":"node-hdfs","value":{"rev":"3-d460fba8ff515660de34cb216223c569"}},
-{"id":"node-hipchat","key":"node-hipchat","value":{"rev":"3-9d16738bf70f9e37565727e671ffe551"}},
-{"id":"node-hive","key":"node-hive","value":{"rev":"31-5eef1fa77a39e4bdacd8fa85ec2ce698"}},
-{"id":"node-html-encoder","key":"node-html-encoder","value":{"rev":"3-75f92e741a3b15eb56e3c4513feaca6d"}},
-{"id":"node-i3","key":"node-i3","value":{"rev":"3-5c489f43aeb06054b02ad3706183599c"}},
-{"id":"node-indextank","key":"node-indextank","value":{"rev":"5-235a17fce46c73c8b5abc4cf5f964385"}},
-{"id":"node-inherit","key":"node-inherit","value":{"rev":"3-099c0acf9c889eea94faaf64067bfc52"}},
-{"id":"node-inspector","key":"node-inspector","value":{"rev":"34-ca9fa856cf32a737d1ecccb759aaf5e1"}},
-{"id":"node-int64","key":"node-int64","value":{"rev":"11-50b92b5b65adf17e673b4d15df643ed4"}},
-{"id":"node-ip-lib","key":"node-ip-lib","value":{"rev":"3-2fe72f7b78cbc1739c71c7cfaec9fbcd"}},
-{"id":"node-iplookup","key":"node-iplookup","value":{"rev":"10-ba8474624dd852a46303d32ff0556883"}},
-{"id":"node-jdownloader","key":"node-jdownloader","value":{"rev":"3-b015035cfb8540568da5deb55b35248c"}},
-{"id":"node-jslint-all","key":"node-jslint-all","value":{"rev":"5-582f4a31160d3700731fa39771702896"}},
-{"id":"node-jsonengine","key":"node-jsonengine","value":{"rev":"3-6e429c32e42b205f3ed1ea1f48d67cbc"}},
-{"id":"node-khtml","key":"node-khtml","value":{"rev":"39-db8e8eea569657fc7de6300172a6a8a7"}},
-{"id":"node-linkshare","key":"node-linkshare","value":{"rev":"35-acc18a5d584b828bb2bd4f32bbcde98c"}},
-{"id":"node-log","key":"node-log","value":{"rev":"17-79cecc66227b4fb3a2ae04b7dac17cc2"}},
-{"id":"node-logentries","key":"node-logentries","value":{"rev":"3-0f640d5ff489a6904f4a8c18fb5f7e9c"}},
-{"id":"node-logger","key":"node-logger","value":{"rev":"3-75084f98359586bdd254e57ea5915d37"}},
-{"id":"node-logging","key":"node-logging","value":{"rev":"15-af01bc2b6128150787c85c8df1dae642"}},
-{"id":"node-mailer","key":"node-mailer","value":{"rev":"5-5b88675f05efe2836126336c880bd841"}},
-{"id":"node-mailgun","key":"node-mailgun","value":{"rev":"5-4bcfb7bf5163748b87c1b9ed429ed178"}},
-{"id":"node-markdown","key":"node-markdown","value":{"rev":"6-67137da4014f22f656aaefd9dfa2801b"}},
-{"id":"node-mdbm","key":"node-mdbm","value":{"rev":"22-3006800b042cf7d4b0b391c278405143"}},
-{"id":"node-minify","key":"node-minify","value":{"rev":"13-e853813d4b6519b168965979b8ccccdd"}},
-{"id":"node-mug","key":"node-mug","value":{"rev":"3-f7567ffac536bfa7eb5a7e3da7a0efa0"}},
-{"id":"node-mvc","key":"node-mvc","value":{"rev":"3-74f7c07b2991fcddb27afd2889b6db4e"}},
-{"id":"node-mwire","key":"node-mwire","value":{"rev":"26-79d7982748f42b9e07ab293447b167ec"}},
-{"id":"node-mynix-feed","key":"node-mynix-feed","value":{"rev":"3-59d4a624b3831bbab6ee99be2f84e568"}},
-{"id":"node-nether","key":"node-nether","value":{"rev":"3-0fbefe710fe0d74262bfa25f6b4e1baf"}},
-{"id":"node-nude","key":"node-nude","value":{"rev":"3-600abb219646299ac602fa51fa260f37"}},
-{"id":"node-nxt","key":"node-nxt","value":{"rev":"3-8ce48601c2b0164e2b125259a0c97d45"}},
-{"id":"node-oauth","key":"node-oauth","value":{"rev":"3-aa6cd61f44d74118bafa5408900c4984"}},
-{"id":"node-opencalais","key":"node-opencalais","value":{"rev":"13-a3c0b882aca7207ce36f107e40a0ce50"}},
-{"id":"node-props","key":"node-props","value":{"rev":"7-e400cee08cc9abdc1f1ce4f262a04b05"}},
-{"id":"node-proxy","key":"node-proxy","value":{"rev":"20-ce722bf45c84a7d925b8b7433e786ed6"}},
-{"id":"node-pusher","key":"node-pusher","value":{"rev":"3-7cc7cd5bffaf3b11c44438611beeba98"}},
-{"id":"node-putio","key":"node-putio","value":{"rev":"3-8a1fc6362fdcf16217cdb6846e419b4c"}},
-{"id":"node-raphael","key":"node-raphael","value":{"rev":"25-e419d98a12ace18a40d94a9e8e32cdd4"}},
-{"id":"node-rapleaf","key":"node-rapleaf","value":{"rev":"11-c849c8c8635e4eb2f81bd7810b7693fd"}},
-{"id":"node-rats","key":"node-rats","value":{"rev":"3-dca544587f3121148fe02410032cf726"}},
-{"id":"node-rdf2json","key":"node-rdf2json","value":{"rev":"3-bde382dc2fcb40986c5ac41643d44543"}},
-{"id":"node-recurly","key":"node-recurly","value":{"rev":"11-79cab9ccee7c1ddb83791e8de41c72f5"}},
-{"id":"node-redis","key":"node-redis","value":{"rev":"13-12adf3a3e986675637fa47b176f527e3"}},
-{"id":"node-redis-mapper","key":"node-redis-mapper","value":{"rev":"5-53ba8f67cc82dbf1d127fc7359353f32"}},
-{"id":"node-redis-monitor","key":"node-redis-monitor","value":{"rev":"3-79bcba76241d7c7dbc4b18d90a9d59e3"}},
-{"id":"node-restclient","key":"node-restclient","value":{"rev":"6-5844eba19bc465a8f75b6e94c061350f"}},
-{"id":"node-restclient2","key":"node-restclient2","value":{"rev":"5-950de911f7bde7900dfe5b324f49818c"}},
-{"id":"node-runner","key":"node-runner","value":{"rev":"3-e9a9e6bd10d2ab1aed8b401b04fadc7b"}},
-{"id":"node-sc-setup","key":"node-sc-setup","value":{"rev":"3-e89c496e03c48d8574ccaf61c9ed4fca"}},
-{"id":"node-schedule","key":"node-schedule","value":{"rev":"9-ae12fa59226f1c9b7257b8a2d71373b4"}},
-{"id":"node-sdlmixer","key":"node-sdlmixer","value":{"rev":"8-489d85278d6564b6a4e94990edcb0527"}},
-{"id":"node-secure","key":"node-secure","value":{"rev":"3-73673522a4bb5f853d55e535f0934803"}},
-{"id":"node-sendgrid","key":"node-sendgrid","value":{"rev":"9-4662c31304ca4ee4e702bd3a54ea7824"}},
-{"id":"node-sizzle","key":"node-sizzle","value":{"rev":"6-c08c24d9d769d3716e5c4e3441740eb2"}},
-{"id":"node-soap-client","key":"node-soap-client","value":{"rev":"9-35ff34a4a5af569de6a2e89d1b35b69a"}},
-{"id":"node-spec","key":"node-spec","value":{"rev":"9-92e99ca74b9a09a8ae2eb7382ef511ef"}},
-{"id":"node-static","key":"node-static","value":{"rev":"10-11b0480fcd416db3d3d4041f43a55290"}},
-{"id":"node-static-maccman","key":"node-static-maccman","value":{"rev":"3-49e256728b14c85776b74f2bd912eb42"}},
-{"id":"node-statsd","key":"node-statsd","value":{"rev":"5-08d3e6b4b2ed1d0b7916e9952f55573c"}},
-{"id":"node-statsd-instrument","key":"node-statsd-instrument","value":{"rev":"3-c3cd3315e1edcc91096830392f439305"}},
-{"id":"node-std","key":"node-std","value":{"rev":"3-f99be0f03be4175d546823799bb590d3"}},
-{"id":"node-store","key":"node-store","value":{"rev":"3-7cb6bf13de9550b869c768f464fd0f65"}},
-{"id":"node-stringprep","key":"node-stringprep","value":{"rev":"13-9b08baa97042f71c5c8e9e2fdcc2c300"}},
-{"id":"node-synapse","key":"node-synapse","value":{"rev":"3-c46c47099eb2792f4a57fdfd789520ca"}},
-{"id":"node-syslog","key":"node-syslog","value":{"rev":"23-34f7df06ba88d9f897b7e00404db7187"}},
-{"id":"node-t","key":"node-t","value":{"rev":"3-042225eff3208ba9add61a9f79d90871"}},
-{"id":"node-taobao","key":"node-taobao","value":{"rev":"7-c988ace74806b2e2f55e162f54ba1a2c"}},
-{"id":"node-term-ui","key":"node-term-ui","value":{"rev":"5-210310014b19ce26c5e3e840a8a0549e"}},
-{"id":"node-tiny","key":"node-tiny","value":{"rev":"7-df05ab471f25ca4532d80c83106944d7"}},
-{"id":"node-tmpl","key":"node-tmpl","value":{"rev":"3-6fcfa960da8eb72a5e3087559d3fe206"}},
-{"id":"node-twilio","key":"node-twilio","value":{"rev":"11-af69e600109d38c77eadbcec4bee4782"}},
-{"id":"node-twitter-mailer","key":"node-twitter-mailer","value":{"rev":"7-f915b76d834cb162c91816abc30cee5f"}},
-{"id":"node-usb","key":"node-usb","value":{"rev":"3-0c3837307f86a80427800f1b45aa5862"}},
-{"id":"node-uuid","key":"node-uuid","value":{"rev":"6-642efa619ad8a6476a44a5c6158e7a36"}},
-{"id":"node-vapor.js","key":"node-vapor.js","value":{"rev":"3-d293284cc415b2906533e91db13ee748"}},
-{"id":"node-version","key":"node-version","value":{"rev":"3-433b1529a6aa3d619314e461e978d2b6"}},
-{"id":"node-webapp","key":"node-webapp","value":{"rev":"11-65411bfd8eaf19d3539238360d904d43"}},
-{"id":"node-wiki","key":"node-wiki","value":{"rev":"5-22b0177c9a5e4dc1f72d36bb83c746d0"}},
-{"id":"node-wkhtml","key":"node-wkhtml","value":{"rev":"5-a8fa203720442b443d558670c9750548"}},
-{"id":"node-xerces","key":"node-xerces","value":{"rev":"3-de6d82ec712af997b7aae451277667f0"}},
-{"id":"node-xml","key":"node-xml","value":{"rev":"3-e14a52dcd04302aea7dd6943cf6dd886"}},
-{"id":"node-xmpp","key":"node-xmpp","value":{"rev":"36-031eb5e830ed2e2027ee4ee7f861cf81"}},
-{"id":"node-xmpp-bosh","key":"node-xmpp-bosh","value":{"rev":"85-f7f8b699b6fda74fc27c621466915bd1"}},
-{"id":"node-xmpp-via-bosh","key":"node-xmpp-via-bosh","value":{"rev":"3-5f5fee9e42ae8ce8f42d55c31808c969"}},
-{"id":"node.io","key":"node.io","value":{"rev":"224-e99561d454a7676d10875e1b06ba44c7"}},
-{"id":"node.io-min","key":"node.io-min","value":{"rev":"3-e8389bdcfa55c68ae9698794d9089ce4"}},
-{"id":"node.isbn","key":"node.isbn","value":{"rev":"3-76aa84f3c49a54b6c901f440af35192d"}},
-{"id":"node.uptime","key":"node.uptime","value":{"rev":"5-cfc2c1c1460d000eab4e1a28506e6d29"}},
-{"id":"node3p","key":"node3p","value":{"rev":"14-b1931b8aa96227854d78965cc4301168"}},
-{"id":"node3p-web","key":"node3p-web","value":{"rev":"12-bc783ee1e493e80b7e7a3c2fce39f55e"}},
-{"id":"nodeBase","key":"nodeBase","value":{"rev":"39-4d9ae0f18e0bca7192901422d85e85c7"}},
-{"id":"nodeCgi","key":"nodeCgi","value":{"rev":"9-bb65e71ee63551e519f49434f2ae1cd7"}},
-{"id":"nodeDocs","key":"nodeDocs","value":{"rev":"3-0c6e714d3e6d5c2cc9482444680fb3ca"}},
-{"id":"nodePhpSessions","key":"nodePhpSessions","value":{"rev":"3-5063b38582deaca9cacdc029db97c2b1"}},
-{"id":"node_bsdiff","key":"node_bsdiff","value":{"rev":"5-e244ef36755a2b6534ce50fa1ee5ee6e"}},
-{"id":"node_hash","key":"node_hash","value":{"rev":"3-cdce2fcc2c18fcd25e16be8e52add891"}},
-{"id":"node_util","key":"node_util","value":{"rev":"3-cde723ee2311cf48f7cf0a3bc3484f9a"}},
-{"id":"node_xslt","key":"node_xslt","value":{"rev":"3-f12035155aee31d1749204fdca2aee10"}},
-{"id":"nodec","key":"nodec","value":{"rev":"3-dba2af2d5b98a71964abb4328512b9e1"}},
-{"id":"nodefm","key":"nodefm","value":{"rev":"3-c652a95d30318a371736515feab649f9"}},
-{"id":"nodegit","key":"nodegit","value":{"rev":"31-92a2cea0d1c92086c920bc007f5a3f16"}},
-{"id":"nodeib","key":"nodeib","value":{"rev":"3-e67d779007817597ca36e8b821f38e6a"}},
-{"id":"nodeinfo","key":"nodeinfo","value":{"rev":"53-61bf0f48662dc2e04cde38a2b897c211"}},
-{"id":"nodejitsu-client","key":"nodejitsu-client","value":{"rev":"3-4fa613f888ebe249aff7b03aa9b8d7ef"}},
-{"id":"nodejs-intro","key":"nodejs-intro","value":{"rev":"4-c75f03e80b597f734f4466e62ecebfeb"}},
-{"id":"nodejs-tvrage","key":"nodejs-tvrage","value":{"rev":"9-88bb3b5d23652ebdb7186a30bc3be43f"}},
-{"id":"nodejs.be-cli","key":"nodejs.be-cli","value":{"rev":"3-d8f23777f9b18101f2d2dc5aa618a703"}},
-{"id":"nodeler","key":"nodeler","value":{"rev":"9-00760d261ea75164a5709109011afb25"}},
-{"id":"nodelint","key":"nodelint","value":{"rev":"8-31502553d4bb099ba519fb331cccdd63"}},
-{"id":"nodeload","key":"nodeload","value":{"rev":"12-f02626475b59ebe67a864a114c99ff9b"}},
-{"id":"nodemachine","key":"nodemachine","value":{"rev":"8-5342324502e677e35aefef17dc08c8db"}},
-{"id":"nodemailer","key":"nodemailer","value":{"rev":"63-d39a5143b06fa79edcb81252d6329861"}},
-{"id":"nodemock","key":"nodemock","value":{"rev":"33-7095334209b39c8e1482374bee1b712a"}},
-{"id":"nodemon","key":"nodemon","value":{"rev":"42-4f40ba2299ef4ae613a384a48e4045fa"}},
-{"id":"nodepad","key":"nodepad","value":{"rev":"5-93718cc67e97c89f45b753c1caef07e4"}},
-{"id":"nodepal","key":"nodepal","value":{"rev":"5-e53372a5081b3753993ee98299ecd550"}},
-{"id":"nodepie","key":"nodepie","value":{"rev":"21-a44a6d3575758ed591e13831a5420758"}},
-{"id":"nodepress","key":"nodepress","value":{"rev":"3-f17616b9ae61e15d1d219cb87ac5a63a"}},
-{"id":"noderelict","key":"noderelict","value":{"rev":"23-0ca0997e3ef112e9393ae8ccef63f1ee"}},
-{"id":"noderpc","key":"noderpc","value":{"rev":"27-7efb6365916b403c3aa4e1c766de75a2"}},
-{"id":"nodespec","key":"nodespec","value":{"rev":"3-69f357577e52e9fd096ac88a1e7e3445"}},
-{"id":"nodespy","key":"nodespy","value":{"rev":"3-ad33e14db2bcaf61bf99d3e8915da5ee"}},
-{"id":"nodestalker","key":"nodestalker","value":{"rev":"5-080eba88a3625ecf7935ec5e9d2db6e9"}},
-{"id":"nodester-api","key":"nodester-api","value":{"rev":"39-52046dbcdf4447bbb85aecc92086ae1d"}},
-{"id":"nodester-cli","key":"nodester-cli","value":{"rev":"89-6de3d724a974c1dd3b632417f8b01267"}},
-{"id":"nodetk","key":"nodetk","value":{"rev":"11-265d267335e7603249e1af9441700f2f"}},
-{"id":"nodeunit","key":"nodeunit","value":{"rev":"40-d1cc6c06f878fb0b86779186314bc193"}},
-{"id":"nodeunit-coverage","key":"nodeunit-coverage","value":{"rev":"3-29853918351e75e3f6f93acd97e2942f"}},
-{"id":"nodeunit-dsl","key":"nodeunit-dsl","value":{"rev":"6-91be44077bc80c942f86f0ac28a69c5e"}},
-{"id":"nodevlc","key":"nodevlc","value":{"rev":"3-e151577d3e1ba2f58db465d94ebcb1c1"}},
-{"id":"nodevore","key":"nodevore","value":{"rev":"3-ac73b3bc33e2f934776dda359869ddcf"}},
-{"id":"nodewatch","key":"nodewatch","value":{"rev":"9-267bfe1324c51993865dc41b09aee6dc"}},
-{"id":"nodewii","key":"nodewii","value":{"rev":"9-716b3faa8957c1aea337540402ae7f43"}},
-{"id":"nodie","key":"nodie","value":{"rev":"3-cc29702a2e7e295cfe583a05fb77b530"}},
-{"id":"nodify","key":"nodify","value":{"rev":"10-87fadf6bf262882bd71ab7e759b29949"}},
-{"id":"nodrrr","key":"nodrrr","value":{"rev":"3-75937f4ffb722a67d6c5a67663366854"}},
-{"id":"nodules","key":"nodules","value":{"rev":"8-2c6ec430f26ff7ef171e80b7b5e990c2"}},
-{"id":"nodysentary","key":"nodysentary","value":{"rev":"3-7574fc8e12b1271c2eb1c66026f702cb"}},
-{"id":"nohm","key":"nohm","value":{"rev":"45-09dcf4df92734b3c51c8df3c3b374b0b"}},
-{"id":"noid","key":"noid","value":{"rev":"5-ac31e001806789e80a7ffc64f2914eb4"}},
-{"id":"nolife","key":"nolife","value":{"rev":"7-cfd4fe84b1062303cefb83167ea48bba"}},
-{"id":"nolog","key":"nolog","value":{"rev":"9-6e82819b801f5d7ec6773596d5d2efb2"}},
-{"id":"nomnom","key":"nomnom","value":{"rev":"34-bf66753d1d155820cfacfc7fa7a830c9"}},
-{"id":"nomplate","key":"nomplate","value":{"rev":"9-6ea21ee9568421a60cb80637c4c6cb48"}},
-{"id":"nonogo","key":"nonogo","value":{"rev":"5-8307413f9a3da913f9818c4f2d951519"}},
-{"id":"noode","key":"noode","value":{"rev":"7-454df50a7cbd03c46a9951cb1ddbe1c6"}},
-{"id":"noodle","key":"noodle","value":{"rev":"7-163745527770de0de8e7e9d59fc3888c"}},
-{"id":"noop","key":"noop","value":{"rev":"5-ed9fd66573ed1186e66b4c2bc16192cb"}},
-{"id":"nope","key":"nope","value":{"rev":"3-7088ffb62b8e06261527cbfa69cb94c5"}},
-{"id":"nopro","key":"nopro","value":{"rev":"11-6c4aeafe6329821b2259ef11414481dd"}},
-{"id":"nopt","key":"nopt","value":{"rev":"23-cce441940b6f129cab94a359ddb8b3e4"}},
-{"id":"norm","key":"norm","value":{"rev":"9-2bf26c3803fdc3bb6319e490cae3b625"}},
-{"id":"norq","key":"norq","value":{"rev":"3-b1a80ad1aa4ccc493ac25da22b0f0697"}},
-{"id":"norris","key":"norris","value":{"rev":"3-a341286d9e83fa392c1ce6b764d0aace"}},
-{"id":"norris-ioc","key":"norris-ioc","value":{"rev":"15-d022f159229d89ce60fc2a15d71eac59"}},
-{"id":"norris-tester","key":"norris-tester","value":{"rev":"3-fc2f34c9373bbdf5a1cd9cfbaff21f83"}},
-{"id":"northwatcher","key":"northwatcher","value":{"rev":"13-edab28a123f0100e12f96c9828428a8a"}},
-{"id":"nosey","key":"nosey","value":{"rev":"4-10a22f27dd9f2a40acf035a7d250c661"}},
-{"id":"nosql-thin","key":"nosql-thin","value":{"rev":"6-604169cacf303b5278064f68b884090b"}},
-{"id":"notch","key":"notch","value":{"rev":"3-5b720089f0f9cfdbbbea8677216eeee5"}},
-{"id":"notes","key":"notes","value":{"rev":"3-5dfbd6ec33c69c0f1b619dd65d9e7a56"}},
-{"id":"nothing","key":"nothing","value":{"rev":"3-8b44e10efd7d6504755c0c4bd1043814"}},
-{"id":"notifications","key":"notifications","value":{"rev":"3-a68448bca7ea2d3d3ce43e4d03cd76c6"}},
-{"id":"notifo","key":"notifo","value":{"rev":"8-0bc13ea6135adfa80c5fac497a2ddeda"}},
-{"id":"notify","key":"notify","value":{"rev":"3-da00942576bcb5fab594186f80d4575a"}},
-{"id":"notify-send","key":"notify-send","value":{"rev":"7-89f5c6bc656d51577e3997b9f90d0454"}},
-{"id":"nova","key":"nova","value":{"rev":"3-4e136f35b7d5b85816c17496c6c0e382"}},
-{"id":"now","key":"now","value":{"rev":"84-dbfde18b3f6fe79dd3637b6da34b78cf"}},
-{"id":"now-bal","key":"now-bal","value":{"rev":"3-c769bcdd45a93095f68c2de54f35543f"}},
-{"id":"nowpad","key":"nowpad","value":{"rev":"51-8d90c49031f79a9d31eb4ed6f39609b6"}},
-{"id":"nowww","key":"nowww","value":{"rev":"3-541994af2e579b376d2037f4e34f31d8"}},
-{"id":"noxmox","key":"noxmox","value":{"rev":"9-4ac8b1529dced329cac0976b9ca9eed0"}},
-{"id":"nozzle","key":"nozzle","value":{"rev":"23-e60444326d11a5b57c208de548c325e8"}},
-{"id":"npm","key":"npm","value":{"rev":"665-71d13d024c846b2ee85ed054fcfcb242"}},
-{"id":"npm-deploy","key":"npm-deploy","value":{"rev":"23-751e9d3c2edac0fd9916b0e886414ef2"}},
-{"id":"npm-dev-install","key":"npm-dev-install","value":{"rev":"3-7a08e11a59758329ba8dc4e781ea9993"}},
-{"id":"npm-docsite","key":"npm-docsite","value":{"rev":"3-5ed4f1ffea02487ab9ea24cfa0196f76"}},
-{"id":"npm-github-service","key":"npm-github-service","value":{"rev":"8-6891bc055b499e088fc79a7f94b6a4ec"}},
-{"id":"npm-intro-slides","key":"npm-intro-slides","value":{"rev":"8-e95f28475662cb8f70f4cb48baaa9d27"}},
-{"id":"npm-monitor","key":"npm-monitor","value":{"rev":"7-4e3209ea893fe37c0e516fe21de2d8ad"}},
-{"id":"npm-remapper","key":"npm-remapper","value":{"rev":"3-69163475ee93f32faac3f934e772b6c7"}},
-{"id":"npm-tweets","key":"npm-tweets","value":{"rev":"9-86064412a8aa02d813b20d2e49d78d84"}},
-{"id":"npm-wrapper","key":"npm-wrapper","value":{"rev":"3-59c4d372b84f6e91dbe48a220511dfd5"}},
-{"id":"npm2debian","key":"npm2debian","value":{"rev":"3-3cf2f471f3bfbc613176c7c780a6aad6"}},
-{"id":"npmcount","key":"npmcount","value":{"rev":"5-59c55b09d9c2cc7da217cab3b0ea642c"}},
-{"id":"npmdep","key":"npmdep","value":{"rev":"9-78184ad3b841e5c91bbfa29ff722778a"}},
-{"id":"npmtop","key":"npmtop","value":{"rev":"19-2754af894829f22d6edb3a17a64cdf1e"}},
-{"id":"nquery","key":"nquery","value":{"rev":"9-461fb0c9bcc3c15e0696dc2e99807c98"}},
-{"id":"nrecipe","key":"nrecipe","value":{"rev":"15-a96b6b0134a7625eb4eb236b4bf3fbf3"}},
-{"id":"nserver","key":"nserver","value":{"rev":"5-ea895373c340dd8d9119f3f549990048"}},
-{"id":"nserver-util","key":"nserver-util","value":{"rev":"5-5e14eb0bc9f7ab0eac04c5699c6bb328"}},
-{"id":"nssocket","key":"nssocket","value":{"rev":"51-6aac1d5dd0aa7629b3619b3085d63c04"}},
-{"id":"nstore","key":"nstore","value":{"rev":"28-6e2639829539b7315040487dfa5c79af"}},
-{"id":"nstore-cache","key":"nstore-cache","value":{"rev":"3-453ed78dcbe68b31ff675f4d94b47c4a"}},
-{"id":"nstore-query","key":"nstore-query","value":{"rev":"3-39f46992dd278824db641a37ec5546f5"}},
-{"id":"ntodo","key":"ntodo","value":{"rev":"7-e214da8bbed2d3e40bdaec77d7a49831"}},
-{"id":"ntp","key":"ntp","value":{"rev":"5-5ee2b25e8f3bca06d1cc4ce3b25cac42"}},
-{"id":"nts","key":"nts","value":{"rev":"7-ecaf47f8af1f77de791d1d1fa9bab88e"}},
-{"id":"nttpd","key":"nttpd","value":{"rev":"21-cda7aa0f1db126428f6ca01d44b4d209"}},
-{"id":"ntwitter","key":"ntwitter","value":{"rev":"11-732c6f34137c942bc98967170b2f83fc"}},
-{"id":"nub","key":"nub","value":{"rev":"3-932ecf56889fa43584687dbb2cf4aa91"}},
-{"id":"nubnub","key":"nubnub","value":{"rev":"6-93a5267209e1aa869521a5952cbb1828"}},
-{"id":"null","key":"null","value":{"rev":"3-ae8247cfa9553d23a229993cfc8436c5"}},
-{"id":"numb","key":"numb","value":{"rev":"5-594cd9e8e8e4262ddb3ddd80e8084b62"}},
-{"id":"nun","key":"nun","value":{"rev":"8-3bd8b37ed85c1a5da211bd0d5766848e"}},
-{"id":"nunz","key":"nunz","value":{"rev":"3-040f033943158be495f6b0da1a0c0344"}},
-{"id":"nurl","key":"nurl","value":{"rev":"11-6c4ee6fc5c5119c56f2fd8ad8a0cb928"}},
-{"id":"nutil","key":"nutil","value":{"rev":"3-7785a1d4651dcfe78c874848f41d1348"}},
-{"id":"nutils","key":"nutils","value":{"rev":"13-889624db0c155fc2f0b501bba47e55ec"}},
-{"id":"nuvem","key":"nuvem","value":{"rev":"23-054b9b1240f4741f561ef0bb3197bdf8"}},
-{"id":"nvm","key":"nvm","value":{"rev":"28-251b7eb3429a00099b37810d05accd47"}},
-{"id":"nwm","key":"nwm","value":{"rev":"3-fe9274106aac9e67eea734159477acaf"}},
-{"id":"nx","key":"nx","value":{"rev":"55-7ad32fcb34ec25f841ddd0e5857375c7"}},
-{"id":"nx-core","key":"nx-core","value":{"rev":"33-a7bc62348591bae89fff82057bede1ab"}},
-{"id":"nx-daemon","key":"nx-daemon","value":{"rev":"3-7b86a87654c9e32746a4d36d7c527182"}},
-{"id":"nyaatorrents","key":"nyaatorrents","value":{"rev":"5-8600707a1e84f617bd5468b5c9179202"}},
-{"id":"nyala","key":"nyala","value":{"rev":"17-23c908297a37c47f9f09977f4cf101ff"}},
-{"id":"nyam","key":"nyam","value":{"rev":"17-697b5f17fe67630bc9494184146c12f1"}},
-{"id":"nyancat","key":"nyancat","value":{"rev":"13-84c18d007db41b40e9145bdc049b0a00"}},
-{"id":"nymph","key":"nymph","value":{"rev":"5-3a5d7a75d32f7a71bf4ec131f71484d8"}},
-{"id":"o3-xml","key":"o3-xml","value":{"rev":"3-cc4df881333805600467563f80b5216c"}},
-{"id":"oahu","key":"oahu","value":{"rev":"3-e789fc2098292518cb33606c73bfeca4"}},
-{"id":"oauth","key":"oauth","value":{"rev":"38-36b99063db7dc302b70d932e9bbafc24"}},
-{"id":"oauth-client","key":"oauth-client","value":{"rev":"12-ae097c9580ddcd5ca938b169486a63c6"}},
-{"id":"oauth-server","key":"oauth-server","value":{"rev":"7-ea931e31eaffaa843be61ffc89f29da7"}},
-{"id":"oauth2","key":"oauth2","value":{"rev":"3-4fce73fdc95580f397afeaf1bbd596bb"}},
-{"id":"oauth2-client","key":"oauth2-client","value":{"rev":"7-b5bd019159112384abc2087b2f8cb4f7"}},
-{"id":"oauth2-provider","key":"oauth2-provider","value":{"rev":"3-acd8f23b8c1c47b19838424b64618c70"}},
-{"id":"oauth2-server","key":"oauth2-server","value":{"rev":"11-316baa7e754053d0153086d0748b07c5"}},
-{"id":"obj_diff","key":"obj_diff","value":{"rev":"3-9289e14caaec4bb6aa64aa1be547db3b"}},
-{"id":"object-additions","key":"object-additions","value":{"rev":"3-11f03ae5afe00ad2be034fb313ce71a9"}},
-{"id":"object-proxy","key":"object-proxy","value":{"rev":"3-4d531308fc97bac6f6f9acd1e8f5b53a"}},
-{"id":"object-sync","key":"object-sync","value":{"rev":"5-6628fff49d65c96edc9d7a2e13db8d6d"}},
-{"id":"observer","key":"observer","value":{"rev":"3-a48052671a59b1c7874b4462e375664d"}},
-{"id":"octo.io","key":"octo.io","value":{"rev":"7-5692104396299695416ecb8548e53541"}},
-{"id":"octopus","key":"octopus","value":{"rev":"3-0a286abf59ba7232210e24a371902e7b"}},
-{"id":"odbc","key":"odbc","value":{"rev":"3-8550f0b183b229e41f3cb947bad9b059"}},
-{"id":"odot","key":"odot","value":{"rev":"13-3954b69c1a560a71fe58ab0c5c1072ba"}},
-{"id":"offliner","key":"offliner","value":{"rev":"3-9b58041cbd7b0365e04fec61c192c9b2"}},
-{"id":"ofxer","key":"ofxer","value":{"rev":"11-f8a79e1f27c92368ca1198ad37fbe83e"}},
-{"id":"ogre","key":"ogre","value":{"rev":"35-ea9c78c1d5b1761f059bb97ea568b23d"}},
-{"id":"oi.tekcos","key":"oi.tekcos","value":{"rev":"5-fdca9adb54acea3f91567082b107dde9"}},
-{"id":"oktest","key":"oktest","value":{"rev":"3-3b40312743a3eb1d8541ceee3ecfeace"}},
-{"id":"omcc","key":"omcc","value":{"rev":"3-19718e77bf82945c3ca7a3cdfb91188c"}},
-{"id":"omegle","key":"omegle","value":{"rev":"3-507ba8a51afbe2ff078e3e96712b7286"}},
-{"id":"ometa","key":"ometa","value":{"rev":"10-457fa17de89e1012ce812af3a53f4035"}},
-{"id":"ometa-highlighter","key":"ometa-highlighter","value":{"rev":"21-d18470d6d9a93bc7383c7d8ace22ad1d"}},
-{"id":"ometajs","key":"ometajs","value":{"rev":"20-c7e8c32926f2523e40e4a7ba2297192c"}},
-{"id":"onion","key":"onion","value":{"rev":"3-b46c000c8ff0b06f5f0028d268bc5c94"}},
-{"id":"onvalid","key":"onvalid","value":{"rev":"3-090bc1cf1418545b84db0fceb0846293"}},
-{"id":"oo","key":"oo","value":{"rev":"7-2297a18cdbcf29ad4867a2159912c04e"}},
-{"id":"oop","key":"oop","value":{"rev":"7-45fab8bae343e805d0c1863149dc20df"}},
-{"id":"op","key":"op","value":{"rev":"13-4efb059757caaecc18d5110b44266b35"}},
-{"id":"open-uri","key":"open-uri","value":{"rev":"21-023a00f26ecd89e278136fbb417ae9c3"}},
-{"id":"open.core","key":"open.core","value":{"rev":"35-f578db4e41dd4ae9128e3be574cf7b14"}},
-{"id":"open311","key":"open311","value":{"rev":"13-bb023a45d3c3988022d2fef809de8d98"}},
-{"id":"openid","key":"openid","value":{"rev":"29-b3c8a0e76d99ddb80c98d2aad5586771"}},
-{"id":"openlayers","key":"openlayers","value":{"rev":"3-602c34468c9be326e95be327b58d599b"}},
-{"id":"opentok","key":"opentok","value":{"rev":"5-5f4749f1763d45141d0272c1dbe6249a"}},
-{"id":"opentsdb-dashboard","key":"opentsdb-dashboard","value":{"rev":"3-2e0c5ccf3c9cfce17c20370c93283707"}},
-{"id":"opower-jobs","key":"opower-jobs","value":{"rev":"16-1602139f92e58d88178f21f1b3e0939f"}},
-{"id":"optimist","key":"optimist","value":{"rev":"64-ca3e5085acf135169d79949c25d84690"}},
-{"id":"optparse","key":"optparse","value":{"rev":"6-0200c34395f982ae3b80f4d18cb14483"}},
-{"id":"opts","key":"opts","value":{"rev":"8-ce2a0e31de55a1e02d5bbff66c4e8794"}},
-{"id":"orchestra","key":"orchestra","value":{"rev":"9-52ca98cddb51a2a43ec02338192c44fc"}},
-{"id":"orchid","key":"orchid","value":{"rev":"49-af9635443671ed769e4efa691b8ca84a"}},
-{"id":"orderly","key":"orderly","value":{"rev":"3-9ccc42d45b64278c9ffb1e64fc4f0d62"}},
-{"id":"orgsync.live","key":"orgsync.live","value":{"rev":"3-4dffc8ac43931364f59b9cb534acbaef"}},
-{"id":"orm","key":"orm","value":{"rev":"21-f3e7d89239364559d306110580bbb08f"}},
-{"id":"ormnomnom","key":"ormnomnom","value":{"rev":"15-0aacfbb5b7b580d76e9ecf5214a1d5ed"}},
-{"id":"orona","key":"orona","value":{"rev":"8-62d4ba1bf49098a140a2b85f80ebb103"}},
-{"id":"osc4node","key":"osc4node","value":{"rev":"3-0910613e78065f78b61142b35986e8b3"}},
-{"id":"oscar","key":"oscar","value":{"rev":"3-f5d2d39a67c67441bc2135cdaf2b47f8"}},
-{"id":"osrandom","key":"osrandom","value":{"rev":"3-026016691a5ad068543503e5e7ce6a84"}},
-{"id":"ossp-uuid","key":"ossp-uuid","value":{"rev":"10-8b7e1fba847d7cc9aa4f4c8813ebe6aa"}},
-{"id":"ostatus","key":"ostatus","value":{"rev":"3-76e0ec8c61c6df15c964197b722e24e7"}},
-{"id":"ostrich","key":"ostrich","value":{"rev":"3-637e0821e5ccfd0f6b1261b22c168c8d"}},
-{"id":"otk","key":"otk","value":{"rev":"5-2dc24e159cc618f43e573561286c4dcd"}},
-{"id":"ourl","key":"ourl","value":{"rev":"5-a3945e59e33faac96c75b508ef7fa1fb"}},
-{"id":"oursql","key":"oursql","value":{"rev":"21-bc53ab462155fa0aedbe605255fb9988"}},
-{"id":"out","key":"out","value":{"rev":"5-eb261f940b6382e2689210a58bc1b440"}},
-{"id":"overload","key":"overload","value":{"rev":"10-b88919e5654bef4922029afad4f1d519"}},
-{"id":"ox","key":"ox","value":{"rev":"3-0ca445370b4f76a93f2181ad113956d9"}},
-{"id":"pachube","key":"pachube","value":{"rev":"10-386ac6be925bab307b5d545516fb18ef"}},
-{"id":"pachube-stream","key":"pachube-stream","value":{"rev":"13-176dadcc5c516420fb3feb1f964739e0"}},
-{"id":"pack","key":"pack","value":{"rev":"29-8f8c511d95d1fb322c1a6d7965ef8f29"}},
-{"id":"packagebohrer","key":"packagebohrer","value":{"rev":"3-507358253a945a74c49cc169ad0bf5a2"}},
-{"id":"packer","key":"packer","value":{"rev":"9-23410d893d47418731e236cfcfcfbf03"}},
-{"id":"packet","key":"packet","value":{"rev":"8-1b366f97d599c455dcbbe4339da7cf9e"}},
-{"id":"pacote-sam-egenial","key":"pacote-sam-egenial","value":{"rev":"3-b967db1b9fceb9a937f3520efd89f479"}},
-{"id":"pacoteegenial","key":"pacoteegenial","value":{"rev":"3-9cfe8518b885bfd9a44ed38814f7d623"}},
-{"id":"pact","key":"pact","value":{"rev":"7-82996c1a0c8e9a5e9df959d4ad37085e"}},
-{"id":"pad","key":"pad","value":{"rev":"3-eef6147f09b662cff95c946f2b065da5"}},
-{"id":"paddle","key":"paddle","value":{"rev":"3-fedd0156b9a0dadb5e9b0f1cfab508fd"}},
-{"id":"padlock","key":"padlock","value":{"rev":"9-3a9e378fbe8e3817da7999f675af227e"}},
-{"id":"pagen","key":"pagen","value":{"rev":"9-9aac56724039c38dcdf7f6d5cbb4911c"}},
-{"id":"paginate-js","key":"paginate-js","value":{"rev":"5-995269155152db396662c59b67e9e93d"}},
-{"id":"pairtree","key":"pairtree","value":{"rev":"3-0361529e6c91271e2a61f3d7fd44366e"}},
-{"id":"palsu-app","key":"palsu-app","value":{"rev":"3-73f1fd9ae35e3769efc9c1aa25ec6da7"}},
-{"id":"pam","key":"pam","value":{"rev":"3-77b5bd15962e1c8be1980b33fd3b9737"}},
-{"id":"panache","key":"panache","value":{"rev":"25-749d2034f7f9179c2266cf896bb4abb0"}},
-{"id":"panic","key":"panic","value":{"rev":"7-068b22be54ca8ae7b03eb153c2ea849a"}},
-{"id":"pantry","key":"pantry","value":{"rev":"33-3896f0fc165092f6cabb2949be3952c4"}},
-{"id":"paper-keys","key":"paper-keys","value":{"rev":"3-729378943040ae01d59f07bb536309b7"}},
-{"id":"paperboy","key":"paperboy","value":{"rev":"8-db2d51c2793b4ffc82a1ae928c813aae"}},
-{"id":"paperserve","key":"paperserve","value":{"rev":"6-8509fb68217199a3eb74f223b1e2bee5"}},
-{"id":"parall","key":"parall","value":{"rev":"5-279d7105a425e136f6101250e8f81a14"}},
-{"id":"parallel","key":"parallel","value":{"rev":"14-f1294b3b840cfb26095107110b6720ec"}},
-{"id":"paramon","key":"paramon","value":{"rev":"3-37e599e924beb509c894c992cf72791b"}},
-{"id":"parannus","key":"parannus","value":{"rev":"7-7541f1ed13553261330b9e1c4706f112"}},
-{"id":"parasite","key":"parasite","value":{"rev":"13-83c26181bb92cddb8ff76bc154a50210"}},
-{"id":"parrot","key":"parrot","value":{"rev":"3-527d1cb4b5be0e252dc92a087d380f17"}},
-{"id":"parseUri","key":"parseUri","value":{"rev":"3-3b60b1fd6d8109279b5d0cfbdb89b343"}},
-{"id":"parseopt","key":"parseopt","value":{"rev":"10-065f1acaf02c94f0684f75fefc2fd1ec"}},
-{"id":"parser","key":"parser","value":{"rev":"5-f661f0b7ede9b6d3e0de259ed20759b1"}},
-{"id":"parser_email","key":"parser_email","value":{"rev":"12-63333860c62f2a9c9d6b0b7549bf1cdc"}},
-{"id":"parstream","key":"parstream","value":{"rev":"3-ef7e8ffc8ce1e7d951e37f85bfd445ab"}},
-{"id":"parted","key":"parted","value":{"rev":"9-250e4524994036bc92915b6760d62d8a"}},
-{"id":"partial","key":"partial","value":{"rev":"7-208411e6191275a4193755ee86834716"}},
-{"id":"party","key":"party","value":{"rev":"5-9337d8dc5e163f0300394f533ab1ecdf"}},
-{"id":"pashua","key":"pashua","value":{"rev":"3-b752778010f4e20f662a3d8f0f57b18b"}},
-{"id":"pass","key":"pass","value":{"rev":"3-66a2d55d93eae8535451f12965578db8"}},
-{"id":"passthru","key":"passthru","value":{"rev":"9-3c8f0b20f1a16976f3645a6f7411b56a"}},
-{"id":"passwd","key":"passwd","value":{"rev":"19-44ac384382a042faaa1f3b111786c831"}},
-{"id":"password","key":"password","value":{"rev":"9-0793f6a8d09076f25cde7c9e528eddec"}},
-{"id":"password-hash","key":"password-hash","value":{"rev":"9-590c62e275ad577c6f8ddbf5ba4579cc"}},
-{"id":"path","key":"path","value":{"rev":"3-3ec064cf3f3a85cb59528654c5bd938f"}},
-{"id":"pathjs","key":"pathjs","value":{"rev":"5-d5e1b1a63e711cae3ac79a3b1033b609"}},
-{"id":"pathname","key":"pathname","value":{"rev":"9-16f2c1473454900ce18a217b2ea52c57"}},
-{"id":"paths","key":"paths","value":{"rev":"3-fa47b7c1d533a7d9f4bbaffc5fb89905"}},
-{"id":"patr","key":"patr","value":{"rev":"7-7bcd37586389178b9f23d33c1d7a0292"}},
-{"id":"pattern","key":"pattern","value":{"rev":"36-3ded826185c384af535dcd428af3f626"}},
-{"id":"payment-paypal-payflowpro","key":"payment-paypal-payflowpro","value":{"rev":"14-d8814a1d8bba57a6ecf8027064adc7ad"}},
-{"id":"paynode","key":"paynode","value":{"rev":"16-16084e61db66ac18fdbf95a51d31c09a"}},
-{"id":"payos","key":"payos","value":{"rev":"3-373695bd80c454b32b83a5eba6044261"}},
-{"id":"paypal-ipn","key":"paypal-ipn","value":{"rev":"5-ef32291f9f8371b20509db3acee722f6"}},
-{"id":"pcap","key":"pcap","value":{"rev":"46-8ae9e919221102581d6bb848dc67b84b"}},
-{"id":"pd","key":"pd","value":{"rev":"7-82146739c4c0eb4e49e40aa80a29cc0a"}},
-{"id":"pdf","key":"pdf","value":{"rev":"6-5c6b6a133e1b3ce894ebb1a49090216c"}},
-{"id":"pdfcrowd","key":"pdfcrowd","value":{"rev":"5-026b4611b50374487bfd64fd3e0d562c"}},
-{"id":"pdfkit","key":"pdfkit","value":{"rev":"13-2fd34c03225a87dfd8057c85a83f3c50"}},
-{"id":"pdflatex","key":"pdflatex","value":{"rev":"3-bbbf61f09ebe4c49ca0aff8019611660"}},
-{"id":"pdl","key":"pdl","value":{"rev":"3-4c41bf12e901ee15bdca468db8c89102"}},
-{"id":"peanut","key":"peanut","value":{"rev":"55-b797121dbbcba1219934284ef56abb8a"}},
-{"id":"pebble","key":"pebble","value":{"rev":"21-3cd08362123260a2e96d96d80e723805"}},
-{"id":"pecode","key":"pecode","value":{"rev":"3-611f5e8c61bbf4467b84da954ebdd521"}},
-{"id":"pegjs","key":"pegjs","value":{"rev":"11-091040d16433014d1da895e32ac0f6a9"}},
-{"id":"per-second","key":"per-second","value":{"rev":"5-e1593b3f7008ab5e1c3cae86f39ba3f3"}},
-{"id":"permafrost","key":"permafrost","value":{"rev":"9-494cbc9a2f43a60b57f23c5f5b12270d"}},
-{"id":"perry","key":"perry","value":{"rev":"41-15aed7a778fc729ad62fdfb231c50774"}},
-{"id":"persistencejs","key":"persistencejs","value":{"rev":"20-2585af3f15f0a4a7395e937237124596"}},
-{"id":"pg","key":"pg","value":{"rev":"142-48de452fb8a84022ed7cae8ec2ebdaf6"}},
-{"id":"phonetap","key":"phonetap","value":{"rev":"7-2cc7d3c2a09518ad9b0fe816c6a99125"}},
-{"id":"php-autotest","key":"php-autotest","value":{"rev":"3-04470b38b259187729af574dd3dc1f97"}},
-{"id":"phpass","key":"phpass","value":{"rev":"3-66f4bec659bf45b312022bb047b18696"}},
-{"id":"piano","key":"piano","value":{"rev":"3-0bab6b5409e4305c87a775e96a2b7ad3"}},
-{"id":"picard","key":"picard","value":{"rev":"5-7676e6ad6d5154fdc016b001465891f3"}},
-{"id":"picardForTynt","key":"picardForTynt","value":{"rev":"3-09d205b790bd5022b69ec4ad54bad770"}},
-{"id":"pid","key":"pid","value":{"rev":"3-0ba7439d599b9d613461794c3892d479"}},
-{"id":"pieshop","key":"pieshop","value":{"rev":"12-7851afe1bbc20de5d054fe93b071f849"}},
-{"id":"pig","key":"pig","value":{"rev":"3-8e6968a7b64635fed1bad12c39d7a46a"}},
-{"id":"pigeons","key":"pigeons","value":{"rev":"53-8df70420d3c845cf0159b3f25d0aab90"}},
-{"id":"piles","key":"piles","value":{"rev":"3-140cb1e83b5a939ecd429b09886132ef"}},
-{"id":"pillar","key":"pillar","value":{"rev":"6-83c81550187f6d00e11dd9955c1c94b7"}},
-{"id":"pilot","key":"pilot","value":{"rev":"3-073ed1a083cbd4c2aa2561f19e5935ea"}},
-{"id":"pinboard","key":"pinboard","value":{"rev":"3-1020cab02a1183acdf82e1f7620dc1e0"}},
-{"id":"pinf-loader-js","key":"pinf-loader-js","value":{"rev":"5-709ba9c86fb4de906bd7bbca53771f0f"}},
-{"id":"pinf-loader-js-demos-npmpackage","key":"pinf-loader-js-demos-npmpackage","value":{"rev":"3-860569d98c83e59185cff356e56b10a6"}},
-{"id":"pingback","key":"pingback","value":{"rev":"5-5d0a05d65a14f6837b0deae16c550bec"}},
-{"id":"pingdom","key":"pingdom","value":{"rev":"11-f299d6e99122a9fa1497bfd166dadd02"}},
-{"id":"pintpay","key":"pintpay","value":{"rev":"3-eba9c4059283adec6b1ab017284c1f17"}},
-{"id":"pipe","key":"pipe","value":{"rev":"5-d202bf317c10a52ac817b5c1a4ce4c88"}},
-{"id":"pipe_utils","key":"pipe_utils","value":{"rev":"13-521857c99eb76bba849a22240308e584"}},
-{"id":"pipegram","key":"pipegram","value":{"rev":"3-1449333c81dd658d5de9eebf36c07709"}},
-{"id":"pipeline-surveyor","key":"pipeline-surveyor","value":{"rev":"11-464db89b17e7b44800088ec4a263d92e"}},
-{"id":"pipes","key":"pipes","value":{"rev":"99-8320636ff840a61d82d9c257a2e0ed48"}},
-{"id":"pipes-cellar","key":"pipes-cellar","value":{"rev":"27-e035e58a3d82e50842d766bb97ea3ed9"}},
-{"id":"pipes-cohort","key":"pipes-cohort","value":{"rev":"9-88fc0971e01516873396e44974874903"}},
-{"id":"piton-entity","key":"piton-entity","value":{"rev":"31-86254212066019f09d67dfd58524bd75"}},
-{"id":"piton-http-utils","key":"piton-http-utils","value":{"rev":"3-6cf6aa0c655ff6118d53e62e3b970745"}},
-{"id":"piton-mixin","key":"piton-mixin","value":{"rev":"3-7b7737004e53e04f7f95ba5850eb5e70"}},
-{"id":"piton-pipe","key":"piton-pipe","value":{"rev":"3-8d7df4e53f620ef2f24e9fc8b24f0238"}},
-{"id":"piton-simplate","key":"piton-simplate","value":{"rev":"3-9ac00835d3de59d535cdd2347011cdc9"}},
-{"id":"piton-string-utils","key":"piton-string-utils","value":{"rev":"3-ecab73993d764dfb378161ea730dbbd5"}},
-{"id":"piton-validity","key":"piton-validity","value":{"rev":"13-1766651d69e3e075bf2c66b174b66026"}},
-{"id":"pixel-ping","key":"pixel-ping","value":{"rev":"11-38d717c927e13306e8ff9032785b50f2"}},
-{"id":"pixelcloud","key":"pixelcloud","value":{"rev":"7-0897d734157b52dece8f86cde7be19d4"}},
-{"id":"pixiedust","key":"pixiedust","value":{"rev":"3-6b932dee4b6feeed2f797de5d0066f8a"}},
-{"id":"pkginfo","key":"pkginfo","value":{"rev":"13-3ee42503d6672812960a965d4f3a1bc2"}},
-{"id":"pksqlite","key":"pksqlite","value":{"rev":"13-095e7d7d0258b71491c39d0e8c4f19be"}},
-{"id":"plants.js","key":"plants.js","value":{"rev":"3-e3ef3a16f637787e84c100a9b9ec3b08"}},
-{"id":"plate","key":"plate","value":{"rev":"20-92ba0729b2edc931f28870fe7f2ca95a"}},
-{"id":"platform","key":"platform","value":{"rev":"4-be465a1d21be066c96e30a42b8602177"}},
-{"id":"platformjs","key":"platformjs","value":{"rev":"35-5c510fa0c90492fd1d0f0fc078460018"}},
-{"id":"platoon","key":"platoon","value":{"rev":"28-e0e0c5f852eadacac5a652860167aa11"}},
-{"id":"play","key":"play","value":{"rev":"5-17f7cf7cf5d1c21c7392f3c43473098d"}},
-{"id":"plist","key":"plist","value":{"rev":"10-2a23864923aeed93fb8e25c4b5b2e97e"}},
-{"id":"png","key":"png","value":{"rev":"14-9cc7aeaf0c036c9a880bcee5cd46229a"}},
-{"id":"png-guts","key":"png-guts","value":{"rev":"5-a29c7c686f9d08990ce29632bf59ef90"}},
-{"id":"policyfile","key":"policyfile","value":{"rev":"21-4a9229cca4bcac10f730f296f7118548"}},
-{"id":"polla","key":"polla","value":{"rev":"27-9af5a575961a4dddb6bef482c168c756"}},
-{"id":"poly","key":"poly","value":{"rev":"3-7f7fe29d9f0ec4fcbf8481c797b20455"}},
-{"id":"polyglot","key":"polyglot","value":{"rev":"3-9306e246d1f8b954b41bef76e3e81291"}},
-{"id":"pool","key":"pool","value":{"rev":"10-f364b59aa8a9076a17cd94251dd013ab"}},
-{"id":"poolr","key":"poolr","value":{"rev":"5-cacfbeaa7aaca40c1a41218e8ac8b732"}},
-{"id":"pop","key":"pop","value":{"rev":"41-8edd9ef2f34a90bf0ec5e8eb0e51e644"}},
-{"id":"pop-disqus","key":"pop-disqus","value":{"rev":"3-4a8272e6a8453ed2d754397dc8b349bb"}},
-{"id":"pop-ga","key":"pop-ga","value":{"rev":"3-5beaf7b355d46b3872043b97696ee693"}},
-{"id":"pop-gallery","key":"pop-gallery","value":{"rev":"3-1a88920ff930b8ce51cd50fcfe62675e"}},
-{"id":"pop3-client","key":"pop3-client","value":{"rev":"3-be8c314b0479d9d98384e2ff36d7f207"}},
-{"id":"poplib","key":"poplib","value":{"rev":"7-ab64c5c35269aee897b0904b4548096b"}},
-{"id":"porter-stemmer","key":"porter-stemmer","value":{"rev":"5-724a7b1d635b95a14c9ecd9d2f32487d"}},
-{"id":"portfinder","key":"portfinder","value":{"rev":"5-cdf36d1c666bbdae500817fa39b9c2bd"}},
-{"id":"portscanner","key":"portscanner","value":{"rev":"3-773c1923b6f3b914bd801476efcfdf64"}},
-{"id":"pos","key":"pos","value":{"rev":"3-1c1a27020560341ecd1b54d0e3cfaf2a"}},
-{"id":"posix-getopt","key":"posix-getopt","value":{"rev":"3-819b69724575b65fe25cf1c768e1b1c6"}},
-{"id":"postageapp","key":"postageapp","value":{"rev":"9-f5735237f7e6f0b467770e28e84c56db"}},
-{"id":"postal","key":"postal","value":{"rev":"19-dd70aeab4ae98ccf3d9f203dff9ccf37"}},
-{"id":"posterous","key":"posterous","value":{"rev":"3-6f8a9e7cae8a26f021653f2c27b0c67f"}},
-{"id":"postgres","key":"postgres","value":{"rev":"6-e8844a47c83ff3ef0a1ee7038b2046b2"}},
-{"id":"postgres-js","key":"postgres-js","value":{"rev":"3-bbe27a49ee9f8ae8789660e178d6459d"}},
-{"id":"postman","key":"postman","value":{"rev":"5-548538583f2e7ad448adae27f9a801e5"}},
-{"id":"postmark","key":"postmark","value":{"rev":"24-a6c61b346329e499d4a4a37dbfa446a2"}},
-{"id":"postmark-api","key":"postmark-api","value":{"rev":"3-79973af301aa820fc18c2c9d418adcd7"}},
-{"id":"postmessage","key":"postmessage","value":{"rev":"5-854bdb27c2a1af5b629b01f7d69691fe"}},
-{"id":"postpie","key":"postpie","value":{"rev":"10-88527e2731cd07a3b8ddec2608682700"}},
-{"id":"postprocess","key":"postprocess","value":{"rev":"5-513ecd54bf8df0ae73d2a50c717fd939"}},
-{"id":"potato","key":"potato","value":{"rev":"3-0f4cab343859692bf619e79cd9cc5be1"}},
-{"id":"pour","key":"pour","value":{"rev":"7-272bee63c5f19d12102198a23a4af902"}},
-{"id":"pow","key":"pow","value":{"rev":"22-58b557cd71ec0e95eef51dfd900e4736"}},
-{"id":"precious","key":"precious","value":{"rev":"19-b370292b258bcbca02c5d8861ebee0bb"}},
-{"id":"predicate","key":"predicate","value":{"rev":"3-1c6d1871fe71bc61457483793eecf7f9"}},
-{"id":"prefer","key":"prefer","value":{"rev":"11-236b9d16cd019e1d9af41e745bfed754"}},
-{"id":"prenup","key":"prenup","value":{"rev":"3-4c56ddf1ee22cd90c85963209736bc75"}},
-{"id":"pretty-json","key":"pretty-json","value":{"rev":"5-2dbb22fc9573c19e64725ac331a8d59c"}},
-{"id":"prettyfy","key":"prettyfy","value":{"rev":"3-fc7e39aad63a42533d4ac6d6bfa32325"}},
-{"id":"prick","key":"prick","value":{"rev":"10-71a02e1be02df2af0e6a958099be565a"}},
-{"id":"printf","key":"printf","value":{"rev":"5-2896b8bf90df19d4a432153211ca3a7e"}},
-{"id":"pro","key":"pro","value":{"rev":"5-e98adaf2f741e00953bbb942bbeb14d2"}},
-{"id":"probe_couchdb","key":"probe_couchdb","value":{"rev":"28-86f8918a3e64608f8009280fb28a983d"}},
-{"id":"process","key":"process","value":{"rev":"3-6865fc075d8083afd8e2aa266512447c"}},
-{"id":"procfile","key":"procfile","value":{"rev":"3-22dbb2289f5fb3060a8f7833b50116a4"}},
-{"id":"profile","key":"profile","value":{"rev":"29-5afee07fe4c334d9836fda1df51e1f2d"}},
-{"id":"profilejs","key":"profilejs","value":{"rev":"9-128c2b0e09624ee69a915cff20cdf359"}},
-{"id":"profiler","key":"profiler","value":{"rev":"13-4f1582fad93cac11daad5d5a67565e4f"}},
-{"id":"progress","key":"progress","value":{"rev":"7-bba60bc39153fa0fbf5e909b6df213b0"}},
-{"id":"progress-bar","key":"progress-bar","value":{"rev":"5-616721d3856b8e5a374f247404d6ab29"}},
-{"id":"progressify","key":"progressify","value":{"rev":"5-0379cbed5adc2c3f3ac6adf0307ec11d"}},
-{"id":"proj4js","key":"proj4js","value":{"rev":"5-7d209ce230f6a2d5931800acef436a06"}},
-{"id":"projectwatch","key":"projectwatch","value":{"rev":"15-d0eca46ffc3d9e18a51db2d772fa2778"}},
-{"id":"promise","key":"promise","value":{"rev":"3-1409350eb10aa9055ed13a5b59f0abc3"}},
-{"id":"promised-fs","key":"promised-fs","value":{"rev":"28-1d3e0dd1884e1c39a5d5e2d35bb1f911"}},
-{"id":"promised-http","key":"promised-http","value":{"rev":"8-3f8d560c800ddd44a617bf7d7c688392"}},
-{"id":"promised-io","key":"promised-io","value":{"rev":"11-e9a280e85c021cd8b77e524aac50fafb"}},
-{"id":"promised-traits","key":"promised-traits","value":{"rev":"14-62d0ac59d4ac1c6db99c0273020565ea"}},
-{"id":"promised-utils","key":"promised-utils","value":{"rev":"20-0c2488685eb8999c40ee5e7cfa4fd75d"}},
-{"id":"prompt","key":"prompt","value":{"rev":"32-d52a524c147e34c1258facab69660cc2"}},
-{"id":"props","key":"props","value":{"rev":"17-8c4c0bf1b69087510612c8d5ccbfbfeb"}},
-{"id":"proserver","key":"proserver","value":{"rev":"3-4b0a001404171eb0f6f3e5d73a35fcb1"}},
-{"id":"protege","key":"protege","value":{"rev":"150-9790c23d7b7eb5fb94cd5b8048bdbf10"}},
-{"id":"proto","key":"proto","value":{"rev":"6-29fe2869f34e2737b0cc2a0dbba8e397"}},
-{"id":"proto-list","key":"proto-list","value":{"rev":"3-0f64ff29a4a410d5e03a57125374b87b"}},
-{"id":"protobuf-stream","key":"protobuf-stream","value":{"rev":"3-950e621ce7eef306eff5f932a9c4cbae"}},
-{"id":"protodiv","key":"protodiv","value":{"rev":"9-ed8d84033943934eadf5d95dfd4d8eca"}},
-{"id":"proton","key":"proton","value":{"rev":"19-8ad32d57a3e71df786ff41ef8c7281f2"}},
-{"id":"protoparse","key":"protoparse","value":{"rev":"3-9fbcc3b26220f974d4b9c9c883a0260b"}},
-{"id":"prototype","key":"prototype","value":{"rev":"5-2a672703595e65f5d731a967b43655a7"}},
-{"id":"prowl","key":"prowl","value":{"rev":"5-ec480caa5a7db4f1ec2ce22d5eb1dad8"}},
-{"id":"prowler","key":"prowler","value":{"rev":"3-09747704f78c7c123fb1c719c4996924"}},
-{"id":"prox","key":"prox","value":{"rev":"5-0ac5f893b270a819d91f0c6581aca2a8"}},
-{"id":"proxify","key":"proxify","value":{"rev":"3-d24a979b708645328476bd42bd5aaba8"}},
-{"id":"proxino","key":"proxino","value":{"rev":"7-894cc6d453af00e5e39ebc8f0b0abe3a"}},
-{"id":"proxio","key":"proxio","value":{"rev":"55-a1b2744054b3dc3adc2f7f67d2c026a4"}},
-{"id":"proxy","key":"proxy","value":{"rev":"3-c6dd1a8b58e0ed7ac983c89c05ee987d"}},
-{"id":"proxy-by-url","key":"proxy-by-url","value":{"rev":"5-acfcf47f3575cea6594513ff459c5f2c"}},
-{"id":"pseudo","key":"pseudo","value":{"rev":"11-4d894a335036d96cdb9bb19f7b857293"}},
-{"id":"psk","key":"psk","value":{"rev":"17-375055bf6315476a37b5fadcdcb6b149"}},
-{"id":"pty","key":"pty","value":{"rev":"8-0b3ea0287fd23f882da27dabce4e3230"}},
-{"id":"pub-mix","key":"pub-mix","value":{"rev":"3-2c455b249167cbf6b1a6ea761bf119f4"}},
-{"id":"pubjs","key":"pubjs","value":{"rev":"3-a0ceab8bc6ec019dfcf9a8e16756bea0"}},
-{"id":"publicsuffix","key":"publicsuffix","value":{"rev":"8-1592f0714595c0ca0433272c60afc733"}},
-{"id":"publisher","key":"publisher","value":{"rev":"13-f2c8722f14732245d3ca8842fe5b7661"}},
-{"id":"pubnub-client","key":"pubnub-client","value":{"rev":"8-6e511a6dd2b7feb6cefe410facd61f53"}},
-{"id":"pubsub","key":"pubsub","value":{"rev":"11-6c6270bf95af417fb766c05f66b2cc9e"}},
-{"id":"pubsub.io","key":"pubsub.io","value":{"rev":"24-9686fe9ae3356966dffee99f53eaad2c"}},
-{"id":"pubsubd","key":"pubsubd","value":{"rev":"3-b1ff2fa958bd450933735162e9615449"}},
-{"id":"pulley","key":"pulley","value":{"rev":"13-f81ed698175ffd0b5b19357a623b8f15"}},
-{"id":"pulse","key":"pulse","value":{"rev":"9-da4bdabb6d7c189d05c8d6c64713e4ac"}},
-{"id":"pulverizr","key":"pulverizr","value":{"rev":"16-ffd4db4d2b1bfbd0b6ac794dca9e728e"}},
-{"id":"pulverizr-bal","key":"pulverizr-bal","value":{"rev":"5-dba279d07f3ed72990d10f11c5d10792"}},
-{"id":"punycode","key":"punycode","value":{"rev":"3-c0df35bb32d1490a4816161974610682"}},
-{"id":"puppy","key":"puppy","value":{"rev":"3-355fb490dba55efdf8840e2769cb7f41"}},
-{"id":"pure","key":"pure","value":{"rev":"7-b2da0d64ea12cea63bed940222bb36df"}},
-{"id":"purpose","key":"purpose","value":{"rev":"3-ef30ac479535bd603954c27ecb5d564a"}},
-{"id":"push-it","key":"push-it","value":{"rev":"35-2640be8ca8938768836520ce5fc7fff2"}},
-{"id":"pusher","key":"pusher","value":{"rev":"5-eb363d1e0ea2c59fd92a07ea642c5d03"}},
-{"id":"pusher-pipe","key":"pusher-pipe","value":{"rev":"11-11ab87d1288a8c7d11545fdab56616f6"}},
-{"id":"pushinator","key":"pushinator","value":{"rev":"15-6b2c37931bc9438e029a6af0cf97091c"}},
-{"id":"put","key":"put","value":{"rev":"12-4b05a7cdfdb24a980597b38781457cf5"}},
-{"id":"put-selector","key":"put-selector","value":{"rev":"1-1a9b3b8b5a44485b93966503370978aa"}},
-{"id":"putio","key":"putio","value":{"rev":"3-973b65e855e1cd0d3cc685542263cc55"}},
-{"id":"pwilang","key":"pwilang","value":{"rev":"43-49ad04f5abbdd9c5b16ec0271ab17520"}},
-{"id":"py","key":"py","value":{"rev":"3-aade832559d0fab88116aa794e3a9f35"}},
-{"id":"pygments","key":"pygments","value":{"rev":"3-2b2c96f39bdcb9ff38eb7d4bac7c90ba"}},
-{"id":"python","key":"python","value":{"rev":"15-706af811b5544a4aacc6ad1e9863e369"}},
-{"id":"q","key":"q","value":{"rev":"80-fd2397ad465750240d0f22a0abc53de5"}},
-{"id":"q-comm","key":"q-comm","value":{"rev":"17-972994947f097fdcffcfcb2277c966ce"}},
-{"id":"q-fs","key":"q-fs","value":{"rev":"68-958b01dd5bdc4da5ba3c1cd02c85fc0e"}},
-{"id":"q-http","key":"q-http","value":{"rev":"26-42a7db91b650386d920f52afe3e9161f"}},
-{"id":"q-io","key":"q-io","value":{"rev":"20-79f7b3d43bcbd53cc57b6531426738e2"}},
-{"id":"q-io-buffer","key":"q-io-buffer","value":{"rev":"5-05528d9a527da73357991bec449a1b76"}},
-{"id":"q-require","key":"q-require","value":{"rev":"12-e3fc0388e4d3e6d8a15274c3cc239712"}},
-{"id":"q-util","key":"q-util","value":{"rev":"10-94e0c392e70fec942aee0f024e5c090f"}},
-{"id":"qbox","key":"qbox","value":{"rev":"17-88f9148881ede94ae9dcbf4e1980aa69"}},
-{"id":"qfi","key":"qfi","value":{"rev":"3-a6052f02aec10f17085b09e4f9da1ce0"}},
-{"id":"qjscl","key":"qjscl","value":{"rev":"11-def1631b117a53cab5fd38ffec28d727"}},
-{"id":"qooxdoo","key":"qooxdoo","value":{"rev":"5-720d33ec2de3623d6535b3bdc8041d81"}},
-{"id":"qoper8","key":"qoper8","value":{"rev":"11-48fa2ec116bec46d64161e35b0f0cd86"}},
-{"id":"qq","key":"qq","value":{"rev":"23-6f7a5f158364bbf2e90a0c6eb1fbf8a9"}},
-{"id":"qqwry","key":"qqwry","value":{"rev":"10-bf0d6cc2420bdad92a1104c184e7e045"}},
-{"id":"qr","key":"qr","value":{"rev":"11-0a0120b7ec22bbcf76ff1d78fd4a7689"}},
-{"id":"qrcode","key":"qrcode","value":{"rev":"11-b578b6a76bffe996a0390e3d886b79bb"}},
-{"id":"qs","key":"qs","value":{"rev":"23-3da45c8c8a5eb33d45360d92b6072d37"}},
-{"id":"quack-array","key":"quack-array","value":{"rev":"5-6b676aa6273e4515ab5e7bfee1c331e0"}},
-{"id":"quadprog","key":"quadprog","value":{"rev":"7-c0ceeeb12735f334e8c7940ac1f0a896"}},
-{"id":"quadraticon","key":"quadraticon","value":{"rev":"66-1da88ea871e6f90967b9f65c0204309d"}},
-{"id":"quasi","key":"quasi","value":{"rev":"3-6fe0faa91d849938d8c92f91b0828395"}},
-{"id":"query","key":"query","value":{"rev":"13-635ff8d88c6a3f9d92f9ef465b14fb82"}},
-{"id":"query-engine","key":"query-engine","value":{"rev":"21-66feaee07df9fa1f625ac797e8f6b90b"}},
-{"id":"querystring","key":"querystring","value":{"rev":"5-2b509239fafba56319137bfbe1e9eeb7"}},
-{"id":"queue","key":"queue","value":{"rev":"3-5c4af574e5056f7e6ceb9bfefc1c632d"}},
-{"id":"queuelib","key":"queuelib","value":{"rev":"61-87c2abc94a5ad40af8193fac9a1d9f7e"}},
-{"id":"quickcheck","key":"quickcheck","value":{"rev":"7-64e6c1e9efc08a89abe3d01c414d1411"}},
-{"id":"quickserve","key":"quickserve","value":{"rev":"3-9c19f8ad7daf06182f42b8c7063b531f"}},
-{"id":"quip","key":"quip","value":{"rev":"8-0624055f5056f72bc719340c95e5111a"}},
-{"id":"qunit","key":"qunit","value":{"rev":"37-6e7fefdaffab8fc5fb92a391da227c38"}},
-{"id":"qunit-tap","key":"qunit-tap","value":{"rev":"22-0266cd1b5bb7cbab89fa52642f0e8277"}},
-{"id":"qwery","key":"qwery","value":{"rev":"66-29f9b44da544a3a9b4537a85ceace7c8"}},
-{"id":"qwery-mobile","key":"qwery-mobile","value":{"rev":"5-182264ca68c30519bf0d29cf1e15854b"}},
-{"id":"raZerdummy","key":"raZerdummy","value":{"rev":"7-1fa549e0cff60795b49cbd3732f32175"}},
-{"id":"rabbit.js","key":"rabbit.js","value":{"rev":"3-dbcd5cd590576673c65b34c44ff06bec"}},
-{"id":"rabblescay","key":"rabblescay","value":{"rev":"5-3fea196ffd581a842a24ab7bb2118fe2"}},
-{"id":"racer","key":"racer","value":{"rev":"51-41c65689a335d70fa6b55b9706b9c0fe"}},
-{"id":"radcouchdb","key":"radcouchdb","value":{"rev":"3-64ccb4d0acb2b11cbb1d3fcef5f9a68e"}},
-{"id":"radio-stream","key":"radio-stream","value":{"rev":"6-c5f80a0bef7bbaacdd22d92da3d09244"}},
-{"id":"railway","key":"railway","value":{"rev":"74-5ce92a45c7d11540b0e2b5a8455361ce"}},
-{"id":"railway-mailer","key":"railway-mailer","value":{"rev":"3-8df2fbe4af4d3b1f12557d8397bf0548"}},
-{"id":"railway-twitter","key":"railway-twitter","value":{"rev":"3-df984f182bb323052e36876e8e3a066c"}},
-{"id":"rand","key":"rand","value":{"rev":"11-abb69107c390e2a6dcec64cb72f36096"}},
-{"id":"random","key":"random","value":{"rev":"7-32550b221f3549b67f379c1c2dbc5c57"}},
-{"id":"random-data","key":"random-data","value":{"rev":"5-ae651ea36724105b8677ae489082ab4d"}},
-{"id":"range","key":"range","value":{"rev":"3-1d3925f30ffa6b5f3494d507fcef3aa1"}},
-{"id":"ranger","key":"ranger","value":{"rev":"17-6135a9a9d83cbd3945f1ce991f276cb8"}},
-{"id":"rap-battle","key":"rap-battle","value":{"rev":"3-6960516c0d27906bb9343805a5eb0e45"}},
-{"id":"raphael","key":"raphael","value":{"rev":"7-012f159593a82e4587ea024a5d4fbe41"}},
-{"id":"raphael-zoom","key":"raphael-zoom","value":{"rev":"3-aaab74bebbeb4241cade4f4d3c9b130e"}},
-{"id":"rapid","key":"rapid","value":{"rev":"8-ae0b05388c7904fc88c743e3dcde1d9d"}},
-{"id":"rasputin","key":"rasputin","value":{"rev":"3-87cdd9bd591606f4b8439e7a76681c7b"}},
-{"id":"rate-limiter","key":"rate-limiter","value":{"rev":"3-24cd20fef83ce02f17dd383b72f5f125"}},
-{"id":"rats","key":"rats","value":{"rev":"3-1ff1efb311451a17789da910eaf59fb6"}},
-{"id":"raydash","key":"raydash","value":{"rev":"7-96c345beb3564d2789d209d1fe695857"}},
-{"id":"rbytes","key":"rbytes","value":{"rev":"13-cf09d91347a646f590070e516f0c9bc9"}},
-{"id":"rdf","key":"rdf","value":{"rev":"3-9a5012d1fc10da762dbe285d0b317499"}},
-{"id":"rdf-raptor-parser","key":"rdf-raptor-parser","value":{"rev":"11-25c61e4d57cf67ee8a5afb6dfcf193e3"}},
-{"id":"rdfstore","key":"rdfstore","value":{"rev":"41-4499a73efc48ad07234e56fd4e27e4e0"}},
-{"id":"rdio","key":"rdio","value":{"rev":"5-fa20a8ab818a6150e38e9bb7744968f9"}},
-{"id":"rdx","key":"rdx","value":{"rev":"3-e1db5ee3aad06edd9eadcdaa8aaba149"}},
-{"id":"rea","key":"rea","value":{"rev":"3-f17ceeb35337bc9ccf9cb440d5c4dfaf"}},
-{"id":"read-files","key":"read-files","value":{"rev":"3-e08fac4abcdbc7312beb0362ff4427b4"}},
-{"id":"readability","key":"readability","value":{"rev":"3-475601a3d99d696763872c52bce6a155"}},
-{"id":"readabilitySAX","key":"readabilitySAX","value":{"rev":"19-83277777f3f721be26aca28c66227b01"}},
-{"id":"ready.js","key":"ready.js","value":{"rev":"39-8e309b8b274722c051c67f90885571e8"}},
-{"id":"readyjslint","key":"readyjslint","value":{"rev":"3-0a3742129bfbe07d47fcfb9ff67d39b2"}},
-{"id":"recaptcha","key":"recaptcha","value":{"rev":"8-8895926476be014fbe08b301294bf37b"}},
-{"id":"recaptcha-async","key":"recaptcha-async","value":{"rev":"9-3033260389f8afdb5351974119b78ca2"}},
-{"id":"recline","key":"recline","value":{"rev":"189-b56ab8c7791201dccf4aea2532189f1d"}},
-{"id":"recon","key":"recon","value":{"rev":"13-79cbddefb00fec6895342d18609cadb1"}},
-{"id":"reconf","key":"reconf","value":{"rev":"5-0596988db2cf9bf5921502a2aab24ade"}},
-{"id":"redback","key":"redback","value":{"rev":"37-03b390f69cacf42a46e393b7cf297d09"}},
-{"id":"rede","key":"rede","value":{"rev":"3-ee74c2fd990c7780dc823e22a9c3bef2"}},
-{"id":"redecard","key":"redecard","value":{"rev":"13-7dec5a50c34132a2f20f0f143d6b5215"}},
-{"id":"redim","key":"redim","value":{"rev":"15-91c9fd560d1ce87d210b461c52a6d258"}},
-{"id":"redis","key":"redis","value":{"rev":"98-ec237259e8ef5c42a76ff260be50f8fd"}},
-{"id":"redis-channels","key":"redis-channels","value":{"rev":"3-8efc40a25fd18c1c9c41bbaeedb0b22f"}},
-{"id":"redis-client","key":"redis-client","value":{"rev":"3-3376054236e651e7dfcf91be8632fd0e"}},
-{"id":"redis-completer","key":"redis-completer","value":{"rev":"11-9e5bf1f8d37df681e7896252809188d3"}},
-{"id":"redis-keyspace","key":"redis-keyspace","value":{"rev":"25-245f2375741eb3e574dfce9f2da2b687"}},
-{"id":"redis-lua","key":"redis-lua","value":{"rev":"7-81f3dd3a4601271818f15278f495717a"}},
-{"id":"redis-namespace","key":"redis-namespace","value":{"rev":"3-ddf52a172db190fe788aad4116b1cb29"}},
-{"id":"redis-node","key":"redis-node","value":{"rev":"24-7a1e9098d8b5a42a99ca71a01b0d7672"}},
-{"id":"redis-queue","key":"redis-queue","value":{"rev":"3-9896587800c4b98ff291b74210c16b6e"}},
-{"id":"redis-session-store","key":"redis-session-store","value":{"rev":"3-2229501ecf817f9ca60ff2c7721ddd73"}},
-{"id":"redis-tag","key":"redis-tag","value":{"rev":"9-6713e8e91a38613cfef09d7b40f4df71"}},
-{"id":"redis-url","key":"redis-url","value":{"rev":"5-f53545a0039b512a2f7afd4ba2e08773"}},
-{"id":"redis-user","key":"redis-user","value":{"rev":"11-a8c0f6d40cbfbb6183a46e121f31ec06"}},
-{"id":"redis2json","key":"redis2json","value":{"rev":"5-dd96f78f8db0bf695346c95c2ead1307"}},
-{"id":"redis_objects","key":"redis_objects","value":{"rev":"3-499fe6dd07e7a3839111b1892b97f54c"}},
-{"id":"redisev","key":"redisev","value":{"rev":"3-8e857dbe2341292c6e170a7bfe3fa81b"}},
-{"id":"redisfs","key":"redisfs","value":{"rev":"69-d9c90256d32348fdca7a4e646ab4d551"}},
-{"id":"redisify","key":"redisify","value":{"rev":"3-03fce3095b4129e71280d278f11121ba"}},
-{"id":"rediskit","key":"rediskit","value":{"rev":"5-6a0324708f45d884a492cbc408137059"}},
-{"id":"redisql","key":"redisql","value":{"rev":"6-b31802eb37910cb74bd3c9f7b477c025"}},
-{"id":"redmark","key":"redmark","value":{"rev":"5-8724ab00513b6bd7ddfdcd3cc2e0a4e8"}},
-{"id":"redmess","key":"redmess","value":{"rev":"13-14f58666444993ce899cd2260cdc9140"}},
-{"id":"redobj","key":"redobj","value":{"rev":"7-7ebbeffc306f4f7ff9b53ee57e1a250e"}},
-{"id":"redpack","key":"redpack","value":{"rev":"73-58b3fb3bcadf7d80fbe97d9e82d4928b"}},
-{"id":"reds","key":"reds","value":{"rev":"9-baebb36b92887d93fd79785a8c1e6355"}},
-{"id":"reed","key":"reed","value":{"rev":"45-5580f319dc3b5bfb66612ed5c7e17337"}},
-{"id":"reflect","key":"reflect","value":{"rev":"18-b590003cd55332160a5e5327e806e851"}},
-{"id":"reflect-builder","key":"reflect-builder","value":{"rev":"3-453d618b263f9452c0b6bbab0a701f49"}},
-{"id":"reflect-next","key":"reflect-next","value":{"rev":"9-4f2b27a38985d81e906e824321af7713"}},
-{"id":"reflect-tree-builder","key":"reflect-tree-builder","value":{"rev":"5-5f801f53e126dc8a72e13b1417904ce6"}},
-{"id":"reflect-unbuilder","key":"reflect-unbuilder","value":{"rev":"5-f36fd4182fd465a743198b5188697db9"}},
-{"id":"reflectjs","key":"reflectjs","value":{"rev":"3-e03bdb411ffcdd901b896a1cf43eea69"}},
-{"id":"reflex","key":"reflex","value":{"rev":"3-e8bb6b6de906265114b22036832ef650"}},
-{"id":"refmate","key":"refmate","value":{"rev":"3-7d44c45a2eb39236ad2071c84dc0fbba"}},
-{"id":"regext","key":"regext","value":{"rev":"4-97ca5c25fd2f3dc4bd1f3aa821d06f0f"}},
-{"id":"reid-yui3","key":"reid-yui3","value":{"rev":"5-cab8f6e22dfa9b9c508a5dd312bf56b0"}},
-{"id":"rel","key":"rel","value":{"rev":"7-f447870ac7a078f742e4295896646241"}},
-{"id":"relative-date","key":"relative-date","value":{"rev":"5-d0fa11f8100da888cbcce6e96d76b2e4"}},
-{"id":"reloadOnUpdate","key":"reloadOnUpdate","value":{"rev":"9-e7d4c215578b779b2f888381d398bd79"}},
-{"id":"reloaded","key":"reloaded","value":{"rev":"3-dba828b9ab73fc7ce8e47f98068bce8c"}},
-{"id":"remap","key":"remap","value":{"rev":"5-825ac1783df84aba3255c1d39f32ac00"}},
-{"id":"remedial","key":"remedial","value":{"rev":"17-9bb17db015e96db3c833f84d9dbd972a"}},
-{"id":"remote-console","key":"remote-console","value":{"rev":"6-104bae3ba9e4b0a8f772d0b8dc37007e"}},
-{"id":"remote_js","key":"remote_js","value":{"rev":"3-6c0e3058c33113346c037c59206ac0ec"}},
-{"id":"render","key":"render","value":{"rev":"27-fc8be4e9c50e49fb42df83e9446a1f58"}},
-{"id":"renode","key":"renode","value":{"rev":"11-107a3e15a987393157b47125487af296"}},
-{"id":"reparse","key":"reparse","value":{"rev":"10-210ec92e82f5a8515f45d20c7fa2f164"}},
-{"id":"repl","key":"repl","value":{"rev":"3-295279fe20b9ac54b2a235a6bc7013aa"}},
-{"id":"repl-edit","key":"repl-edit","value":{"rev":"18-eb2e604ab8bb65685376459beb417a31"}},
-{"id":"repl-utils","key":"repl-utils","value":{"rev":"7-fc31547ecb53e7e36610cdb68bcec582"}},
-{"id":"replace","key":"replace","value":{"rev":"17-a8976fcdbeb08e27ee2f0fc69ccd7c9d"}},
-{"id":"replica","key":"replica","value":{"rev":"3-f9dae960f91e8dc594f43b004f516d5f"}},
-{"id":"replicate","key":"replicate","value":{"rev":"3-3d6e52af6ff36c02139f619c7e5599c6"}},
-{"id":"replique","key":"replique","value":{"rev":"5-72d990b7d9ce9ff107d96be17490226a"}},
-{"id":"req2","key":"req2","value":{"rev":"3-712151f335b25b5bdef428982d77d0e0"}},
-{"id":"reqhooks","key":"reqhooks","value":{"rev":"17-2f0f0b73545bb1936f449a1ec4a28011"}},
-{"id":"request","key":"request","value":{"rev":"55-0d0b00eecde877ca5cd4ad9e0badc4d1"}},
-{"id":"require","key":"require","value":{"rev":"15-59e9fa05a9de52ee2a818c045736452b"}},
-{"id":"require-analyzer","key":"require-analyzer","value":{"rev":"72-f759f0cdc352df317df29791bfe451f1"}},
-{"id":"require-kiss","key":"require-kiss","value":{"rev":"5-f7ef9d7beda584e9c95635a281a01587"}},
-{"id":"require-like","key":"require-like","value":{"rev":"7-29d5de79e7ff14bb02da954bd9a2ee33"}},
-{"id":"requireincontext","key":"requireincontext","value":{"rev":"5-988ff7c27a21e527ceeb50cbedc8d1b0"}},
-{"id":"requirejs","key":"requirejs","value":{"rev":"3-e609bc91d12d698a17aa51bb50a50509"}},
-{"id":"requirejson","key":"requirejson","value":{"rev":"3-2b8173e58d08034a53a3226c464b1dc8"}},
-{"id":"reqwest","key":"reqwest","value":{"rev":"57-5aa2c1ed17b1e3630859bcad85559e6a"}},
-{"id":"resig-class","key":"resig-class","value":{"rev":"3-16b1a2cdb3224f2043708436dbac4395"}},
-{"id":"resistance","key":"resistance","value":{"rev":"9-9cacbf5fa8318419b4751034a511b8c1"}},
-{"id":"resmin","key":"resmin","value":{"rev":"17-a9c8ded5073118748d765784ca4ea069"}},
-{"id":"resolve","key":"resolve","value":{"rev":"11-bba3470bc93a617ccf9fb6c12097c793"}},
-{"id":"resource-router","key":"resource-router","value":{"rev":"13-7b2991958da4d7701c51537192ca756c"}},
-{"id":"resourcer","key":"resourcer","value":{"rev":"3-4e8b5493d6fcdf147f53d3aaa731a509"}},
-{"id":"response","key":"response","value":{"rev":"3-c5cadf4e5dd90dc1022b92a67853b0f8"}},
-{"id":"resque","key":"resque","value":{"rev":"12-e2f5e1bc3e53ac0a992d1a7da7da0d14"}},
-{"id":"rest-in-node","key":"rest-in-node","value":{"rev":"3-41d1ba925857302211bd0bf9d19975f9"}},
-{"id":"rest-mongo","key":"rest-mongo","value":{"rev":"3-583d2a4b672d6d7e7ad26d0b6df20b45"}},
-{"id":"rest.node","key":"rest.node","value":{"rev":"3-2ed59ba9dcc97123632dfdfaea2559ed"}},
-{"id":"restalytics","key":"restalytics","value":{"rev":"11-5fb3cd8e95b37f1725922fa6fbb146e0"}},
-{"id":"restarter","key":"restarter","value":{"rev":"52-ab0a4fe59128b8848ffd88f9756d0049"}},
-{"id":"restartr","key":"restartr","value":{"rev":"12-d3b86e43e7df7697293db65bb1a1ae65"}},
-{"id":"restify","key":"restify","value":{"rev":"132-054bdc85bebc6221a07dda186238b4c3"}},
-{"id":"restler","key":"restler","value":{"rev":"13-f5392d9dd22e34ce3bcc307c51c889b3"}},
-{"id":"restler-aaronblohowiak","key":"restler-aaronblohowiak","value":{"rev":"8-28b231eceb667153e10effcb1ebeb989"}},
-{"id":"restmvc.js","key":"restmvc.js","value":{"rev":"25-d57b550754437580c447adf612c87d9a"}},
-{"id":"resware","key":"resware","value":{"rev":"9-a5ecbc53fefb280c5d1e3efd822704ff"}},
-{"id":"retrie","key":"retrie","value":{"rev":"7-28ea803ad6b119928ac792cbc8f475c9"}},
-{"id":"retro","key":"retro","value":{"rev":"3-94c3aec940e28869554cbb8449d9369e"}},
-{"id":"retry","key":"retry","value":{"rev":"19-89f3ef664c6fa48ff33a0b9f7e798f15"}},
-{"id":"reut","key":"reut","value":{"rev":"23-d745dd7f8606275848a299ad7c38ceb7"}},
-{"id":"rewrite","key":"rewrite","value":{"rev":"3-5cb91fd831d0913e89354f53b875137d"}},
-{"id":"rex","key":"rex","value":{"rev":"39-59025e6947e5f197f124d24a5393865f"}},
-{"id":"rfb","key":"rfb","value":{"rev":"34-db6e684ac9366a0e3658a508a2187ae1"}},
-{"id":"rhyme","key":"rhyme","value":{"rev":"7-27347762f3f5bfa07307da4e476c2d52"}},
-{"id":"riak-js","key":"riak-js","value":{"rev":"55-11d4ee4beb566946f3968abdf1c4b0ef"}},
-{"id":"riakqp","key":"riakqp","value":{"rev":"7-83f562e6907431fcee56a9408ac6d2c1"}},
-{"id":"rightjs","key":"rightjs","value":{"rev":"9-d53ae4c4f5af3bbbe18d7c879e5bdd1b"}},
-{"id":"rimraf","key":"rimraf","value":{"rev":"17-3ddc3f3f36618712e5f4f27511836e7a"}},
-{"id":"rio","key":"rio","value":{"rev":"11-7c6249c241392b51b9142ca1b228dd4e"}},
-{"id":"ristretto","key":"ristretto","value":{"rev":"3-beb22d7a575e066781f1fd702c4572d7"}},
-{"id":"roast","key":"roast","value":{"rev":"32-17cb066823afab1656196a2fe81246cb"}},
-{"id":"robb","key":"robb","value":{"rev":"5-472ed7ba7928131d86a05fcae89b9f93"}},
-{"id":"robots","key":"robots","value":{"rev":"9-afac82b944045c82acb710cc98c7311d"}},
-{"id":"robotskirt","key":"robotskirt","value":{"rev":"63-29a66420951812d421bf6728f67e710c"}},
-{"id":"robotstxt","key":"robotstxt","value":{"rev":"25-1e01cac90f4570d35ab20232feaeebfa"}},
-{"id":"rocket","key":"rocket","value":{"rev":"27-b0f1ff02e70b237bcf6a5b46aa9b74df"}},
-{"id":"roil","key":"roil","value":{"rev":"48-6b00c09b576fe195546bd031763c0d79"}},
-{"id":"roll","key":"roll","value":{"rev":"5-d3fed9271132eb6c954b3ac6c7ffccf0"}},
-{"id":"rollin","key":"rollin","value":{"rev":"3-bd461bc810c12cfcea94109ba9a2ab39"}},
-{"id":"ron","key":"ron","value":{"rev":"5-913645180d29f377506bcd5292d3cb49"}},
-{"id":"rondo","key":"rondo","value":{"rev":"3-9bed539bbaa0cb978f5c1b711d70cd50"}},
-{"id":"ronn","key":"ronn","value":{"rev":"12-b1b1a1d47376fd11053e2b81fe772c4c"}},
-{"id":"rot13","key":"rot13","value":{"rev":"10-a41e8b581812f02ca1a593f6da0c52dc"}},
-{"id":"router","key":"router","value":{"rev":"26-a7883048759715134710d68f179da18b"}},
-{"id":"routes","key":"routes","value":{"rev":"3-d841826cfd365d8f383a9c4f4288933c"}},
-{"id":"rpc","key":"rpc","value":{"rev":"5-5896f380115a7a606cd7cbbc6d113f05"}},
-{"id":"rpc-socket","key":"rpc-socket","value":{"rev":"17-8743dc1a1f5ba391fc5c7d432cc6eeba"}},
-{"id":"rq","key":"rq","value":{"rev":"7-ba263671c3a3b52851dc7d5e6bd4ef8c"}},
-{"id":"rql","key":"rql","value":{"rev":"1-ac5ec10ed5e41a10a289f26aff4def5a"}},
-{"id":"rqueue","key":"rqueue","value":{"rev":"12-042898704386874c70d0ffaeea6ebc78"}},
-{"id":"rrd","key":"rrd","value":{"rev":"9-488adf135cf29cd4725865a8f25a57ba"}},
-{"id":"rsa","key":"rsa","value":{"rev":"8-7d6f981d72322028c3bebb7141252e98"}},
-{"id":"rss","key":"rss","value":{"rev":"3-0a97b20a0a9051876d779af7663880bd"}},
-{"id":"rssee","key":"rssee","value":{"rev":"9-da2599eae68e50c1695fd7f8fcba2b30"}},
-{"id":"rumba","key":"rumba","value":{"rev":"3-7a3827fa6eca2d02d3189cbad38dd6ca"}},
-{"id":"run","key":"run","value":{"rev":"9-0145abb61e6107a3507624928db461da"}},
-{"id":"runforcover","key":"runforcover","value":{"rev":"3-a36b00ea747c98c7cd7afebf1e1b203c"}},
-{"id":"runlol","key":"runlol","value":{"rev":"3-3c97684baaa3d5b31ca404e8a616fe41"}},
-{"id":"runner","key":"runner","value":{"rev":"11-b7ceeedf7b0dde19c809642f1537723a"}},
-{"id":"runways","key":"runways","value":{"rev":"5-f216f5fa6af7ccc7566cdd06cf424980"}},
-{"id":"rw-translate","key":"rw-translate","value":{"rev":"3-16d2beb17a27713e10459ce368c5d087"}},
-{"id":"rx","key":"rx","value":{"rev":"5-ea2a04ecf38963f8a99b7a408b45af31"}},
-{"id":"rzr","key":"rzr","value":{"rev":"4-6a137fa752709531f2715de5a213b326"}},
-{"id":"s-tpl","key":"s-tpl","value":{"rev":"3-1533cf9657cfe669a25da96b6a655f5c"}},
-{"id":"s3-post","key":"s3-post","value":{"rev":"9-ad3b268bc6754852086b50c2f465c02c"}},
-{"id":"safis","key":"safis","value":{"rev":"3-f1494d0dae2b7dfd60beba5a72412ad2"}},
-{"id":"saiga","key":"saiga","value":{"rev":"22-0c67e8cf8f4b6e8ea30552ffc57d222a"}},
-{"id":"sailthru-client","key":"sailthru-client","value":{"rev":"7-1c9c236050868fb8dec4a34ded2436d3"}},
-{"id":"saimonmoore-cradle","key":"saimonmoore-cradle","value":{"rev":"3-5059616ab0f0f10e1c2d164f686e127e"}},
-{"id":"salesforce","key":"salesforce","value":{"rev":"7-f88cbf517b1fb900358c97b2c049960f"}},
-{"id":"sam","key":"sam","value":{"rev":"7-d7e24d2e94411a17cbedfbd8083fd878"}},
-{"id":"sandbox","key":"sandbox","value":{"rev":"10-0b51bed24e0842f99744dcf5d79346a6"}},
-{"id":"sandboxed-module","key":"sandboxed-module","value":{"rev":"15-bf8fa69d15ae8416d534e3025a16d87d"}},
-{"id":"sanitizer","key":"sanitizer","value":{"rev":"32-6ea8f4c77cd17253c27d0d87e0790678"}},
-{"id":"sapnwrfc","key":"sapnwrfc","value":{"rev":"3-0bc717109ffcd5265ae24f00416a0281"}},
-{"id":"sardines","key":"sardines","value":{"rev":"7-82712731b5af112ca43b9e3fe9975bb0"}},
-{"id":"sargam","key":"sargam","value":{"rev":"3-6b4c70f4b2bcd2add43704bf40c44507"}},
-{"id":"sasl","key":"sasl","value":{"rev":"4-44a6e12b561b112a574ec9e0c4a8843f"}},
-{"id":"sass","key":"sass","value":{"rev":"14-46bcee5423a1efe22f039e116bb7a77c"}},
-{"id":"satisfic","key":"satisfic","value":{"rev":"3-c6e9a2e65a0e55868cea708bcf7b11cf"}},
-{"id":"sax","key":"sax","value":{"rev":"30-58c5dd2c3367522974406bbf29204a40"}},
-{"id":"say","key":"say","value":{"rev":"10-95f31672af6166ea9099d92706c49ed1"}},
-{"id":"sayndo","key":"sayndo","value":{"rev":"51-fd93715c5ff0fcaa68e4e13c2b51ba61"}},
-{"id":"sc-handlebars","key":"sc-handlebars","value":{"rev":"3-b424c3a66fd0e538b068c6046f404084"}},
-{"id":"scgi-server","key":"scgi-server","value":{"rev":"9-3364b5c39985ea8f3468b6abb53d5ea6"}},
-{"id":"scheduler","key":"scheduler","value":{"rev":"25-72bc526bb49b0dd42ad5917d38ea3b18"}},
-{"id":"schema","key":"schema","value":{"rev":"21-166410ae972449965dfa1ce615971168"}},
-{"id":"schema-builder","key":"schema-builder","value":{"rev":"3-bce4612e1e5e6a8a85f16326d3810145"}},
-{"id":"schema-org","key":"schema-org","value":{"rev":"15-59b3b654de0380669d0dcd7573c3b7a1"}},
-{"id":"scone","key":"scone","value":{"rev":"15-85ed2dd4894e896ca1c942322753b76b"}},
-{"id":"scooj","key":"scooj","value":{"rev":"3-1be2074aeba4df60594c03f3e59c7734"}},
-{"id":"scope","key":"scope","value":{"rev":"65-9d7eb8c5fc6c54d8e2c49f4b4b4f5166"}},
-{"id":"scope-provider","key":"scope-provider","value":{"rev":"22-2c25a0b260fd18236d5245c8250d990e"}},
-{"id":"scoped-http-client","key":"scoped-http-client","value":{"rev":"3-afa954fe6d1c8b64a1240b77292d99b5"}},
-{"id":"scottbot","key":"scottbot","value":{"rev":"3-d812ddb4af49976c391f14aeecf93180"}},
-{"id":"scraper","key":"scraper","value":{"rev":"19-e2166b3de2b33d7e6baa04c704887fa6"}},
-{"id":"scrapinode","key":"scrapinode","value":{"rev":"15-ae5bf5085d8c4d5390f7c313b0ad13d2"}},
-{"id":"scrappy-do","key":"scrappy-do","value":{"rev":"3-868f5d299da401112e3ed9976194f1ee"}},
-{"id":"scrapr","key":"scrapr","value":{"rev":"3-d700714a56e8f8b8e9b3bc94274f4a24"}},
-{"id":"scrawl","key":"scrawl","value":{"rev":"3-a70a2905b9a1d2f28eb379c14363955f"}},
-{"id":"scribe","key":"scribe","value":{"rev":"5-4cefaaf869ba8e6ae0257e5705532fbe"}},
-{"id":"scriptTools","key":"scriptTools","value":{"rev":"7-1b66b7f02f2f659ae224057afac60bcf"}},
-{"id":"scriptbroadcast","key":"scriptbroadcast","value":{"rev":"10-3cdc4dae471445b7e08e6fc37c2481e6"}},
-{"id":"scriptjs","key":"scriptjs","value":{"rev":"38-9a522df4f0707d47c904f6781fd97ff6"}},
-{"id":"scrowser","key":"scrowser","value":{"rev":"3-a76938b1f84db0793941dba1f84f4c2f"}},
-{"id":"scss","key":"scss","value":{"rev":"10-49a4ad40eca3c797add57986c74e100b"}},
-{"id":"scylla","key":"scylla","value":{"rev":"10-2c5a1efed63c0ac3a3e75861ee323af4"}},
-{"id":"sdl","key":"sdl","value":{"rev":"40-3df0824da620098c0253b5330c6b0c5c"}},
-{"id":"sdlmixer","key":"sdlmixer","value":{"rev":"4-91455739802a98a5549f6c2b8118758d"}},
-{"id":"search","key":"search","value":{"rev":"9-8f696da412a6ccd07c3b8f22cec315cb"}},
-{"id":"searchjs","key":"searchjs","value":{"rev":"3-59418ce307d41de5649dfc158be51adf"}},
-{"id":"searchparser","key":"searchparser","value":{"rev":"3-a84719692ee33c88f3419f033b839f7a"}},
-{"id":"sechash","key":"sechash","value":{"rev":"11-20db8651628dcf6e8cbbc9bf9b2c4f12"}},
-{"id":"secret","key":"secret","value":{"rev":"7-ac44b38fa32b3f5ebc8fd03b02ec69ec"}},
-{"id":"seedrandom","key":"seedrandom","value":{"rev":"3-becb92de803208672887fc22a1a33694"}},
-{"id":"seek","key":"seek","value":{"rev":"3-d778b8d56582e15d409e2346b86caa53"}},
-{"id":"sel","key":"sel","value":{"rev":"19-94c8bc0872d2da7eab2b35daff7a3b5d"}},
-{"id":"select","key":"select","value":{"rev":"5-43593bfec39caaf1a0bc1fedc96d0dce"}},
-{"id":"selenium","key":"selenium","value":{"rev":"3-8ae8ac7a491b813fd011671e0d494f20"}},
-{"id":"selfish","key":"selfish","value":{"rev":"17-827856c3f3b9a3fdd1758477a24bf706"}},
-{"id":"selleck","key":"selleck","value":{"rev":"13-b8325fcdb383397041e4a408b40d708c"}},
-{"id":"semver","key":"semver","value":{"rev":"25-b2aea0cc920a9981cd429442a3fd62f6"}},
-{"id":"sendgrid","key":"sendgrid","value":{"rev":"3-047e2ad730390bac7cf72b7fc3856c1c"}},
-{"id":"sendgrid-api","key":"sendgrid-api","value":{"rev":"5-6e951b0d60a1b7c778fbf548d4e3aed8"}},
-{"id":"sendgrid-web","key":"sendgrid-web","value":{"rev":"3-dc77d2dbcedfcbe4e497958a2a070cfd"}},
-{"id":"sentry","key":"sentry","value":{"rev":"7-57af332354cbd37ce1c743b424b27dd0"}},
-{"id":"seq","key":"seq","value":{"rev":"77-33a8f54017402835c8542945a5c0a443"}},
-{"id":"sequelize","key":"sequelize","value":{"rev":"63-4c28ad13b73549aad7edc57378b21854"}},
-{"id":"sequence","key":"sequence","value":{"rev":"3-914f8010dc12aec0749ddb719f5ac82d"}},
-{"id":"sequencer","key":"sequencer","value":{"rev":"7-d83e687509678c0f5bcf15e5297677c0"}},
-{"id":"sequent","key":"sequent","value":{"rev":"3-cc6f26ab708c7681fa7d9e3bc15d19c0"}},
-{"id":"serializer","key":"serializer","value":{"rev":"7-a0d13120e2d5cfaa6e453b085280fa08"}},
-{"id":"serialport","key":"serialport","value":{"rev":"32-dc365d057a4f46e9f140dc36d6cc825a"}},
-{"id":"serialportify","key":"serialportify","value":{"rev":"3-1bf4ad9c5ebb5d96ca91fc03a10b5443"}},
-{"id":"serialq","key":"serialq","value":{"rev":"3-5897fcd0fca7d8312e61dbcb93790a71"}},
-{"id":"series","key":"series","value":{"rev":"11-0374191f646c277c51602ebe73033b6a"}},
-{"id":"serve","key":"serve","value":{"rev":"11-560c0c1bdeb3348c7a7d18265d27988e"}},
-{"id":"servedir","key":"servedir","value":{"rev":"18-17cffd8d8326b26e7d9319c79d601dda"}},
-{"id":"server-backbone-redis","key":"server-backbone-redis","value":{"rev":"13-c56419457002aa4fa23b142634882594"}},
-{"id":"server-tracker","key":"server-tracker","value":{"rev":"21-f620e295079a8b0acd29fa1a1469100c"}},
-{"id":"service","key":"service","value":{"rev":"11-07533f9e5e854248c0a1d99e911fa419"}},
-{"id":"sesame","key":"sesame","value":{"rev":"19-1e7ad5d030566f4c67027cc5925a2bdb"}},
-{"id":"sesh","key":"sesh","value":{"rev":"4-1682b3ced38e95f2a11a2f545a820bd5"}},
-{"id":"session","key":"session","value":{"rev":"6-a798bf4cd7d127d0111da7cdc3e058a4"}},
-{"id":"session-mongoose","key":"session-mongoose","value":{"rev":"3-b089c8d365d7de3e659cfa7080697dba"}},
-{"id":"sessionvoc-client","key":"sessionvoc-client","value":{"rev":"23-0f9ed8cd4af55f2aae17cb841247b818"}},
-{"id":"set","key":"set","value":{"rev":"3-a285b30a9c1545b427ebd882bc53d8b2"}},
-{"id":"setInterval","key":"setInterval","value":{"rev":"3-0557f666d05223391466547f52cfff42"}},
-{"id":"setTimeout","key":"setTimeout","value":{"rev":"3-e3c059c93763967ddff5974471f227f8"}},
-{"id":"setochka","key":"setochka","value":{"rev":"3-d559e24618b4fc2d5fc4ef44bccb68be"}},
-{"id":"settings","key":"settings","value":{"rev":"5-4af85bb564a330886c79682d2f1d927c"}},
-{"id":"sexy","key":"sexy","value":{"rev":"7-e57fa6bca5d89be86467786fb9f9b997"}},
-{"id":"sexy-args","key":"sexy-args","value":{"rev":"3-715d7d57234220bd79c78772d2566355"}},
-{"id":"sfaClient","key":"sfaClient","value":{"rev":"3-5d9ddd6ea05d7ef366dbf4f66dd4f642"}},
-{"id":"sfml","key":"sfml","value":{"rev":"10-766c876cd1cc220f776e2fa3c1d9efbb"}},
-{"id":"sh","key":"sh","value":{"rev":"5-3ce779be28550e831cf3c0140477376c"}},
-{"id":"sha1","key":"sha1","value":{"rev":"3-66d4b67ace9c65ae8f03d6dd0647ff6b"}},
-{"id":"sha1_file","key":"sha1_file","value":{"rev":"7-eb25e9c5f470a1b80c1697a952a1c5ed"}},
-{"id":"shadows","key":"shadows","value":{"rev":"5-d6a1a21871c733f34495592307ab7961"}},
-{"id":"share","key":"share","value":{"rev":"15-ef81a004f0e115040dcc1510f6302fa9"}},
-{"id":"shared-views","key":"shared-views","value":{"rev":"11-2c83145e6deb3493e44805c92b58929e"}},
-{"id":"sharedjs","key":"sharedjs","value":{"rev":"9-d43a861b02aa88ae22810f9771d774ec"}},
-{"id":"shell","key":"shell","value":{"rev":"39-7e2042bd6f485b827d53f5f727164d6f"}},
-{"id":"shelld","key":"shelld","value":{"rev":"3-118a62ff31d85e61b78bbd97333a7330"}},
-{"id":"shimify","key":"shimify","value":{"rev":"3-dde4d45bcbd2f6f7faaeb7f8c31d5e8b"}},
-{"id":"ship","key":"ship","value":{"rev":"3-5f294fc3841c901d6cea7f3862625d95"}},
-{"id":"shmakowiki","key":"shmakowiki","value":{"rev":"15-079ae4595d1ddf019d22d3d0ac49a188"}},
-{"id":"shorten","key":"shorten","value":{"rev":"3-ed1395b35faf4639e25dacbb038cf237"}},
-{"id":"shorttag","key":"shorttag","value":{"rev":"5-21d15e4cb8b62aeefe23edc99ff768ec"}},
-{"id":"shorturl","key":"shorturl","value":{"rev":"5-58f78b2a5318ec7da8a5f88739f2796b"}},
-{"id":"shorty","key":"shorty","value":{"rev":"9-17f804ff6e94295549cca6fd534b89de"}},
-{"id":"shotenjin","key":"shotenjin","value":{"rev":"3-91a7864d216a931095e9999133d3c41f"}},
-{"id":"should","key":"should","value":{"rev":"19-ed561071d434f319080fa5d0f647dd93"}},
-{"id":"shovel","key":"shovel","value":{"rev":"5-0168a02a8fa8d7856a5f4a5c18706724"}},
-{"id":"showdown","key":"showdown","value":{"rev":"3-7be5479804451db3faed968fa428af56"}},
-{"id":"shredder","key":"shredder","value":{"rev":"3-93e12ab8822ba5fe86d662f124a8ad1a"}},
-{"id":"shrtn","key":"shrtn","value":{"rev":"19-5883692283903e3166b478b98bcad999"}},
-{"id":"shuffle","key":"shuffle","value":{"rev":"3-71c96da1843abb468649ab0806e6b9d3"}},
-{"id":"sibilant","key":"sibilant","value":{"rev":"18-4dcb400eb9ed9cb1c7826d155807f6d0"}},
-{"id":"sideline","key":"sideline","value":{"rev":"15-84f284a9277718bf90f68dc9351500ae"}},
-{"id":"siesta","key":"siesta","value":{"rev":"5-ff99a009e6e5897c6322237c51d0a142"}},
-{"id":"sign","key":"sign","value":{"rev":"3-2cf70313707c6a046a6ceca61431ea5e"}},
-{"id":"signals","key":"signals","value":{"rev":"7-c756190260cd3ea43e6d44e4722164cb"}},
-{"id":"signature","key":"signature","value":{"rev":"3-fb7552c27ace0f9321ec7438057a37bf"}},
-{"id":"signed-request","key":"signed-request","value":{"rev":"13-9f1563535dcc1a83338a7375d8240f35"}},
-{"id":"signer","key":"signer","value":{"rev":"5-32c9909da2c4dfb284b858164c03cfe0"}},
-{"id":"simple-class","key":"simple-class","value":{"rev":"3-92c6eea4b3a6169db9d62b12f66268cb"}},
-{"id":"simple-ffmpeg","key":"simple-ffmpeg","value":{"rev":"9-b6dd4fe162803e6db434d71035637993"}},
-{"id":"simple-logger","key":"simple-logger","value":{"rev":"5-52b4c957b3671375547d623c6a9444be"}},
-{"id":"simple-mime","key":"simple-mime","value":{"rev":"9-34e4b1dcc26047b64459d924abab65cc"}},
-{"id":"simple-proxy","key":"simple-proxy","value":{"rev":"9-ad6cd76215717527dc6b226e1219e98e"}},
-{"id":"simple-rest-client","key":"simple-rest-client","value":{"rev":"3-8331b3ae49b52720adf2b72d5da0353d"}},
-{"id":"simple-schedule","key":"simple-schedule","value":{"rev":"7-432d3803e1cf9ab5830923a30fd312e0"}},
-{"id":"simple-server","key":"simple-server","value":{"rev":"25-d4d8ba53d3829f4ca51545a3c23a1244"}},
-{"id":"simple-settings","key":"simple-settings","value":{"rev":"3-497d7c5422f764f3738b3ef303ff9737"}},
-{"id":"simple-static","key":"simple-static","value":{"rev":"3-64c9cf84e5140d4285e451357ac83df5"}},
-{"id":"simple-xml-writer","key":"simple-xml-writer","value":{"rev":"3-d1ca18252c341b4430ab6e1240b5f571"}},
-{"id":"simple-xmpp","key":"simple-xmpp","value":{"rev":"11-b4c10de5e4e12a81c4486206d7fb6b40"}},
-{"id":"simple_pubsub","key":"simple_pubsub","value":{"rev":"9-22ae79856ca25b152f104e5d8bc93f12"}},
-{"id":"simpledb","key":"simpledb","value":{"rev":"13-6bf111aa18bffd86e65fd996525a6113"}},
-{"id":"simplegeo","key":"simplegeo","value":{"rev":"8-eb684eea019ae7e5fa0c087a9747367e"}},
-{"id":"simplegeo-client","key":"simplegeo-client","value":{"rev":"7-b2c976bbf8c145c6b0e1744630548084"}},
-{"id":"simplegeo-thrift","key":"simplegeo-thrift","value":{"rev":"3-bf6ddf40c020889fe28630217f38a442"}},
-{"id":"simplelogger","key":"simplelogger","value":{"rev":"3-36634d2543faecdeccc962422d149ffc"}},
-{"id":"simplesets","key":"simplesets","value":{"rev":"26-48fc18f94744c9b288945844b7cc9196"}},
-{"id":"simplesmtp","key":"simplesmtp","value":{"rev":"6-0952f0c5f43a8e94b11355774bbbe9e8"}},
-{"id":"simplydb","key":"simplydb","value":{"rev":"5-34659bf97bbb40f0ec4a3af14107dc31"}},
-{"id":"sin","key":"sin","value":{"rev":"6-0e8bd66b3e2c8c91efef14a3ddc79c53"}},
-{"id":"sink","key":"sink","value":{"rev":"8-4c49709009dfb5719935dba568a3398e"}},
-{"id":"sink-test","key":"sink-test","value":{"rev":"18-411afcb398102f245e92f2ce91897d3e"}},
-{"id":"sinon","key":"sinon","value":{"rev":"19-fa38010bb1bbed437273e1296660d598"}},
-{"id":"sinon-buster","key":"sinon-buster","value":{"rev":"5-a456f0e21b3edb647ad11179cd02354b"}},
-{"id":"sinon-nodeunit","key":"sinon-nodeunit","value":{"rev":"7-d60aa76cc41a6c9d9db4e8ae268b7b3c"}},
-{"id":"sip","key":"sip","value":{"rev":"17-02be6fb014d41fe66ab22ff2ae60a5b8"}},
-{"id":"sitemap","key":"sitemap","value":{"rev":"13-a6d1c830fdc8942c317c1ebe00efbb6d"}},
-{"id":"sizlate","key":"sizlate","value":{"rev":"3-a86c680c681299045f9aabecb99dc161"}},
-{"id":"sizzle","key":"sizzle","value":{"rev":"5-f00e18a80fb8a4f6bdbf11735e265720"}},
-{"id":"sk","key":"sk","value":{"rev":"33-b0b894d02b0211dae08baadfd84b46c2"}},
-{"id":"skeleton","key":"skeleton","value":{"rev":"5-3559721c222b99cd3f56acaaf706992f"}},
-{"id":"skillet","key":"skillet","value":{"rev":"3-0d6bbe21952f85967a5e12425691ee50"}},
-{"id":"skull.io","key":"skull.io","value":{"rev":"3-082e9d58f24ac59144fc130f6b54927e"}},
-{"id":"slang","key":"slang","value":{"rev":"7-3cd6390e3421f677e4e1b00fdf2d3ee1"}},
-{"id":"sleepless","key":"sleepless","value":{"rev":"5-1482568719534caf17f12daf0130ae0d"}},
-{"id":"sleepylib","key":"sleepylib","value":{"rev":"3-60e851f120e34b0726eb50a38b1e27e2"}},
-{"id":"sleight","key":"sleight","value":{"rev":"3-a0f16b17befee698b172074f84daf44c"}},
-{"id":"slick","key":"slick","value":{"rev":"3-596b7b7cf7b8881c55327e8bcf373700"}},
-{"id":"slickback","key":"slickback","value":{"rev":"9-c036e7393d0f9a463a263f287f3bcefd"}},
-{"id":"slide","key":"slide","value":{"rev":"14-83ade7490da699cf0ed99cec818ce3cd"}},
-{"id":"slippers","key":"slippers","value":{"rev":"5-0d657ed5fca4c0ed8b51c6d7f6eac08a"}},
-{"id":"slug","key":"slug","value":{"rev":"3-046a5bd74cc1edce30faa3b6ab239652"}},
-{"id":"slugr","key":"slugr","value":{"rev":"39-ac346964f547433fe34e637de682f81a"}},
-{"id":"smartdc","key":"smartdc","value":{"rev":"31-8c9db85e4548007a0ef87b7286229952"}},
-{"id":"smoosh","key":"smoosh","value":{"rev":"34-ba1c140a173ff8d1f9cdbe5e5addcc43"}},
-{"id":"smores","key":"smores","value":{"rev":"17-1aef1fa2e1675093c5aaf33436d83f5a"}},
-{"id":"smpp","key":"smpp","value":{"rev":"5-9be31b75aee4db09cfe5a2ceef4bea13"}},
-{"id":"smsified","key":"smsified","value":{"rev":"13-bb97eae0bbb6f4d5c4f2f391cd20e891"}},
-{"id":"smtp","key":"smtp","value":{"rev":"20-c3de67c5d0b3c4493293d9f55adb21ad"}},
-{"id":"smtpc","key":"smtpc","value":{"rev":"11-7c4e1207be6eb06350221af0134e8bd7"}},
-{"id":"smtpclient","key":"smtpclient","value":{"rev":"3-ba61ad5f0fd3fdd382e505abcde8c24e"}},
-{"id":"snake","key":"snake","value":{"rev":"15-384892bf8a5ebf222f6fe0ae321aaaa4"}},
-{"id":"snappy","key":"snappy","value":{"rev":"11-94f2d59347c10cc41b6f4a2dd2b0f15e"}},
-{"id":"sng","key":"sng","value":{"rev":"41-a1d3c6253dec5da8b3134ba3505924f5"}},
-{"id":"snip","key":"snip","value":{"rev":"3-cc51d232fff6a7d7b24588bd98e5613b"}},
-{"id":"snipes","key":"snipes","value":{"rev":"3-12af12ca83e15d056969ec76a3cc2ef0"}},
-{"id":"snippets","key":"snippets","value":{"rev":"13-d19c8a99287ec721d56ef9efdf3ce729"}},
-{"id":"snorkel","key":"snorkel","value":{"rev":"11-bc7ba5d1465c7d1ba71479087292615e"}},
-{"id":"snowball","key":"snowball","value":{"rev":"3-76cfbdb9f379ac635874b76d7ee2fd3b"}},
-{"id":"snpp","key":"snpp","value":{"rev":"8-4f10a9f2bff48e348303d8a143afaa6c"}},
-{"id":"snsclient","key":"snsclient","value":{"rev":"3-302ce1c7132a36ef909ce534a509e27f"}},
-{"id":"soap","key":"soap","value":{"rev":"7-10f361a406dfee3074adac0cea127d87"}},
-{"id":"socket-push","key":"socket-push","value":{"rev":"22-196553953d58d92c288678b1dcd49ba7"}},
-{"id":"socket-twitchat","key":"socket-twitchat","value":{"rev":"11-9b159a4610ea444eaae39baa3bf05280"}},
-{"id":"socket.io","key":"socket.io","value":{"rev":"95-c29c929613dd95aa5aea8a5e14f2573f"}},
-{"id":"socket.io-client","key":"socket.io-client","value":{"rev":"33-a3c79d917bb038f0ca72f9cb27180a66"}},
-{"id":"socket.io-cluster","key":"socket.io-cluster","value":{"rev":"5-83bdaf79d2243eaf3a59b45fc604dc1a"}},
-{"id":"socket.io-connect","key":"socket.io-connect","value":{"rev":"17-62f00efc3bff3a1b549cc5e346da996f"}},
-{"id":"socket.io-context","key":"socket.io-context","value":{"rev":"42-a029996765557776d72690db1f14c1fa"}},
-{"id":"socket.io-ender","key":"socket.io-ender","value":{"rev":"9-c4523af5f5cc815ee69c325c1e29ede4"}},
-{"id":"socket.io-juggernaut","key":"socket.io-juggernaut","value":{"rev":"6-b8b97b2df2c186f24487e027278ec975"}},
-{"id":"socket.io-sessions","key":"socket.io-sessions","value":{"rev":"11-2151ee14eb29543811a9e567bcf6811a"}},
-{"id":"socketstream","key":"socketstream","value":{"rev":"29-b198d27ad6a3c4f9b63bc467e85a54a3"}},
-{"id":"sockjs","key":"sockjs","value":{"rev":"21-a8d6534c55e8b3e33cf06516b59aa408"}},
-{"id":"socksified","key":"socksified","value":{"rev":"3-92350ec9889b8db9c3d34bdbc41b1f7b"}},
-{"id":"soda","key":"soda","value":{"rev":"24-04987191e2c4241fbfaf78263c83d121"}},
-{"id":"soda-runner","key":"soda-runner","value":{"rev":"5-da4e8078a7666404d2a5ab3267a5ef75"}},
-{"id":"sodn","key":"sodn","value":{"rev":"3-3ee6350723c54aad792c769947c6b05e"}},
-{"id":"sofa","key":"sofa","value":{"rev":"7-2f8ffd47ce19e6fb7e1ea2e02076955d"}},
-{"id":"solder","key":"solder","value":{"rev":"10-8f7ad0a60c2716ce65658047c4ae5361"}},
-{"id":"solr","key":"solr","value":{"rev":"11-56a295dff56d9f2a4a7293257ca793a4"}},
-{"id":"solr-client","key":"solr-client","value":{"rev":"7-a296273d32224eb241343cb98ded7b82"}},
-{"id":"sones","key":"sones","value":{"rev":"3-9ddbbdc44f3501917e701d3304eb91a5"}},
-{"id":"song","key":"song","value":{"rev":"7-967aa3a58702b3470996cd8e63b1b18d"}},
-{"id":"sorted","key":"sorted","value":{"rev":"3-47b6ec0f744aa04929d48a7d3d10f581"}},
-{"id":"sosumi","key":"sosumi","value":{"rev":"10-8c3980beb3d7c48d4cccf44a8d1d5ff7"}},
-{"id":"soundcloud","key":"soundcloud","value":{"rev":"7-9ee76aecd3d1946731a1173185796864"}},
-{"id":"soupselect","key":"soupselect","value":{"rev":"12-5fea60f4e52117a8212aa7add6c34278"}},
-{"id":"source","key":"source","value":{"rev":"7-57d6cae0530c7cba4a3932f0df129f20"}},
-{"id":"source-map","key":"source-map","value":{"rev":"6-7da8d2ccc104fa30a93ee165975f28e8"}},
-{"id":"spacesocket","key":"spacesocket","value":{"rev":"6-d1679084b0917f86d6c4e3ac89a89809"}},
-{"id":"spark","key":"spark","value":{"rev":"12-64d44ebde2a4b48aed3bc7814c63e773"}},
-{"id":"spark2","key":"spark2","value":{"rev":"28-918548a309f0d18eebd5c64966376959"}},
-{"id":"sparql","key":"sparql","value":{"rev":"3-8eec87fe9fcb4d07aef214858eada777"}},
-{"id":"sparql-orm","key":"sparql-orm","value":{"rev":"3-b2a7efa5622b0b478fdca3f9050800cc"}},
-{"id":"spatial","key":"spatial","value":{"rev":"3-d09d40af02a9c9e5150500cc66d75f8d"}},
-{"id":"spawn","key":"spawn","value":{"rev":"3-f882c01cf1bb538f5f4be78769e1b097"}},
-{"id":"spdy","key":"spdy","value":{"rev":"13-1fbf077bbb8bc87d5058648c0c66288b"}},
-{"id":"spec","key":"spec","value":{"rev":"15-1074d3a8b8332fcc1059fbb5c4f69a7a"}},
-{"id":"speck","key":"speck","value":{"rev":"21-652b0670953ba79e548f4e5d9ce3d923"}},
-{"id":"spectrum","key":"spectrum","value":{"rev":"28-21fb9eeffe2e63a5383371a44a58a1ad"}},
-{"id":"speller","key":"speller","value":{"rev":"6-91e03f89b09338cf8f38d2e64c1778ce"}},
-{"id":"sphericalmercator","key":"sphericalmercator","value":{"rev":"9-3affc61ae0d64854d77829da5414bbc5"}},
-{"id":"spider","key":"spider","value":{"rev":"3-cd04679891875dfb2bf67613514238eb"}},
-{"id":"spider-tdd","key":"spider-tdd","value":{"rev":"3-d95b6d680d053a063e6fab3fdae16261"}},
-{"id":"spine","key":"spine","value":{"rev":"9-2a5cd4733be1d78376814e78966d885a"}},
-{"id":"spine.app","key":"spine.app","value":{"rev":"43-1044b31d4c53ff5c741a16d49291b321"}},
-{"id":"spine.mobile","key":"spine.mobile","value":{"rev":"19-220f64c212a5f22b27d597e299263490"}},
-{"id":"split_er","key":"split_er","value":{"rev":"3-3419662807bf16f7b5b53998a4759246"}},
-{"id":"spludo","key":"spludo","value":{"rev":"14-d41915fcd1b50553f5b9e706b41d2894"}},
-{"id":"spm","key":"spm","value":{"rev":"9-28d6699288d580807091aafdf78dd479"}},
-{"id":"spore","key":"spore","value":{"rev":"44-1c50fb0e6f7c3447f34b1927c976201f"}},
-{"id":"spork","key":"spork","value":{"rev":"3-e90976749b649b88ab83b59785dba101"}},
-{"id":"spotify","key":"spotify","value":{"rev":"3-90c74506a69e08a41feeb23541ac0b4f"}},
-{"id":"spotify-metadata","key":"spotify-metadata","value":{"rev":"3-a546d3e59e40ec0be5d8524f3a1e7a60"}},
-{"id":"spotlight","key":"spotlight","value":{"rev":"3-bead50ac8f53311d539a420c74ea23e2"}},
-{"id":"spread","key":"spread","value":{"rev":"3-ad7bf6d948043fc6dd47a6fcec7da294"}},
-{"id":"spreadsheet","key":"spreadsheet","value":{"rev":"11-94030e23cc9c8e515c1f340656aea031"}},
-{"id":"spreadsheets","key":"spreadsheets","value":{"rev":"3-6563c479735b1b6599bf9602fa65ff38"}},
-{"id":"sprintf","key":"sprintf","value":{"rev":"10-56c5bc7a19ecf8dd92e24d4dca081059"}},
-{"id":"spruce","key":"spruce","value":{"rev":"7-1ea45ef3c5412dd2a6c1fe7b2a083d68"}},
-{"id":"spy","key":"spy","value":{"rev":"3-f5546fdbbec80ba97756d0d1fefa7923"}},
-{"id":"sql","key":"sql","value":{"rev":"5-6c41452f684418ba521666e977f46e54"}},
-{"id":"sqlite","key":"sqlite","value":{"rev":"9-18761259920b497360f581ff8051dcbb"}},
-{"id":"sqlite3","key":"sqlite3","value":{"rev":"51-f9c99537afd9826819c5f40105e50987"}},
-{"id":"sqlmw","key":"sqlmw","value":{"rev":"17-b05b0b089c0f3b1185f96dc19bf61cf5"}},
-{"id":"squeeze","key":"squeeze","value":{"rev":"6-5e517be339d9aa409cedfcc11d1883b1"}},
-{"id":"squish","key":"squish","value":{"rev":"15-2334d8412df59ddd2fce60c1f77954c7"}},
-{"id":"sqwish","key":"sqwish","value":{"rev":"28-cc159dd5fd420432a7724c46456f4958"}},
-{"id":"srand","key":"srand","value":{"rev":"16-22f98b1b1a208c22dfbe95aa889cd08e"}},
-{"id":"srcds","key":"srcds","value":{"rev":"3-bd79da47d36662609c0c75c713874fd1"}},
-{"id":"srs","key":"srs","value":{"rev":"32-c8c961ea10fc60fc428bddff133a8aba"}},
-{"id":"sserve","key":"sserve","value":{"rev":"3-957457395e2c61c20bcb727fc19fc4d4"}},
-{"id":"ssh","key":"ssh","value":{"rev":"3-c7dda694daa7ca1e264b494400edfa18"}},
-{"id":"ssh-agent","key":"ssh-agent","value":{"rev":"3-dbc87102ed1f17b7253a1901976dfa9d"}},
-{"id":"sshmq","key":"sshmq","value":{"rev":"3-052f36ca47cddf069a1700fc79a08930"}},
-{"id":"stache","key":"stache","value":{"rev":"11-9bb0239153147939a25fd20184f20fc6"}},
-{"id":"stack","key":"stack","value":{"rev":"7-e18abdce80008ac9e2feb66f3407fe67"}},
-{"id":"stack-trace","key":"stack-trace","value":{"rev":"13-9fe20c5a3e34a5e4472c6f4fdea86efc"}},
-{"id":"stack.static","key":"stack.static","value":{"rev":"7-ad064faf6255a632cefa71a6ff3c47f3"}},
-{"id":"stack2","key":"stack2","value":{"rev":"3-e5f8ea94c0dd2b4c7f5d3941d689622b"}},
-{"id":"stackedy","key":"stackedy","value":{"rev":"25-f988787b9b5720dece8ae3cb83a2bc12"}},
-{"id":"stage","key":"stage","value":{"rev":"7-d2931fcb473f63320067c3e75638924e"}},
-{"id":"stalker","key":"stalker","value":{"rev":"19-ece35be8695846fc766a71c0022d4ff7"}},
-{"id":"startupify","key":"startupify","value":{"rev":"11-3c87ef5e9ee33122cf3515a63b22c52a"}},
-{"id":"stash","key":"stash","value":{"rev":"10-41239a1df74b69fe7bb3e360f9a35ad1"}},
-{"id":"statechart","key":"statechart","value":{"rev":"6-97e6947b5bbaf14bdb55efa6dfa5e19c"}},
-{"id":"stately","key":"stately","value":{"rev":"6-f8a257cd9fdd84947ff2cf7357afc88b"}},
-{"id":"stathat","key":"stathat","value":{"rev":"3-b79b7bd50bb1e4dcc1301424104a5b36"}},
-{"id":"station","key":"station","value":{"rev":"5-92e6387138b1ee10976bd92dd48ea818"}},
-{"id":"statistics","key":"statistics","value":{"rev":"3-a1c3a03d833c6f02fde403950790e9b4"}},
-{"id":"stats","key":"stats","value":{"rev":"13-fe513ea6b3b5b6b31935fd3464ec5d3b"}},
-{"id":"std","key":"std","value":{"rev":"55-58a4f182c3f51996a0d60a6f575cfefd"}},
-{"id":"steam","key":"steam","value":{"rev":"5-bffdf677d2d1ae3e8236892e68a3dd66"}},
-{"id":"stem","key":"stem","value":{"rev":"36-4f1c38eff671ede0241038017a810132"}},
-{"id":"step","key":"step","value":{"rev":"8-048d7707a45af3a7824a478d296cc467"}},
-{"id":"stepc","key":"stepc","value":{"rev":"3-be85de2c02f4889fdf77fda791feefea"}},
-{"id":"stepper","key":"stepper","value":{"rev":"9-cc54000dc973835c38e139b30cbb10cc"}},
-{"id":"steps","key":"steps","value":{"rev":"5-3561591b425e1fff52dc397f9688feae"}},
-{"id":"stextile","key":"stextile","value":{"rev":"29-9a8b6de917df01d322847f112dcadadf"}},
-{"id":"stitch","key":"stitch","value":{"rev":"13-8a50e4a4f015d1afe346aa6b6c8646bd"}},
-{"id":"stitchup","key":"stitchup","value":{"rev":"7-fe14604e3a8b82f62c38d0cb3ccce61e"}},
-{"id":"stomp","key":"stomp","value":{"rev":"15-e0430c0be74cd20c5204b571999922f7"}},
-{"id":"stopwords","key":"stopwords","value":{"rev":"3-2dd9fade030cfcce85848c5b3b4116fc"}},
-{"id":"store","key":"store","value":{"rev":"9-5537cc0f4827044504e8dae9617c9347"}},
-{"id":"store.js","key":"store.js","value":{"rev":"22-116c9a6194703ea98512d89ec5865e3d"}},
-{"id":"stories","key":"stories","value":{"rev":"11-244ca52d0a41f70bc4dfa0aca0f82a40"}},
-{"id":"storify","key":"storify","value":{"rev":"5-605b197219e916df561dd7722af97e2e"}},
-{"id":"storify-templates","key":"storify-templates","value":{"rev":"3-0960756aa963cee21b679a59cef114a1"}},
-{"id":"storm","key":"storm","value":{"rev":"3-9052e6af8528d1bc0d96021dfa21dd3e"}},
-{"id":"stove","key":"stove","value":{"rev":"17-01c9f0e87398e6bfa03a764e89295e00"}},
-{"id":"str.js","key":"str.js","value":{"rev":"9-301f54edeebde3c5084c3a8071e2aa09"}},
-{"id":"strack","key":"strack","value":{"rev":"10-5acf78ae6a417a82b49c221d606b8fed"}},
-{"id":"strappy","key":"strappy","value":{"rev":"3-fb63a899ff82c0f1142518cc263dd632"}},
-{"id":"strata","key":"strata","value":{"rev":"31-de615eccbda796e2bea405c2806ec792"}},
-{"id":"stream-buffers","key":"stream-buffers","value":{"rev":"7-d8fae628da43d377dd4e982f5bf7b09b"}},
-{"id":"stream-handler","key":"stream-handler","value":{"rev":"7-333eb7dcf2aeb550f948ee2162b21be2"}},
-{"id":"stream-stack","key":"stream-stack","value":{"rev":"22-a70979df042e2ff760b2d900259c84a1"}},
-{"id":"streamer","key":"streamer","value":{"rev":"17-dd16e62ada55311a793fbf7963a920f3"}},
-{"id":"streamlib","key":"streamlib","value":{"rev":"3-5125b1e6a92290f8d7f5fdad71e13fc2"}},
-{"id":"streamline","key":"streamline","value":{"rev":"152-0931f5697340c62e05dcd1a741afd38f"}},
-{"id":"streamline-streams","key":"streamline-streams","value":{"rev":"3-3224030ecfbf5a8ac5d218ab56dee545"}},
-{"id":"streamline-util","key":"streamline-util","value":{"rev":"3-a8047ecf37b985ec836c552fd2bcbf78"}},
-{"id":"streamlogger","key":"streamlogger","value":{"rev":"3-43f93a109774591f1409b0b86c363623"}},
-{"id":"streamlogger-fixed","key":"streamlogger-fixed","value":{"rev":"3-6e48de9e269b4f5bf979c560190b0680"}},
-{"id":"strftime","key":"strftime","value":{"rev":"25-74130d5c9cbf91025ce91f0463a9b1b5"}},
-{"id":"string-color","key":"string-color","value":{"rev":"3-9f336bf06bd80b2d2338c216099421c7"}},
-{"id":"strscan","key":"strscan","value":{"rev":"8-3e0d182a8d0c786754c555c0ac12e9d9"}},
-{"id":"strtok","key":"strtok","value":{"rev":"8-a1a1da7946d62fabb6cca56fc218654b"}},
-{"id":"struct","key":"struct","value":{"rev":"3-ff0f9cb336df73a5a19a38e17633583c"}},
-{"id":"structr","key":"structr","value":{"rev":"21-69b3672dab234d0effec5a72a2b1791c"}},
-{"id":"sty","key":"sty","value":{"rev":"9-ce5691388abc3ccaff23030bff190914"}},
-{"id":"style","key":"style","value":{"rev":"7-342569887fb53caddc60d745706cd66e"}},
-{"id":"style-compile","key":"style-compile","value":{"rev":"5-6f8b86c94c5344ec280a28f025691996"}},
-{"id":"styleless","key":"styleless","value":{"rev":"5-c236b81c38193ad71d7ed7c5b571995d"}},
-{"id":"stylewriter","key":"stylewriter","value":{"rev":"3-25a3f83252b220d8db0aa70c8fc1da4f"}},
-{"id":"stylus","key":"stylus","value":{"rev":"135-8b69084f50a95c297d1044e48b39a6c9"}},
-{"id":"stylus-blueprint","key":"stylus-blueprint","value":{"rev":"5-50ec59a9fa161ca68dac765f2281c13e"}},
-{"id":"stylus-sprite","key":"stylus-sprite","value":{"rev":"27-db597a75467baaad94de287494e9c21e"}},
-{"id":"styout","key":"styout","value":{"rev":"9-9d9460bb9bfa253ed0b5fbeb27f7710a"}},
-{"id":"sugar","key":"sugar","value":{"rev":"5-2722426edc51a7703f5c37306b03a8c4"}},
-{"id":"sugardoll","key":"sugardoll","value":{"rev":"16-cfadf4e7108357297be180a3868130db"}},
-{"id":"suger-pod","key":"suger-pod","value":{"rev":"5-c812b763cf6cdd218c6a18e1a4e2a4ac"}},
-{"id":"sunny","key":"sunny","value":{"rev":"3-c26b62eef1eeeeef58a7ea9373df3b39"}},
-{"id":"superagent","key":"superagent","value":{"rev":"3-1b32cc8372b7713f973bb1e044e6a86f"}},
-{"id":"supermarket","key":"supermarket","value":{"rev":"20-afa8a26ecec3069717c8ca7e5811cc31"}},
-{"id":"supershabam-websocket","key":"supershabam-websocket","value":{"rev":"7-513117fb37b3ab7cdaeeae31589e212e"}},
-{"id":"supervisor","key":"supervisor","value":{"rev":"16-2c6c141d018ef8927acee79f31d466ff"}},
-{"id":"supervisord","key":"supervisord","value":{"rev":"7-359ba115e5e10b5c95ef1a7562ad7a45"}},
-{"id":"svg2jadepartial","key":"svg2jadepartial","value":{"rev":"9-4a6260dd5d7c14801e8012e3ba7510f5"}},
-{"id":"swake","key":"swake","value":{"rev":"5-6f780362f0317427752d87cc5c640021"}},
-{"id":"swarm","key":"swarm","value":{"rev":"43-f1a963a0aeb043bf69529a82798b3afc"}},
-{"id":"sweet","key":"sweet","value":{"rev":"5-333f4d3529f65ce53b037cc282e3671d"}},
-{"id":"swig","key":"swig","value":{"rev":"29-53294b9d4f350192cf65817692092bfa"}},
-{"id":"switchback","key":"switchback","value":{"rev":"3-e117371d415f4a3d4ad30e78f5ec28bf"}},
-{"id":"switchboard","key":"switchboard","value":{"rev":"3-504d6c1e45165c54fbb1d3025d5120d7"}},
-{"id":"swiz","key":"swiz","value":{"rev":"82-cfb7840376b57896fba469e5c6ff3786"}},
-{"id":"swizec-bitly","key":"swizec-bitly","value":{"rev":"3-a705807238b8ef3ff2d008910bc350c3"}},
-{"id":"sws","key":"sws","value":{"rev":"5-bc5e8558bde6c2ae971abdd448a006d2"}},
-{"id":"symbie","key":"symbie","value":{"rev":"5-3184f869ed386341a4cdc35d85efb62a"}},
-{"id":"symbox","key":"symbox","value":{"rev":"5-eed33350cbb763726335ef1df74a6591"}},
-{"id":"synapse","key":"synapse","value":{"rev":"3-a9672d5159c0268babbfb94d7554d4bb"}},
-{"id":"sync","key":"sync","value":{"rev":"65-89fa6b8ab2df135d57e0bba4e921ad3b"}},
-{"id":"synchro","key":"synchro","value":{"rev":"21-6a881704308298f1894509a5b59287ae"}},
-{"id":"synchronous","key":"synchronous","value":{"rev":"7-bf89d61f001d994429e0fd12c26c2676"}},
-{"id":"syncler","key":"syncler","value":{"rev":"2-12870522e069945fc12f7d0f612700ee"}},
-{"id":"syncrepl","key":"syncrepl","value":{"rev":"5-e9234a1d8a529bc0d1b01c3b77c69c30"}},
-{"id":"synct","key":"synct","value":{"rev":"3-3664581b69e6f40dabc90525217f46cd"}},
-{"id":"syndicate","key":"syndicate","value":{"rev":"7-1db2b05d6b3e55fa622c3c26df7f9cad"}},
-{"id":"syslog","key":"syslog","value":{"rev":"5-d52fbc739505a2a194faf9a32da39d23"}},
-{"id":"syslog-node","key":"syslog-node","value":{"rev":"15-039177b9c516fd8d0b31faf92aa73f6f"}},
-{"id":"system","key":"system","value":{"rev":"18-33152371e0696a853ddb8b2234a6dfea"}},
-{"id":"taazr-uglify","key":"taazr-uglify","value":{"rev":"7-5c63dc75aa7c973df102c298291be8a5"}},
-{"id":"table","key":"table","value":{"rev":"9-a8a46ddf3a7cab63a0228303305cc32e"}},
-{"id":"tache.io","key":"tache.io","value":{"rev":"7-5639c70dc56b0a6333b568af377bb216"}},
-{"id":"taco","key":"taco","value":{"rev":"3-97cfbd54b4053c9e01e18af7c3902d1a"}},
-{"id":"tad","key":"tad","value":{"rev":"3-529ebda7291e24ae020d5c2931ba22cd"}},
-{"id":"tafa-misc-util","key":"tafa-misc-util","value":{"rev":"19-52984b66029c7d5cc78d3e2ae88c98d6"}},
-{"id":"tag","key":"tag","value":{"rev":"3-80b0d526b10a26f41fe73978843a07b9"}},
-{"id":"taglib","key":"taglib","value":{"rev":"3-efd2e6bc818bf3b385df40dfae506fa5"}},
-{"id":"tail","key":"tail","value":{"rev":"21-09bce80ad6aa4b01c6a70825fd141fd4"}},
-{"id":"tails","key":"tails","value":{"rev":"14-3ba6976831b1388e14235622ab001681"}},
-{"id":"tamejs","key":"tamejs","value":{"rev":"39-9a3657941df3bd24c43b5473e9f3b4c8"}},
-{"id":"taobao-js-api","key":"taobao-js-api","value":{"rev":"7-d46c8b48364b823dabf808f2b30e1eb8"}},
-{"id":"tap","key":"tap","value":{"rev":"35-1b8e553cf848f5ab27711efa0e74a033"}},
-{"id":"tap-assert","key":"tap-assert","value":{"rev":"19-f2960c64bcfa6ce4ed73e870d8d9e3fa"}},
-{"id":"tap-consumer","key":"tap-consumer","value":{"rev":"3-3e38aafb6d2d840bdb20818efbc75df4"}},
-{"id":"tap-global-harness","key":"tap-global-harness","value":{"rev":"3-f32589814daf8c1816c1f5a24de4ad12"}},
-{"id":"tap-harness","key":"tap-harness","value":{"rev":"7-a5af01384152c452abc11d4e641e6157"}},
-{"id":"tap-producer","key":"tap-producer","value":{"rev":"3-2db67a9541c37c912d4de2576bb3caa0"}},
-{"id":"tap-results","key":"tap-results","value":{"rev":"5-b8800525438965e38dc586e6b5cb142d"}},
-{"id":"tap-runner","key":"tap-runner","value":{"rev":"11-3975c0f5044530b61158a029899f4c03"}},
-{"id":"tap-test","key":"tap-test","value":{"rev":"5-0a3bba26b6b94dae8b7f59712335ee98"}},
-{"id":"tar","key":"tar","value":{"rev":"6-94226dd7add6ae6a1e68088360a466e4"}},
-{"id":"tar-async","key":"tar-async","value":{"rev":"37-d6579d43c1ee2f41205f28b0cde5da23"}},
-{"id":"tar-js","key":"tar-js","value":{"rev":"5-6826f2aad965fb532c7403964ce80d85"}},
-{"id":"task","key":"task","value":{"rev":"3-81f72759a5b64dff88a01a4838cc4a23"}},
-{"id":"task-extjs","key":"task-extjs","value":{"rev":"14-c9ba76374805425c332e0c66725e885c"}},
-{"id":"task-joose-nodejs","key":"task-joose-nodejs","value":{"rev":"20-6b8e4d24323d3240d5ee790d00c0d96a"}},
-{"id":"task-joose-stable","key":"task-joose-stable","value":{"rev":"32-026eada52cd5dd17a680359daec4917a"}},
-{"id":"tasks","key":"tasks","value":{"rev":"5-84e8f83d0c6ec27b4f05057c48063d62"}},
-{"id":"tav","key":"tav","value":{"rev":"3-da9899817edd20f0c73ad09bdf540cc6"}},
-{"id":"taxman","key":"taxman","value":{"rev":"5-9b9c68db8a1c8efedad800026cb23ae4"}},
-{"id":"tbone","key":"tbone","value":{"rev":"3-5789b010d0b1f1c663750c894fb5c570"}},
-{"id":"tcp-proxy","key":"tcp-proxy","value":{"rev":"3-118c6dc26d11537cf157fe2f28b05af5"}},
-{"id":"teamgrowl","key":"teamgrowl","value":{"rev":"8-3d13200b3bfeeace0787f9f9f027216d"}},
-{"id":"teamgrowl-server","key":"teamgrowl-server","value":{"rev":"8-a14dc4a26c2c06a4d9509eaff6e24735"}},
-{"id":"telehash","key":"telehash","value":{"rev":"6-4fae3629c1e7e111ba3e486b39a29913"}},
-{"id":"telemail","key":"telemail","value":{"rev":"3-60928460428265fc8002ca61c7f23abe"}},
-{"id":"telemetry","key":"telemetry","value":{"rev":"5-1be1d37ef62dc786b0a0f0d2d7984eb1"}},
-{"id":"teleport","key":"teleport","value":{"rev":"36-5b55a43ba83f4fe1a547c04e29139c3d"}},
-{"id":"teleport-dashboard","key":"teleport-dashboard","value":{"rev":"7-4cbc728d7a3052848a721fcdd92dda30"}},
-{"id":"teleport-site","key":"teleport-site","value":{"rev":"3-aeb8c0a93b7b0bcd7a30fe33bf23808c"}},
-{"id":"telnet","key":"telnet","value":{"rev":"11-7a587104b94ce135315c7540eb3493f6"}},
-{"id":"telnet-protocol","key":"telnet-protocol","value":{"rev":"3-8fcee2ed02c2e603c48e51e90ae78a00"}},
-{"id":"temp","key":"temp","value":{"rev":"6-91ef505da0a0860a13c0eb1a5d2531e6"}},
-{"id":"tempPath","key":"tempPath","value":{"rev":"3-34f2c1937d97207245986c344136547c"}},
-{"id":"tempis","key":"tempis","value":{"rev":"3-b2c0989068cc8125a519d19b9c79ffb6"}},
-{"id":"template","key":"template","value":{"rev":"6-d0088c6a5a7610570920db0f5c950bf9"}},
-{"id":"template-engine","key":"template-engine","value":{"rev":"3-3746216e1e2e456dbb0fd2f9070c1619"}},
-{"id":"tengwar","key":"tengwar","value":{"rev":"3-645a00f03e1e9546631ac22c37e1f3b4"}},
-{"id":"tenjin","key":"tenjin","value":{"rev":"5-0925c7535455266125b7730296c66356"}},
-{"id":"teriaki","key":"teriaki","value":{"rev":"3-d3c17f70d8697c03f43a7eae75f8c089"}},
-{"id":"terminal","key":"terminal","value":{"rev":"11-0e024d173ee3c28432877c0c5f633f19"}},
-{"id":"termspeak","key":"termspeak","value":{"rev":"7-fdfc93dd7d0d65fe502cabca191d8496"}},
-{"id":"termutil","key":"termutil","value":{"rev":"5-bccf8377ff28bc1f07f8b4b44d1e2335"}},
-{"id":"test","key":"test","value":{"rev":"38-129620013bbd3ec13617c403b02b52f1"}},
-{"id":"test-cmd","key":"test-cmd","value":{"rev":"35-7dd417a80390c2c124c66273ae33bd07"}},
-{"id":"test-helper","key":"test-helper","value":{"rev":"3-7b29af65825fc46d0603a39cdc6c95b4"}},
-{"id":"test-report","key":"test-report","value":{"rev":"5-e51cd1069b6cc442707f0861b35851be"}},
-{"id":"test-report-view","key":"test-report-view","value":{"rev":"3-9ba670940a8235eaef9b957dde6379af"}},
-{"id":"test-run","key":"test-run","value":{"rev":"20-6de89383602e6843d9376a78778bec19"}},
-{"id":"test_it","key":"test_it","value":{"rev":"5-be5cd436b9145398fa88c15c1269b102"}},
-{"id":"testbed","key":"testbed","value":{"rev":"2-db233788f7e516f227fac439d9450ef4"}},
-{"id":"testharness","key":"testharness","value":{"rev":"46-787468cb68ec31b442327639dcc0a4e5"}},
-{"id":"testingey","key":"testingey","value":{"rev":"17-a7ad6a9ff5721ae449876f6448d6f22f"}},
-{"id":"testnode","key":"testnode","value":{"rev":"9-cb63c450b241806e2271cd56fe502395"}},
-{"id":"testosterone","key":"testosterone","value":{"rev":"35-278e8af2b59bb6caf56728c67f720c37"}},
-{"id":"testqueue","key":"testqueue","value":{"rev":"3-59c574aeb345ef2d6e207a342be3f497"}},
-{"id":"testrunner","key":"testrunner","value":{"rev":"7-152e7d4a97f6cf6f00e22140e1969664"}},
-{"id":"testy","key":"testy","value":{"rev":"5-e8f4c9f4a799b6f8ab4effc21c3073a0"}},
-{"id":"text","key":"text","value":{"rev":"6-58a79b0db4968d6ad233898744a75351"}},
-{"id":"textareaserver","key":"textareaserver","value":{"rev":"3-f032b1397eb5e6369e1ac0ad1e78f466"}},
-{"id":"textile","key":"textile","value":{"rev":"6-2a8db66876f0119883449012c9c54c47"}},
-{"id":"textual","key":"textual","value":{"rev":"3-0ad9d5d3403b239185bad403625fed19"}},
-{"id":"tf2logparser","key":"tf2logparser","value":{"rev":"5-ffbc427b95ffeeb013dc13fa2b9621e3"}},
-{"id":"tfe-express","key":"tfe-express","value":{"rev":"3-b68ac01185885bcd22fa430ddb97e757"}},
-{"id":"tfidf","key":"tfidf","value":{"rev":"13-988808af905397dc103a0edf8c7c8a9f"}},
-{"id":"theBasics","key":"theBasics","value":{"rev":"7-9ebef2e59e1bd2fb3544ed16e1dc627b"}},
-{"id":"thefunlanguage.com","key":"thefunlanguage.com","value":{"rev":"3-25d56a3a4f639af23bb058db541bffe0"}},
-{"id":"thelinuxlich-docco","key":"thelinuxlich-docco","value":{"rev":"7-2ac0969da67ead2fa8bc0b21880b1d6b"}},
-{"id":"thelinuxlich-vogue","key":"thelinuxlich-vogue","value":{"rev":"5-ebc0a28cf0ae447b7ebdafc51c460bc0"}},
-{"id":"thepusher","key":"thepusher","value":{"rev":"5-b80cce6f81b1cae7373cd802df34c05c"}},
-{"id":"thetvdb","key":"thetvdb","value":{"rev":"3-a3a017a90b752d8158bf6dfcbcfdf250"}},
-{"id":"thirty-two","key":"thirty-two","value":{"rev":"3-1d4761ba7c4fa475e0c69e9c96d6ac04"}},
-{"id":"thoonk","key":"thoonk","value":{"rev":"15-c62c90d7e9072d96302d3a534ce943bb"}},
-{"id":"thrift","key":"thrift","value":{"rev":"14-447a41c9b655ec06e8e4854d5a55523a"}},
-{"id":"throttle","key":"throttle","value":{"rev":"3-8a3b3c657c49ede67c883806fbfb4df6"}},
-{"id":"thyme","key":"thyme","value":{"rev":"5-f06104f10d43a2b4cbcc7621ed45eacf"}},
-{"id":"tiamat","key":"tiamat","value":{"rev":"44-810633d6cd5edaa0510fe0f38c02ad58"}},
-{"id":"tictoc","key":"tictoc","value":{"rev":"3-0be6cf95d4466595376dadd0fc08bd95"}},
-{"id":"tidy","key":"tidy","value":{"rev":"3-25116d4dcf6765ef2a09711ecc1e03c9"}},
-{"id":"tiers","key":"tiers","value":{"rev":"3-ffaa8ffe472fe703de8f0bbeb8af5621"}},
-{"id":"tilejson","key":"tilejson","value":{"rev":"5-76b990dd945fb412ed00a96edc86b59d"}},
-{"id":"tilelive","key":"tilelive","value":{"rev":"57-9283e846e77263ed6e7299680d6b4b06"}},
-{"id":"tilelive-mapnik","key":"tilelive-mapnik","value":{"rev":"31-30f871ede46789fc6a36f427a1a99fff"}},
-{"id":"tilemill","key":"tilemill","value":{"rev":"19-7b884c9d707dd34f21cb71e88b45fc73"}},
-{"id":"tilestream","key":"tilestream","value":{"rev":"76-3a29ba96ecdb6c860c211ae8f2d909a9"}},
-{"id":"timbits","key":"timbits","value":{"rev":"59-b48dde4a210ec9fb4c33c07a52bce61e"}},
-{"id":"time","key":"time","value":{"rev":"51-907f587206e6a27803a3570e42650adc"}},
-{"id":"timeTraveller","key":"timeTraveller","value":{"rev":"7-389de8c8e86daea495d14aeb2b77df38"}},
-{"id":"timeout","key":"timeout","value":{"rev":"11-8e53dedecfaf6c4f1086eb0f43c71325"}},
-{"id":"timer","key":"timer","value":{"rev":"5-a8bcbb898a807e6662b54ac988fb967b"}},
-{"id":"timerjs","key":"timerjs","value":{"rev":"3-7d24eb268746fdb6b5e9be93bec93f1b"}},
-{"id":"timespan","key":"timespan","value":{"rev":"12-315b2793cbf28a18cea36e97a3c8a55f"}},
-{"id":"timezone","key":"timezone","value":{"rev":"35-2741d5d3b68a953d4cb3a596bc2bc15e"}},
-{"id":"tiny","key":"tiny","value":{"rev":"9-a61d26d02ce39381f7e865ad82494692"}},
-{"id":"tld","key":"tld","value":{"rev":"3-5ce4b4e48a11413ad8a1f3bfd0d0b778"}},
-{"id":"tldextract","key":"tldextract","value":{"rev":"7-620962e27145bd9fc17dc406c38b0c32"}},
-{"id":"tmp","key":"tmp","value":{"rev":"23-20f5c14244d58f35bd3e970f5f65cc32"}},
-{"id":"tmpl","key":"tmpl","value":{"rev":"5-5894c206e15fa58ab9415706b9d53f1f"}},
-{"id":"tmpl-precompile","key":"tmpl-precompile","value":{"rev":"15-3db34b681596b258cae1dae8cc24119d"}},
-{"id":"tmppckg","key":"tmppckg","value":{"rev":"11-b3a13e1280eb9cbef182c1f3f24bd570"}},
-{"id":"tnetstrings","key":"tnetstrings","value":{"rev":"3-d6b8ed2390a3e38138cb01b82d820079"}},
-{"id":"toDataURL","key":"toDataURL","value":{"rev":"3-1ea3cb62666b37343089bb9ef48fbace"}},
-{"id":"toYaml","key":"toYaml","value":{"rev":"11-3c629e3859c70d57b1ae51b2ac459011"}},
-{"id":"tob","key":"tob","value":{"rev":"7-376c174d06a675855406cfcdcacf61f5"}},
-{"id":"tobi","key":"tobi","value":{"rev":"50-d8749ac3739b042afe82657802bc3ba8"}},
-{"id":"toddick","key":"toddick","value":{"rev":"13-db528ef519f57b8c1d752ad7270b4d05"}},
-{"id":"tokenizer","key":"tokenizer","value":{"rev":"5-f6524fafb16059b66074cd04bf248a03"}},
-{"id":"tokyotosho","key":"tokyotosho","value":{"rev":"5-7432e0207165d9c165fd73d2a23410d6"}},
-{"id":"tolang","key":"tolang","value":{"rev":"7-65dbdf56b039f680e61a1e1d7feb9fb1"}},
-{"id":"toolkit","key":"toolkit","value":{"rev":"13-58075a57a6069dc39f98e72d473a0c30"}},
-{"id":"tools","key":"tools","value":{"rev":"3-ba301d25cfc6ad71dd68c811ea97fa01"}},
-{"id":"topcube","key":"topcube","value":{"rev":"29-736b3816d410f626dbc4da663acb05aa"}},
-{"id":"torrent-search","key":"torrent-search","value":{"rev":"7-7dd48fac0c1f99f34fad7da365085b6c"}},
-{"id":"tosource","key":"tosource","value":{"rev":"5-13483e2c11b07611c26b37f2e76a0bf3"}},
-{"id":"tplcpl","key":"tplcpl","value":{"rev":"15-8ba1e6d14ad6b8eb71b703e22054ac0a"}},
-{"id":"tracejs","key":"tracejs","value":{"rev":"23-1ffec83afc19855bcbed8049a009a910"}},
-{"id":"traceur","key":"traceur","value":{"rev":"9-a48f7e4cb1fb452125d81c62c8ab628b"}},
-{"id":"traceurl","key":"traceurl","value":{"rev":"21-e016db44a86b124ea00411f155d884d4"}},
-{"id":"tracey","key":"tracey","value":{"rev":"5-76699aab64e89271cbb7df80a00d3583"}},
-{"id":"tracy","key":"tracy","value":{"rev":"5-412f78082ba6f4c3c7d5328cf66d2e10"}},
-{"id":"traits","key":"traits","value":{"rev":"10-3a37dbec4b78518c00c577f5e286a9b9"}},
-{"id":"tramp","key":"tramp","value":{"rev":"5-3b6d27b8b432b925b7c9fc088e84d8e4"}},
-{"id":"transcode","key":"transcode","value":{"rev":"6-a6494707bd94b5e6d1aa9df3dbcf8d7c"}},
-{"id":"transformer","key":"transformer","value":{"rev":"15-7738ac7c02f03d64f73610fbf7ed92a6"}},
-{"id":"transformjs","key":"transformjs","value":{"rev":"5-f1ab667c430838e1d3238e1f878998e2"}},
-{"id":"transitive","key":"transitive","value":{"rev":"43-841de40a5e3434bd51a1c8f19891f982"}},
-{"id":"translate","key":"translate","value":{"rev":"12-f3ddbbada2f109843c5422d83dd7a203"}},
-{"id":"transliteration.ua","key":"transliteration.ua","value":{"rev":"3-f847c62d8749904fc7de6abe075e619a"}},
-{"id":"transmission","key":"transmission","value":{"rev":"9-587eaa395430036f17b175bc439eabb6"}},
-{"id":"transmogrify","key":"transmogrify","value":{"rev":"5-3e415cd9420c66551cccc0aa91b11d98"}},
-{"id":"transporter","key":"transporter","value":{"rev":"6-698b696890bf01d751e9962bd86cfe7e"}},
-{"id":"traverse","key":"traverse","value":{"rev":"60-9432066ab44fbb0e913227dc62c953d9"}},
-{"id":"traverser","key":"traverser","value":{"rev":"11-1d50662f13134868a1df5019d99bf038"}},
-{"id":"treeeater","key":"treeeater","value":{"rev":"56-2c8a9fd3e842b221ab8da59c6d847327"}},
-{"id":"treelib","key":"treelib","value":{"rev":"13-212ccc836a943c8b2a5342b65ab9edf3"}},
-{"id":"trees","key":"trees","value":{"rev":"3-3ee9e9cf3fd8aa985e32b3d9586a7c0e"}},
-{"id":"trentm-datetime","key":"trentm-datetime","value":{"rev":"3-740a291379ddf97bda2aaf2ff0e1654d"}},
-{"id":"trentm-git","key":"trentm-git","value":{"rev":"3-b81ce3764a45e5d0862488fab9fac486"}},
-{"id":"trentm-hashlib","key":"trentm-hashlib","value":{"rev":"3-4b4175b6a8702bdb9c1fe5ac4786761b"}},
-{"id":"trial","key":"trial","value":{"rev":"3-cf77f189409517495dd8259f86e0620e"}},
-{"id":"trie","key":"trie","value":{"rev":"3-6cc3c209cf4aae5a4f92e1ca38c4c54c"}},
-{"id":"trollop","key":"trollop","value":{"rev":"6-75076593614c9cd51d61a76f73d2c5b5"}},
-{"id":"trollscript","key":"trollscript","value":{"rev":"5-fcf646075c5be575b9174f84d08fbb37"}},
-{"id":"trollscriptjs","key":"trollscriptjs","value":{"rev":"3-1dfd1acd3d15c0bd18ea407e3933b621"}},
-{"id":"tropo-webapi","key":"tropo-webapi","value":{"rev":"11-5106730dbd79167df38812ffaa912ded"}},
-{"id":"tropo-webapi-node","key":"tropo-webapi-node","value":{"rev":"15-483c64bcbf1dcadaea30e78d7bc3ebbc"}},
-{"id":"trundle","key":"trundle","value":{"rev":"3-2af32ed348fdedebd1077891bb22a756"}},
-{"id":"trust-reverse-proxy","key":"trust-reverse-proxy","value":{"rev":"6-ba5bed0849617e0390f0e24750bf5747"}},
-{"id":"trying","key":"trying","value":{"rev":"3-43b417160b178c710e0d85af6b3d56e7"}},
-{"id":"ttapi","key":"ttapi","value":{"rev":"51-727e47d8b383b387a498711c07ce4de6"}},
-{"id":"tubbs","key":"tubbs","value":{"rev":"7-b386e59f2205b22615a376f5ddee3eb0"}},
-{"id":"tuild","key":"tuild","value":{"rev":"13-4a2b92f95a0ee342c060974ce7a0021d"}},
-{"id":"tumbler","key":"tumbler","value":{"rev":"5-ff16653ab92d0af5e70d9caa88f3b7ed"}},
-{"id":"tumbler-sprite","key":"tumbler-sprite","value":{"rev":"3-604d25b7bb9e32b92cadd75aeb23997c"}},
-{"id":"tumblr","key":"tumblr","value":{"rev":"9-14d160f1f2854330fba300b3ea233893"}},
-{"id":"tumblr2","key":"tumblr2","value":{"rev":"7-29bb5d86501cdbcef889289fe7f4b51e"}},
-{"id":"tumblrrr","key":"tumblrrr","value":{"rev":"10-0c50379fbab7b39766e1a61379c39964"}},
-{"id":"tunguska","key":"tunguska","value":{"rev":"1-a6b24d2c2a5a9f091a9b6f13bac66927"}},
-{"id":"tupalocomapi","key":"tupalocomapi","value":{"rev":"3-a1cdf85a08784f62c2ec440a1ed90ad4"}},
-{"id":"turing","key":"turing","value":{"rev":"5-4ba083c8343718acb9450d96551b65c0"}},
-{"id":"tutti","key":"tutti","value":{"rev":"21-929cc205b3d8bc68f86aa63578e0af95"}},
-{"id":"tuttiserver","key":"tuttiserver","value":{"rev":"39-b3fe7cbaf2d43458dae061f37aa5ae18"}},
-{"id":"tuttiterm","key":"tuttiterm","value":{"rev":"7-6c0e9e7f6f137de0ee7c886351fdf373"}},
-{"id":"tvister","key":"tvister","value":{"rev":"7-963eab682ab09922a44fbca50c0ec019"}},
-{"id":"twbot","key":"twbot","value":{"rev":"15-923625f516566c977975b3da3d4bc46b"}},
-{"id":"tweasy","key":"tweasy","value":{"rev":"10-7215063e5729b1c114ef73f07a1368d3"}},
-{"id":"tweeter.js","key":"tweeter.js","value":{"rev":"3-bc8437157c11cf32eec168d7c71037bb"}},
-{"id":"tweetstream","key":"tweetstream","value":{"rev":"6-81a6bf2a3e29208e1c4c65a3958ee5d8"}},
-{"id":"twerk","key":"twerk","value":{"rev":"5-01cbfddf9ad25a67ff1e45ec39acb780"}},
-{"id":"twerp","key":"twerp","value":{"rev":"23-1b4726d1fef030a3dde6fae2cdfbb687"}},
-{"id":"twigjs","key":"twigjs","value":{"rev":"7-07b90e2c35c5c81d394b29086507de04"}},
-{"id":"twilio","key":"twilio","value":{"rev":"20-68d5439ecb1774226025e6f9125bbb86"}},
-{"id":"twilio-node","key":"twilio-node","value":{"rev":"13-84d31c2dc202df3924ed399289cbc1fc"}},
-{"id":"twiliode","key":"twiliode","value":{"rev":"3-6cbe432dd6c6d94d8a4faa6e0ea47dd3"}},
-{"id":"twill","key":"twill","value":{"rev":"5-3a0caf9c0e83ab732ae8ae61f4f17830"}},
-{"id":"twisted-deferred","key":"twisted-deferred","value":{"rev":"9-f35acecb8736d96582e1f9b62dd4ae47"}},
-{"id":"twitpic","key":"twitpic","value":{"rev":"11-55b11432a09edeec1189024f26a48153"}},
-{"id":"twitter","key":"twitter","value":{"rev":"60-9ad6368932c8a74ea5bd10dda993d74d"}},
-{"id":"twitter-client","key":"twitter-client","value":{"rev":"11-dc3da9e1724cf00aa86c1e7823cfd919"}},
-{"id":"twitter-connect","key":"twitter-connect","value":{"rev":"12-969292347a4251d121566169236a3091"}},
-{"id":"twitter-js","key":"twitter-js","value":{"rev":"24-251d0c54749e86bd544a15290e311370"}},
-{"id":"twitter-node","key":"twitter-node","value":{"rev":"12-a7ed6c69f05204de2e258f46230a05b6"}},
-{"id":"twitter-text","key":"twitter-text","value":{"rev":"16-978bda8ec4eaf68213d0ee54242feefa"}},
-{"id":"type","key":"type","value":{"rev":"3-c5b8b87cde9e27277302cb5cb6d00f85"}},
-{"id":"typecheck","key":"typecheck","value":{"rev":"5-79723661620bb0fb254bc7f888d6e937"}},
-{"id":"typed-array","key":"typed-array","value":{"rev":"3-89ac91e2a51a9e5872515d5a83691e83"}},
-{"id":"typhoon","key":"typhoon","value":{"rev":"23-2027c96b8fd971332848594f3b0526cb"}},
-{"id":"typogr","key":"typogr","value":{"rev":"13-2dfe00f08ee13e6b00a99df0a8f96718"}},
-{"id":"ua-parser","key":"ua-parser","value":{"rev":"14-d1a018354a583dba4506bdc0c04a416b"}},
-{"id":"uberblic","key":"uberblic","value":{"rev":"5-500704ed73f255eb5b86ad0a5e158bc9"}},
-{"id":"ucengine","key":"ucengine","value":{"rev":"5-1e8a91c813e39b6f1b9f988431bb65c8"}},
-{"id":"udon","key":"udon","value":{"rev":"3-9a819e835f88fc91272b6366c70d83c0"}},
-{"id":"ueberDB","key":"ueberDB","value":{"rev":"85-fa700e5a64efaf2e71de843d7175606c"}},
-{"id":"uglify-js","key":"uglify-js","value":{"rev":"30-9ac97132a90f94b0a3aadcd96ed51890"}},
-{"id":"uglify-js-middleware","key":"uglify-js-middleware","value":{"rev":"5-47bd98d7f1118f5cab617310d4022eb4"}},
-{"id":"uglifycss","key":"uglifycss","value":{"rev":"3-4eefc4632e6e61ec999e93a1e26e0c83"}},
-{"id":"ui","key":"ui","value":{"rev":"27-b6439c8fcb5feb1d8f722ac5a91727c0"}},
-{"id":"ukijs","key":"ukijs","value":{"rev":"13-a0d7b143104e6cc0760cbe7e61c4f293"}},
-{"id":"umecob","key":"umecob","value":{"rev":"19-960fef8b8b8468ee69096173baa63232"}},
-{"id":"underscore","key":"underscore","value":{"rev":"29-419857a1b0dc08311717d1f6066218b8"}},
-{"id":"underscore-data","key":"underscore-data","value":{"rev":"17-e763dd42ea6e4ab71bc442e9966e50e4"}},
-{"id":"underscore.date","key":"underscore.date","value":{"rev":"11-a1b5870b855d49a3bd37823a736e9f93"}},
-{"id":"underscore.inspector","key":"underscore.inspector","value":{"rev":"7-04d67b5bfe387391d461b11c6ddda231"}},
-{"id":"underscore.string","key":"underscore.string","value":{"rev":"31-4100a9e1f1d7e8dde007cc6736073e88"}},
-{"id":"underscorem","key":"underscorem","value":{"rev":"5-181dd113e62482020122e6a68f80cdc1"}},
-{"id":"underscorex","key":"underscorex","value":{"rev":"8-76b82cffecd4304822fbc346e6cebc1b"}},
-{"id":"underscorify","key":"underscorify","value":{"rev":"3-7bb03dccba21d30c50328e7d4878704e"}},
-{"id":"unicode","key":"unicode","value":{"rev":"45-2fc73b36aad2661e5bb2e703e62a6f71"}},
-{"id":"unicoder","key":"unicoder","value":{"rev":"3-6f6571d361217af7fea7c224ca8a1149"}},
-{"id":"unit","key":"unit","value":{"rev":"5-68847eeb11474765cf73f1e21ca4b839"}},
-{"id":"unite","key":"unite","value":{"rev":"3-a8812f4e77d1d1a9dc67c327d8e75b47"}},
-{"id":"unittest-jslint","key":"unittest-jslint","value":{"rev":"3-c371c63c7b68a32357becb7b6a02d048"}},
-{"id":"unixlib","key":"unixlib","value":{"rev":"3-41f4c2859ca92951cf40556faa4eacdb"}},
-{"id":"unlimit","key":"unlimit","value":{"rev":"3-f42d98066e6ebbc23ef67499845ac020"}},
-{"id":"unrequire","key":"unrequire","value":{"rev":"17-bc75241891ae005eb52844222daf8f97"}},
-{"id":"unshortener","key":"unshortener","value":{"rev":"15-0851cb8bc3c378c37a3df9760067a109"}},
-{"id":"unused","key":"unused","value":{"rev":"3-362e713349c4a5541564fa2de33d01ba"}},
-{"id":"upload","key":"upload","value":{"rev":"3-63aedcfb335754c3bca1675c4add51c4"}},
-{"id":"ups_node","key":"ups_node","value":{"rev":"15-fa6d0be3831ee09420fb703c4d508534"}},
-{"id":"upy","key":"upy","value":{"rev":"5-dab63054d02be71f9c2709659974a5e1"}},
-{"id":"uri","key":"uri","value":{"rev":"3-5baaa12433cff7539b1d39c0c7f62853"}},
-{"id":"uri-parser","key":"uri-parser","value":{"rev":"3-d7e81b08e8b3f6f5ac8c6b4220228529"}},
-{"id":"url","key":"url","value":{"rev":"3-0dfd5ec2904cb1f645fa7449dbb0ce52"}},
-{"id":"url-expander","key":"url-expander","value":{"rev":"21-73bf9fa3c98b15d5ef0ed9815d862953"}},
-{"id":"urllib","key":"urllib","value":{"rev":"5-b015944526c15589a1504d398dcb598a"}},
-{"id":"urn-parser","key":"urn-parser","value":{"rev":"3-08a35a166790ecf88729befd4ebc7bf1"}},
-{"id":"useless","key":"useless","value":{"rev":"3-9d7b7ab9d4811847ed6e99ce2226d687"}},
-{"id":"user-agent","key":"user-agent","value":{"rev":"16-ac00f085795346421242e3d4d75523ad"}},
-{"id":"useragent","key":"useragent","value":{"rev":"7-3184d8aba5540e6596da9e3635ee3c24"}},
-{"id":"useragent_parser","key":"useragent_parser","value":{"rev":"3-730427aba3f0825fd28850e96b1613d4"}},
-{"id":"utf7","key":"utf7","value":{"rev":"3-ad56e4c9ac5a509ff568a3cdf0ed074f"}},
-{"id":"utf8","key":"utf8","value":{"rev":"3-c530cad759dd6e4e471338a71a307434"}},
-{"id":"util","key":"util","value":{"rev":"3-0e55e3466bc3ea6aeda6384639e842c3"}},
-{"id":"utility-belt","key":"utility-belt","value":{"rev":"3-8de401b41ef742b3c0a144b99099771f"}},
-{"id":"utml","key":"utml","value":{"rev":"5-5f0f3de6f787056bd124ca98716fbc19"}},
-{"id":"uubench","key":"uubench","value":{"rev":"6-b6cb0756e35ce998b61bb9a6ea0f5732"}},
-{"id":"uuid","key":"uuid","value":{"rev":"13-3f014b236668ec5eb49d0a17ad54d397"}},
-{"id":"uuid-lib","key":"uuid-lib","value":{"rev":"3-3de40495439e240b5a41875c19c65b1a"}},
-{"id":"uuid-pure","key":"uuid-pure","value":{"rev":"19-b94e9f434901fe0a0bbfdfa06f785874"}},
-{"id":"uuid.js","key":"uuid.js","value":{"rev":"8-3232a97c9f4a2b601d207488350df01b"}},
-{"id":"v8-profiler","key":"v8-profiler","value":{"rev":"12-790c90391bcbec136e316e57b30a845c"}},
-{"id":"valentine","key":"valentine","value":{"rev":"35-dd4b0642aacaf833e1119fc42bb6e9df"}},
-{"id":"validate-json","key":"validate-json","value":{"rev":"5-6a71fb36b102b3a4c5f6cc35012518b3"}},
-{"id":"validations","key":"validations","value":{"rev":"5-7272c97d35e3269813d91f1ea06e7217"}},
-{"id":"validator","key":"validator","value":{"rev":"45-9983ff692c291143ba670b613e07ddab"}},
-{"id":"vanilla","key":"vanilla","value":{"rev":"3-2e1d05af0873386b7cd6d432f1e76217"}},
-{"id":"vapor","key":"vapor","value":{"rev":"1-e1f86f03c94a4b90bca347408dbc56ff"}},
-{"id":"vargs","key":"vargs","value":{"rev":"6-9e389cfd648034dd469348112eedb23b"}},
-{"id":"vash","key":"vash","value":{"rev":"9-85ade8b7249a0e8230e8f0aaf1c34e2a"}},
-{"id":"vbench","key":"vbench","value":{"rev":"3-059528251a566c6ac363e236212448ce"}},
-{"id":"vendor.js","key":"vendor.js","value":{"rev":"5-264b0f8a771cad113be6919b6004ff95"}},
-{"id":"ventstatus","key":"ventstatus","value":{"rev":"3-16aa39e22b149b23b64317991415f92c"}},
-{"id":"version-compare","key":"version-compare","value":{"rev":"3-a8d6eea31572fe973ddd98c0a8097bc6"}},
-{"id":"vertica","key":"vertica","value":{"rev":"37-035d50183c3ad3056db0d7a13c20005d"}},
-{"id":"vhost","key":"vhost","value":{"rev":"9-53bbdba14dae631a49e782d169e4fc5a"}},
-{"id":"vice","key":"vice","value":{"rev":"5-0f74600349f4540b1b104d4ebfec1309"}},
-{"id":"video","key":"video","value":{"rev":"10-65c0b603047188fe2b07cbd2e1c93fe7"}},
-{"id":"vie","key":"vie","value":{"rev":"5-94e23770c5a0510480a0bae07d846ebc"}},
-{"id":"view","key":"view","value":{"rev":"21-a2abdfc54ab732a906347090c68564a5"}},
-{"id":"vigilante","key":"vigilante","value":{"rev":"30-951541a8b2fc2364bb1ccd7cfae56482"}},
-{"id":"villain","key":"villain","value":{"rev":"10-8dbfc5db42230d8813e6cc61af14d575"}},
-{"id":"vine","key":"vine","value":{"rev":"17-e7ac5d190cacf0f2d17d27e37b2b9f5f"}},
-{"id":"vipe","key":"vipe","value":{"rev":"3-78996531221e08292b9ca3de6e19d578"}},
-{"id":"viralheat","key":"viralheat","value":{"rev":"3-b928ce797fd5955c766b6b7e9e9c8f54"}},
-{"id":"viralheat-sentiment","key":"viralheat-sentiment","value":{"rev":"3-5d083e0d141ecf36e06c7c2885b01b5c"}},
-{"id":"virustotal.js","key":"virustotal.js","value":{"rev":"3-074be49f7e877b154a2144ef844f78e9"}},
-{"id":"vk","key":"vk","value":{"rev":"9-48f53ea9ebe68c9d3af45eb601c71006"}},
-{"id":"vmcjs","key":"vmcjs","value":{"rev":"5-44d8dd906fa3530d2bfc2dfee7f498d4"}},
-{"id":"vogue","key":"vogue","value":{"rev":"38-891354d18638a26d5b5ba95933faae0e"}},
-{"id":"vogue-dtrejo","key":"vogue-dtrejo","value":{"rev":"3-3ef8d57d3b5c0aca297fe38c9040954f"}},
-{"id":"votizen-logger","key":"votizen-logger","value":{"rev":"4-ba0837a28693aba346fab885a3a8f315"}},
-{"id":"vows","key":"vows","value":{"rev":"80-43d6a81c184c06d73e692358e913821e"}},
-{"id":"vows-bdd","key":"vows-bdd","value":{"rev":"3-dc2a7013dd94b0b65a3ed3a8b69b680e"}},
-{"id":"vows-ext","key":"vows-ext","value":{"rev":"49-079067a01a681ca7df4dfaae74adb3fb"}},
-{"id":"vows-fluent","key":"vows-fluent","value":{"rev":"23-67625a035cedf90c8fed73722465ecea"}},
-{"id":"vows-is","key":"vows-is","value":{"rev":"68-45a13df422d08ab00cc8f785b6411741"}},
-{"id":"voyeur","key":"voyeur","value":{"rev":"5-56fe23f95df6ff648b67f1a9baf10d41"}},
-{"id":"vws.pubsub","key":"vws.pubsub","value":{"rev":"5-609497d66ab6a76c5201904e41b95715"}},
-{"id":"wabtools","key":"wabtools","value":{"rev":"7-b24cd7262720a29f59da103b7110325d"}},
-{"id":"wadey-ranger","key":"wadey-ranger","value":{"rev":"17-a0541bad0880ffc199e8b2ef4c80ddb8"}},
-{"id":"wagner","key":"wagner","value":{"rev":"3-4b76219928f409b7124e02c0518d6cb6"}},
-{"id":"wait","key":"wait","value":{"rev":"3-7f8a5f9c8e86da4f219353ae778868a9"}},
-{"id":"waiter","key":"waiter","value":{"rev":"5-680176b06719c9a8499725b0a617cdc9"}},
-{"id":"waitlist","key":"waitlist","value":{"rev":"17-f3b2a4cf58b940c3839debda23c12b8e"}},
-{"id":"wake_on_lan","key":"wake_on_lan","value":{"rev":"6-1295bb5c618495b74626aaaa1c644d32"}},
-{"id":"walk","key":"walk","value":{"rev":"22-c05e1e1252a59b1048a0b6464631d08b"}},
-{"id":"walker","key":"walker","value":{"rev":"18-e8a20efc286234fb20789dc68cd04cd1"}},
-{"id":"warp","key":"warp","value":{"rev":"19-c7f17d40291984cd27f1d57fe764a5d2"}},
-{"id":"watch","key":"watch","value":{"rev":"18-3bc43d36ea1dbf69b93d4ea3d9534d44"}},
-{"id":"watch-less","key":"watch-less","value":{"rev":"5-f69a778ee58c681ad3b24a766576c016"}},
-{"id":"watch-tree","key":"watch-tree","value":{"rev":"5-316b60e474c3ae6e97f7cdb06b65af78"}},
-{"id":"watch.js","key":"watch.js","value":{"rev":"11-8c02c7429f90ca5e756a131d85bd5a32"}},
-{"id":"watch_dir","key":"watch_dir","value":{"rev":"5-df0a592508e1e13f5d24c2863733a8b9"}},
-{"id":"watchable","key":"watchable","value":{"rev":"3-f8694ff0c3add9a1310f0980e24ea23b"}},
-{"id":"watchersto","key":"watchersto","value":{"rev":"5-06665e682f58f61831d41d08b4ea12e7"}},
-{"id":"watchman","key":"watchman","value":{"rev":"11-956ad2175d0c5b52e82988a697474244"}},
-{"id":"watchn","key":"watchn","value":{"rev":"15-9685afa8b501f8cd7e068beed1264cfe"}},
-{"id":"wave","key":"wave","value":{"rev":"7-d13054ac592b3b4f81147b6bc7a91ea1"}},
-{"id":"wax","key":"wax","value":{"rev":"71-2e8877b0b6df27c1375dcd7f6bbdb4b7"}},
-{"id":"waz-storage-js","key":"waz-storage-js","value":{"rev":"15-1aaa07353c3d25f5794fa004a23c4dfa"}},
-{"id":"wd","key":"wd","value":{"rev":"19-20c4ee8b83057ece691f9669e288059e"}},
-{"id":"weak","key":"weak","value":{"rev":"3-b774b8be74f33c843df631aa07854104"}},
-{"id":"web","key":"web","value":{"rev":"3-c571dee306020f6f92c7a3150e8023b1"}},
-{"id":"webapp","key":"webapp","value":{"rev":"5-60525be5734cf1d02a77508e5f46bafa"}},
-{"id":"webfonts","key":"webfonts","value":{"rev":"5-d7be242801702fd1eb728385b8982107"}},
-{"id":"webgenjs","key":"webgenjs","value":{"rev":"3-ac6be47eedcbb2561babdb9495d60f29"}},
-{"id":"webgl","key":"webgl","value":{"rev":"18-21cd40f6c7e4943a2d858ed813d3c45d"}},
-{"id":"webhookit-comment","key":"webhookit-comment","value":{"rev":"5-1fbed3d75bf485433bdcac4fac625eab"}},
-{"id":"webhookit-ejs","key":"webhookit-ejs","value":{"rev":"5-9b76f543e9c0941d0245cb3bfd2cc64e"}},
-{"id":"webhookit-email","key":"webhookit-email","value":{"rev":"5-d472fde4f101d55d029a29777bbdb952"}},
-{"id":"webhookit-http","key":"webhookit-http","value":{"rev":"13-9f6f05cdb03f45a2227b9cd820565e63"}},
-{"id":"webhookit-jsonparse","key":"webhookit-jsonparse","value":{"rev":"3-6d49bf8a9849130d9bbc5b0d6fb0bf67"}},
-{"id":"webhookit-jsonpath","key":"webhookit-jsonpath","value":{"rev":"5-7acaf50267274584dca1cc5c1e77ce2e"}},
-{"id":"webhookit-objectbuilder","key":"webhookit-objectbuilder","value":{"rev":"5-e63fb26621929f3ab8d8519556116b30"}},
-{"id":"webhookit-soupselect","key":"webhookit-soupselect","value":{"rev":"9-726f2f4794437632032058bc81e6ee5d"}},
-{"id":"webhookit-xml2js","key":"webhookit-xml2js","value":{"rev":"3-ec959e474ecb3a163f2991767594a60e"}},
-{"id":"webhookit-yql","key":"webhookit-yql","value":{"rev":"9-c6ae87a8cc55d33901485ee7c3895ef8"}},
-{"id":"webify","key":"webify","value":{"rev":"3-86810874abf2274d1387ee748987b627"}},
-{"id":"webjs","key":"webjs","value":{"rev":"103-593a1e4e69d8db6284ecf4fce01b4668"}},
-{"id":"webmake","key":"webmake","value":{"rev":"13-f6588093a487212a151d1c00c26de7b4"}},
-{"id":"webmetrics","key":"webmetrics","value":{"rev":"3-44a428fd2ecb1b1bf50c33157750dd16"}},
-{"id":"webrepl","key":"webrepl","value":{"rev":"21-d6dcdbb59186092d9a0f1977c69394a5"}},
-{"id":"webservice","key":"webservice","value":{"rev":"18-05038f1cf997cff1ed81e783485680aa"}},
-{"id":"webshell","key":"webshell","value":{"rev":"3-05c431cf961a9dbaee1dfd95237e189a"}},
-{"id":"websocket","key":"websocket","value":{"rev":"33-7c20d55a88f187d7b398525824159f67"}},
-{"id":"websocket-client","key":"websocket-client","value":{"rev":"12-26a3530b9e6d465f472c791db01c9fc3"}},
-{"id":"websocket-protocol","key":"websocket-protocol","value":{"rev":"3-e52a8496f70686c289087149aee8b359"}},
-{"id":"websocket-server","key":"websocket-server","value":{"rev":"46-9f69e2f9408eb196b3a1aa990e5b5ac2"}},
-{"id":"websockets","key":"websockets","value":{"rev":"3-5535fcb4ae144909f021ee067eec7b2a"}},
-{"id":"webworker","key":"webworker","value":{"rev":"16-f7a4c758b176c6e464c93b6a9f79283b"}},
-{"id":"weibo","key":"weibo","value":{"rev":"21-8a50310389b2f43d8a7cb14e138eb122"}},
-{"id":"weld","key":"weld","value":{"rev":"7-16601ac41d79b3a01e4d2615035376ed"}},
-{"id":"whatlang","key":"whatlang","value":{"rev":"5-f7b10a0f8c3b6579c81d1d1222aeccd7"}},
-{"id":"wheat","key":"wheat","value":{"rev":"16-f6a97282f521edb7f2b0e5edc9577ce0"}},
-{"id":"which","key":"which","value":{"rev":"7-e5fdcb208715f2201d3911caf8a67042"}},
-{"id":"whiskers","key":"whiskers","value":{"rev":"9-2cfd73cebeaf8ce3cb1591e825380621"}},
-{"id":"whiskey","key":"whiskey","value":{"rev":"49-55367718b9067ff2bcb7fbb89327587b"}},
-{"id":"whisperjs","key":"whisperjs","value":{"rev":"19-e2182c72ea24b8c40e12b0c1027eb60d"}},
-{"id":"wikimapia","key":"wikimapia","value":{"rev":"11-8d1a314e8c827236e21e0aabc6e5efd9"}},
-{"id":"wikiminute","key":"wikiminute","value":{"rev":"11-d031a2c7d41bcecb52ac9c7bb5e75e8e"}},
-{"id":"wikiwym","key":"wikiwym","value":{"rev":"3-c0fd4c9b6b93b3a8b14021c2ebae5b0c"}},
-{"id":"wiky","key":"wiky","value":{"rev":"6-be49acce152652e9219a32da1dfd01ea"}},
-{"id":"wildfile","key":"wildfile","value":{"rev":"9-16a05032f890f07c72a5f48c3a6ffbc0"}},
-{"id":"willful.js","key":"willful.js","value":{"rev":"3-3bb957b0a5fc1b4b6c15bace7e8f5902"}},
-{"id":"wilson","key":"wilson","value":{"rev":"14-d4bf88484f1b1cf86b07f4b74f26991d"}},
-{"id":"window","key":"window","value":{"rev":"3-ea84e74fd5556ff662ff47f40522cfa2"}},
-{"id":"windshaft","key":"windshaft","value":{"rev":"21-1d31e4eb7482d15b97c919a4b051ea9c"}},
-{"id":"windtunnel","key":"windtunnel","value":{"rev":"5-0d2ef7faed1b221a3eaa581480adad64"}},
-{"id":"wingrr","key":"wingrr","value":{"rev":"9-a599fad3e0c74895aa266c61805b76cb"}},
-{"id":"wings","key":"wings","value":{"rev":"3-cfcfd262d905cd3be1d1bae82fafd9f0"}},
-{"id":"winston","key":"winston","value":{"rev":"111-13acba5a9ba6d4f19469acb4122d72ea"}},
-{"id":"winston-amqp","key":"winston-amqp","value":{"rev":"5-61408e1dde45f974a995dd27905b8831"}},
-{"id":"winston-mongodb","key":"winston-mongodb","value":{"rev":"9-ae755237a8faa8f5a0b92029c236691a"}},
-{"id":"winston-redis","key":"winston-redis","value":{"rev":"3-1fb861edc109ed5cbd735320124ba103"}},
-{"id":"winston-riak","key":"winston-riak","value":{"rev":"15-3f2923a73386524d851244ace1bece98"}},
-{"id":"winston-syslog","key":"winston-syslog","value":{"rev":"9-7f256bd63aebec19edea47f80de21dfd"}},
-{"id":"winstoon","key":"winstoon","value":{"rev":"9-d719ca7abfeeaa468d1b431c24836089"}},
-{"id":"wirez","key":"wirez","value":{"rev":"5-5c5d0768485ed11c2b80a8a6a3699c39"}},
-{"id":"wobot","key":"wobot","value":{"rev":"9-176ed86fd9d94a7e94efb782c7512533"}},
-{"id":"word-generator","key":"word-generator","value":{"rev":"5-a2c67f11474a8925eb67f04369ac068a"}},
-{"id":"wordnik","key":"wordnik","value":{"rev":"3-4e371fbf7063ced50bbe726079fda1ec"}},
-{"id":"wordpress-auth","key":"wordpress-auth","value":{"rev":"5-05eef01542e00a88418d2885efb4c9ad"}},
-{"id":"wordwrap","key":"wordwrap","value":{"rev":"5-a728ce2cdeab69b71d40fe7c1c41d7c1"}},
-{"id":"wordy","key":"wordy","value":{"rev":"3-bc220ca3dbd008aee932c551cfbdcc6b"}},
-{"id":"worker","key":"worker","value":{"rev":"6-3b03aa764c9fac66ec5c1773e9abc43b"}},
-{"id":"worker-pool","key":"worker-pool","value":{"rev":"3-e3550e704b48f5799a4cc02af7d27355"}},
-{"id":"workflow","key":"workflow","value":{"rev":"3-817c6c77cbb2f332ea9bdddf3b565c00"}},
-{"id":"workhorse","key":"workhorse","value":{"rev":"30-c39ae2ddd867a137073a289c1709f229"}},
-{"id":"world-db","key":"world-db","value":{"rev":"6-eaef1beb6abbebd3e903a28a7f46aa81"}},
-{"id":"worm","key":"worm","value":{"rev":"7-00db15dc9cfd48777cce32fb93e1df6b"}},
-{"id":"wormhole","key":"wormhole","value":{"rev":"37-21e2db062666040c477a7042fc2ffc9d"}},
-{"id":"wrap","key":"wrap","value":{"rev":"3-aded14c091b730813bd24d92cae45cd6"}},
-{"id":"wrench","key":"wrench","value":{"rev":"12-57d3da63e34e59e1f5d1b3bde471e31f"}},
-{"id":"wsclient","key":"wsclient","value":{"rev":"17-f962faf4f6c9d4eda9111e90b2d0735d"}},
-{"id":"wscomm","key":"wscomm","value":{"rev":"47-80affda45da523e57c87b8d43ef73ec9"}},
-{"id":"wsscraper","key":"wsscraper","value":{"rev":"3-94a84fe9b3df46b8d6ad4851e389dae1"}},
-{"id":"wu","key":"wu","value":{"rev":"4-f307d3a00e7a1212b7949bcb96161088"}},
-{"id":"wunderapi","key":"wunderapi","value":{"rev":"17-31e3b991e97931022992b97f9441b9af"}},
-{"id":"wurfl-client","key":"wurfl-client","value":{"rev":"3-a8c3e454d6d9c9b23b7290eb64866e80"}},
-{"id":"wwwdude","key":"wwwdude","value":{"rev":"19-eb8192461b8864af59740f9b44e168ca"}},
-{"id":"x","key":"x","value":{"rev":"9-10403358980aba239b7a9af78175589d"}},
-{"id":"x-core","key":"x-core","value":{"rev":"13-f04b063855da231539d1945a35802d9e"}},
-{"id":"x11","key":"x11","value":{"rev":"5-e5b1435c0aa29207c90fdeaa87570bb7"}},
-{"id":"xappy-async_testing","key":"xappy-async_testing","value":{"rev":"3-747c934540267492b0e6d3bb6d65964c"}},
-{"id":"xappy-pg","key":"xappy-pg","value":{"rev":"4-119e8f93af1e4976900441ec5e3bb0b9"}},
-{"id":"xcbjs","key":"xcbjs","value":{"rev":"3-095a693f9ac7b4e2c319f79d95eb3e95"}},
-{"id":"xemplar","key":"xemplar","value":{"rev":"9-2ccde68ffac8e66aa8013b98d82ff20c"}},
-{"id":"xfer","key":"xfer","value":{"rev":"3-c1875506ed132c6a2b5e7d7eaff9df14"}},
-{"id":"xjs","key":"xjs","value":{"rev":"11-05d5cd002298894ed582a9f5bff5a762"}},
-{"id":"xjst","key":"xjst","value":{"rev":"11-68774970fc7f413ff620fb0d50d8a1d9"}},
-{"id":"xkcdbot","key":"xkcdbot","value":{"rev":"3-7cc9affb442c9ae4c7a109a0b72c2600"}},
-{"id":"xml","key":"xml","value":{"rev":"12-0d1a69f11767de47bfc4a0fce566e36e"}},
-{"id":"xml-markup","key":"xml-markup","value":{"rev":"6-100a92d1f7fe9444e285365dce8203de"}},
-{"id":"xml-simple","key":"xml-simple","value":{"rev":"3-d60e388df5b65128a5e000381643dd31"}},
-{"id":"xml-stream","key":"xml-stream","value":{"rev":"13-44d6ee47e00c91735e908e69c5dffc6b"}},
-{"id":"xml2js","key":"xml2js","value":{"rev":"27-434297bcd9db7628c57fcc9bbbe2671e"}},
-{"id":"xml2js-expat","key":"xml2js-expat","value":{"rev":"15-a8c5c0ba64584d07ed94c0a14dc55fe8"}},
-{"id":"xml2json","key":"xml2json","value":{"rev":"17-fa740417285834be1aa4d95e1ed6d9b9"}},
-{"id":"xmlbuilder","key":"xmlbuilder","value":{"rev":"32-63e3be32dda07c6e998866cddd8a879e"}},
-{"id":"xmlhttprequest","key":"xmlhttprequest","value":{"rev":"9-570fba8bfd5b0958c258cee7309c4b54"}},
-{"id":"xmlrpc","key":"xmlrpc","value":{"rev":"15-ae062e34a965e7543d4fd7b6c3f29cb7"}},
-{"id":"xmpp-client","key":"xmpp-client","value":{"rev":"6-2d123b4666b5deda71f071295cfca793"}},
-{"id":"xmpp-muc","key":"xmpp-muc","value":{"rev":"6-d95b8bca67f406a281a27aa4d89f6f46"}},
-{"id":"xmpp-server","key":"xmpp-server","value":{"rev":"9-44374bc3398cc74f2a36ff973fa0d35f"}},
-{"id":"xp","key":"xp","value":{"rev":"7-781a5e1da74332f25c441f627cd0b4ea"}},
-{"id":"xregexp","key":"xregexp","value":{"rev":"3-c34025fdeb13c18389e737a4b3d4ddf7"}},
-{"id":"xsd","key":"xsd","value":{"rev":"5-566590ccb8923453175a3f1f3b6cbf24"}},
-{"id":"ya-csv","key":"ya-csv","value":{"rev":"28-d485b812914b3c3f5d7e9c4bcee0c3ea"}},
-{"id":"yabble","key":"yabble","value":{"rev":"5-5370a53003a122fe40a16ed2b0e5cead"}},
-{"id":"yaconfig","key":"yaconfig","value":{"rev":"3-f82a452260b010cc5128818741c46017"}},
-{"id":"yah","key":"yah","value":{"rev":"3-cfc0c10f85a9e3076247ca350077e90f"}},
-{"id":"yajet","key":"yajet","value":{"rev":"5-6f7f24335436c84081adf0bbb020b151"}},
-{"id":"yajl","key":"yajl","value":{"rev":"3-8ac011e5a00368aad8d58d95a64c7254"}},
-{"id":"yaml","key":"yaml","value":{"rev":"16-732e5cb6dc10eefeb7dae959e677fb5b"}},
-{"id":"yaml-config","key":"yaml-config","value":{"rev":"3-fb817000005d48526a106ecda5ac5435"}},
-{"id":"yamlish","key":"yamlish","value":{"rev":"3-604fb4f1de9d5aa5ed48432c7db4a8a1"}},
-{"id":"yamlparser","key":"yamlparser","value":{"rev":"13-130a82262c7f742c2a1e26fc58983503"}},
-{"id":"yammer-js","key":"yammer-js","value":{"rev":"3-16ec240ab0b26fa9f0513ada8c769c1f"}},
-{"id":"yanc","key":"yanc","value":{"rev":"15-33d713f0dee42efe8306e6b2a43fe336"}},
-{"id":"yanlibs","key":"yanlibs","value":{"rev":"3-e481217d43b9f79b80e22538eabadabc"}},
-{"id":"yanop","key":"yanop","value":{"rev":"5-6c407ce6f1c18b6bac37ad5945ff8fed"}},
-{"id":"yanx","key":"yanx","value":{"rev":"6-f4c4d255526eaa922baa498f37d38fe0"}},
-{"id":"yasession","key":"yasession","value":{"rev":"7-6e2598123d41b33535b88e99eb87828f"}},
-{"id":"yelp","key":"yelp","value":{"rev":"3-5c769f488a65addba313ff3b6256c365"}},
-{"id":"yeti","key":"yeti","value":{"rev":"50-65338f573ed8f799ec9b1c9bd2643e34"}},
-{"id":"youtube","key":"youtube","value":{"rev":"7-5020698499af8946e9578864a21f6ac5"}},
-{"id":"youtube-dl","key":"youtube-dl","value":{"rev":"76-a42f09b7bf87e7e6157d5d9835cca8a7"}},
-{"id":"youtube-js","key":"youtube-js","value":{"rev":"5-e2d798a185490ad98cb57c2641c4658e"}},
-{"id":"yproject","key":"yproject","value":{"rev":"7-70cb1624de9e8321c67f1f348dc80ff4"}},
-{"id":"yql","key":"yql","value":{"rev":"18-d19123b254abfb097648c4a242513fd3"}},
-{"id":"yubico","key":"yubico","value":{"rev":"9-0e2bd84479a68e1f12c89800a4049053"}},
-{"id":"yui-cli","key":"yui-cli","value":{"rev":"7-0186f7278da8734861109799b9123197"}},
-{"id":"yui-compressor","key":"yui-compressor","value":{"rev":"12-5804d78bb24bb2d3555ca2e28ecc6b70"}},
-{"id":"yui-repl","key":"yui-repl","value":{"rev":"25-9b202e835a46a07be931e6529a4ccb61"}},
-{"id":"yui3","key":"yui3","value":{"rev":"93-4decc441f19acf0ab5abd1a81e3cbb40"}},
-{"id":"yui3-2in3","key":"yui3-2in3","value":{"rev":"10-dc0429fe818aceeca80d075613c9547a"}},
-{"id":"yui3-bare","key":"yui3-bare","value":{"rev":"33-60779e2088efe782b437ecc053c01e2f"}},
-{"id":"yui3-base","key":"yui3-base","value":{"rev":"33-89017bb5dfde621fc7d179f2939e3d1b"}},
-{"id":"yui3-core","key":"yui3-core","value":{"rev":"17-3759fa0072e24f4bb29e22144cb3dda3"}},
-{"id":"yui3-gallery","key":"yui3-gallery","value":{"rev":"38-9ce6f7a60b2f815337767249d1827951"}},
-{"id":"yui3-mocha","key":"yui3-mocha","value":{"rev":"3-83ff9c42a37f63de0c132ce6cb1ad282"}},
-{"id":"yuitest","key":"yuitest","value":{"rev":"17-b5dd4ad4e82b6b310d7a6e9103570779"}},
-{"id":"zap","key":"zap","value":{"rev":"15-9b9b7c6badb0a9fd9d469934e9be12c0"}},
-{"id":"zappa","key":"zappa","value":{"rev":"26-d193767b488e778db41455924001b1fb"}},
-{"id":"zen","key":"zen","value":{"rev":"7-23a260d4379816a5c931c2e823bda1ae"}},
-{"id":"zeppelin","key":"zeppelin","value":{"rev":"7-9db2e313fe323749e259be91edcdee8e"}},
-{"id":"zeromq","key":"zeromq","value":{"rev":"24-7cb4cec19fb3a03871900ac3558fcbef"}},
-{"id":"zest","key":"zest","value":{"rev":"5-080a2a69a93d66fcaae0da7ddaa9ceab"}},
-{"id":"zest-js","key":"zest-js","value":{"rev":"5-541454063618fa3a9d6f44e0147ea622"}},
-{"id":"zip","key":"zip","value":{"rev":"11-443da314322b6a1a93b40a38124610f2"}},
-{"id":"zipfile","key":"zipfile","value":{"rev":"32-e846d29fc615e8fbc610f44653a1e085"}},
-{"id":"zipper","key":"zipper","value":{"rev":"5-cde0a4a7f03c139dcd779f3ede55bd0e"}},
-{"id":"zippy","key":"zippy","value":{"rev":"7-3906ca62dd8020e9673a7c229944bd3f"}},
-{"id":"zipwith","key":"zipwith","value":{"rev":"3-58c50c6220d6493047f8333c5db22cc9"}},
-{"id":"zlib","key":"zlib","value":{"rev":"27-e0443f2d9a0c9db31f86a6c5b9ba78ba"}},
-{"id":"zlib-sync","key":"zlib-sync","value":{"rev":"3-b17a39dd23b3455d35ffd862004ed677"}},
-{"id":"zlibcontext","key":"zlibcontext","value":{"rev":"11-1c0c6b34e87adab1b6d5ee60be6a608c"}},
-{"id":"zlibstream","key":"zlibstream","value":{"rev":"5-44e30d87de9aaaa975c64d8dcdcd1a94"}},
-{"id":"zmq","key":"zmq","value":{"rev":"7-eae5d939fcdb7be5edfb328aefeaba4e"}},
-{"id":"zo","key":"zo","value":{"rev":"5-956f084373731805e5871f4716049529"}},
-{"id":"zombie","key":"zombie","value":{"rev":"109-9eec325353a47bfcc32a94719bf147da"}},
-{"id":"zombie-https","key":"zombie-https","value":{"rev":"3-6aff25d319be319343882575acef4890"}},
-{"id":"zoneinfo","key":"zoneinfo","value":{"rev":"15-d95d2041324d961fe26a0217cf485511"}},
-{"id":"zookeeper","key":"zookeeper","value":{"rev":"11-5a5ed278a01e4b508ffa6e9a02059898"}},
-{"id":"zoom","key":"zoom","value":{"rev":"3-9d0277ad580d64c9a4d48a40d22976f0"}},
-{"id":"zsock","key":"zsock","value":{"rev":"16-4f975b91f0f9c2d2a2501e362401c368"}},
-{"id":"zutil","key":"zutil","value":{"rev":"9-3e7bc6520008b4fcd5ee6eb9e8e5adf5"}}
-]}
diff --git a/node_modules/JSONStream/test/fixtures/couch_sample.json b/node_modules/JSONStream/test/fixtures/couch_sample.json
deleted file mode 100644
index b154c861c..000000000
--- a/node_modules/JSONStream/test/fixtures/couch_sample.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{"total_rows":129,"offset":0,"rows":[
- { "id":"change1_0.6995461115147918"
- , "key":"change1_0.6995461115147918"
- , "value":{"rev":"1-e240bae28c7bb3667f02760f6398d508"}
- , "doc":{
- "_id": "change1_0.6995461115147918"
- , "_rev": "1-e240bae28c7bb3667f02760f6398d508","hello":1}
- },
- { "id":"change2_0.6995461115147918"
- , "key":"change2_0.6995461115147918"
- , "value":{"rev":"1-13677d36b98c0c075145bb8975105153"}
- , "doc":{
- "_id":"change2_0.6995461115147918"
- , "_rev":"1-13677d36b98c0c075145bb8975105153"
- , "hello":2
- }
- },
-]}
diff --git a/node_modules/JSONStream/test/fixtures/depth.json b/node_modules/JSONStream/test/fixtures/depth.json
deleted file mode 100644
index 9b4bfb937..000000000
--- a/node_modules/JSONStream/test/fixtures/depth.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "total": 5,
- "docs": [
- {
- "key": {
- "value": 0,
- "some": "property"
- }
- },
- {"value": [1]},
- {"value": {"a":2}},
- {"blbl": [{}, {"a":0, "b":1, "value":"3"}, 10]},
- {"value": 4}
- ]
-}
diff --git a/node_modules/JSONStream/test/fixtures/error.json b/node_modules/JSONStream/test/fixtures/error.json
deleted file mode 100644
index 9736f3ecd..000000000
--- a/node_modules/JSONStream/test/fixtures/error.json
+++ /dev/null
@@ -1 +0,0 @@
-{"error": "error_code", "message": "this is an error message"}
diff --git a/node_modules/JSONStream/test/fixtures/header_footer.json b/node_modules/JSONStream/test/fixtures/header_footer.json
deleted file mode 100644
index 6e4694d2a..000000000
--- a/node_modules/JSONStream/test/fixtures/header_footer.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{"total_rows":129,"offset":0,"rows":[
- { "id":"change1_0.6995461115147918"
- , "key":"change1_0.6995461115147918"
- , "value":{"rev":"1-e240bae28c7bb3667f02760f6398d508"}
- , "doc":{
- "_id": "change1_0.6995461115147918"
- , "_rev": "1-e240bae28c7bb3667f02760f6398d508","hello":1}
- },
- { "id":"change2_0.6995461115147918"
- , "key":"change2_0.6995461115147918"
- , "value":{"rev":"1-13677d36b98c0c075145bb8975105153"}
- , "doc":{
- "_id":"change2_0.6995461115147918"
- , "_rev":"1-13677d36b98c0c075145bb8975105153"
- , "hello":2
- }
- }
-],
-"foo": {"bar": "baz"}}
diff --git a/node_modules/JSONStream/test/fn.js b/node_modules/JSONStream/test/fn.js
deleted file mode 100644
index 4acc67262..000000000
--- a/node_modules/JSONStream/test/fn.js
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','all_npm.json')
- , JSONStream = require('../')
- , it = require('it-is')
-
-function fn (s) {
- return !isNaN(parseInt(s, 10))
-}
-
-var expected = JSON.parse(fs.readFileSync(file))
- , parser = JSONStream.parse(['rows', fn])
- , called = 0
- , ended = false
- , parsed = []
-
-fs.createReadStream(file).pipe(parser)
-
-parser.on('data', function (data) {
- called ++
- it.has({
- id: it.typeof('string'),
- value: {rev: it.typeof('string')},
- key:it.typeof('string')
- })
- parsed.push(data)
-})
-
-parser.on('end', function () {
- ended = true
-})
-
-process.on('exit', function () {
- it(called).equal(expected.rows.length)
- it(parsed).deepEqual(expected.rows)
- console.error('PASSED')
-})
diff --git a/node_modules/JSONStream/test/gen.js b/node_modules/JSONStream/test/gen.js
deleted file mode 100644
index c233722ac..000000000
--- a/node_modules/JSONStream/test/gen.js
+++ /dev/null
@@ -1,135 +0,0 @@
-return // dont run this test for now since tape is weird and broken on 0.10
-
-var fs = require('fs')
-var JSONStream = require('../')
-var file = process.argv[2] || '/tmp/JSONStream-test-large.json'
-var size = Number(process.argv[3] || 100000)
-var tape = require('tape')
-// if (process.title !== 'browser') {
- tape('out of mem', function (t) {
- t.plan(1)
- //////////////////////////////////////////////////////
- // Produces a random number between arg1 and arg2
- //////////////////////////////////////////////////////
- var randomNumber = function (min, max) {
- var number = Math.floor(Math.random() * (max - min + 1) + min);
- return number;
- };
-
- //////////////////////////////////////////////////////
- // Produces a random string of a length between arg1 and arg2
- //////////////////////////////////////////////////////
- var randomString = function (min, max) {
-
- // add several spaces to increase chanses of creating 'words'
- var chars = ' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
- var result = '';
-
- var randomLength = randomNumber(min, max);
-
- for (var i = randomLength; i > 0; --i) {
- result += chars[Math.round(Math.random() * (chars.length - 1))];
- }
- return result;
- };
-
- //////////////////////////////////////////////////////
- // Produces a random JSON document, as a string
- //////////////////////////////////////////////////////
- var randomJsonDoc = function () {
-
- var doc = {
- "CrashOccurenceID": randomNumber(10000, 50000),
- "CrashID": randomNumber(1000, 10000),
- "SiteName": randomString(10, 25),
- "MachineName": randomString(10, 25),
- "Date": randomString(26, 26),
- "ProcessDuration": randomString(18, 18),
- "ThreadIdentityName": null,
- "WindowsIdentityName": randomString(15, 40),
- "OperatingSystemName": randomString(35, 65),
- "DetailedExceptionInformation": randomString(100, 800)
- };
-
- doc = JSON.stringify(doc);
- doc = doc.replace(/\,/g, ',\n'); // add new lines after each attribute
- return doc;
- };
-
- //////////////////////////////////////////////////////
- // generates test data
- //////////////////////////////////////////////////////
- var generateTestData = function (cb) {
-
- console.log('generating large data file...');
-
- var stream = fs.createWriteStream(file, {
- encoding: 'utf8'
- });
-
- var i = 0;
- var max = size;
- var writing = false
- var split = ',\n';
- var doc = randomJsonDoc();
- stream.write('[');
-
- function write () {
- if(writing) return
- writing = true
- while(++i < max) {
- if(Math.random() < 0.001)
- console.log('generate..', i + ' / ' + size)
- if(!stream.write(doc + split)) {
- writing = false
- return stream.once('drain', write)
- }
- }
- stream.write(doc + ']')
- stream.end();
- console.log('END')
- }
- write()
- stream.on('close', cb)
- };
-
- //////////////////////////////////////////////////////
- // Shows that parsing 100000 instances using JSONStream fails
- //
- // After several seconds, you will get this crash
- // FATAL ERROR: JS Allocation failed - process out of memory
- //////////////////////////////////////////////////////
- var testJSONStreamParse_causesOutOfMem = function (done) {
- var items = 0
- console.log('parsing data files using JSONStream...');
-
- var parser = JSONStream.parse([true]);
- var stream = fs.createReadStream(file);
- stream.pipe(parser);
-
- parser.on('data', function (data) {
- items++
- if(Math.random() < 0.01) console.log(items, '...')
- });
-
- parser.on('end', function () {
- t.equal(items, size)
- });
-
- };
-
- //////////////////////////////////////////////////////
- // main
- //////////////////////////////////////////////////////
-
- fs.stat(file, function (err, stat) {
- console.log(stat)
- if(err)
- generateTestData(testJSONStreamParse_causesOutOfMem);
- else
- testJSONStreamParse_causesOutOfMem()
- })
-
- })
-
-// }
diff --git a/node_modules/JSONStream/test/header_footer.js b/node_modules/JSONStream/test/header_footer.js
deleted file mode 100644
index f18fc59e7..000000000
--- a/node_modules/JSONStream/test/header_footer.js
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','header_footer.json')
- , JSONStream = require('../')
- , it = require('it-is')
-
-var expected = JSON.parse(fs.readFileSync(file))
- , parser = JSONStream.parse(['rows', /\d+/ /*, 'value'*/])
- , called = 0
- , headerCalled = 0
- , footerCalled = 0
- , ended = false
- , parsed = []
-
-fs.createReadStream(file).pipe(parser)
-
-parser.on('header', function (data) {
- headerCalled ++
- it(data).deepEqual({
- total_rows: 129,
- offset: 0
- })
-})
-
-parser.on('footer', function (data) {
- footerCalled ++
- it(data).deepEqual({
- foo: { bar: 'baz' }
- })
-})
-
-parser.on('data', function (data) {
- called ++
- it.has({
- id: it.typeof('string'),
- value: {rev: it.typeof('string')},
- key:it.typeof('string')
- })
- it(headerCalled).equal(1)
- parsed.push(data)
-})
-
-parser.on('end', function () {
- ended = true
-})
-
-process.on('exit', function () {
- it(called).equal(expected.rows.length)
- it(headerCalled).equal(1)
- it(footerCalled).equal(1)
- it(parsed).deepEqual(expected.rows)
- console.error('PASSED')
-})
diff --git a/node_modules/JSONStream/test/issues.js b/node_modules/JSONStream/test/issues.js
deleted file mode 100644
index ea4c74337..000000000
--- a/node_modules/JSONStream/test/issues.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var JSONStream = require('../');
-var test = require('tape')
-
-test('#66', function (t) {
- var error = 0;
- var stream = JSONStream
- .parse()
- .on('error', function (err) {
- t.ok(err);
- error++;
- })
- .on('end', function () {
- t.ok(error === 1);
- t.end();
- });
-
- stream.write('["foo":bar[');
- stream.end();
-
-});
-
-test('#81 - failure to parse nested objects', function (t) {
- var stream = JSONStream
- .parse('.bar.foo')
- .on('error', function (err) {
- t.error(err);
- })
- .on('end', function () {
- t.end();
- });
-
- stream.write('{"bar":{"foo":"baz"}}');
- stream.end();
-});
diff --git a/node_modules/JSONStream/test/keys.js b/node_modules/JSONStream/test/keys.js
deleted file mode 100644
index 747723d11..000000000
--- a/node_modules/JSONStream/test/keys.js
+++ /dev/null
@@ -1,105 +0,0 @@
-var test = require('tape');
-var fs = require ('fs');
-var join = require('path').join;
-var couch_sample_file = join(__dirname, 'fixtures','couch_sample.json');
-var JSONStream = require('../');
-
-var fixture = {
- obj: {
- one: 1,
- two: 2,
- three: 3
- }
-};
-
-function assertFixtureKeys(stream, t) {
- var keys = [];
- var values = [];
- stream.on('data', function(data) {
- keys.push(data.key);
- values.push(data.value);
- });
-
- stream.on('end', function() {
- t.deepEqual(keys, ['one', 'two', 'three']);
- t.deepEqual(values, [1,2,3]);
- t.end();
- });
- stream.write(JSON.stringify(fixture));
- stream.end();
-}
-
-test('keys via string', function(t) {
- var stream = JSONStream.parse('obj.$*');
- assertFixtureKeys(stream, t);
-});
-
-test('keys via array', function(t) {
- var stream = JSONStream.parse(['obj',{emitKey: true}]);
- assertFixtureKeys(stream, t);
-});
-
-test('path via array', function(t) {
- var stream = JSONStream.parse(['obj',{emitPath: true}]);
-
- var paths = [];
- var values = [];
- stream.on('data', function(data) {
- console.log(JSON.stringify(data));
- paths.push(data.path);
- values.push(data.value);
- });
-
- stream.on('end', function() {
- t.deepEqual(paths, [['obj', 'one'], ['obj', 'two'], ['obj', 'three']]);
- t.deepEqual(values, [1,2,3]);
- t.end();
- });
- stream.write(JSON.stringify(fixture));
- stream.end();
-});
-
-test('advanced keys', function(t) {
- var advanced = fs.readFileSync(couch_sample_file);
- var stream = JSONStream.parse(['rows', true, 'doc', {emitKey: true}]);
-
- var keys = [];
- var values = [];
- stream.on('data', function(data) {
- keys.push(data.key);
- values.push(data.value);
- });
-
- stream.on('end', function() {
- t.deepEqual(keys, [
- '_id', '_rev', 'hello',
- '_id', '_rev', 'hello'
- ]);
- t.deepEqual(values, [
- "change1_0.6995461115147918", "1-e240bae28c7bb3667f02760f6398d508", 1,
- "change2_0.6995461115147918", "1-13677d36b98c0c075145bb8975105153", 2
- ]);
- t.end();
- });
- stream.write(advanced);
- stream.end();
-});
-
-test('parent keys', function(t) {
- var stream = JSONStream.parse('$*');
- var d = null;
- stream.on('data', function(data) {
- if(d) t.fail('should only be called once');
- d = data;
- });
-
- stream.on('end', function() {
- t.deepEqual(d,{
- key: 'obj',
- value: fixture.obj
- });
- t.end();
- });
- stream.write(JSON.stringify(fixture));
- stream.end();
-})
diff --git a/node_modules/JSONStream/test/map.js b/node_modules/JSONStream/test/map.js
deleted file mode 100644
index 29b9d8969..000000000
--- a/node_modules/JSONStream/test/map.js
+++ /dev/null
@@ -1,40 +0,0 @@
-
-var test = require('tape')
-
-var JSONStream = require('../')
-
-test('map function', function (t) {
-
- var actual = []
-
- stream = JSONStream.parse([true], function (e) { return e*10 })
- stream.on('data', function (v) { actual.push(v)})
- stream.on('end', function () {
- t.deepEqual(actual, [10,20,30,40,50,60])
- t.end()
-
- })
-
- stream.write(JSON.stringify([1,2,3,4,5,6], null, 2))
- stream.end()
-
-})
-
-test('filter function', function (t) {
-
- var actual = []
-
- stream = JSONStream
- .parse([true], function (e) { return e%2 ? e : null})
- .on('data', function (v) { actual.push(v)})
- .on('end', function () {
- t.deepEqual(actual, [1,3,5])
- t.end()
-
- })
-
- stream.write(JSON.stringify([1,2,3,4,5,6], null, 2))
- stream.end()
-
-})
-
diff --git a/node_modules/JSONStream/test/multiple_objects.js b/node_modules/JSONStream/test/multiple_objects.js
deleted file mode 100644
index 22f632422..000000000
--- a/node_modules/JSONStream/test/multiple_objects.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var fs = require ('fs');
-var net = require('net');
-var join = require('path').join;
-var file = join(__dirname, 'fixtures','all_npm.json');
-var it = require('it-is');
-var JSONStream = require('../');
-
-var str = fs.readFileSync(file);
-
-var datas = {}
-
-var server = net.createServer(function(client) {
- var data_calls = 0;
- var parser = JSONStream.parse(['rows', true, 'key']);
- parser.on('data', function(data) {
- ++ data_calls;
- datas[data] = (datas[data] || 0) + 1
- it(data).typeof('string')
- });
-
- parser.on('end', function() {
- console.log('END')
- var min = Infinity
- for (var d in datas)
- min = min > datas[d] ? datas[d] : min
- it(min).equal(3);
- server.close();
- });
- client.pipe(parser);
-});
-server.listen(9999);
-
-var client = net.connect({ port : 9999 }, function() {
- var msgs = str + ' ' + str + '\n\n' + str
- client.end(msgs);
-});
diff --git a/node_modules/JSONStream/test/multiple_objects_error.js b/node_modules/JSONStream/test/multiple_objects_error.js
deleted file mode 100644
index 83d113b7f..000000000
--- a/node_modules/JSONStream/test/multiple_objects_error.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var fs = require ('fs');
-var net = require('net');
-var join = require('path').join;
-var file = join(__dirname, 'fixtures','all_npm.json');
-var it = require('it-is');
-var JSONStream = require('../');
-
-var str = fs.readFileSync(file);
-
-var server = net.createServer(function(client) {
- var data_calls = 0;
- var parser = JSONStream.parse();
- parser.on('error', function(err) {
- console.log(err);
- server.close();
- });
-
- parser.on('end', function() {
- console.log('END');
- server.close();
- });
- client.pipe(parser);
-});
-server.listen(9999);
-
-var client = net.connect({ port : 9999 }, function() {
- var msgs = str + '}';
- client.end(msgs);
-});
diff --git a/node_modules/JSONStream/test/null.js b/node_modules/JSONStream/test/null.js
deleted file mode 100644
index 95dd60c0a..000000000
--- a/node_modules/JSONStream/test/null.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var JSONStream = require('../')
-
-var data = [
- {ID: 1, optional: null},
- {ID: 2, optional: null},
- {ID: 3, optional: 20},
- {ID: 4, optional: null},
- {ID: 5, optional: 'hello'},
- {ID: 6, optional: null}
-]
-
-
-var test = require('tape')
-
-test ('null properties', function (t) {
- var actual = []
- var stream =
-
- JSONStream.parse('*.optional')
- .on('data', function (v) { actual.push(v) })
- .on('end', function () {
- t.deepEqual(actual, [20, 'hello'])
- t.end()
- })
-
- stream.write(JSON.stringify(data, null, 2))
- stream.end()
-})
diff --git a/node_modules/JSONStream/test/parsejson.js b/node_modules/JSONStream/test/parsejson.js
deleted file mode 100644
index e70dabc18..000000000
--- a/node_modules/JSONStream/test/parsejson.js
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-/*
- sometimes jsonparse changes numbers slightly.
-*/
-
-var r = Math.random()
- , Parser = require('jsonparse')
- , p = new Parser()
- , assert = require('assert')
- , times = 20
- , bufferFrom = Buffer.from && Buffer.from !== Uint8Array.from
- , str
-
-while (times --) {
-
- assert.equal(JSON.parse(JSON.stringify(r)), r, 'core JSON')
-
- p.onValue = function (v) {
- console.error('parsed', v)
- assert.equal(v,r)
- }
- console.error('correct', r)
- str = JSON.stringify([r])
- p.write (bufferFrom ? Buffer.from(str) : new Buffer(str))
-
-
-
-}
diff --git a/node_modules/JSONStream/test/run.js b/node_modules/JSONStream/test/run.js
deleted file mode 100644
index 7d62e7385..000000000
--- a/node_modules/JSONStream/test/run.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var readdirSync = require('fs').readdirSync
-var spawnSync = require('child_process').spawnSync
-var extname = require('path').extname
-
-var files = readdirSync(__dirname)
-files.forEach(function(file){
- if (extname(file) !== '.js' || file === 'run.js')
- return
- console.log(`*** ${file} ***`)
- var result = spawnSync(process.argv0, [file], { stdio: 'inherit', cwd: __dirname} )
- if (result.status !== 0)
- process.exit(result.status)
-})
diff --git a/node_modules/JSONStream/test/stringify.js b/node_modules/JSONStream/test/stringify.js
deleted file mode 100644
index b6de85ed2..000000000
--- a/node_modules/JSONStream/test/stringify.js
+++ /dev/null
@@ -1,41 +0,0 @@
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','all_npm.json')
- , JSONStream = require('../')
- , it = require('it-is').style('colour')
-
- function randomObj () {
- return (
- Math.random () < 0.4
- ? {hello: 'eonuhckmqjk',
- whatever: 236515,
- lies: true,
- nothing: [null],
- stuff: [Math.random(),Math.random(),Math.random()]
- }
- : ['AOREC', 'reoubaor', {ouec: 62642}, [[[], {}, 53]]]
- )
- }
-
-var expected = []
- , stringify = JSONStream.stringify()
- , es = require('event-stream')
- , stringified = ''
- , called = 0
- , count = 10
- , ended = false
-
-while (count --)
- expected.push(randomObj())
-
- es.connect(
- es.readArray(expected),
- stringify,
- //JSONStream.parse([/./]),
- es.writeArray(function (err, lines) {
-
- it(JSON.parse(lines.join(''))).deepEqual(expected)
- console.error('PASSED')
- })
- )
diff --git a/node_modules/JSONStream/test/stringify_object.js b/node_modules/JSONStream/test/stringify_object.js
deleted file mode 100644
index 9490115a0..000000000
--- a/node_modules/JSONStream/test/stringify_object.js
+++ /dev/null
@@ -1,47 +0,0 @@
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','all_npm.json')
- , JSONStream = require('../')
- , it = require('it-is').style('colour')
- , es = require('event-stream')
- , pending = 10
- , passed = true
-
- function randomObj () {
- return (
- Math.random () < 0.4
- ? {hello: 'eonuhckmqjk',
- whatever: 236515,
- lies: true,
- nothing: [null],
- stuff: [Math.random(),Math.random(),Math.random()]
- }
- : ['AOREC', 'reoubaor', {ouec: 62642}, [[[], {}, 53]]]
- )
- }
-
-for (var ix = 0; ix < pending; ix++) (function (count) {
- var expected = {}
- , stringify = JSONStream.stringifyObject()
-
- es.connect(
- stringify,
- es.writeArray(function (err, lines) {
- it(JSON.parse(lines.join(''))).deepEqual(expected)
- if (--pending === 0) {
- console.error('PASSED')
- }
- })
- )
-
- while (count --) {
- var key = Math.random().toString(16).slice(2)
- expected[key] = randomObj()
- stringify.write([ key, expected[key] ])
- }
-
- process.nextTick(function () {
- stringify.end()
- })
-})(ix)
diff --git a/node_modules/JSONStream/test/test.js b/node_modules/JSONStream/test/test.js
deleted file mode 100644
index 8ea7c2e1f..000000000
--- a/node_modules/JSONStream/test/test.js
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','all_npm.json')
- , JSONStream = require('../')
- , it = require('it-is')
-
-var expected = JSON.parse(fs.readFileSync(file))
- , parser = JSONStream.parse(['rows', /\d+/ /*, 'value'*/])
- , called = 0
- , ended = false
- , parsed = []
-
-fs.createReadStream(file).pipe(parser)
-
-parser.on('data', function (data) {
- called ++
- it.has({
- id: it.typeof('string'),
- value: {rev: it.typeof('string')},
- key:it.typeof('string')
- })
- parsed.push(data)
-})
-
-parser.on('end', function () {
- ended = true
-})
-
-process.on('exit', function () {
- it(called).equal(expected.rows.length)
- it(parsed).deepEqual(expected.rows)
- console.error('PASSED')
-})
diff --git a/node_modules/JSONStream/test/test2.js b/node_modules/JSONStream/test/test2.js
deleted file mode 100644
index d09df7be4..000000000
--- a/node_modules/JSONStream/test/test2.js
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, '..','package.json')
- , JSONStream = require('../')
- , it = require('it-is')
-
-var expected = JSON.parse(fs.readFileSync(file))
- , parser = JSONStream.parse([])
- , called = 0
- , ended = false
- , parsed = []
-
-fs.createReadStream(file).pipe(parser)
-
-parser.on('data', function (data) {
- called ++
- it(data).deepEqual(expected)
-})
-
-parser.on('end', function () {
- ended = true
-})
-
-process.on('exit', function () {
- it(called).equal(1)
- console.error('PASSED')
-}) \ No newline at end of file
diff --git a/node_modules/JSONStream/test/two-ways.js b/node_modules/JSONStream/test/two-ways.js
deleted file mode 100644
index 8f3b89c8b..000000000
--- a/node_modules/JSONStream/test/two-ways.js
+++ /dev/null
@@ -1,41 +0,0 @@
-
-var fs = require ('fs')
- , join = require('path').join
- , file = join(__dirname, 'fixtures','all_npm.json')
- , JSONStream = require('../')
- , it = require('it-is').style('colour')
-
- function randomObj () {
- return (
- Math.random () < 0.4
- ? {hello: 'eonuhckmqjk',
- whatever: 236515,
- lies: true,
- nothing: [null],
-// stuff: [Math.random(),Math.random(),Math.random()]
- }
- : ['AOREC', 'reoubaor', {ouec: 62642}, [[[], {}, 53]]]
- )
- }
-
-var expected = []
- , stringify = JSONStream.stringify()
- , es = require('event-stream')
- , stringified = ''
- , called = 0
- , count = 10
- , ended = false
-
-while (count --)
- expected.push(randomObj())
-
- es.connect(
- es.readArray(expected),
- stringify,
- JSONStream.parse([/./]),
- es.writeArray(function (err, lines) {
-
- it(lines).has(expected)
- console.error('PASSED')
- })
- )
diff --git a/node_modules/call-limit/CHANGELOG.md b/node_modules/call-limit/CHANGELOG.md
deleted file mode 100644
index a6b1df978..000000000
--- a/node_modules/call-limit/CHANGELOG.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-### [1.1.1](https://github.com/iarna/call-limit/compare/v1.1.0...v1.1.1) (2019-06-03)
-
-
-### Bug Fixes
-
-* **call-limit:** Limiter rewrite ([bbd0ea6](https://github.com/iarna/call-limit/commit/bbd0ea6))
-* **test:** Update tests to let/const ([f0b7f98](https://github.com/iarna/call-limit/commit/f0b7f98))
-
-
-### Tests
-
-* Test coverage for limited promise based methods ([d5069f4](https://github.com/iarna/call-limit/commit/d5069f4))
diff --git a/node_modules/call-limit/LICENSE b/node_modules/call-limit/LICENSE
deleted file mode 100644
index 216e843ab..000000000
--- a/node_modules/call-limit/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright Rebecca Turner
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/call-limit/README.md b/node_modules/call-limit/README.md
deleted file mode 100644
index 62086b684..000000000
--- a/node_modules/call-limit/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-call-limit
-----------
-
-Limit the number of simultaneous executions of a async function.
-
-```javascript
-const fs = require('fs')
-const limit = require('call-limit')
-const limitedStat = limit(fs.stat, 5)
-```
-
-Or with promise returning functions:
-
-```javascript
-const fs = Bluebird.promisifyAll(require('fs'))
-const limit = require('call-limit')
-const limitedStat = limit.promise(fs.statAsync, 5)
-```
-
-### USAGE:
-
-Given that:
-
-```javascript
-const limit = require('call-limit')
-```
-
-### limit(func, maxRunning) → limitedFunc
-
-The returned function will execute up to maxRunning calls of `func` at once.
-Beyond that they get queued and called when the previous call completes.
-
-`func` must accept a callback as the final argument and must call it when
-it completes, or `call-limit` won't know to dequeue the next thing to run.
-
-By contrast, callers to `limitedFunc` do NOT have to pass in a callback, but
-if they do they'll be called when `func` calls its callback.
-
-### limit.promise(func, maxRunning) → limitedFunc
-
-The returned function will execute up to maxRunning calls of `func` at once.
-Beyond that they get queued and called when the previous call completes.
-
-`func` must return a promise.
-
-`limitedFunc` will return a promise that resolves with the promise returned
-from the call to `func`.
-
-### limit.method(class, methodName, maxRunning)
-
-This is sugar for:
-
-```javascript
-class.prototype.methodName = limit(class.prototype.methodName, maxRunning)
-```
-
-### limit.method(object, methodName, maxRunning)
-
-This is sugar for:
-
-```javascript
-object.methodName = limit(object.methodName, maxRunning)
-```
-
-For example `limit.promise.method(fs, 'stat', 5)` is the same as
-`fs.stat = limit.promise(fs.stat, 5)`.
-
-### limit.promise.method(class, methodName, maxRunning)
-
-This is sugar for:
-
-```javascript
-class.prototype.methodName = limit.promise(class.prototype.methodName, maxRunning)
-```
-
-### limit.promise.method(object, methodName, maxRunning)
-
-This is sugar for:
-
-```javascript
-object.methodName = limit.promise(object.methodName, maxRunning)
-```
-
-For example `limit.promise.method(fs, 'statAsync', 5)` is the same as
-`fs.statAsync = limit.promise(fs.statAsync, 5)`.
diff --git a/node_modules/call-limit/call-limit.js b/node_modules/call-limit/call-limit.js
deleted file mode 100644
index 2dc7d279a..000000000
--- a/node_modules/call-limit/call-limit.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict'
-
-const defaultMaxRunning = 50
-
-const limit = module.exports = function (func, maxRunning) {
- const state = {running: 0, queue: []}
- if (!maxRunning) maxRunning = defaultMaxRunning
- return function limited () {
- const args = Array.prototype.slice.call(arguments)
- if (state.running >= maxRunning) {
- state.queue.push({obj: this, args})
- } else {
- callFunc(this, args)
- }
- }
- function callNext () {
- if (state.queue.length === 0) return
- const next = state.queue.shift()
- callFunc(next.obj, next.args)
- }
- function callFunc (obj, args) {
- const cb = typeof args[args.length - 1] === 'function' && args.pop()
- try {
- ++state.running
- func.apply(obj, args.concat(function () {
- --state.running
- process.nextTick(callNext)
- if (cb) process.nextTick(() => cb.apply(obj, arguments))
- }))
- } catch (err) {
- --state.running
- if (cb) process.nextTick(() => cb.call(obj, err))
- process.nextTick(callNext)
- }
- }
-}
-
-module.exports.method = function (classOrObj, method, maxRunning) {
- if (typeof classOrObj === 'function') {
- const func = classOrObj.prototype[method]
- classOrObj.prototype[method] = limit(func, maxRunning)
- } else {
- const func = classOrObj[method]
- classOrObj[method] = limit(func, maxRunning)
- }
-}
-
-module.exports.promise = function (func, maxRunning) {
- const state = {running: 0, queue: []}
- if (!maxRunning) maxRunning = defaultMaxRunning
- return function limited () {
- const args = Array.prototype.slice.call(arguments)
- if (state.running >= maxRunning) {
- return new Promise(resolve => {
- state.queue.push({resolve, obj: this, args})
- })
- } else {
- return callFunc(this, args)
- }
- }
- function callNext () {
- if (state.queue.length === 0) return
- const next = state.queue.shift()
- next.resolve(callFunc(next.obj, next.args))
- }
- function callFunc (obj, args) {
- return callFinally(() => {
- ++state.running
- return func.apply(obj, args)
- }, () => {
- --state.running
- process.nextTick(callNext)
- })
- }
- function callFinally (action, fin) {
- try {
- return Promise.resolve(action()).then(value => {
- fin()
- return value
- }, err => {
- fin()
- return Promise.reject(err)
- })
- } catch (err) {
- fin()
- return Promise.reject(err)
- }
- }
-}
-
-module.exports.promise.method = function (classOrObj, method, maxRunning) {
- if (typeof classOrObj === 'function') {
- const func = classOrObj.prototype[method]
- classOrObj.prototype[method] = limit.promise(func, maxRunning)
- } else {
- const func = classOrObj[method]
- classOrObj[method] = limit.promise(func, maxRunning)
- }
-}
diff --git a/node_modules/call-limit/package.json b/node_modules/call-limit/package.json
deleted file mode 100644
index f2c7f6d33..000000000
--- a/node_modules/call-limit/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "call-limit",
- "version": "1.1.1",
- "description": "Limit the number of simultaneous calls to an async function",
- "main": "call-limit.js",
- "scripts": {
- "test": "tap test/*.js",
- "prerelease": "npm t",
- "release": "standard-version -s",
- "postrelease": "npm publish && git push --follow-tags",
- "pretest": "iarna-standard",
- "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
- "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/iarna/call-limit"
- },
- "author": "Rebecca Turner <me@re-becca.org>",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/iarna/call-limit/issues"
- },
- "homepage": "https://npmjs.com/packages/call-limit",
- "dependencies": {},
- "devDependencies": {
- "tap": "^14.2.0",
- "weallbehave": "*",
- "weallcontribute": "*",
- "@iarna/standard": "*",
- "standard-version": "*"
- },
- "files": [
- "call-limit.js"
- ]
-}
diff --git a/node_modules/ci-info/CHANGELOG.md b/node_modules/ci-info/CHANGELOG.md
deleted file mode 100644
index 66b9cf0b2..000000000
--- a/node_modules/ci-info/CHANGELOG.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Changelog
-
-## v2.0.0
-
-Breaking changes:
-
-* Drop support for Node.js end-of-life versions: 0.10, 0.12, 4, 5, 7,
- and 9
-* Team Foundation Server will now be detected as Azure Pipelines. The
- constant `ci.TFS` no longer exists - use `ci.AZURE_PIPELINES` instead
-* Remove deprecated `ci.TDDIUM` constant - use `ci.SOLANDO` instead
-
-New features:
-
-* feat: support Azure Pipelines ([#23](https://github.com/watson/ci-info/pull/23))
-* feat: support Netlify CI ([#26](https://github.com/watson/ci-info/pull/26))
-* feat: support Bitbucket pipelines PR detection ([#27](https://github.com/watson/ci-info/pull/27))
-
-## v1.6.0
-
-* feat: add Sail CI support
-* feat: add Buddy support
-* feat: add Bitrise support
-* feat: detect Jenkins PRs
-* feat: detect Drone PRs
-
-## v1.5.1
-
-* fix: use full path to vendors.json
-
-## v1.5.0
-
-* feat: add dsari detection ([#15](https://github.com/watson/ci-info/pull/15))
-* feat: add ci.isPR ([#16](https://github.com/watson/ci-info/pull/16))
-
-## v1.4.0
-
-* feat: add Cirrus CI detection ([#13](https://github.com/watson/ci-info/pull/13))
-* feat: add Shippable CI detection ([#14](https://github.com/watson/ci-info/pull/14))
-
-## v1.3.1
-
-* chore: reduce npm package size by not including `.github` folder content ([#11](https://github.com/watson/ci-info/pull/11))
-
-## v1.3.0
-
-* feat: add support for Strider CD
-* chore: deprecate vendor constant `TDDIUM` in favor of `SOLANO`
-* docs: add missing vendor constant to docs
-
-## v1.2.0
-
-* feat: detect solano-ci ([#9](https://github.com/watson/ci-info/pull/9))
-
-## v1.1.3
-
-* fix: fix spelling of Hunson in `ci.name`
-
-## v1.1.2
-
-* fix: no more false positive matches for Jenkins
-
-## v1.1.1
-
-* docs: sort lists of CI servers in README.md
-* docs: add missing AWS CodeBuild to the docs
-
-## v1.1.0
-
-* feat: add AWS CodeBuild to CI detection ([#2](https://github.com/watson/ci-info/pull/2))
-
-## v1.0.1
-
-* chore: reduce npm package size by using an `.npmignore` file ([#3](https://github.com/watson/ci-info/pull/3))
-
-## v1.0.0
-
-* Initial release
diff --git a/node_modules/ci-info/LICENSE b/node_modules/ci-info/LICENSE
deleted file mode 100644
index 67846832e..000000000
--- a/node_modules/ci-info/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016-2018 Thomas Watson Steen
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/ci-info/README.md b/node_modules/ci-info/README.md
deleted file mode 100644
index 12c4f6217..000000000
--- a/node_modules/ci-info/README.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# ci-info
-
-Get details about the current Continuous Integration environment.
-
-Please [open an
-issue](https://github.com/watson/ci-info/issues/new?template=ci-server-not-detected.md)
-if your CI server isn't properly detected :)
-
-[![npm](https://img.shields.io/npm/v/ci-info.svg)](https://www.npmjs.com/package/ci-info)
-[![Build status](https://travis-ci.org/watson/ci-info.svg?branch=master)](https://travis-ci.org/watson/ci-info)
-[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://github.com/feross/standard)
-
-## Installation
-
-```bash
-npm install ci-info --save
-```
-
-## Usage
-
-```js
-var ci = require('ci-info')
-
-if (ci.isCI) {
- console.log('The name of the CI server is:', ci.name)
-} else {
- console.log('This program is not running on a CI server')
-}
-```
-
-## Supported CI tools
-
-Officially supported CI servers:
-
-| Name | Constant | isPR |
-|------|----------|------|
-| [AWS CodeBuild](https://aws.amazon.com/codebuild/) | `ci.CODEBUILD` | 🚫 |
-| [AppVeyor](http://www.appveyor.com) | `ci.APPVEYOR` | ✅ |
-| [Azure Pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/) | `ci.AZURE_PIPELINES` | ✅ |
-| [Bamboo](https://www.atlassian.com/software/bamboo) by Atlassian | `ci.BAMBOO` | 🚫 |
-| [Bitbucket Pipelines](https://bitbucket.org/product/features/pipelines) | `ci.BITBUCKET` | ✅ |
-| [Bitrise](https://www.bitrise.io/) | `ci.BITRISE` | ✅ |
-| [Buddy](https://buddy.works/) | `ci.BUDDY` | ✅ |
-| [Buildkite](https://buildkite.com) | `ci.BUILDKITE` | ✅ |
-| [CircleCI](http://circleci.com) | `ci.CIRCLE` | ✅ |
-| [Cirrus CI](https://cirrus-ci.org) | `ci.CIRRUS` | ✅ |
-| [Codeship](https://codeship.com) | `ci.CODESHIP` | 🚫 |
-| [Drone](https://drone.io) | `ci.DRONE` | ✅ |
-| [dsari](https://github.com/rfinnie/dsari) | `ci.DSARI` | 🚫 |
-| [GitLab CI](https://about.gitlab.com/gitlab-ci/) | `ci.GITLAB` | 🚫 |
-| [GoCD](https://www.go.cd/) | `ci.GOCD` | 🚫 |
-| [Hudson](http://hudson-ci.org) | `ci.HUDSON` | 🚫 |
-| [Jenkins CI](https://jenkins-ci.org) | `ci.JENKINS` | ✅ |
-| [Magnum CI](https://magnum-ci.com) | `ci.MAGNUM` | 🚫 |
-| [Netlify CI](https://www.netlify.com/) | `ci.NETLIFY` | ✅ |
-| [Sail CI](https://sail.ci/) | `ci.SAIL` | ✅ |
-| [Semaphore](https://semaphoreci.com) | `ci.SEMAPHORE` | ✅ |
-| [Shippable](https://www.shippable.com/) | `ci.SHIPPABLE` | ✅ |
-| [Solano CI](https://www.solanolabs.com/) | `ci.SOLANO` | ✅ |
-| [Strider CD](https://strider-cd.github.io/) | `ci.STRIDER` | 🚫 |
-| [TaskCluster](http://docs.taskcluster.net) | `ci.TASKCLUSTER` | 🚫 |
-| [TeamCity](https://www.jetbrains.com/teamcity/) by JetBrains | `ci.TEAMCITY` | 🚫 |
-| [Travis CI](http://travis-ci.org) | `ci.TRAVIS` | ✅ |
-
-## API
-
-### `ci.name`
-
-Returns a string containing name of the CI server the code is running on.
-If CI server is not detected, it returns `null`.
-
-Don't depend on the value of this string not to change for a specific
-vendor. If you find your self writing `ci.name === 'Travis CI'`, you
-most likely want to use `ci.TRAVIS` instead.
-
-### `ci.isCI`
-
-Returns a boolean. Will be `true` if the code is running on a CI server,
-otherwise `false`.
-
-Some CI servers not listed here might still trigger the `ci.isCI`
-boolean to be set to `true` if they use certain vendor neutral
-environment variables. In those cases `ci.name` will be `null` and no
-vendor specific boolean will be set to `true`.
-
-### `ci.isPR`
-
-Returns a boolean if PR detection is supported for the current CI server. Will
-be `true` if a PR is being tested, otherwise `false`. If PR detection is
-not supported for the current CI server, the value will be `null`.
-
-### `ci.<VENDOR-CONSTANT>`
-
-A vendor specific boolean constant is exposed for each support CI
-vendor. A constant will be `true` if the code is determined to run on
-the given CI server, otherwise `false`.
-
-Examples of vendor constants are `ci.TRAVIS` or `ci.APPVEYOR`. For a
-complete list, see the support table above.
-
-Deprecated vendor constants that will be removed in the next major
-release:
-
-- `ci.TDDIUM` (Solano CI) This have been renamed `ci.SOLANO`
-
-## License
-
-[MIT](LICENSE)
diff --git a/node_modules/ci-info/index.js b/node_modules/ci-info/index.js
deleted file mode 100644
index 9928fee9d..000000000
--- a/node_modules/ci-info/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-'use strict'
-
-var vendors = require('./vendors.json')
-
-var env = process.env
-
-// Used for testing only
-Object.defineProperty(exports, '_vendors', {
- value: vendors.map(function (v) { return v.constant })
-})
-
-exports.name = null
-exports.isPR = null
-
-vendors.forEach(function (vendor) {
- var envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env]
- var isCI = envs.every(function (obj) {
- return checkEnv(obj)
- })
-
- exports[vendor.constant] = isCI
-
- if (isCI) {
- exports.name = vendor.name
-
- switch (typeof vendor.pr) {
- case 'string':
- // "pr": "CIRRUS_PR"
- exports.isPR = !!env[vendor.pr]
- break
- case 'object':
- if ('env' in vendor.pr) {
- // "pr": { "env": "BUILDKITE_PULL_REQUEST", "ne": "false" }
- exports.isPR = vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne
- } else if ('any' in vendor.pr) {
- // "pr": { "any": ["ghprbPullId", "CHANGE_ID"] }
- exports.isPR = vendor.pr.any.some(function (key) {
- return !!env[key]
- })
- } else {
- // "pr": { "DRONE_BUILD_EVENT": "pull_request" }
- exports.isPR = checkEnv(vendor.pr)
- }
- break
- default:
- // PR detection not supported for this vendor
- exports.isPR = null
- }
- }
-})
-
-exports.isCI = !!(
- env.CI || // Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari
- env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI
- env.BUILD_NUMBER || // Jenkins, TeamCity
- env.RUN_ID || // TaskCluster, dsari
- exports.name ||
- false
-)
-
-function checkEnv (obj) {
- if (typeof obj === 'string') return !!env[obj]
- return Object.keys(obj).every(function (k) {
- return env[k] === obj[k]
- })
-}
diff --git a/node_modules/ci-info/package.json b/node_modules/ci-info/package.json
deleted file mode 100644
index 38334c1d5..000000000
--- a/node_modules/ci-info/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "ci-info",
- "version": "2.0.0",
- "description": "Get details about the current Continuous Integration environment",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {
- "clear-require": "^1.0.1",
- "standard": "^12.0.1",
- "tape": "^4.9.1"
- },
- "scripts": {
- "test": "standard && node test.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/watson/ci-info.git"
- },
- "keywords": [
- "ci",
- "continuous",
- "integration",
- "test",
- "detect"
- ],
- "author": "Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/watson/ci-info/issues"
- },
- "homepage": "https://github.com/watson/ci-info",
- "coordinates": [
- 55.778231,
- 12.593179
- ]
-}
diff --git a/node_modules/ci-info/vendors.json b/node_modules/ci-info/vendors.json
deleted file mode 100644
index 266a724ab..000000000
--- a/node_modules/ci-info/vendors.json
+++ /dev/null
@@ -1,153 +0,0 @@
-[
- {
- "name": "AppVeyor",
- "constant": "APPVEYOR",
- "env": "APPVEYOR",
- "pr": "APPVEYOR_PULL_REQUEST_NUMBER"
- },
- {
- "name": "Azure Pipelines",
- "constant": "AZURE_PIPELINES",
- "env": "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",
- "pr": "SYSTEM_PULLREQUEST_PULLREQUESTID"
- },
- {
- "name": "Bamboo",
- "constant": "BAMBOO",
- "env": "bamboo_planKey"
- },
- {
- "name": "Bitbucket Pipelines",
- "constant": "BITBUCKET",
- "env": "BITBUCKET_COMMIT",
- "pr": "BITBUCKET_PR_ID"
- },
- {
- "name": "Bitrise",
- "constant": "BITRISE",
- "env": "BITRISE_IO",
- "pr": "BITRISE_PULL_REQUEST"
- },
- {
- "name": "Buddy",
- "constant": "BUDDY",
- "env": "BUDDY_WORKSPACE_ID",
- "pr": "BUDDY_EXECUTION_PULL_REQUEST_ID"
- },
- {
- "name": "Buildkite",
- "constant": "BUILDKITE",
- "env": "BUILDKITE",
- "pr": { "env": "BUILDKITE_PULL_REQUEST", "ne": "false" }
- },
- {
- "name": "CircleCI",
- "constant": "CIRCLE",
- "env": "CIRCLECI",
- "pr": "CIRCLE_PULL_REQUEST"
- },
- {
- "name": "Cirrus CI",
- "constant": "CIRRUS",
- "env": "CIRRUS_CI",
- "pr": "CIRRUS_PR"
- },
- {
- "name": "AWS CodeBuild",
- "constant": "CODEBUILD",
- "env": "CODEBUILD_BUILD_ARN"
- },
- {
- "name": "Codeship",
- "constant": "CODESHIP",
- "env": { "CI_NAME": "codeship" }
- },
- {
- "name": "Drone",
- "constant": "DRONE",
- "env": "DRONE",
- "pr": { "DRONE_BUILD_EVENT": "pull_request" }
- },
- {
- "name": "dsari",
- "constant": "DSARI",
- "env": "DSARI"
- },
- {
- "name": "GitLab CI",
- "constant": "GITLAB",
- "env": "GITLAB_CI"
- },
- {
- "name": "GoCD",
- "constant": "GOCD",
- "env": "GO_PIPELINE_LABEL"
- },
- {
- "name": "Hudson",
- "constant": "HUDSON",
- "env": "HUDSON_URL"
- },
- {
- "name": "Jenkins",
- "constant": "JENKINS",
- "env": ["JENKINS_URL", "BUILD_ID"],
- "pr": { "any": ["ghprbPullId", "CHANGE_ID"] }
- },
- {
- "name": "Magnum CI",
- "constant": "MAGNUM",
- "env": "MAGNUM"
- },
- {
- "name": "Netlify CI",
- "constant": "NETLIFY",
- "env": "NETLIFY_BUILD_BASE",
- "pr": { "env": "PULL_REQUEST", "ne": "false" }
- },
- {
- "name": "Sail CI",
- "constant": "SAIL",
- "env": "SAILCI",
- "pr": "SAIL_PULL_REQUEST_NUMBER"
- },
- {
- "name": "Semaphore",
- "constant": "SEMAPHORE",
- "env": "SEMAPHORE",
- "pr": "PULL_REQUEST_NUMBER"
- },
- {
- "name": "Shippable",
- "constant": "SHIPPABLE",
- "env": "SHIPPABLE",
- "pr": { "IS_PULL_REQUEST": "true" }
- },
- {
- "name": "Solano CI",
- "constant": "SOLANO",
- "env": "TDDIUM",
- "pr": "TDDIUM_PR_ID"
- },
- {
- "name": "Strider CD",
- "constant": "STRIDER",
- "env": "STRIDER"
- },
- {
- "name": "TaskCluster",
- "constant": "TASKCLUSTER",
- "env": ["TASK_ID", "RUN_ID"]
- },
- {
- "name": "TeamCity",
- "constant": "TEAMCITY",
- "env": "TEAMCITY_VERSION"
- },
- {
- "name": "Travis CI",
- "constant": "TRAVIS",
- "env": "TRAVIS",
- "pr": { "env": "TRAVIS_PULL_REQUEST", "ne": "false" }
- }
-]
diff --git a/node_modules/decode-uri-component/index.js b/node_modules/decode-uri-component/index.js
deleted file mode 100644
index 691499b0e..000000000
--- a/node_modules/decode-uri-component/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-'use strict';
-var token = '%[a-f0-9]{2}';
-var singleMatcher = new RegExp(token, 'gi');
-var multiMatcher = new RegExp('(' + token + ')+', 'gi');
-
-function decodeComponents(components, split) {
- try {
- // Try to decode the entire string first
- return decodeURIComponent(components.join(''));
- } catch (err) {
- // Do nothing
- }
-
- if (components.length === 1) {
- return components;
- }
-
- split = split || 1;
-
- // Split the array in 2 parts
- var left = components.slice(0, split);
- var right = components.slice(split);
-
- return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));
-}
-
-function decode(input) {
- try {
- return decodeURIComponent(input);
- } catch (err) {
- var tokens = input.match(singleMatcher);
-
- for (var i = 1; i < tokens.length; i++) {
- input = decodeComponents(tokens, i).join('');
-
- tokens = input.match(singleMatcher);
- }
-
- return input;
- }
-}
-
-function customDecodeURIComponent(input) {
- // Keep track of all the replacements and prefill the map with the `BOM`
- var replaceMap = {
- '%FE%FF': '\uFFFD\uFFFD',
- '%FF%FE': '\uFFFD\uFFFD'
- };
-
- var match = multiMatcher.exec(input);
- while (match) {
- try {
- // Decode as big chunks as possible
- replaceMap[match[0]] = decodeURIComponent(match[0]);
- } catch (err) {
- var result = decode(match[0]);
-
- if (result !== match[0]) {
- replaceMap[match[0]] = result;
- }
- }
-
- match = multiMatcher.exec(input);
- }
-
- // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else
- replaceMap['%C2'] = '\uFFFD';
-
- var entries = Object.keys(replaceMap);
-
- for (var i = 0; i < entries.length; i++) {
- // Replace all decoded components
- var key = entries[i];
- input = input.replace(new RegExp(key, 'g'), replaceMap[key]);
- }
-
- return input;
-}
-
-module.exports = function (encodedURI) {
- if (typeof encodedURI !== 'string') {
- throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');
- }
-
- try {
- encodedURI = encodedURI.replace(/\+/g, ' ');
-
- // Try the built in decoder first
- return decodeURIComponent(encodedURI);
- } catch (err) {
- // Fallback to a more advanced decoder
- return customDecodeURIComponent(encodedURI);
- }
-};
diff --git a/node_modules/decode-uri-component/license b/node_modules/decode-uri-component/license
deleted file mode 100644
index 78b08554a..000000000
--- a/node_modules/decode-uri-component/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sam Verschueren <sam.verschueren@gmail.com> (github.com/SamVerschueren)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/decode-uri-component/package.json b/node_modules/decode-uri-component/package.json
deleted file mode 100644
index 183bd7c6a..000000000
--- a/node_modules/decode-uri-component/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "decode-uri-component",
- "version": "0.2.0",
- "description": "A better decodeURIComponent",
- "license": "MIT",
- "repository": "SamVerschueren/decode-uri-component",
- "author": {
- "name": "Sam Verschueren",
- "email": "sam.verschueren@gmail.com",
- "url": "github.com/SamVerschueren"
- },
- "engines": {
- "node": ">=0.10"
- },
- "scripts": {
- "test": "xo && nyc ava",
- "coveralls": "nyc report --reporter=text-lcov | coveralls"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "decode",
- "uri",
- "component",
- "decodeuricomponent",
- "components",
- "decoder",
- "url"
- ],
- "devDependencies": {
- "ava": "^0.17.0",
- "coveralls": "^2.13.1",
- "nyc": "^10.3.2",
- "xo": "^0.16.0"
- }
-}
diff --git a/node_modules/decode-uri-component/readme.md b/node_modules/decode-uri-component/readme.md
deleted file mode 100644
index 795c87ff7..000000000
--- a/node_modules/decode-uri-component/readme.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# decode-uri-component
-
-[![Build Status](https://travis-ci.org/SamVerschueren/decode-uri-component.svg?branch=master)](https://travis-ci.org/SamVerschueren/decode-uri-component) [![Coverage Status](https://coveralls.io/repos/SamVerschueren/decode-uri-component/badge.svg?branch=master&service=github)](https://coveralls.io/github/SamVerschueren/decode-uri-component?branch=master)
-
-> A better [decodeURIComponent](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent)
-
-
-## Why?
-
-- Decodes `+` to a space.
-- Converts the [BOM](https://en.wikipedia.org/wiki/Byte_order_mark) to a [replacement character](https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character) `�`.
-- Does not throw with invalid encoded input.
-- Decodes as much of the string as possible.
-
-
-## Install
-
-```
-$ npm install --save decode-uri-component
-```
-
-
-## Usage
-
-```js
-const decodeUriComponent = require('decode-uri-component');
-
-decodeUriComponent('%25');
-//=> '%'
-
-decodeUriComponent('%');
-//=> '%'
-
-decodeUriComponent('st%C3%A5le');
-//=> 'ståle'
-
-decodeUriComponent('%st%C3%A5le%');
-//=> '%ståle%'
-
-decodeUriComponent('%%7Bst%C3%A5le%7D%');
-//=> '%{ståle}%'
-
-decodeUriComponent('%7B%ab%%7C%de%%7D');
-//=> '{%ab%|%de%}'
-
-decodeUriComponent('%FE%FF');
-//=> '\uFFFD\uFFFD'
-
-decodeUriComponent('%C2');
-//=> '\uFFFD'
-
-decodeUriComponent('%C2%B5');
-//=> 'µ'
-```
-
-
-## API
-
-### decodeUriComponent(encodedURI)
-
-#### encodedURI
-
-Type: `string`
-
-An encoded component of a Uniform Resource Identifier.
-
-
-## License
-
-MIT © [Sam Verschueren](https://github.com/SamVerschueren)
diff --git a/node_modules/detect-indent/index.js b/node_modules/detect-indent/index.js
deleted file mode 100644
index eda0b1b1a..000000000
--- a/node_modules/detect-indent/index.js
+++ /dev/null
@@ -1,122 +0,0 @@
-'use strict';
-
-// detect either spaces or tabs but not both to properly handle tabs
-// for indentation and spaces for alignment
-const INDENT_RE = /^(?:( )+|\t+)/;
-
-function getMostUsed(indents) {
- let result = 0;
- let maxUsed = 0;
- let maxWeight = 0;
-
- for (const entry of indents) {
- // TODO: use destructuring when targeting Node.js 6
- const key = entry[0];
- const val = entry[1];
-
- const u = val[0];
- const w = val[1];
-
- if (u > maxUsed || (u === maxUsed && w > maxWeight)) {
- maxUsed = u;
- maxWeight = w;
- result = Number(key);
- }
- }
-
- return result;
-}
-
-module.exports = str => {
- if (typeof str !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- // used to see if tabs or spaces are the most used
- let tabs = 0;
- let spaces = 0;
-
- // remember the size of previous line's indentation
- let prev = 0;
-
- // remember how many indents/unindents as occurred for a given size
- // and how much lines follow a given indentation
- //
- // indents = {
- // 3: [1, 0],
- // 4: [1, 5],
- // 5: [1, 0],
- // 12: [1, 0],
- // }
- const indents = new Map();
-
- // pointer to the array of last used indent
- let current;
-
- // whether the last action was an indent (opposed to an unindent)
- let isIndent;
-
- for (const line of str.split(/\n/g)) {
- if (!line) {
- // ignore empty lines
- continue;
- }
-
- let indent;
- const matches = line.match(INDENT_RE);
-
- if (matches) {
- indent = matches[0].length;
-
- if (matches[1]) {
- spaces++;
- } else {
- tabs++;
- }
- } else {
- indent = 0;
- }
-
- const diff = indent - prev;
- prev = indent;
-
- if (diff) {
- // an indent or unindent has been detected
-
- isIndent = diff > 0;
-
- current = indents.get(isIndent ? diff : -diff);
-
- if (current) {
- current[0]++;
- } else {
- current = [1, 0];
- indents.set(diff, current);
- }
- } else if (current) {
- // if the last action was an indent, increment the weight
- current[1] += Number(isIndent);
- }
- }
-
- const amount = getMostUsed(indents);
-
- let type;
- let indent;
- if (!amount) {
- type = null;
- indent = '';
- } else if (spaces >= tabs) {
- type = 'space';
- indent = ' '.repeat(amount);
- } else {
- type = 'tab';
- indent = '\t'.repeat(amount);
- }
-
- return {
- amount,
- type,
- indent
- };
-};
diff --git a/node_modules/detect-indent/license b/node_modules/detect-indent/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/detect-indent/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/detect-indent/package.json b/node_modules/detect-indent/package.json
deleted file mode 100644
index 81c7edf31..000000000
--- a/node_modules/detect-indent/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "detect-indent",
- "version": "5.0.0",
- "description": "Detect the indentation of code",
- "license": "MIT",
- "repository": "sindresorhus/detect-indent",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "indent",
- "indentation",
- "detect",
- "infer",
- "identify",
- "code",
- "string",
- "text",
- "source",
- "space",
- "tab"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/node_modules/detect-indent/readme.md b/node_modules/detect-indent/readme.md
deleted file mode 100644
index 3aeb1badf..000000000
--- a/node_modules/detect-indent/readme.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# detect-indent [![Build Status](https://travis-ci.org/sindresorhus/detect-indent.svg?branch=master)](https://travis-ci.org/sindresorhus/detect-indent)
-
-> Detect the indentation of code
-
-Pass in a string of any kind of text and get the indentation.
-
-
-## Use cases
-
-- Persisting the indentation when modifying a file.
-- Have new content match the existing indentation.
-- Setting the right indentation in your editor.
-
-
-## Install
-
-```
-$ npm install --save detect-indent
-```
-
-
-## Usage
-
-Here we modify a JSON file while persisting the indentation:
-
-```js
-const fs = require('fs');
-const detectIndent = require('detect-indent');
-
-/*
-{
- "ilove": "pizza"
-}
-*/
-const file = fs.readFileSync('foo.json', 'utf8');
-
-// tries to detect the indentation and falls back to a default if it can't
-const indent = detectIndent(file).indent || ' ';
-
-const json = JSON.parse(file);
-
-json.ilove = 'unicorns';
-
-fs.writeFileSync('foo.json', JSON.stringify(json, null, indent));
-/*
-{
- "ilove": "unicorns"
-}
-*/
-```
-
-
-## API
-
-Accepts a string and returns an object with stats about the indentation:
-
-* `amount` {number} - Amount of indentation, for example `2`
-* `type` {string|null} - Type of indentation. Possible values are `tab`, `space` or `null` if no indentation is detected
-* `indent` {string} - Actual indentation
-
-
-## Algorithm
-
-The current algorithm looks for the most common difference between two consecutive non-empty lines.
-
-In the following example, even if the 4-space indentation is used 3 times whereas the 2-space one is used 2 times, it is detected as less used because there were only 2 differences with this value instead of 4 for the 2-space indentation:
-
-```css
-html {
- box-sizing: border-box;
-}
-
-body {
- background: gray;
-}
-
-p {
- line-height: 1.3em;
- margin-top: 1em;
- text-indent: 2em;
-}
-```
-
-[Source.](https://medium.com/@heatherarthur/detecting-code-indentation-eff3ed0fb56b#3918)
-
-Furthermore, if there are more than one most used difference, the indentation with the most lines is selected.
-
-In the following example, the indentation is detected as 4-spaces:
-
-```css
-body {
- background: gray;
-}
-
-p {
- line-height: 1.3em;
- margin-top: 1em;
- text-indent: 2em;
-}
-```
-
-
-## Related
-
-- [detect-indent-cli](https://github.com/sindresorhus/detect-indent-cli) - CLI for this module
-- [detect-newline](https://github.com/sindresorhus/detect-newline) - Detect the dominant newline character of a string
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/detect-newline/index.js b/node_modules/detect-newline/index.js
deleted file mode 100644
index 940329e5a..000000000
--- a/node_modules/detect-newline/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-'use strict';
-module.exports = function (str) {
- if (typeof str !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- var newlines = (str.match(/(?:\r?\n)/g) || []);
-
- if (newlines.length === 0) {
- return null;
- }
-
- var crlf = newlines.filter(function (el) {
- return el === '\r\n';
- }).length;
-
- var lf = newlines.length - crlf;
-
- return crlf > lf ? '\r\n' : '\n';
-};
-
-module.exports.graceful = function (str) {
- return module.exports(str) || '\n';
-};
diff --git a/node_modules/detect-newline/license b/node_modules/detect-newline/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/detect-newline/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/detect-newline/package.json b/node_modules/detect-newline/package.json
deleted file mode 100644
index d5b3d67ab..000000000
--- a/node_modules/detect-newline/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "detect-newline",
- "version": "2.1.0",
- "description": "Detect the dominant newline character of a string",
- "license": "MIT",
- "repository": "sindresorhus/detect-newline",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "newline",
- "linebreak",
- "line-break",
- "line",
- "lf",
- "crlf",
- "eol",
- "linefeed",
- "character",
- "char"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/node_modules/detect-newline/readme.md b/node_modules/detect-newline/readme.md
deleted file mode 100644
index ec5a479e7..000000000
--- a/node_modules/detect-newline/readme.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# detect-newline [![Build Status](https://travis-ci.org/sindresorhus/detect-newline.svg?branch=master)](https://travis-ci.org/sindresorhus/detect-newline)
-
-> Detect the dominant newline character of a string
-
-
-## Install
-
-```
-$ npm install --save detect-newline
-```
-
-
-## Usage
-
-```js
-const detectNewline = require('detect-newline');
-
-detectNewline('foo\nbar\nbaz\r\n');
-//=> '\n'
-```
-
-
-## API
-
-### detectNewline(input)
-
-Returns detected newline or `null` when no newline character is found.
-
-### detectNewline.graceful(input)
-
-Returns detected newline or `\n` when no newline character is found.
-
-
-## Related
-
-- [detect-newline-cli](https://github.com/sindresorhus/detect-newline-cli) - CLI for this module
-- [detect-indent](https://github.com/sindresorhus/detect-indent) - Detect the indentation of code
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/errno/.travis.yml b/node_modules/errno/.travis.yml
deleted file mode 100644
index f996821c5..000000000
--- a/node_modules/errno/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-sudo: false
-
-language: node_js
-
-node_js:
- - 9
- - 8
- - 7
- - 6
- - 5
- - 4
diff --git a/node_modules/errno/README.md b/node_modules/errno/README.md
deleted file mode 100644
index a4d0fb542..000000000
--- a/node_modules/errno/README.md
+++ /dev/null
@@ -1,145 +0,0 @@
-# node-errno
-
-> Better [libuv](https://github.com/libuv/libuv)/[Node.js](https://nodejs.org)/[io.js](https://iojs.org) error handling & reporting. Available in npm as *errno*.
-
-[![npm](https://img.shields.io/npm/v/errno.svg)](https://www.npmjs.com/package/errno)
-[![Build Status](https://secure.travis-ci.org/rvagg/node-errno.png)](http://travis-ci.org/rvagg/node-errno)
-[![npm](https://img.shields.io/npm/dm/errno.svg)](https://www.npmjs.com/package/errno)
-
-* [errno exposed](#errnoexposed)
-* [Custom errors](#customerrors)
-
-<a name="errnoexposed"></a>
-## errno exposed
-
-Ever find yourself needing more details about Node.js errors? Me too, so *node-errno* contains the errno mappings direct from libuv so you can use them in your code.
-
-**By errno:**
-
-```js
-require('errno').errno[3]
-// → {
-// "errno": 3,
-// "code": "EACCES",
-// "description": "permission denied"
-// }
-```
-
-**By code:**
-
-```js
-require('errno').code.ENOTEMPTY
-// → {
-// "errno": 53,
-// "code": "ENOTEMPTY",
-// "description": "directory not empty"
-// }
-```
-
-**Make your errors more descriptive:**
-
-```js
-var errno = require('errno')
-
-function errmsg(err) {
- var str = 'Error: '
- // if it's a libuv error then get the description from errno
- if (errno.errno[err.errno])
- str += errno.errno[err.errno].description
- else
- str += err.message
-
- // if it's a `fs` error then it'll have a 'path' property
- if (err.path)
- str += ' [' + err.path + ']'
-
- return str
-}
-
-var fs = require('fs')
-
-fs.readFile('thisisnotarealfile.txt', function (err, data) {
- if (err)
- console.log(errmsg(err))
-})
-```
-
-**Use as a command line tool:**
-
-```
-~ $ errno 53
-{
- "errno": 53,
- "code": "ENOTEMPTY",
- "description": "directory not empty"
-}
-~ $ errno EROFS
-{
- "errno": 56,
- "code": "EROFS",
- "description": "read-only file system"
-}
-~ $ errno foo
-No such errno/code: "foo"
-```
-
-Supply no arguments for the full list. Error codes are processed case-insensitive.
-
-You will need to install with `npm install errno -g` if you want the `errno` command to be available without supplying a full path to the node_modules installation.
-
-<a name="customerrors"></a>
-## Custom errors
-
-Use `errno.custom.createError()` to create custom `Error` objects to throw around in your Node.js library. Create error hierarchies so `instanceof` becomes a useful tool in tracking errors. Call-stack is correctly captured at the time you create an instance of the error object, plus a `cause` property will make available the original error object if you pass one in to the constructor.
-
-```js
-var create = require('errno').custom.createError
-var MyError = create('MyError') // inherits from Error
-var SpecificError = create('SpecificError', MyError) // inherits from MyError
-var OtherError = create('OtherError', MyError)
-
-// use them!
-if (condition) throw new SpecificError('Eeek! Something bad happened')
-
-if (err) return callback(new OtherError(err))
-```
-
-Also available is a `errno.custom.FilesystemError` with in-built access to errno properties:
-
-```js
-fs.readFile('foo', function (err, data) {
- if (err) return callback(new errno.custom.FilesystemError(err))
- // do something else
-})
-```
-
-The resulting error object passed through the callback will have the following properties: `code`, `errno`, `path` and `message` will contain a descriptive human-readable message.
-
-## Contributors
-
-* [bahamas10](https://github.com/bahamas10) (Dave Eddy) - Added CLI
-* [ralphtheninja](https://github.com/ralphtheninja) (Lars-Magnus Skog)
-
-## Copyright & Licence
-
-*Copyright (c) 2012-2015 [Rod Vagg](https://github.com/rvagg) ([@rvagg](https://twitter.com/rvagg))*
-
-Made available under the MIT licence:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/errno/build.js b/node_modules/errno/build.js
deleted file mode 100755
index fce89260c..000000000
--- a/node_modules/errno/build.js
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env node
-
-var request = require('request')
- , fs = require('fs')
-
- , uvheadloc = 'https://raw.github.com/joyent/libuv/master/include/uv.h'
- , defreg = /^\s*XX\(\s*([\-\d]+),\s*([A-Z]+),\s*"([^"]*)"\s*\)\s*\\?$/
-
-
-request(uvheadloc, function (err, response) {
- if (err)
- throw err
-
- var data, out
-
- data = response.body
- .split('\n')
- .map(function (line) { return line.match(defreg) })
- .filter(function (match) { return match })
- .map(function (match) { return {
- errno: parseInt(match[1], 10)
- , code: match[2]
- , description: match[3]
- }})
-
- out = 'var all = module.exports.all = ' + JSON.stringify(data, 0, 1) + '\n\n'
-
- out += '\nmodule.exports.errno = {\n '
- + data.map(function (e, i) {
- return '\'' + e.errno + '\': all[' + i + ']'
- }).join('\n , ')
- + '\n}\n\n'
-
- out += '\nmodule.exports.code = {\n '
- + data.map(function (e, i) {
- return '\'' + e.code + '\': all[' + i + ']'
- }).join('\n , ')
- + '\n}\n\n'
-
- out += '\nmodule.exports.custom = require("./custom")(module.exports)\n'
-
- fs.writeFile('errno.js', out)
-}) \ No newline at end of file
diff --git a/node_modules/errno/cli.js b/node_modules/errno/cli.js
deleted file mode 100755
index 61d179bbe..000000000
--- a/node_modules/errno/cli.js
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env node
-
-var errno = require('./')
- , arg = process.argv[2]
- , data, code
-
-if (arg === undefined) {
- console.log(JSON.stringify(errno.code, null, 2))
- process.exit(0)
-}
-
-if ((code = +arg) == arg)
- data = errno.errno[code]
-else
- data = errno.code[arg] || errno.code[arg.toUpperCase()]
-
-if (data)
- console.log(JSON.stringify(data, null, 2))
-else {
- console.error('No such errno/code: "' + arg + '"')
- process.exit(1)
-}
diff --git a/node_modules/errno/custom.js b/node_modules/errno/custom.js
deleted file mode 100644
index ca8c1d8dc..000000000
--- a/node_modules/errno/custom.js
+++ /dev/null
@@ -1,57 +0,0 @@
-var prr = require('prr')
-
-function init (type, message, cause) {
- if (!!message && typeof message != 'string') {
- message = message.message || message.name
- }
- prr(this, {
- type : type
- , name : type
- // can be passed just a 'cause'
- , cause : typeof message != 'string' ? message : cause
- , message : message
- }, 'ewr')
-}
-
-// generic prototype, not intended to be actually used - helpful for `instanceof`
-function CustomError (message, cause) {
- Error.call(this)
- if (Error.captureStackTrace)
- Error.captureStackTrace(this, this.constructor)
- init.call(this, 'CustomError', message, cause)
-}
-
-CustomError.prototype = new Error()
-
-function createError (errno, type, proto) {
- var err = function (message, cause) {
- init.call(this, type, message, cause)
- //TODO: the specificity here is stupid, errno should be available everywhere
- if (type == 'FilesystemError') {
- this.code = this.cause.code
- this.path = this.cause.path
- this.errno = this.cause.errno
- this.message =
- (errno.errno[this.cause.errno]
- ? errno.errno[this.cause.errno].description
- : this.cause.message)
- + (this.cause.path ? ' [' + this.cause.path + ']' : '')
- }
- Error.call(this)
- if (Error.captureStackTrace)
- Error.captureStackTrace(this, err)
- }
- err.prototype = !!proto ? new proto() : new CustomError()
- return err
-}
-
-module.exports = function (errno) {
- var ce = function (type, proto) {
- return createError(errno, type, proto)
- }
- return {
- CustomError : CustomError
- , FilesystemError : ce('FilesystemError')
- , createError : ce
- }
-}
diff --git a/node_modules/errno/errno.js b/node_modules/errno/errno.js
deleted file mode 100644
index efb79d41b..000000000
--- a/node_modules/errno/errno.js
+++ /dev/null
@@ -1,313 +0,0 @@
-var all = module.exports.all = [
- {
- errno: -2,
- code: 'ENOENT',
- description: 'no such file or directory'
- },
- {
- errno: -1,
- code: 'UNKNOWN',
- description: 'unknown error'
- },
- {
- errno: 0,
- code: 'OK',
- description: 'success'
- },
- {
- errno: 1,
- code: 'EOF',
- description: 'end of file'
- },
- {
- errno: 2,
- code: 'EADDRINFO',
- description: 'getaddrinfo error'
- },
- {
- errno: 3,
- code: 'EACCES',
- description: 'permission denied'
- },
- {
- errno: 4,
- code: 'EAGAIN',
- description: 'resource temporarily unavailable'
- },
- {
- errno: 5,
- code: 'EADDRINUSE',
- description: 'address already in use'
- },
- {
- errno: 6,
- code: 'EADDRNOTAVAIL',
- description: 'address not available'
- },
- {
- errno: 7,
- code: 'EAFNOSUPPORT',
- description: 'address family not supported'
- },
- {
- errno: 8,
- code: 'EALREADY',
- description: 'connection already in progress'
- },
- {
- errno: 9,
- code: 'EBADF',
- description: 'bad file descriptor'
- },
- {
- errno: 10,
- code: 'EBUSY',
- description: 'resource busy or locked'
- },
- {
- errno: 11,
- code: 'ECONNABORTED',
- description: 'software caused connection abort'
- },
- {
- errno: 12,
- code: 'ECONNREFUSED',
- description: 'connection refused'
- },
- {
- errno: 13,
- code: 'ECONNRESET',
- description: 'connection reset by peer'
- },
- {
- errno: 14,
- code: 'EDESTADDRREQ',
- description: 'destination address required'
- },
- {
- errno: 15,
- code: 'EFAULT',
- description: 'bad address in system call argument'
- },
- {
- errno: 16,
- code: 'EHOSTUNREACH',
- description: 'host is unreachable'
- },
- {
- errno: 17,
- code: 'EINTR',
- description: 'interrupted system call'
- },
- {
- errno: 18,
- code: 'EINVAL',
- description: 'invalid argument'
- },
- {
- errno: 19,
- code: 'EISCONN',
- description: 'socket is already connected'
- },
- {
- errno: 20,
- code: 'EMFILE',
- description: 'too many open files'
- },
- {
- errno: 21,
- code: 'EMSGSIZE',
- description: 'message too long'
- },
- {
- errno: 22,
- code: 'ENETDOWN',
- description: 'network is down'
- },
- {
- errno: 23,
- code: 'ENETUNREACH',
- description: 'network is unreachable'
- },
- {
- errno: 24,
- code: 'ENFILE',
- description: 'file table overflow'
- },
- {
- errno: 25,
- code: 'ENOBUFS',
- description: 'no buffer space available'
- },
- {
- errno: 26,
- code: 'ENOMEM',
- description: 'not enough memory'
- },
- {
- errno: 27,
- code: 'ENOTDIR',
- description: 'not a directory'
- },
- {
- errno: 28,
- code: 'EISDIR',
- description: 'illegal operation on a directory'
- },
- {
- errno: 29,
- code: 'ENONET',
- description: 'machine is not on the network'
- },
- {
- errno: 31,
- code: 'ENOTCONN',
- description: 'socket is not connected'
- },
- {
- errno: 32,
- code: 'ENOTSOCK',
- description: 'socket operation on non-socket'
- },
- {
- errno: 33,
- code: 'ENOTSUP',
- description: 'operation not supported on socket'
- },
- {
- errno: 34,
- code: 'ENOENT',
- description: 'no such file or directory'
- },
- {
- errno: 35,
- code: 'ENOSYS',
- description: 'function not implemented'
- },
- {
- errno: 36,
- code: 'EPIPE',
- description: 'broken pipe'
- },
- {
- errno: 37,
- code: 'EPROTO',
- description: 'protocol error'
- },
- {
- errno: 38,
- code: 'EPROTONOSUPPORT',
- description: 'protocol not supported'
- },
- {
- errno: 39,
- code: 'EPROTOTYPE',
- description: 'protocol wrong type for socket'
- },
- {
- errno: 40,
- code: 'ETIMEDOUT',
- description: 'connection timed out'
- },
- {
- errno: 41,
- code: 'ECHARSET',
- description: 'invalid Unicode character'
- },
- {
- errno: 42,
- code: 'EAIFAMNOSUPPORT',
- description: 'address family for hostname not supported'
- },
- {
- errno: 44,
- code: 'EAISERVICE',
- description: 'servname not supported for ai_socktype'
- },
- {
- errno: 45,
- code: 'EAISOCKTYPE',
- description: 'ai_socktype not supported'
- },
- {
- errno: 46,
- code: 'ESHUTDOWN',
- description: 'cannot send after transport endpoint shutdown'
- },
- {
- errno: 47,
- code: 'EEXIST',
- description: 'file already exists'
- },
- {
- errno: 48,
- code: 'ESRCH',
- description: 'no such process'
- },
- {
- errno: 49,
- code: 'ENAMETOOLONG',
- description: 'name too long'
- },
- {
- errno: 50,
- code: 'EPERM',
- description: 'operation not permitted'
- },
- {
- errno: 51,
- code: 'ELOOP',
- description: 'too many symbolic links encountered'
- },
- {
- errno: 52,
- code: 'EXDEV',
- description: 'cross-device link not permitted'
- },
- {
- errno: 53,
- code: 'ENOTEMPTY',
- description: 'directory not empty'
- },
- {
- errno: 54,
- code: 'ENOSPC',
- description: 'no space left on device'
- },
- {
- errno: 55,
- code: 'EIO',
- description: 'i/o error'
- },
- {
- errno: 56,
- code: 'EROFS',
- description: 'read-only file system'
- },
- {
- errno: 57,
- code: 'ENODEV',
- description: 'no such device'
- },
- {
- errno: 58,
- code: 'ESPIPE',
- description: 'invalid seek'
- },
- {
- errno: 59,
- code: 'ECANCELED',
- description: 'operation canceled'
- }
-]
-
-module.exports.errno = {}
-module.exports.code = {}
-
-all.forEach(function (error) {
- module.exports.errno[error.errno] = error
- module.exports.code[error.code] = error
-})
-
-module.exports.custom = require('./custom')(module.exports)
-module.exports.create = module.exports.custom.createError
diff --git a/node_modules/errno/package.json b/node_modules/errno/package.json
deleted file mode 100644
index 30ad0836c..000000000
--- a/node_modules/errno/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "errno",
- "authors": [
- "Rod Vagg @rvagg <rod@vagg.org> (https://github.com/rvagg)"
- ],
- "description": "libuv errno details exposed",
- "keywords": [
- "errors",
- "errno",
- "libuv"
- ],
- "version": "0.1.7",
- "main": "errno.js",
- "dependencies": {
- "prr": "~1.0.1"
- },
- "bin": {
- "errno": "./cli.js"
- },
- "devDependencies": {
- "error-stack-parser": "^2.0.1",
- "inherits": "^2.0.3",
- "tape": "~4.8.0"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/rvagg/node-errno.git"
- },
- "license": "MIT",
- "scripts": {
- "test": "node --use_strict test.js"
- }
-}
diff --git a/node_modules/errno/test.js b/node_modules/errno/test.js
deleted file mode 100644
index 1c046357b..000000000
--- a/node_modules/errno/test.js
+++ /dev/null
@@ -1,88 +0,0 @@
-var test = require('tape')
- , inherits = require('inherits')
- , ErrorStackParser = require('error-stack-parser')
- , errno = require('./')
-
-test('sanity checks', function (t) {
- t.ok(errno.all, 'errno.all not found')
- t.ok(errno.errno, 'errno.errno not found')
- t.ok(errno.code, 'errno.code not found')
-
- t.equal(errno.all.length, 60, 'found ' + errno.all.length + ', expected 60')
- t.equal(errno.errno['-1'], errno.all[1], 'errno -1 not second element')
-
- t.equal(errno.code['UNKNOWN'], errno.all[1], 'code UNKNOWN not second element')
-
- t.equal(errno.errno[1], errno.all[3], 'errno 1 not fourth element')
-
- t.equal(errno.code['EOF'], errno.all[3], 'code EOF not fourth element')
- t.end()
-})
-
-test('custom errors', function (t) {
- const Cust = errno.create('FooNotBarError')
- const cust = new Cust('foo is not bar')
-
- t.equal(cust.name, 'FooNotBarError', 'correct custom name')
- t.equal(cust.type, 'FooNotBarError', 'correct custom type')
- t.equal(cust.message, 'foo is not bar', 'correct custom message')
- t.notOk(cust.cause, 'no cause')
- t.end()
-})
-
-test('callstack', function (t) {
- const MyError = errno.create('MyError')
-
- function lastFunction (ErrorType, cb) {
- process.nextTick(cb, new ErrorType('oh noes!'))
- }
-
- function secondLastFunction (ErrorType, cb) {
- lastFunction(ErrorType, cb)
- }
-
- function testFrames (t) {
- return function (err) {
- const stack = ErrorStackParser.parse(err)
- t.same(stack[0].functionName, 'lastFunction', 'last stack frame ok')
- t.same(stack[1].functionName, 'secondLastFunction', 'second last stack frame ok')
- t.end()
- }
- }
-
- t.test('custom error, default prototype', function (t) {
- secondLastFunction(MyError, testFrames(t))
- })
-
- t.test('custom error, custom prototype', function (t) {
- const MyError2 = errno.create('MyError2', MyError)
- secondLastFunction(MyError2, testFrames(t))
- })
-
- t.test('custom error, using inheritance', function (t) {
- const CustomError = errno.custom.CustomError
-
- function MyError3 (message, cause) {
- CustomError.call(this, message, cause)
- }
-
- inherits(MyError3, CustomError)
-
- secondLastFunction(MyError3, testFrames(t))
- })
-})
-
-test('error without message', function (t) {
- const Cust = errno.create('WriteError')
- const cust = new Cust({
- code: 22,
- message: '',
- name: 'QuotaExceededError'
- })
-
- t.equal(cust.name, 'WriteError', 'correct custom name')
- t.equal(cust.type, 'WriteError', 'correct custom type')
- t.equal(cust.message, 'QuotaExceededError', 'message is the name')
- t.notOk(cust.cause, 'no cause')
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/.npmignore b/node_modules/fs-write-stream-atomic/.npmignore
deleted file mode 100644
index 2f24c57c3..000000000
--- a/node_modules/fs-write-stream-atomic/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules/
-coverage/
-.nyc_output/
diff --git a/node_modules/fs-write-stream-atomic/.travis.yml b/node_modules/fs-write-stream-atomic/.travis.yml
deleted file mode 100644
index 689466252..000000000
--- a/node_modules/fs-write-stream-atomic/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: node_js
-sudo: false
-before_install:
- - "npm -g install npm"
-node_js:
- - "0.8"
- - "0.10"
- - "0.12"
- - "iojs"
- - "4"
- - "5"
diff --git a/node_modules/fs-write-stream-atomic/LICENSE b/node_modules/fs-write-stream-atomic/LICENSE
deleted file mode 100644
index 19129e315..000000000
--- a/node_modules/fs-write-stream-atomic/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/fs-write-stream-atomic/README.md b/node_modules/fs-write-stream-atomic/README.md
deleted file mode 100644
index 9a15d0567..000000000
--- a/node_modules/fs-write-stream-atomic/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# fs-write-stream-atomic
-
-Like `fs.createWriteStream(...)`, but atomic.
-
-Writes to a tmp file and does an atomic `fs.rename` to move it into
-place when it's done.
-
-First rule of debugging: **It's always a race condition.**
-
-## USAGE
-
-```javascript
-var fsWriteStreamAtomic = require('fs-write-stream-atomic')
-// options are optional.
-var write = fsWriteStreamAtomic('output.txt', options)
-var read = fs.createReadStream('input.txt')
-read.pipe(write)
-
-// When the write stream emits a 'finish' or 'close' event,
-// you can be sure that it is moved into place, and contains
-// all the bytes that were written to it, even if something else
-// was writing to `output.txt` at the same time.
-```
-
-### `fsWriteStreamAtomic(filename, [options])`
-
-* `filename` {String} The file we want to write to
-* `options` {Object}
- * `chown` {Object} User and group to set ownership after write
- * `uid` {Number}
- * `gid` {Number}
- * `encoding` {String} default = 'utf8'
- * `mode` {Number} default = `0666`
- * `flags` {String} default = `'w'`
-
diff --git a/node_modules/fs-write-stream-atomic/index.js b/node_modules/fs-write-stream-atomic/index.js
deleted file mode 100644
index 1690ff5ae..000000000
--- a/node_modules/fs-write-stream-atomic/index.js
+++ /dev/null
@@ -1,176 +0,0 @@
-var fs = require('graceful-fs')
-var Writable = require('readable-stream').Writable
-var util = require('util')
-var MurmurHash3 = require('imurmurhash')
-var iferr = require('iferr')
-var crypto = require('crypto')
-
-function murmurhex () {
- var hash = MurmurHash3('')
- for (var ii = 0; ii < arguments.length; ++ii) {
- hash.hash('' + arguments[ii])
- }
- return hash.result()
-}
-
-var invocations = 0
-function getTmpname (filename) {
- return filename + '.' + murmurhex(__filename, process.pid, ++invocations)
-}
-
-var setImmediate = global.setImmediate || setTimeout
-
-module.exports = WriteStreamAtomic
-
-// Requirements:
-// 1. Write everything written to the stream to a temp file.
-// 2. If there are no errors:
-// a. moves the temp file into its final destination
-// b. emits `finish` & `closed` ONLY after the file is
-// fully flushed and renamed.
-// 3. If there's an error, removes the temp file.
-
-util.inherits(WriteStreamAtomic, Writable)
-function WriteStreamAtomic (path, options) {
- if (!(this instanceof WriteStreamAtomic)) {
- return new WriteStreamAtomic(path, options)
- }
- Writable.call(this, options)
-
- this.__isWin = options && options.hasOwnProperty('isWin') ? options.isWin : process.platform === 'win32'
-
- this.__atomicTarget = path
- this.__atomicTmp = getTmpname(path)
-
- this.__atomicChown = options && options.chown
-
- this.__atomicClosed = false
-
- this.__atomicStream = fs.WriteStream(this.__atomicTmp, options)
-
- this.__atomicStream.once('open', handleOpen(this))
- this.__atomicStream.once('close', handleClose(this))
- this.__atomicStream.once('error', handleError(this))
-}
-
-// We have to suppress default finish emitting, because ordinarily it
-// would happen as soon as `end` is called on us and all of the
-// data has been written to our target stream. So we suppress
-// finish from being emitted here, and only emit it after our
-// target stream is closed and we've moved everything around.
-WriteStreamAtomic.prototype.emit = function (event) {
- if (event === 'finish') return this.__atomicStream.end()
- return Writable.prototype.emit.apply(this, arguments)
-}
-
-WriteStreamAtomic.prototype._write = function (buffer, encoding, cb) {
- var flushed = this.__atomicStream.write(buffer, encoding)
- if (flushed) return cb()
- this.__atomicStream.once('drain', cb)
-}
-
-function handleOpen (writeStream) {
- return function (fd) {
- writeStream.emit('open', fd)
- }
-}
-
-function handleClose (writeStream) {
- return function () {
- if (writeStream.__atomicClosed) return
- writeStream.__atomicClosed = true
- if (writeStream.__atomicChown) {
- var uid = writeStream.__atomicChown.uid
- var gid = writeStream.__atomicChown.gid
- return fs.chown(writeStream.__atomicTmp, uid, gid, iferr(cleanup, moveIntoPlace))
- } else {
- moveIntoPlace()
- }
- }
-
- function moveIntoPlace () {
- fs.rename(writeStream.__atomicTmp, writeStream.__atomicTarget, iferr(trapWindowsEPERM, end))
- }
-
- function trapWindowsEPERM (err) {
- if (writeStream.__isWin &&
- err.syscall && err.syscall === 'rename' &&
- err.code && err.code === 'EPERM'
- ) {
- checkFileHashes(err)
- } else {
- cleanup(err)
- }
- }
-
- function checkFileHashes (eperm) {
- var inprocess = 2
- var tmpFileHash = crypto.createHash('sha512')
- var targetFileHash = crypto.createHash('sha512')
-
- fs.createReadStream(writeStream.__atomicTmp)
- .on('data', function (data, enc) { tmpFileHash.update(data, enc) })
- .on('error', fileHashError)
- .on('end', fileHashComplete)
- fs.createReadStream(writeStream.__atomicTarget)
- .on('data', function (data, enc) { targetFileHash.update(data, enc) })
- .on('error', fileHashError)
- .on('end', fileHashComplete)
-
- function fileHashError () {
- if (inprocess === 0) return
- inprocess = 0
- cleanup(eperm)
- }
-
- function fileHashComplete () {
- if (inprocess === 0) return
- if (--inprocess) return
- if (tmpFileHash.digest('hex') === targetFileHash.digest('hex')) {
- return cleanup()
- } else {
- return cleanup(eperm)
- }
- }
- }
-
- function cleanup (err) {
- fs.unlink(writeStream.__atomicTmp, function () {
- if (err) {
- writeStream.emit('error', err)
- writeStream.emit('close')
- } else {
- end()
- }
- })
- }
-
- function end () {
- // We have to use our parent class directly because we suppress `finish`
- // events fired via our own emit method.
- Writable.prototype.emit.call(writeStream, 'finish')
-
- // Delay the close to provide the same temporal separation a physical
- // file operation would have– that is, the close event is emitted only
- // after the async close operation completes.
- setImmediate(function () {
- writeStream.emit('close')
- })
- }
-}
-
-function handleError (writeStream) {
- return function (er) {
- cleanupSync()
- writeStream.emit('error', er)
- writeStream.__atomicClosed = true
- writeStream.emit('close')
- }
- function cleanupSync () {
- try {
- fs.unlinkSync(writeStream.__atomicTmp)
- } finally {
- return
- }
- }
-}
diff --git a/node_modules/fs-write-stream-atomic/node_modules/iferr/.npmignore b/node_modules/fs-write-stream-atomic/node_modules/iferr/.npmignore
deleted file mode 100644
index 3c3629e64..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/iferr/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/node_modules/fs-write-stream-atomic/node_modules/iferr/LICENSE b/node_modules/fs-write-stream-atomic/node_modules/iferr/LICENSE
deleted file mode 100644
index 19d5f4bce..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/iferr/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Nadav Ivgi
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE. \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/iferr/README.md b/node_modules/fs-write-stream-atomic/node_modules/iferr/README.md
deleted file mode 100644
index 0940763fa..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/iferr/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# iferr
-
-Higher-order functions for easier error handling.
-
-`if (err) return cb(err);` be gone!
-
-## Install
-```bash
-npm install iferr
-```
-
-## Use
-
-### JavaScript example
-```js
-var iferr = require('iferr');
-
-function get_friends_count(id, cb) {
- User.load_user(id, iferr(cb, function(user) {
- user.load_friends(iferr(cb, function(friends) {
- cb(null, friends.length);
- }));
- }));
-}
-```
-
-### CoffeeScript example
-```coffee
-iferr = require 'iferr'
-
-get_friends_count = (id, cb) ->
- User.load_user id, iferr cb, (user) ->
- user.load_friends iferr cb, (friends) ->
- cb null, friends.length
-```
-
-(TODO: document tiferr, throwerr and printerr)
-
-## License
-MIT
diff --git a/node_modules/fs-write-stream-atomic/node_modules/iferr/index.coffee b/node_modules/fs-write-stream-atomic/node_modules/iferr/index.coffee
deleted file mode 100644
index da6d00719..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/iferr/index.coffee
+++ /dev/null
@@ -1,24 +0,0 @@
-# Delegates to `succ` on sucecss or to `fail` on error
-# ex: Thing.load 123, iferr cb, (thing) -> ...
-iferr = (fail, succ) -> (err, a...) ->
- if err? then fail err
- else succ? a...
-
-# Like iferr, but also catches errors thrown from `succ` and passes to `fail`
-tiferr = (fail, succ) -> iferr fail, (a...) ->
- try succ a...
- catch err then fail err
-
-# Delegate to the success function on success, or throw the error otherwise
-# ex: Thing.load 123, throwerr (thing) -> ...
-throwerr = iferr.bind null, (err) -> throw err
-
-# Prints errors when one is passed, or does nothing otherwise
-# ex: thing.save printerr
-printerr = iferr (err) -> console.error err.stack or err
-
-module.exports = exports = iferr
-exports.iferr = iferr
-exports.tiferr = tiferr
-exports.throwerr = throwerr
-exports.printerr = printerr
diff --git a/node_modules/fs-write-stream-atomic/node_modules/iferr/index.js b/node_modules/fs-write-stream-atomic/node_modules/iferr/index.js
deleted file mode 100644
index 78fce3d2b..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/iferr/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// Generated by CoffeeScript 1.7.1
-(function() {
- var exports, iferr, printerr, throwerr, tiferr,
- __slice = [].slice;
-
- iferr = function(fail, succ) {
- return function() {
- var a, err;
- err = arguments[0], a = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
- if (err != null) {
- return fail(err);
- } else {
- return typeof succ === "function" ? succ.apply(null, a) : void 0;
- }
- };
- };
-
- tiferr = function(fail, succ) {
- return iferr(fail, function() {
- var a, err;
- a = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
- try {
- return succ.apply(null, a);
- } catch (_error) {
- err = _error;
- return fail(err);
- }
- });
- };
-
- throwerr = iferr.bind(null, function(err) {
- throw err;
- });
-
- printerr = iferr(function(err) {
- return console.error(err.stack || err);
- });
-
- module.exports = exports = iferr;
-
- exports.iferr = iferr;
-
- exports.tiferr = tiferr;
-
- exports.throwerr = throwerr;
-
- exports.printerr = printerr;
-
-}).call(this);
diff --git a/node_modules/fs-write-stream-atomic/node_modules/iferr/package.json b/node_modules/fs-write-stream-atomic/node_modules/iferr/package.json
deleted file mode 100644
index 9653654c9..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/iferr/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "iferr",
- "version": "0.1.5",
- "description": "Higher-order functions for easier error handling",
- "main": "index.js",
- "scripts": {
- "test": "mocha",
- "prepublish": "coffee -c index.coffee"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/shesek/iferr"
- },
- "keywords": [
- "error",
- "errors"
- ],
- "author": "Nadav Ivgi",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/shesek/iferr/issues"
- },
- "homepage": "https://github.com/shesek/iferr",
- "devDependencies": {
- "coffee-script": "^1.7.1",
- "mocha": "^1.18.2"
- }
-}
diff --git a/node_modules/fs-write-stream-atomic/node_modules/iferr/test/index.coffee b/node_modules/fs-write-stream-atomic/node_modules/iferr/test/index.coffee
deleted file mode 100644
index be0bc56fd..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/iferr/test/index.coffee
+++ /dev/null
@@ -1,42 +0,0 @@
-{ iferr, tiferr, throwerr } = require '../index.coffee'
-{ equal: eq, throws } = require 'assert'
-
-invoke_fail = (cb) -> cb new Error 'callback error'
-invoke_succ = (cb) -> cb null
-throw_error = -> throw new Error 'thrown'
-
-describe 'iferr', ->
- it 'calls the error callback on errors', (done) ->
- invoke_fail iferr(
- (err) ->
- eq err.message, 'callback error'
- do done
- ->
- done new Error 'shouldn\'t call the success callback'
- )
-
- it 'calls the success callback on success', (done) ->
- invoke_succ iferr(
- -> done new Error 'shouldn\'t call the error callback'
- done
- )
-
-describe 'tiferr', ->
- it 'catches errors in the success callback', (done) ->
- invoke_succ tiferr(
- (err) ->
- eq err.message, 'thrown'
- do done
- throw_error
- )
-
-describe 'throwerr', ->
- it 'throws errors passed to the callback', (done)->
- try invoke_fail throwerr ->
- done 'shouldn\'t call the success callback'
- catch err
- eq err.message, 'callback error'
- do done
-
- it 'delegates to the success callback otherwise', (done) ->
- invoke_succ throwerr done
diff --git a/node_modules/fs-write-stream-atomic/node_modules/iferr/test/mocha.opts b/node_modules/fs-write-stream-atomic/node_modules/iferr/test/mocha.opts
deleted file mode 100644
index 019defcf1..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/iferr/test/mocha.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---compilers coffee:coffee-script/register
---reporter spec
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/.travis.yml b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/.travis.yml
deleted file mode 100644
index f62cdac06..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/.travis.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-sudo: false
-language: node_js
-before_install:
- - (test $NPM_LEGACY && npm install -g npm@2 && npm install -g npm@3) || true
-notifications:
- email: false
-matrix:
- fast_finish: true
- include:
- - node_js: '0.8'
- env: NPM_LEGACY=true
- - node_js: '0.10'
- env: NPM_LEGACY=true
- - node_js: '0.11'
- env: NPM_LEGACY=true
- - node_js: '0.12'
- env: NPM_LEGACY=true
- - node_js: 1
- env: NPM_LEGACY=true
- - node_js: 2
- env: NPM_LEGACY=true
- - node_js: 3
- env: NPM_LEGACY=true
- - node_js: 4
- - node_js: 5
- - node_js: 6
- - node_js: 7
- - node_js: 8
- - node_js: 9
-script: "npm run test"
-env:
- global:
- - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc=
- - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI=
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/CONTRIBUTING.md b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/CONTRIBUTING.md
deleted file mode 100644
index f478d58dc..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/CONTRIBUTING.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Developer's Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-* (a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
-* (b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
-* (c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
-* (d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
-
-## Moderation Policy
-
-The [Node.js Moderation Policy] applies to this WG.
-
-## Code of Conduct
-
-The [Node.js Code of Conduct][] applies to this WG.
-
-[Node.js Code of Conduct]:
-https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md
-[Node.js Moderation Policy]:
-https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/GOVERNANCE.md b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/GOVERNANCE.md
deleted file mode 100644
index 16ffb93f2..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/GOVERNANCE.md
+++ /dev/null
@@ -1,136 +0,0 @@
-### Streams Working Group
-
-The Node.js Streams is jointly governed by a Working Group
-(WG)
-that is responsible for high-level guidance of the project.
-
-The WG has final authority over this project including:
-
-* Technical direction
-* Project governance and process (including this policy)
-* Contribution policy
-* GitHub repository hosting
-* Conduct guidelines
-* Maintaining the list of additional Collaborators
-
-For the current list of WG members, see the project
-[README.md](./README.md#current-project-team-members).
-
-### Collaborators
-
-The readable-stream GitHub repository is
-maintained by the WG and additional Collaborators who are added by the
-WG on an ongoing basis.
-
-Individuals making significant and valuable contributions are made
-Collaborators and given commit-access to the project. These
-individuals are identified by the WG and their addition as
-Collaborators is discussed during the WG meeting.
-
-_Note:_ If you make a significant contribution and are not considered
-for commit-access log an issue or contact a WG member directly and it
-will be brought up in the next WG meeting.
-
-Modifications of the contents of the readable-stream repository are
-made on
-a collaborative basis. Anybody with a GitHub account may propose a
-modification via pull request and it will be considered by the project
-Collaborators. All pull requests must be reviewed and accepted by a
-Collaborator with sufficient expertise who is able to take full
-responsibility for the change. In the case of pull requests proposed
-by an existing Collaborator, an additional Collaborator is required
-for sign-off. Consensus should be sought if additional Collaborators
-participate and there is disagreement around a particular
-modification. See _Consensus Seeking Process_ below for further detail
-on the consensus model used for governance.
-
-Collaborators may opt to elevate significant or controversial
-modifications, or modifications that have not found consensus to the
-WG for discussion by assigning the ***WG-agenda*** tag to a pull
-request or issue. The WG should serve as the final arbiter where
-required.
-
-For the current list of Collaborators, see the project
-[README.md](./README.md#members).
-
-### WG Membership
-
-WG seats are not time-limited. There is no fixed size of the WG.
-However, the expected target is between 6 and 12, to ensure adequate
-coverage of important areas of expertise, balanced with the ability to
-make decisions efficiently.
-
-There is no specific set of requirements or qualifications for WG
-membership beyond these rules.
-
-The WG may add additional members to the WG by unanimous consensus.
-
-A WG member may be removed from the WG by voluntary resignation, or by
-unanimous consensus of all other WG members.
-
-Changes to WG membership should be posted in the agenda, and may be
-suggested as any other agenda item (see "WG Meetings" below).
-
-If an addition or removal is proposed during a meeting, and the full
-WG is not in attendance to participate, then the addition or removal
-is added to the agenda for the subsequent meeting. This is to ensure
-that all members are given the opportunity to participate in all
-membership decisions. If a WG member is unable to attend a meeting
-where a planned membership decision is being made, then their consent
-is assumed.
-
-No more than 1/3 of the WG members may be affiliated with the same
-employer. If removal or resignation of a WG member, or a change of
-employment by a WG member, creates a situation where more than 1/3 of
-the WG membership shares an employer, then the situation must be
-immediately remedied by the resignation or removal of one or more WG
-members affiliated with the over-represented employer(s).
-
-### WG Meetings
-
-The WG meets occasionally on a Google Hangout On Air. A designated moderator
-approved by the WG runs the meeting. Each meeting should be
-published to YouTube.
-
-Items are added to the WG agenda that are considered contentious or
-are modifications of governance, contribution policy, WG membership,
-or release process.
-
-The intention of the agenda is not to approve or review all patches;
-that should happen continuously on GitHub and be handled by the larger
-group of Collaborators.
-
-Any community member or contributor can ask that something be added to
-the next meeting's agenda by logging a GitHub Issue. Any Collaborator,
-WG member or the moderator can add the item to the agenda by adding
-the ***WG-agenda*** tag to the issue.
-
-Prior to each WG meeting the moderator will share the Agenda with
-members of the WG. WG members can add any items they like to the
-agenda at the beginning of each meeting. The moderator and the WG
-cannot veto or remove items.
-
-The WG may invite persons or representatives from certain projects to
-participate in a non-voting capacity.
-
-The moderator is responsible for summarizing the discussion of each
-agenda item and sends it as a pull request after the meeting.
-
-### Consensus Seeking Process
-
-The WG follows a
-[Consensus
-Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making)
-decision-making model.
-
-When an agenda item has appeared to reach a consensus the moderator
-will ask "Does anyone object?" as a final call for dissent from the
-consensus.
-
-If an agenda item cannot reach a consensus a WG member can call for
-either a closing vote or a vote to table the issue to the next
-meeting. The call for a vote must be seconded by a majority of the WG
-or else the discussion will continue. Simple majority wins.
-
-Note that changes to WG membership require a majority consensus. See
-"WG Membership" above.
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/LICENSE b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/LICENSE
deleted file mode 100644
index 2873b3b2e..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Node.js is licensed for use as follows:
-
-"""
-Copyright Node.js contributors. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-"""
-
-This license applies to parts of Node.js originating from the
-https://github.com/joyent/node repository:
-
-"""
-Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-"""
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/README.md b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/README.md
deleted file mode 100644
index 23fe3f3e3..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# readable-stream
-
-***Node-core v8.11.1 streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream)
-
-
-[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/)
-[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/)
-
-
-[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream)
-
-```bash
-npm install --save readable-stream
-```
-
-***Node-core streams for userland***
-
-This package is a mirror of the Streams2 and Streams3 implementations in
-Node-core.
-
-Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.11.1/docs/api/stream.html).
-
-If you want to guarantee a stable streams base, regardless of what version of
-Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).
-
-As of version 2.0.0 **readable-stream** uses semantic versioning.
-
-# Streams Working Group
-
-`readable-stream` is maintained by the Streams Working Group, which
-oversees the development and maintenance of the Streams API within
-Node.js. The responsibilities of the Streams Working Group include:
-
-* Addressing stream issues on the Node.js issue tracker.
-* Authoring and editing stream documentation within the Node.js project.
-* Reviewing changes to stream subclasses within the Node.js project.
-* Redirecting changes to streams from the Node.js project to this
- project.
-* Assisting in the implementation of stream providers within Node.js.
-* Recommending versions of `readable-stream` to be included in Node.js.
-* Messaging about the future of streams to give the community advance
- notice of changes.
-
-<a name="members"></a>
-## Team Members
-
-* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) &lt;christopher.s.dickinson@gmail.com&gt;
- - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B
-* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) &lt;calvin.metcalf@gmail.com&gt;
- - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242
-* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) &lt;rod@vagg.org&gt;
- - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D
-* **Sam Newman** ([@sonewman](https://github.com/sonewman)) &lt;newmansam@outlook.com&gt;
-* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) &lt;mathiasbuus@gmail.com&gt;
-* **Domenic Denicola** ([@domenic](https://github.com/domenic)) &lt;d@domenic.me&gt;
-* **Matteo Collina** ([@mcollina](https://github.com/mcollina)) &lt;matteo.collina@gmail.com&gt;
- - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E
-* **Irina Shestak** ([@lrlna](https://github.com/lrlna)) &lt;shestak.irina@gmail.com&gt;
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md
deleted file mode 100644
index 83275f192..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# streams WG Meeting 2015-01-30
-
-## Links
-
-* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg
-* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106
-* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/
-
-## Agenda
-
-Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting.
-
-* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105)
-* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101)
-* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102)
-* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99)
-
-## Minutes
-
-### adopt a charter
-
-* group: +1's all around
-
-### What versioning scheme should be adopted?
-* group: +1’s 3.0.0
-* domenic+group: pulling in patches from other sources where appropriate
-* mikeal: version independently, suggesting versions for io.js
-* mikeal+domenic: work with TC to notify in advance of changes
-simpler stream creation
-
-### streamline creation of streams
-* sam: streamline creation of streams
-* domenic: nice simple solution posted
- but, we lose the opportunity to change the model
- may not be backwards incompatible (double check keys)
-
- **action item:** domenic will check
-
-### remove implicit flowing of streams on(‘data’)
-* add isFlowing / isPaused
-* mikeal: worrying that we’re documenting polyfill methods – confuses users
-* domenic: more reflective API is probably good, with warning labels for users
-* new section for mad scientists (reflective stream access)
-* calvin: name the “third state”
-* mikeal: maybe borrow the name from whatwg?
-* domenic: we’re missing the “third state”
-* consensus: kind of difficult to name the third state
-* mikeal: figure out differences in states / compat
-* mathias: always flow on data – eliminates third state
- * explore what it breaks
-
-**action items:**
-* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream)
-* ask rod/build for infrastructure
-* **chris**: explore the “flow on data” approach
-* add isPaused/isFlowing
-* add new docs section
-* move isPaused to that section
-
-
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/duplex-browser.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/duplex-browser.js
deleted file mode 100644
index f8b2db83d..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/duplex-browser.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/_stream_duplex.js');
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/duplex.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/duplex.js
deleted file mode 100644
index 46924cbfd..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/duplex.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./readable').Duplex
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_duplex.js
deleted file mode 100644
index 57003c32d..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_duplex.js
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
-
-'use strict';
-
-/*<replacement>*/
-
-var pna = require('process-nextick-args');
-/*</replacement>*/
-
-/*<replacement>*/
-var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) {
- keys.push(key);
- }return keys;
-};
-/*</replacement>*/
-
-module.exports = Duplex;
-
-/*<replacement>*/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/*</replacement>*/
-
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
-
-util.inherits(Duplex, Readable);
-
-{
- // avoid scope creep, the keys array can then be collected
- var keys = objectKeys(Writable.prototype);
- for (var v = 0; v < keys.length; v++) {
- var method = keys[v];
- if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
- }
-}
-
-function Duplex(options) {
- if (!(this instanceof Duplex)) return new Duplex(options);
-
- Readable.call(this, options);
- Writable.call(this, options);
-
- if (options && options.readable === false) this.readable = false;
-
- if (options && options.writable === false) this.writable = false;
-
- this.allowHalfOpen = true;
- if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
-
- this.once('end', onend);
-}
-
-Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function () {
- return this._writableState.highWaterMark;
- }
-});
-
-// the no-half-open enforcer
-function onend() {
- // if we allow half-open state, or if the writable side ended,
- // then we're ok.
- if (this.allowHalfOpen || this._writableState.ended) return;
-
- // no more data can be written.
- // But allow more writes to happen in this tick.
- pna.nextTick(onEndNT, this);
-}
-
-function onEndNT(self) {
- self.end();
-}
-
-Object.defineProperty(Duplex.prototype, 'destroyed', {
- get: function () {
- if (this._readableState === undefined || this._writableState === undefined) {
- return false;
- }
- return this._readableState.destroyed && this._writableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (this._readableState === undefined || this._writableState === undefined) {
- return;
- }
-
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._readableState.destroyed = value;
- this._writableState.destroyed = value;
- }
-});
-
-Duplex.prototype._destroy = function (err, cb) {
- this.push(null);
- this.end();
-
- pna.nextTick(cb, err);
-}; \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_passthrough.js
deleted file mode 100644
index 612edb4d8..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_passthrough.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
-
-'use strict';
-
-module.exports = PassThrough;
-
-var Transform = require('./_stream_transform');
-
-/*<replacement>*/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/*</replacement>*/
-
-util.inherits(PassThrough, Transform);
-
-function PassThrough(options) {
- if (!(this instanceof PassThrough)) return new PassThrough(options);
-
- Transform.call(this, options);
-}
-
-PassThrough.prototype._transform = function (chunk, encoding, cb) {
- cb(null, chunk);
-}; \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_readable.js
deleted file mode 100644
index 0f807646b..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_readable.js
+++ /dev/null
@@ -1,1019 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-'use strict';
-
-/*<replacement>*/
-
-var pna = require('process-nextick-args');
-/*</replacement>*/
-
-module.exports = Readable;
-
-/*<replacement>*/
-var isArray = require('isarray');
-/*</replacement>*/
-
-/*<replacement>*/
-var Duplex;
-/*</replacement>*/
-
-Readable.ReadableState = ReadableState;
-
-/*<replacement>*/
-var EE = require('events').EventEmitter;
-
-var EElistenerCount = function (emitter, type) {
- return emitter.listeners(type).length;
-};
-/*</replacement>*/
-
-/*<replacement>*/
-var Stream = require('./internal/streams/stream');
-/*</replacement>*/
-
-/*<replacement>*/
-
-var Buffer = require('safe-buffer').Buffer;
-var OurUint8Array = global.Uint8Array || function () {};
-function _uint8ArrayToBuffer(chunk) {
- return Buffer.from(chunk);
-}
-function _isUint8Array(obj) {
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
-}
-
-/*</replacement>*/
-
-/*<replacement>*/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/*</replacement>*/
-
-/*<replacement>*/
-var debugUtil = require('util');
-var debug = void 0;
-if (debugUtil && debugUtil.debuglog) {
- debug = debugUtil.debuglog('stream');
-} else {
- debug = function () {};
-}
-/*</replacement>*/
-
-var BufferList = require('./internal/streams/BufferList');
-var destroyImpl = require('./internal/streams/destroy');
-var StringDecoder;
-
-util.inherits(Readable, Stream);
-
-var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
-
-function prependListener(emitter, event, fn) {
- // Sadly this is not cacheable as some libraries bundle their own
- // event emitter implementation with them.
- if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
-
- // This is a hack to make sure that our error handler is attached before any
- // userland ones. NEVER DO THIS. This is here only because this code needs
- // to continue to work with older versions of Node.js that do not include
- // the prependListener() method. The goal is to eventually remove this hack.
- if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
-}
-
-function ReadableState(options, stream) {
- Duplex = Duplex || require('./_stream_duplex');
-
- options = options || {};
-
- // Duplex streams are both readable and writable, but share
- // the same options object.
- // However, some cases require setting options to different
- // values for the readable and the writable sides of the duplex stream.
- // These options can be provided separately as readableXXX and writableXXX.
- var isDuplex = stream instanceof Duplex;
-
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode = !!options.objectMode;
-
- if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
-
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- var hwm = options.highWaterMark;
- var readableHwm = options.readableHighWaterMark;
- var defaultHwm = this.objectMode ? 16 : 16 * 1024;
-
- if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
-
- // cast to ints.
- this.highWaterMark = Math.floor(this.highWaterMark);
-
- // A linked list is used to store data chunks instead of an array because the
- // linked list can remove elements from the beginning faster than
- // array.shift()
- this.buffer = new BufferList();
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = null;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false;
-
- // a flag to be able to tell if the event 'readable'/'data' is emitted
- // immediately, or on a later tick. We set this to true at first, because
- // any actions that shouldn't happen until "later" should generally also
- // not happen before the first read call.
- this.sync = true;
-
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
- this.resumeScheduled = false;
-
- // has it been destroyed
- this.destroyed = false;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain = 0;
-
- // if true, a maybeReadMore has been scheduled
- this.readingMore = false;
-
- this.decoder = null;
- this.encoding = null;
- if (options.encoding) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
-}
-
-function Readable(options) {
- Duplex = Duplex || require('./_stream_duplex');
-
- if (!(this instanceof Readable)) return new Readable(options);
-
- this._readableState = new ReadableState(options, this);
-
- // legacy
- this.readable = true;
-
- if (options) {
- if (typeof options.read === 'function') this._read = options.read;
-
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
- }
-
- Stream.call(this);
-}
-
-Object.defineProperty(Readable.prototype, 'destroyed', {
- get: function () {
- if (this._readableState === undefined) {
- return false;
- }
- return this._readableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (!this._readableState) {
- return;
- }
-
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._readableState.destroyed = value;
- }
-});
-
-Readable.prototype.destroy = destroyImpl.destroy;
-Readable.prototype._undestroy = destroyImpl.undestroy;
-Readable.prototype._destroy = function (err, cb) {
- this.push(null);
- cb(err);
-};
-
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function (chunk, encoding) {
- var state = this._readableState;
- var skipChunkCheck;
-
- if (!state.objectMode) {
- if (typeof chunk === 'string') {
- encoding = encoding || state.defaultEncoding;
- if (encoding !== state.encoding) {
- chunk = Buffer.from(chunk, encoding);
- encoding = '';
- }
- skipChunkCheck = true;
- }
- } else {
- skipChunkCheck = true;
- }
-
- return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
-};
-
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function (chunk) {
- return readableAddChunk(this, chunk, null, true, false);
-};
-
-function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
- var state = stream._readableState;
- if (chunk === null) {
- state.reading = false;
- onEofChunk(stream, state);
- } else {
- var er;
- if (!skipChunkCheck) er = chunkInvalid(state, chunk);
- if (er) {
- stream.emit('error', er);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
- chunk = _uint8ArrayToBuffer(chunk);
- }
-
- if (addToFront) {
- if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
- } else if (state.ended) {
- stream.emit('error', new Error('stream.push() after EOF'));
- } else {
- state.reading = false;
- if (state.decoder && !encoding) {
- chunk = state.decoder.write(chunk);
- if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
- } else {
- addChunk(stream, state, chunk, false);
- }
- }
- } else if (!addToFront) {
- state.reading = false;
- }
- }
-
- return needMoreData(state);
-}
-
-function addChunk(stream, state, chunk, addToFront) {
- if (state.flowing && state.length === 0 && !state.sync) {
- stream.emit('data', chunk);
- stream.read(0);
- } else {
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
-
- if (state.needReadable) emitReadable(stream);
- }
- maybeReadMore(stream, state);
-}
-
-function chunkInvalid(state, chunk) {
- var er;
- if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- return er;
-}
-
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes. This is to work around cases where hwm=0,
-// such as the repl. Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
- return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
-}
-
-Readable.prototype.isPaused = function () {
- return this._readableState.flowing === false;
-};
-
-// backwards compatibility.
-Readable.prototype.setEncoding = function (enc) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this._readableState.decoder = new StringDecoder(enc);
- this._readableState.encoding = enc;
- return this;
-};
-
-// Don't raise the hwm > 8MB
-var MAX_HWM = 0x800000;
-function computeNewHighWaterMark(n) {
- if (n >= MAX_HWM) {
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2 to prevent increasing hwm excessively in
- // tiny amounts
- n--;
- n |= n >>> 1;
- n |= n >>> 2;
- n |= n >>> 4;
- n |= n >>> 8;
- n |= n >>> 16;
- n++;
- }
- return n;
-}
-
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function howMuchToRead(n, state) {
- if (n <= 0 || state.length === 0 && state.ended) return 0;
- if (state.objectMode) return 1;
- if (n !== n) {
- // Only flow one buffer at a time
- if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
- }
- // If we're asking for more than the current hwm, then raise the hwm.
- if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
- if (n <= state.length) return n;
- // Don't have enough
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- }
- return state.length;
-}
-
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function (n) {
- debug('read', n);
- n = parseInt(n, 10);
- var state = this._readableState;
- var nOrig = n;
-
- if (n !== 0) state.emittedReadable = false;
-
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
- debug('read: emitReadable', state.length, state.ended);
- if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
- return null;
- }
-
- n = howMuchToRead(n, state);
-
- // if we've ended, and we're now clear, then finish it up.
- if (n === 0 && state.ended) {
- if (state.length === 0) endReadable(this);
- return null;
- }
-
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
-
- // if we need a readable event, then we need to do some reading.
- var doRead = state.needReadable;
- debug('need readable', doRead);
-
- // if we currently have less than the highWaterMark, then also read some
- if (state.length === 0 || state.length - n < state.highWaterMark) {
- doRead = true;
- debug('length less than watermark', doRead);
- }
-
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- if (state.ended || state.reading) {
- doRead = false;
- debug('reading or ended', doRead);
- } else if (doRead) {
- debug('do read');
- state.reading = true;
- state.sync = true;
- // if the length is currently zero, then we *need* a readable event.
- if (state.length === 0) state.needReadable = true;
- // call internal read method
- this._read(state.highWaterMark);
- state.sync = false;
- // If _read pushed data synchronously, then `reading` will be false,
- // and we need to re-evaluate how much data we can return to the user.
- if (!state.reading) n = howMuchToRead(nOrig, state);
- }
-
- var ret;
- if (n > 0) ret = fromList(n, state);else ret = null;
-
- if (ret === null) {
- state.needReadable = true;
- n = 0;
- } else {
- state.length -= n;
- }
-
- if (state.length === 0) {
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (!state.ended) state.needReadable = true;
-
- // If we tried to read() past the EOF, then emit end on the next tick.
- if (nOrig !== n && state.ended) endReadable(this);
- }
-
- if (ret !== null) this.emit('data', ret);
-
- return ret;
-};
-
-function onEofChunk(stream, state) {
- if (state.ended) return;
- if (state.decoder) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
- state.ended = true;
-
- // emit 'readable' now to make sure it gets picked up.
- emitReadable(stream);
-}
-
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
- var state = stream._readableState;
- state.needReadable = false;
- if (!state.emittedReadable) {
- debug('emitReadable', state.flowing);
- state.emittedReadable = true;
- if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
- }
-}
-
-function emitReadable_(stream) {
- debug('emit readable');
- stream.emit('readable');
- flow(stream);
-}
-
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- pna.nextTick(maybeReadMore_, stream, state);
- }
-}
-
-function maybeReadMore_(stream, state) {
- var len = state.length;
- while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
- debug('maybeReadMore read 0');
- stream.read(0);
- if (len === state.length)
- // didn't get any data, stop spinning.
- break;else len = state.length;
- }
- state.readingMore = false;
-}
-
-// abstract method. to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function (n) {
- this.emit('error', new Error('_read() is not implemented'));
-};
-
-Readable.prototype.pipe = function (dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
-
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
- case 1:
- state.pipes = [state.pipes, dest];
- break;
- default:
- state.pipes.push(dest);
- break;
- }
- state.pipesCount += 1;
- debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
-
- var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
-
- var endFn = doEnd ? onend : unpipe;
- if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
-
- dest.on('unpipe', onunpipe);
- function onunpipe(readable, unpipeInfo) {
- debug('onunpipe');
- if (readable === src) {
- if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
- unpipeInfo.hasUnpiped = true;
- cleanup();
- }
- }
- }
-
- function onend() {
- debug('onend');
- dest.end();
- }
-
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
-
- var cleanedUp = false;
- function cleanup() {
- debug('cleanup');
- // cleanup event handlers once the pipe is broken
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', unpipe);
- src.removeListener('data', ondata);
-
- cleanedUp = true;
-
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
- }
-
- // If the user pushes more data while we're writing to dest then we'll end up
- // in ondata again. However, we only want to increase awaitDrain once because
- // dest will only emit one 'drain' event for the multiple writes.
- // => Introduce a guard on increasing awaitDrain.
- var increasedAwaitDrain = false;
- src.on('data', ondata);
- function ondata(chunk) {
- debug('ondata');
- increasedAwaitDrain = false;
- var ret = dest.write(chunk);
- if (false === ret && !increasedAwaitDrain) {
- // If the user unpiped during `dest.write()`, it is possible
- // to get stuck in a permanently paused state if that write
- // also returned false.
- // => Check whether `dest` is still a piping destination.
- if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
- debug('false write response, pause', src._readableState.awaitDrain);
- src._readableState.awaitDrain++;
- increasedAwaitDrain = true;
- }
- src.pause();
- }
- }
-
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function onerror(er) {
- debug('onerror', er);
- unpipe();
- dest.removeListener('error', onerror);
- if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
- }
-
- // Make sure our error handler is attached before userland ones.
- prependListener(dest, 'error', onerror);
-
- // Both close and finish should trigger unpipe, but only once.
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
- dest.once('close', onclose);
- function onfinish() {
- debug('onfinish');
- dest.removeListener('close', onclose);
- unpipe();
- }
- dest.once('finish', onfinish);
-
- function unpipe() {
- debug('unpipe');
- src.unpipe(dest);
- }
-
- // tell the dest that it's being piped to
- dest.emit('pipe', src);
-
- // start the flow if it hasn't been started already.
- if (!state.flowing) {
- debug('pipe resume');
- src.resume();
- }
-
- return dest;
-};
-
-function pipeOnDrain(src) {
- return function () {
- var state = src._readableState;
- debug('pipeOnDrain', state.awaitDrain);
- if (state.awaitDrain) state.awaitDrain--;
- if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
- state.flowing = true;
- flow(src);
- }
- };
-}
-
-Readable.prototype.unpipe = function (dest) {
- var state = this._readableState;
- var unpipeInfo = { hasUnpiped: false };
-
- // if we're not piping anywhere, then do nothing.
- if (state.pipesCount === 0) return this;
-
- // just one destination. most common case.
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes) return this;
-
- if (!dest) dest = state.pipes;
-
- // got a match.
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
- if (dest) dest.emit('unpipe', this, unpipeInfo);
- return this;
- }
-
- // slow case. multiple pipe destinations.
-
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
-
- for (var i = 0; i < len; i++) {
- dests[i].emit('unpipe', this, unpipeInfo);
- }return this;
- }
-
- // try to find the right one.
- var index = indexOf(state.pipes, dest);
- if (index === -1) return this;
-
- state.pipes.splice(index, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1) state.pipes = state.pipes[0];
-
- dest.emit('unpipe', this, unpipeInfo);
-
- return this;
-};
-
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function (ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
-
- if (ev === 'data') {
- // Start flowing on next tick if stream isn't explicitly paused
- if (this._readableState.flowing !== false) this.resume();
- } else if (ev === 'readable') {
- var state = this._readableState;
- if (!state.endEmitted && !state.readableListening) {
- state.readableListening = state.needReadable = true;
- state.emittedReadable = false;
- if (!state.reading) {
- pna.nextTick(nReadingNextTick, this);
- } else if (state.length) {
- emitReadable(this);
- }
- }
- }
-
- return res;
-};
-Readable.prototype.addListener = Readable.prototype.on;
-
-function nReadingNextTick(self) {
- debug('readable nexttick read 0');
- self.read(0);
-}
-
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function () {
- var state = this._readableState;
- if (!state.flowing) {
- debug('resume');
- state.flowing = true;
- resume(this, state);
- }
- return this;
-};
-
-function resume(stream, state) {
- if (!state.resumeScheduled) {
- state.resumeScheduled = true;
- pna.nextTick(resume_, stream, state);
- }
-}
-
-function resume_(stream, state) {
- if (!state.reading) {
- debug('resume read 0');
- stream.read(0);
- }
-
- state.resumeScheduled = false;
- state.awaitDrain = 0;
- stream.emit('resume');
- flow(stream);
- if (state.flowing && !state.reading) stream.read(0);
-}
-
-Readable.prototype.pause = function () {
- debug('call pause flowing=%j', this._readableState.flowing);
- if (false !== this._readableState.flowing) {
- debug('pause');
- this._readableState.flowing = false;
- this.emit('pause');
- }
- return this;
-};
-
-function flow(stream) {
- var state = stream._readableState;
- debug('flow', state.flowing);
- while (state.flowing && stream.read() !== null) {}
-}
-
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function (stream) {
- var _this = this;
-
- var state = this._readableState;
- var paused = false;
-
- stream.on('end', function () {
- debug('wrapped end');
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) _this.push(chunk);
- }
-
- _this.push(null);
- });
-
- stream.on('data', function (chunk) {
- debug('wrapped data');
- if (state.decoder) chunk = state.decoder.write(chunk);
-
- // don't skip over falsy values in objectMode
- if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
-
- var ret = _this.push(chunk);
- if (!ret) {
- paused = true;
- stream.pause();
- }
- });
-
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for (var i in stream) {
- if (this[i] === undefined && typeof stream[i] === 'function') {
- this[i] = function (method) {
- return function () {
- return stream[method].apply(stream, arguments);
- };
- }(i);
- }
- }
-
- // proxy certain important events.
- for (var n = 0; n < kProxyEvents.length; n++) {
- stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
- }
-
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- this._read = function (n) {
- debug('wrapped _read', n);
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
-
- return this;
-};
-
-Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function () {
- return this._readableState.highWaterMark;
- }
-});
-
-// exposed for testing purposes only.
-Readable._fromList = fromList;
-
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function fromList(n, state) {
- // nothing buffered
- if (state.length === 0) return null;
-
- var ret;
- if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
- // read it all, truncate the list
- if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
- state.buffer.clear();
- } else {
- // read part of list
- ret = fromListPartial(n, state.buffer, state.decoder);
- }
-
- return ret;
-}
-
-// Extracts only enough buffered data to satisfy the amount requested.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function fromListPartial(n, list, hasStrings) {
- var ret;
- if (n < list.head.data.length) {
- // slice is the same for buffers and strings
- ret = list.head.data.slice(0, n);
- list.head.data = list.head.data.slice(n);
- } else if (n === list.head.data.length) {
- // first chunk is a perfect match
- ret = list.shift();
- } else {
- // result spans more than one buffer
- ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
- }
- return ret;
-}
-
-// Copies a specified amount of characters from the list of buffered data
-// chunks.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function copyFromBufferString(n, list) {
- var p = list.head;
- var c = 1;
- var ret = p.data;
- n -= ret.length;
- while (p = p.next) {
- var str = p.data;
- var nb = n > str.length ? str.length : n;
- if (nb === str.length) ret += str;else ret += str.slice(0, n);
- n -= nb;
- if (n === 0) {
- if (nb === str.length) {
- ++c;
- if (p.next) list.head = p.next;else list.head = list.tail = null;
- } else {
- list.head = p;
- p.data = str.slice(nb);
- }
- break;
- }
- ++c;
- }
- list.length -= c;
- return ret;
-}
-
-// Copies a specified amount of bytes from the list of buffered data chunks.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function copyFromBuffer(n, list) {
- var ret = Buffer.allocUnsafe(n);
- var p = list.head;
- var c = 1;
- p.data.copy(ret);
- n -= p.data.length;
- while (p = p.next) {
- var buf = p.data;
- var nb = n > buf.length ? buf.length : n;
- buf.copy(ret, ret.length - n, 0, nb);
- n -= nb;
- if (n === 0) {
- if (nb === buf.length) {
- ++c;
- if (p.next) list.head = p.next;else list.head = list.tail = null;
- } else {
- list.head = p;
- p.data = buf.slice(nb);
- }
- break;
- }
- ++c;
- }
- list.length -= c;
- return ret;
-}
-
-function endReadable(stream) {
- var state = stream._readableState;
-
- // If we get here before consuming all the bytes, then that is a
- // bug in node. Should never happen.
- if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
-
- if (!state.endEmitted) {
- state.ended = true;
- pna.nextTick(endReadableNT, state, stream);
- }
-}
-
-function endReadableNT(state, stream) {
- // Check that we didn't get one last unshift.
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
- }
-}
-
-function indexOf(xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
- return -1;
-} \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_transform.js
deleted file mode 100644
index fcfc105af..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_transform.js
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a transform stream is a readable/writable stream where you do
-// something with the data. Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored. (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation. For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes. When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up. When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer. When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks. If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk. However,
-// a pathological inflate type of transform can cause excessive buffering
-// here. For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output. In this case, you could write a very small
-// amount of input, and end up with a very large amount of output. In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform. A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
-
-'use strict';
-
-module.exports = Transform;
-
-var Duplex = require('./_stream_duplex');
-
-/*<replacement>*/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/*</replacement>*/
-
-util.inherits(Transform, Duplex);
-
-function afterTransform(er, data) {
- var ts = this._transformState;
- ts.transforming = false;
-
- var cb = ts.writecb;
-
- if (!cb) {
- return this.emit('error', new Error('write callback called multiple times'));
- }
-
- ts.writechunk = null;
- ts.writecb = null;
-
- if (data != null) // single equals check for both `null` and `undefined`
- this.push(data);
-
- cb(er);
-
- var rs = this._readableState;
- rs.reading = false;
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- this._read(rs.highWaterMark);
- }
-}
-
-function Transform(options) {
- if (!(this instanceof Transform)) return new Transform(options);
-
- Duplex.call(this, options);
-
- this._transformState = {
- afterTransform: afterTransform.bind(this),
- needTransform: false,
- transforming: false,
- writecb: null,
- writechunk: null,
- writeencoding: null
- };
-
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable = true;
-
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync = false;
-
- if (options) {
- if (typeof options.transform === 'function') this._transform = options.transform;
-
- if (typeof options.flush === 'function') this._flush = options.flush;
- }
-
- // When the writable side finishes, then flush out anything remaining.
- this.on('prefinish', prefinish);
-}
-
-function prefinish() {
- var _this = this;
-
- if (typeof this._flush === 'function') {
- this._flush(function (er, data) {
- done(_this, er, data);
- });
- } else {
- done(this, null, null);
- }
-}
-
-Transform.prototype.push = function (chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
-};
-
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side. You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk. If you pass
-// an error, then that'll put the hurt on the whole operation. If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function (chunk, encoding, cb) {
- throw new Error('_transform() is not implemented');
-};
-
-Transform.prototype._write = function (chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
- }
-};
-
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function (n) {
- var ts = this._transformState;
-
- if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
- ts.transforming = true;
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
-};
-
-Transform.prototype._destroy = function (err, cb) {
- var _this2 = this;
-
- Duplex.prototype._destroy.call(this, err, function (err2) {
- cb(err2);
- _this2.emit('close');
- });
-};
-
-function done(stream, er, data) {
- if (er) return stream.emit('error', er);
-
- if (data != null) // single equals check for both `null` and `undefined`
- stream.push(data);
-
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
-
- if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
-
- return stream.push(null);
-} \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_writable.js
deleted file mode 100644
index b0b02200c..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/_stream_writable.js
+++ /dev/null
@@ -1,687 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, encoding, cb), and it'll handle all
-// the drain event emission and buffering.
-
-'use strict';
-
-/*<replacement>*/
-
-var pna = require('process-nextick-args');
-/*</replacement>*/
-
-module.exports = Writable;
-
-/* <replacement> */
-function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
- this.next = null;
-}
-
-// It seems a linked list but it is not
-// there will be only 2 of these for each stream
-function CorkedRequest(state) {
- var _this = this;
-
- this.next = null;
- this.entry = null;
- this.finish = function () {
- onCorkedFinish(_this, state);
- };
-}
-/* </replacement> */
-
-/*<replacement>*/
-var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
-/*</replacement>*/
-
-/*<replacement>*/
-var Duplex;
-/*</replacement>*/
-
-Writable.WritableState = WritableState;
-
-/*<replacement>*/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/*</replacement>*/
-
-/*<replacement>*/
-var internalUtil = {
- deprecate: require('util-deprecate')
-};
-/*</replacement>*/
-
-/*<replacement>*/
-var Stream = require('./internal/streams/stream');
-/*</replacement>*/
-
-/*<replacement>*/
-
-var Buffer = require('safe-buffer').Buffer;
-var OurUint8Array = global.Uint8Array || function () {};
-function _uint8ArrayToBuffer(chunk) {
- return Buffer.from(chunk);
-}
-function _isUint8Array(obj) {
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
-}
-
-/*</replacement>*/
-
-var destroyImpl = require('./internal/streams/destroy');
-
-util.inherits(Writable, Stream);
-
-function nop() {}
-
-function WritableState(options, stream) {
- Duplex = Duplex || require('./_stream_duplex');
-
- options = options || {};
-
- // Duplex streams are both readable and writable, but share
- // the same options object.
- // However, some cases require setting options to different
- // values for the readable and the writable sides of the duplex stream.
- // These options can be provided separately as readableXXX and writableXXX.
- var isDuplex = stream instanceof Duplex;
-
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode = !!options.objectMode;
-
- if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
-
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- var hwm = options.highWaterMark;
- var writableHwm = options.writableHighWaterMark;
- var defaultHwm = this.objectMode ? 16 : 16 * 1024;
-
- if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
-
- // cast to ints.
- this.highWaterMark = Math.floor(this.highWaterMark);
-
- // if _final has been called
- this.finalCalled = false;
-
- // drain event flag.
- this.needDrain = false;
- // at the start of calling end()
- this.ending = false;
- // when end() has been called, and returned
- this.ended = false;
- // when 'finish' is emitted
- this.finished = false;
-
- // has it been destroyed
- this.destroyed = false;
-
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length = 0;
-
- // a flag to see when we're in the middle of a write.
- this.writing = false;
-
- // when true all writes will be buffered until .uncork() call
- this.corked = 0;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, because any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing = false;
-
- // the callback that's passed to _write(chunk,cb)
- this.onwrite = function (er) {
- onwrite(stream, er);
- };
-
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb = null;
-
- // the amount that is being written when _write is called.
- this.writelen = 0;
-
- this.bufferedRequest = null;
- this.lastBufferedRequest = null;
-
- // number of pending user-supplied write callbacks
- // this must be 0 before 'finish' can be emitted
- this.pendingcb = 0;
-
- // emit prefinish if the only thing we're waiting for is _write cbs
- // This is relevant for synchronous Transform streams
- this.prefinished = false;
-
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted = false;
-
- // count buffered requests
- this.bufferedRequestCount = 0;
-
- // allocate the first CorkedRequest, there is always
- // one allocated and free to use, and we maintain at most two
- this.corkedRequestsFree = new CorkedRequest(this);
-}
-
-WritableState.prototype.getBuffer = function getBuffer() {
- var current = this.bufferedRequest;
- var out = [];
- while (current) {
- out.push(current);
- current = current.next;
- }
- return out;
-};
-
-(function () {
- try {
- Object.defineProperty(WritableState.prototype, 'buffer', {
- get: internalUtil.deprecate(function () {
- return this.getBuffer();
- }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
- });
- } catch (_) {}
-})();
-
-// Test _writableState for inheritance to account for Duplex streams,
-// whose prototype chain only points to Readable.
-var realHasInstance;
-if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
- realHasInstance = Function.prototype[Symbol.hasInstance];
- Object.defineProperty(Writable, Symbol.hasInstance, {
- value: function (object) {
- if (realHasInstance.call(this, object)) return true;
- if (this !== Writable) return false;
-
- return object && object._writableState instanceof WritableState;
- }
- });
-} else {
- realHasInstance = function (object) {
- return object instanceof this;
- };
-}
-
-function Writable(options) {
- Duplex = Duplex || require('./_stream_duplex');
-
- // Writable ctor is applied to Duplexes, too.
- // `realHasInstance` is necessary because using plain `instanceof`
- // would return false, as no `_writableState` property is attached.
-
- // Trying to use the custom `instanceof` for Writable here will also break the
- // Node.js LazyTransform implementation, which has a non-trivial getter for
- // `_writableState` that would lead to infinite recursion.
- if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
- return new Writable(options);
- }
-
- this._writableState = new WritableState(options, this);
-
- // legacy.
- this.writable = true;
-
- if (options) {
- if (typeof options.write === 'function') this._write = options.write;
-
- if (typeof options.writev === 'function') this._writev = options.writev;
-
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
-
- if (typeof options.final === 'function') this._final = options.final;
- }
-
- Stream.call(this);
-}
-
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function () {
- this.emit('error', new Error('Cannot pipe, not readable'));
-};
-
-function writeAfterEnd(stream, cb) {
- var er = new Error('write after end');
- // TODO: defer error events consistently everywhere, not just the cb
- stream.emit('error', er);
- pna.nextTick(cb, er);
-}
-
-// Checks that a user-supplied chunk is valid, especially for the particular
-// mode the stream is in. Currently this means that `null` is never accepted
-// and undefined/non-string values are only allowed in object mode.
-function validChunk(stream, state, chunk, cb) {
- var valid = true;
- var er = false;
-
- if (chunk === null) {
- er = new TypeError('May not write null values to stream');
- } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- if (er) {
- stream.emit('error', er);
- pna.nextTick(cb, er);
- valid = false;
- }
- return valid;
-}
-
-Writable.prototype.write = function (chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
- var isBuf = !state.objectMode && _isUint8Array(chunk);
-
- if (isBuf && !Buffer.isBuffer(chunk)) {
- chunk = _uint8ArrayToBuffer(chunk);
- }
-
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
-
- if (typeof cb !== 'function') cb = nop;
-
- if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
- state.pendingcb++;
- ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
- }
-
- return ret;
-};
-
-Writable.prototype.cork = function () {
- var state = this._writableState;
-
- state.corked++;
-};
-
-Writable.prototype.uncork = function () {
- var state = this._writableState;
-
- if (state.corked) {
- state.corked--;
-
- if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
- }
-};
-
-Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
- // node::ParseEncoding() requires lower case.
- if (typeof encoding === 'string') encoding = encoding.toLowerCase();
- if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
- this._writableState.defaultEncoding = encoding;
- return this;
-};
-
-function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
- chunk = Buffer.from(chunk, encoding);
- }
- return chunk;
-}
-
-Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function () {
- return this._writableState.highWaterMark;
- }
-});
-
-// if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
- if (!isBuf) {
- var newChunk = decodeChunk(state, chunk, encoding);
- if (chunk !== newChunk) {
- isBuf = true;
- encoding = 'buffer';
- chunk = newChunk;
- }
- }
- var len = state.objectMode ? 1 : chunk.length;
-
- state.length += len;
-
- var ret = state.length < state.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- if (!ret) state.needDrain = true;
-
- if (state.writing || state.corked) {
- var last = state.lastBufferedRequest;
- state.lastBufferedRequest = {
- chunk: chunk,
- encoding: encoding,
- isBuf: isBuf,
- callback: cb,
- next: null
- };
- if (last) {
- last.next = state.lastBufferedRequest;
- } else {
- state.bufferedRequest = state.lastBufferedRequest;
- }
- state.bufferedRequestCount += 1;
- } else {
- doWrite(stream, state, false, len, chunk, encoding, cb);
- }
-
- return ret;
-}
-
-function doWrite(stream, state, writev, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
-}
-
-function onwriteError(stream, state, sync, er, cb) {
- --state.pendingcb;
-
- if (sync) {
- // defer the callback if we are being called synchronously
- // to avoid piling up things on the stack
- pna.nextTick(cb, er);
- // this can emit finish, and it will always happen
- // after error
- pna.nextTick(finishMaybe, stream, state);
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
- } else {
- // the caller expect this to happen before if
- // it is async
- cb(er);
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
- // this can emit finish, but finish must
- // always follow error
- finishMaybe(stream, state);
- }
-}
-
-function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
-}
-
-function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
-
- onwriteStateUpdate(state);
-
- if (er) onwriteError(stream, state, sync, er, cb);else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(state);
-
- if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
- clearBuffer(stream, state);
- }
-
- if (sync) {
- /*<replacement>*/
- asyncWrite(afterWrite, stream, state, finished, cb);
- /*</replacement>*/
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
-}
-
-function afterWrite(stream, state, finished, cb) {
- if (!finished) onwriteDrain(stream, state);
- state.pendingcb--;
- cb();
- finishMaybe(stream, state);
-}
-
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
-}
-
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
- state.bufferProcessing = true;
- var entry = state.bufferedRequest;
-
- if (stream._writev && entry && entry.next) {
- // Fast case, write everything using _writev()
- var l = state.bufferedRequestCount;
- var buffer = new Array(l);
- var holder = state.corkedRequestsFree;
- holder.entry = entry;
-
- var count = 0;
- var allBuffers = true;
- while (entry) {
- buffer[count] = entry;
- if (!entry.isBuf) allBuffers = false;
- entry = entry.next;
- count += 1;
- }
- buffer.allBuffers = allBuffers;
-
- doWrite(stream, state, true, state.length, buffer, '', holder.finish);
-
- // doWrite is almost always async, defer these to save a bit of time
- // as the hot path ends with doWrite
- state.pendingcb++;
- state.lastBufferedRequest = null;
- if (holder.next) {
- state.corkedRequestsFree = holder.next;
- holder.next = null;
- } else {
- state.corkedRequestsFree = new CorkedRequest(state);
- }
- state.bufferedRequestCount = 0;
- } else {
- // Slow case, write chunks one-by-one
- while (entry) {
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
-
- doWrite(stream, state, false, len, chunk, encoding, cb);
- entry = entry.next;
- state.bufferedRequestCount--;
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if (state.writing) {
- break;
- }
- }
-
- if (entry === null) state.lastBufferedRequest = null;
- }
-
- state.bufferedRequest = entry;
- state.bufferProcessing = false;
-}
-
-Writable.prototype._write = function (chunk, encoding, cb) {
- cb(new Error('_write() is not implemented'));
-};
-
-Writable.prototype._writev = null;
-
-Writable.prototype.end = function (chunk, encoding, cb) {
- var state = this._writableState;
-
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
-
- // .end() fully uncorks
- if (state.corked) {
- state.corked = 1;
- this.uncork();
- }
-
- // ignore unnecessary end() calls.
- if (!state.ending && !state.finished) endWritable(this, state, cb);
-};
-
-function needFinish(state) {
- return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
-}
-function callFinal(stream, state) {
- stream._final(function (err) {
- state.pendingcb--;
- if (err) {
- stream.emit('error', err);
- }
- state.prefinished = true;
- stream.emit('prefinish');
- finishMaybe(stream, state);
- });
-}
-function prefinish(stream, state) {
- if (!state.prefinished && !state.finalCalled) {
- if (typeof stream._final === 'function') {
- state.pendingcb++;
- state.finalCalled = true;
- pna.nextTick(callFinal, stream, state);
- } else {
- state.prefinished = true;
- stream.emit('prefinish');
- }
- }
-}
-
-function finishMaybe(stream, state) {
- var need = needFinish(state);
- if (need) {
- prefinish(stream, state);
- if (state.pendingcb === 0) {
- state.finished = true;
- stream.emit('finish');
- }
- }
- return need;
-}
-
-function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
- if (cb) {
- if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
- }
- state.ended = true;
- stream.writable = false;
-}
-
-function onCorkedFinish(corkReq, state, err) {
- var entry = corkReq.entry;
- corkReq.entry = null;
- while (entry) {
- var cb = entry.callback;
- state.pendingcb--;
- cb(err);
- entry = entry.next;
- }
- if (state.corkedRequestsFree) {
- state.corkedRequestsFree.next = corkReq;
- } else {
- state.corkedRequestsFree = corkReq;
- }
-}
-
-Object.defineProperty(Writable.prototype, 'destroyed', {
- get: function () {
- if (this._writableState === undefined) {
- return false;
- }
- return this._writableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (!this._writableState) {
- return;
- }
-
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._writableState.destroyed = value;
- }
-});
-
-Writable.prototype.destroy = destroyImpl.destroy;
-Writable.prototype._undestroy = destroyImpl.undestroy;
-Writable.prototype._destroy = function (err, cb) {
- this.end();
- cb(err);
-}; \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/BufferList.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/BufferList.js
deleted file mode 100644
index aefc68bd9..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/BufferList.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict';
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Buffer = require('safe-buffer').Buffer;
-var util = require('util');
-
-function copyBuffer(src, target, offset) {
- src.copy(target, offset);
-}
-
-module.exports = function () {
- function BufferList() {
- _classCallCheck(this, BufferList);
-
- this.head = null;
- this.tail = null;
- this.length = 0;
- }
-
- BufferList.prototype.push = function push(v) {
- var entry = { data: v, next: null };
- if (this.length > 0) this.tail.next = entry;else this.head = entry;
- this.tail = entry;
- ++this.length;
- };
-
- BufferList.prototype.unshift = function unshift(v) {
- var entry = { data: v, next: this.head };
- if (this.length === 0) this.tail = entry;
- this.head = entry;
- ++this.length;
- };
-
- BufferList.prototype.shift = function shift() {
- if (this.length === 0) return;
- var ret = this.head.data;
- if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
- --this.length;
- return ret;
- };
-
- BufferList.prototype.clear = function clear() {
- this.head = this.tail = null;
- this.length = 0;
- };
-
- BufferList.prototype.join = function join(s) {
- if (this.length === 0) return '';
- var p = this.head;
- var ret = '' + p.data;
- while (p = p.next) {
- ret += s + p.data;
- }return ret;
- };
-
- BufferList.prototype.concat = function concat(n) {
- if (this.length === 0) return Buffer.alloc(0);
- if (this.length === 1) return this.head.data;
- var ret = Buffer.allocUnsafe(n >>> 0);
- var p = this.head;
- var i = 0;
- while (p) {
- copyBuffer(p.data, ret, i);
- i += p.data.length;
- p = p.next;
- }
- return ret;
- };
-
- return BufferList;
-}();
-
-if (util && util.inspect && util.inspect.custom) {
- module.exports.prototype[util.inspect.custom] = function () {
- var obj = util.inspect({ length: this.length });
- return this.constructor.name + ' ' + obj;
- };
-} \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/destroy.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/destroy.js
deleted file mode 100644
index 5a0a0d88c..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/destroy.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict';
-
-/*<replacement>*/
-
-var pna = require('process-nextick-args');
-/*</replacement>*/
-
-// undocumented cb() API, needed for core, not for public API
-function destroy(err, cb) {
- var _this = this;
-
- var readableDestroyed = this._readableState && this._readableState.destroyed;
- var writableDestroyed = this._writableState && this._writableState.destroyed;
-
- if (readableDestroyed || writableDestroyed) {
- if (cb) {
- cb(err);
- } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
- pna.nextTick(emitErrorNT, this, err);
- }
- return this;
- }
-
- // we set destroyed to true before firing error callbacks in order
- // to make it re-entrance safe in case destroy() is called within callbacks
-
- if (this._readableState) {
- this._readableState.destroyed = true;
- }
-
- // if this is a duplex stream mark the writable part as destroyed as well
- if (this._writableState) {
- this._writableState.destroyed = true;
- }
-
- this._destroy(err || null, function (err) {
- if (!cb && err) {
- pna.nextTick(emitErrorNT, _this, err);
- if (_this._writableState) {
- _this._writableState.errorEmitted = true;
- }
- } else if (cb) {
- cb(err);
- }
- });
-
- return this;
-}
-
-function undestroy() {
- if (this._readableState) {
- this._readableState.destroyed = false;
- this._readableState.reading = false;
- this._readableState.ended = false;
- this._readableState.endEmitted = false;
- }
-
- if (this._writableState) {
- this._writableState.destroyed = false;
- this._writableState.ended = false;
- this._writableState.ending = false;
- this._writableState.finished = false;
- this._writableState.errorEmitted = false;
- }
-}
-
-function emitErrorNT(self, err) {
- self.emit('error', err);
-}
-
-module.exports = {
- destroy: destroy,
- undestroy: undestroy
-}; \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/stream-browser.js
deleted file mode 100644
index 9332a3fda..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/stream-browser.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('events').EventEmitter;
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/stream.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/stream.js
deleted file mode 100644
index ce2ad5b6e..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/lib/internal/streams/stream.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('stream');
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/package.json b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/package.json
deleted file mode 100644
index 2afa6fbd8..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "readable-stream",
- "version": "2.3.7",
- "description": "Streams3, a user-land copy of the stream library from Node.js",
- "main": "readable.js",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- },
- "devDependencies": {
- "assert": "^1.4.0",
- "babel-polyfill": "^6.9.1",
- "buffer": "^4.9.0",
- "lolex": "^2.3.2",
- "nyc": "^6.4.0",
- "tap": "^0.7.0",
- "tape": "^4.8.0"
- },
- "scripts": {
- "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js",
- "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
- "cover": "nyc npm test",
- "report": "nyc report --reporter=lcov"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/nodejs/readable-stream"
- },
- "keywords": [
- "readable",
- "stream",
- "pipe"
- ],
- "browser": {
- "util": false,
- "./readable.js": "./readable-browser.js",
- "./writable.js": "./writable-browser.js",
- "./duplex.js": "./duplex-browser.js",
- "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
- },
- "nyc": {
- "include": [
- "lib/**.js"
- ]
- },
- "license": "MIT"
-}
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/passthrough.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/passthrough.js
deleted file mode 100644
index ffd791d7f..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/passthrough.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./readable').PassThrough
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/readable-browser.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/readable-browser.js
deleted file mode 100644
index e50372592..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/readable-browser.js
+++ /dev/null
@@ -1,7 +0,0 @@
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Stream = exports;
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/readable.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/readable.js
deleted file mode 100644
index ec89ec533..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/readable.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var Stream = require('stream');
-if (process.env.READABLE_STREAM === 'disable' && Stream) {
- module.exports = Stream;
- exports = module.exports = Stream.Readable;
- exports.Readable = Stream.Readable;
- exports.Writable = Stream.Writable;
- exports.Duplex = Stream.Duplex;
- exports.Transform = Stream.Transform;
- exports.PassThrough = Stream.PassThrough;
- exports.Stream = Stream;
-} else {
- exports = module.exports = require('./lib/_stream_readable.js');
- exports.Stream = Stream || exports;
- exports.Readable = exports;
- exports.Writable = require('./lib/_stream_writable.js');
- exports.Duplex = require('./lib/_stream_duplex.js');
- exports.Transform = require('./lib/_stream_transform.js');
- exports.PassThrough = require('./lib/_stream_passthrough.js');
-}
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/transform.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/transform.js
deleted file mode 100644
index b1baba26d..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/transform.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./readable').Transform
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/writable-browser.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/writable-browser.js
deleted file mode 100644
index ebdde6a85..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/writable-browser.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/_stream_writable.js');
diff --git a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/writable.js b/node_modules/fs-write-stream-atomic/node_modules/readable-stream/writable.js
deleted file mode 100644
index 3211a6f80..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/readable-stream/writable.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var Stream = require("stream")
-var Writable = require("./lib/_stream_writable.js")
-
-if (process.env.READABLE_STREAM === 'disable') {
- module.exports = Stream && Stream.Writable || Writable
-} else {
- module.exports = Writable
-}
diff --git a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/LICENSE b/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/LICENSE
deleted file mode 100644
index 0c068ceec..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Feross Aboukhadijeh
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/README.md b/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/README.md
deleted file mode 100644
index e9a81afd0..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/README.md
+++ /dev/null
@@ -1,584 +0,0 @@
-# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
-
-[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg
-[travis-url]: https://travis-ci.org/feross/safe-buffer
-[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg
-[npm-url]: https://npmjs.org/package/safe-buffer
-[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg
-[downloads-url]: https://npmjs.org/package/safe-buffer
-[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
-[standard-url]: https://standardjs.com
-
-#### Safer Node.js Buffer API
-
-**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`,
-`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.**
-
-**Uses the built-in implementation when available.**
-
-## install
-
-```
-npm install safe-buffer
-```
-
-## usage
-
-The goal of this package is to provide a safe replacement for the node.js `Buffer`.
-
-It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to
-the top of your node.js modules:
-
-```js
-var Buffer = require('safe-buffer').Buffer
-
-// Existing buffer code will continue to work without issues:
-
-new Buffer('hey', 'utf8')
-new Buffer([1, 2, 3], 'utf8')
-new Buffer(obj)
-new Buffer(16) // create an uninitialized buffer (potentially unsafe)
-
-// But you can use these new explicit APIs to make clear what you want:
-
-Buffer.from('hey', 'utf8') // convert from many types to a Buffer
-Buffer.alloc(16) // create a zero-filled buffer (safe)
-Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe)
-```
-
-## api
-
-### Class Method: Buffer.from(array)
-<!-- YAML
-added: v3.0.0
--->
-
-* `array` {Array}
-
-Allocates a new `Buffer` using an `array` of octets.
-
-```js
-const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]);
- // creates a new Buffer containing ASCII bytes
- // ['b','u','f','f','e','r']
-```
-
-A `TypeError` will be thrown if `array` is not an `Array`.
-
-### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]])
-<!-- YAML
-added: v5.10.0
--->
-
-* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or
- a `new ArrayBuffer()`
-* `byteOffset` {Number} Default: `0`
-* `length` {Number} Default: `arrayBuffer.length - byteOffset`
-
-When passed a reference to the `.buffer` property of a `TypedArray` instance,
-the newly created `Buffer` will share the same allocated memory as the
-TypedArray.
-
-```js
-const arr = new Uint16Array(2);
-arr[0] = 5000;
-arr[1] = 4000;
-
-const buf = Buffer.from(arr.buffer); // shares the memory with arr;
-
-console.log(buf);
- // Prints: <Buffer 88 13 a0 0f>
-
-// changing the TypedArray changes the Buffer also
-arr[1] = 6000;
-
-console.log(buf);
- // Prints: <Buffer 88 13 70 17>
-```
-
-The optional `byteOffset` and `length` arguments specify a memory range within
-the `arrayBuffer` that will be shared by the `Buffer`.
-
-```js
-const ab = new ArrayBuffer(10);
-const buf = Buffer.from(ab, 0, 2);
-console.log(buf.length);
- // Prints: 2
-```
-
-A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`.
-
-### Class Method: Buffer.from(buffer)
-<!-- YAML
-added: v3.0.0
--->
-
-* `buffer` {Buffer}
-
-Copies the passed `buffer` data onto a new `Buffer` instance.
-
-```js
-const buf1 = Buffer.from('buffer');
-const buf2 = Buffer.from(buf1);
-
-buf1[0] = 0x61;
-console.log(buf1.toString());
- // 'auffer'
-console.log(buf2.toString());
- // 'buffer' (copy is not changed)
-```
-
-A `TypeError` will be thrown if `buffer` is not a `Buffer`.
-
-### Class Method: Buffer.from(str[, encoding])
-<!-- YAML
-added: v5.10.0
--->
-
-* `str` {String} String to encode.
-* `encoding` {String} Encoding to use, Default: `'utf8'`
-
-Creates a new `Buffer` containing the given JavaScript string `str`. If
-provided, the `encoding` parameter identifies the character encoding.
-If not provided, `encoding` defaults to `'utf8'`.
-
-```js
-const buf1 = Buffer.from('this is a tést');
-console.log(buf1.toString());
- // prints: this is a tést
-console.log(buf1.toString('ascii'));
- // prints: this is a tC)st
-
-const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
-console.log(buf2.toString());
- // prints: this is a tést
-```
-
-A `TypeError` will be thrown if `str` is not a string.
-
-### Class Method: Buffer.alloc(size[, fill[, encoding]])
-<!-- YAML
-added: v5.10.0
--->
-
-* `size` {Number}
-* `fill` {Value} Default: `undefined`
-* `encoding` {String} Default: `utf8`
-
-Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the
-`Buffer` will be *zero-filled*.
-
-```js
-const buf = Buffer.alloc(5);
-console.log(buf);
- // <Buffer 00 00 00 00 00>
-```
-
-The `size` must be less than or equal to the value of
-`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
-`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will
-be created if a `size` less than or equal to 0 is specified.
-
-If `fill` is specified, the allocated `Buffer` will be initialized by calling
-`buf.fill(fill)`. See [`buf.fill()`][] for more information.
-
-```js
-const buf = Buffer.alloc(5, 'a');
-console.log(buf);
- // <Buffer 61 61 61 61 61>
-```
-
-If both `fill` and `encoding` are specified, the allocated `Buffer` will be
-initialized by calling `buf.fill(fill, encoding)`. For example:
-
-```js
-const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
-console.log(buf);
- // <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
-```
-
-Calling `Buffer.alloc(size)` can be significantly slower than the alternative
-`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance
-contents will *never contain sensitive data*.
-
-A `TypeError` will be thrown if `size` is not a number.
-
-### Class Method: Buffer.allocUnsafe(size)
-<!-- YAML
-added: v5.10.0
--->
-
-* `size` {Number}
-
-Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must
-be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit
-architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is
-thrown. A zero-length Buffer will be created if a `size` less than or equal to
-0 is specified.
-
-The underlying memory for `Buffer` instances created in this way is *not
-initialized*. The contents of the newly created `Buffer` are unknown and
-*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
-`Buffer` instances to zeroes.
-
-```js
-const buf = Buffer.allocUnsafe(5);
-console.log(buf);
- // <Buffer 78 e0 82 02 01>
- // (octets will be different, every time)
-buf.fill(0);
-console.log(buf);
- // <Buffer 00 00 00 00 00>
-```
-
-A `TypeError` will be thrown if `size` is not a number.
-
-Note that the `Buffer` module pre-allocates an internal `Buffer` instance of
-size `Buffer.poolSize` that is used as a pool for the fast allocation of new
-`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated
-`new Buffer(size)` constructor) only when `size` is less than or equal to
-`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default
-value of `Buffer.poolSize` is `8192` but can be modified.
-
-Use of this pre-allocated internal memory pool is a key difference between
-calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
-Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer
-pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal
-Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The
-difference is subtle but can be important when an application requires the
-additional performance that `Buffer.allocUnsafe(size)` provides.
-
-### Class Method: Buffer.allocUnsafeSlow(size)
-<!-- YAML
-added: v5.10.0
--->
-
-* `size` {Number}
-
-Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The
-`size` must be less than or equal to the value of
-`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
-`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will
-be created if a `size` less than or equal to 0 is specified.
-
-The underlying memory for `Buffer` instances created in this way is *not
-initialized*. The contents of the newly created `Buffer` are unknown and
-*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
-`Buffer` instances to zeroes.
-
-When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances,
-allocations under 4KB are, by default, sliced from a single pre-allocated
-`Buffer`. This allows applications to avoid the garbage collection overhead of
-creating many individually allocated Buffers. This approach improves both
-performance and memory usage by eliminating the need to track and cleanup as
-many `Persistent` objects.
-
-However, in the case where a developer may need to retain a small chunk of
-memory from a pool for an indeterminate amount of time, it may be appropriate
-to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then
-copy out the relevant bits.
-
-```js
-// need to keep around a few small chunks of memory
-const store = [];
-
-socket.on('readable', () => {
- const data = socket.read();
- // allocate for retained data
- const sb = Buffer.allocUnsafeSlow(10);
- // copy the data into the new allocation
- data.copy(sb, 0, 0, 10);
- store.push(sb);
-});
-```
-
-Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after*
-a developer has observed undue memory retention in their applications.
-
-A `TypeError` will be thrown if `size` is not a number.
-
-### All the Rest
-
-The rest of the `Buffer` API is exactly the same as in node.js.
-[See the docs](https://nodejs.org/api/buffer.html).
-
-
-## Related links
-
-- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660)
-- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4)
-
-## Why is `Buffer` unsafe?
-
-Today, the node.js `Buffer` constructor is overloaded to handle many different argument
-types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.),
-`ArrayBuffer`, and also `Number`.
-
-The API is optimized for convenience: you can throw any type at it, and it will try to do
-what you want.
-
-Because the Buffer constructor is so powerful, you often see code like this:
-
-```js
-// Convert UTF-8 strings to hex
-function toHex (str) {
- return new Buffer(str).toString('hex')
-}
-```
-
-***But what happens if `toHex` is called with a `Number` argument?***
-
-### Remote Memory Disclosure
-
-If an attacker can make your program call the `Buffer` constructor with a `Number`
-argument, then they can make it allocate uninitialized memory from the node.js process.
-This could potentially disclose TLS private keys, user data, or database passwords.
-
-When the `Buffer` constructor is passed a `Number` argument, it returns an
-**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like
-this, you **MUST** overwrite the contents before returning it to the user.
-
-From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size):
-
-> `new Buffer(size)`
->
-> - `size` Number
->
-> The underlying memory for `Buffer` instances created in this way is not initialized.
-> **The contents of a newly created `Buffer` are unknown and could contain sensitive
-> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes.
-
-(Emphasis our own.)
-
-Whenever the programmer intended to create an uninitialized `Buffer` you often see code
-like this:
-
-```js
-var buf = new Buffer(16)
-
-// Immediately overwrite the uninitialized buffer with data from another buffer
-for (var i = 0; i < buf.length; i++) {
- buf[i] = otherBuf[i]
-}
-```
-
-
-### Would this ever be a problem in real code?
-
-Yes. It's surprisingly common to forget to check the type of your variables in a
-dynamically-typed language like JavaScript.
-
-Usually the consequences of assuming the wrong type is that your program crashes with an
-uncaught exception. But the failure mode for forgetting to check the type of arguments to
-the `Buffer` constructor is more catastrophic.
-
-Here's an example of a vulnerable service that takes a JSON payload and converts it to
-hex:
-
-```js
-// Take a JSON payload {str: "some string"} and convert it to hex
-var server = http.createServer(function (req, res) {
- var data = ''
- req.setEncoding('utf8')
- req.on('data', function (chunk) {
- data += chunk
- })
- req.on('end', function () {
- var body = JSON.parse(data)
- res.end(new Buffer(body.str).toString('hex'))
- })
-})
-
-server.listen(8080)
-```
-
-In this example, an http client just has to send:
-
-```json
-{
- "str": 1000
-}
-```
-
-and it will get back 1,000 bytes of uninitialized memory from the server.
-
-This is a very serious bug. It's similar in severity to the
-[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process
-memory by remote attackers.
-
-
-### Which real-world packages were vulnerable?
-
-#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht)
-
-[Mathias Buus](https://github.com/mafintosh) and I
-([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages,
-[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow
-anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get
-them to reveal 20 bytes at a time of uninitialized memory from the node.js process.
-
-Here's
-[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8)
-that fixed it. We released a new fixed version, created a
-[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all
-vulnerable versions on npm so users will get a warning to upgrade to a newer version.
-
-#### [`ws`](https://www.npmjs.com/package/ws)
-
-That got us wondering if there were other vulnerable packages. Sure enough, within a short
-period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the
-most popular WebSocket implementation in node.js.
-
-If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as
-expected, then uninitialized server memory would be disclosed to the remote peer.
-
-These were the vulnerable methods:
-
-```js
-socket.send(number)
-socket.ping(number)
-socket.pong(number)
-```
-
-Here's a vulnerable socket server with some echo functionality:
-
-```js
-server.on('connection', function (socket) {
- socket.on('message', function (message) {
- message = JSON.parse(message)
- if (message.type === 'echo') {
- socket.send(message.data) // send back the user's message
- }
- })
-})
-```
-
-`socket.send(number)` called on the server, will disclose server memory.
-
-Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue
-was fixed, with a more detailed explanation. Props to
-[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the
-[Node Security Project disclosure](https://nodesecurity.io/advisories/67).
-
-
-### What's the solution?
-
-It's important that node.js offers a fast way to get memory otherwise performance-critical
-applications would needlessly get a lot slower.
-
-But we need a better way to *signal our intent* as programmers. **When we want
-uninitialized memory, we should request it explicitly.**
-
-Sensitive functionality should not be packed into a developer-friendly API that loosely
-accepts many different types. This type of API encourages the lazy practice of passing
-variables in without checking the type very carefully.
-
-#### A new API: `Buffer.allocUnsafe(number)`
-
-The functionality of creating buffers with uninitialized memory should be part of another
-API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that
-frequently gets user input of all sorts of different types passed into it.
-
-```js
-var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory!
-
-// Immediately overwrite the uninitialized buffer with data from another buffer
-for (var i = 0; i < buf.length; i++) {
- buf[i] = otherBuf[i]
-}
-```
-
-
-### How do we fix node.js core?
-
-We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as
-`semver-major`) which defends against one case:
-
-```js
-var str = 16
-new Buffer(str, 'utf8')
-```
-
-In this situation, it's implied that the programmer intended the first argument to be a
-string, since they passed an encoding as a second argument. Today, node.js will allocate
-uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not
-what the programmer intended.
-
-But this is only a partial solution, since if the programmer does `new Buffer(variable)`
-(without an `encoding` parameter) there's no way to know what they intended. If `variable`
-is sometimes a number, then uninitialized memory will sometimes be returned.
-
-### What's the real long-term fix?
-
-We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when
-we need uninitialized memory. But that would break 1000s of packages.
-
-~~We believe the best solution is to:~~
-
-~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~
-
-~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~
-
-#### Update
-
-We now support adding three new APIs:
-
-- `Buffer.from(value)` - convert from any type to a buffer
-- `Buffer.alloc(size)` - create a zero-filled buffer
-- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size
-
-This solves the core problem that affected `ws` and `bittorrent-dht` which is
-`Buffer(variable)` getting tricked into taking a number argument.
-
-This way, existing code continues working and the impact on the npm ecosystem will be
-minimal. Over time, npm maintainers can migrate performance-critical code to use
-`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`.
-
-
-### Conclusion
-
-We think there's a serious design issue with the `Buffer` API as it exists today. It
-promotes insecure software by putting high-risk functionality into a convenient API
-with friendly "developer ergonomics".
-
-This wasn't merely a theoretical exercise because we found the issue in some of the
-most popular npm packages.
-
-Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of
-`buffer`.
-
-```js
-var Buffer = require('safe-buffer').Buffer
-```
-
-Eventually, we hope that node.js core can switch to this new, safer behavior. We believe
-the impact on the ecosystem would be minimal since it's not a breaking change.
-Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while
-older, insecure packages would magically become safe from this attack vector.
-
-
-## links
-
-- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514)
-- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67)
-- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68)
-
-
-## credit
-
-The original issues in `bittorrent-dht`
-([disclosure](https://nodesecurity.io/advisories/68)) and
-`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by
-[Mathias Buus](https://github.com/mafintosh) and
-[Feross Aboukhadijeh](http://feross.org/).
-
-Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues
-and for his work running the [Node Security Project](https://nodesecurity.io/).
-
-Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and
-auditing the code.
-
-
-## license
-
-MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org)
diff --git a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/index.d.ts b/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/index.d.ts
deleted file mode 100644
index e9fed809a..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/index.d.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-declare module "safe-buffer" {
- export class Buffer {
- length: number
- write(string: string, offset?: number, length?: number, encoding?: string): number;
- toString(encoding?: string, start?: number, end?: number): string;
- toJSON(): { type: 'Buffer', data: any[] };
- equals(otherBuffer: Buffer): boolean;
- compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
- copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
- slice(start?: number, end?: number): Buffer;
- writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
- readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
- readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
- readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
- readUInt8(offset: number, noAssert?: boolean): number;
- readUInt16LE(offset: number, noAssert?: boolean): number;
- readUInt16BE(offset: number, noAssert?: boolean): number;
- readUInt32LE(offset: number, noAssert?: boolean): number;
- readUInt32BE(offset: number, noAssert?: boolean): number;
- readInt8(offset: number, noAssert?: boolean): number;
- readInt16LE(offset: number, noAssert?: boolean): number;
- readInt16BE(offset: number, noAssert?: boolean): number;
- readInt32LE(offset: number, noAssert?: boolean): number;
- readInt32BE(offset: number, noAssert?: boolean): number;
- readFloatLE(offset: number, noAssert?: boolean): number;
- readFloatBE(offset: number, noAssert?: boolean): number;
- readDoubleLE(offset: number, noAssert?: boolean): number;
- readDoubleBE(offset: number, noAssert?: boolean): number;
- swap16(): Buffer;
- swap32(): Buffer;
- swap64(): Buffer;
- writeUInt8(value: number, offset: number, noAssert?: boolean): number;
- writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;
- writeInt8(value: number, offset: number, noAssert?: boolean): number;
- writeInt16LE(value: number, offset: number, noAssert?: boolean): number;
- writeInt16BE(value: number, offset: number, noAssert?: boolean): number;
- writeInt32LE(value: number, offset: number, noAssert?: boolean): number;
- writeInt32BE(value: number, offset: number, noAssert?: boolean): number;
- writeFloatLE(value: number, offset: number, noAssert?: boolean): number;
- writeFloatBE(value: number, offset: number, noAssert?: boolean): number;
- writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;
- writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;
- fill(value: any, offset?: number, end?: number): this;
- indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
- lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
- includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;
-
- /**
- * Allocates a new buffer containing the given {str}.
- *
- * @param str String to store in buffer.
- * @param encoding encoding to use, optional. Default is 'utf8'
- */
- constructor (str: string, encoding?: string);
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- */
- constructor (size: number);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- */
- constructor (array: Uint8Array);
- /**
- * Produces a Buffer backed by the same allocated memory as
- * the given {ArrayBuffer}.
- *
- *
- * @param arrayBuffer The ArrayBuffer with which to share memory.
- */
- constructor (arrayBuffer: ArrayBuffer);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- */
- constructor (array: any[]);
- /**
- * Copies the passed {buffer} data onto a new {Buffer} instance.
- *
- * @param buffer The buffer to copy.
- */
- constructor (buffer: Buffer);
- prototype: Buffer;
- /**
- * Allocates a new Buffer using an {array} of octets.
- *
- * @param array
- */
- static from(array: any[]): Buffer;
- /**
- * When passed a reference to the .buffer property of a TypedArray instance,
- * the newly created Buffer will share the same allocated memory as the TypedArray.
- * The optional {byteOffset} and {length} arguments specify a memory range
- * within the {arrayBuffer} that will be shared by the Buffer.
- *
- * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()
- * @param byteOffset
- * @param length
- */
- static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
- /**
- * Copies the passed {buffer} data onto a new Buffer instance.
- *
- * @param buffer
- */
- static from(buffer: Buffer): Buffer;
- /**
- * Creates a new Buffer containing the given JavaScript string {str}.
- * If provided, the {encoding} parameter identifies the character encoding.
- * If not provided, {encoding} defaults to 'utf8'.
- *
- * @param str
- */
- static from(str: string, encoding?: string): Buffer;
- /**
- * Returns true if {obj} is a Buffer
- *
- * @param obj object to test.
- */
- static isBuffer(obj: any): obj is Buffer;
- /**
- * Returns true if {encoding} is a valid encoding argument.
- * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
- *
- * @param encoding string to test.
- */
- static isEncoding(encoding: string): boolean;
- /**
- * Gives the actual byte length of a string. encoding defaults to 'utf8'.
- * This is not the same as String.prototype.length since that returns the number of characters in a string.
- *
- * @param string string to test.
- * @param encoding encoding used to evaluate (defaults to 'utf8')
- */
- static byteLength(string: string, encoding?: string): number;
- /**
- * Returns a buffer which is the result of concatenating all the buffers in the list together.
- *
- * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
- * If the list has exactly one item, then the first item of the list is returned.
- * If the list has more than one item, then a new Buffer is created.
- *
- * @param list An array of Buffer objects to concatenate
- * @param totalLength Total length of the buffers when concatenated.
- * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
- */
- static concat(list: Buffer[], totalLength?: number): Buffer;
- /**
- * The same as buf1.compare(buf2).
- */
- static compare(buf1: Buffer, buf2: Buffer): number;
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- * @param fill if specified, buffer will be initialized by calling buf.fill(fill).
- * If parameter is omitted, buffer will be filled with zeros.
- * @param encoding encoding used for call to buf.fill while initalizing
- */
- static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;
- /**
- * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafe(size: number): Buffer;
- /**
- * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafeSlow(size: number): Buffer;
- }
-} \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/index.js b/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/index.js
deleted file mode 100644
index 22438dabb..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/* eslint-disable node/no-deprecated-api */
-var buffer = require('buffer')
-var Buffer = buffer.Buffer
-
-// alternative to using Object.keys for old browsers
-function copyProps (src, dst) {
- for (var key in src) {
- dst[key] = src[key]
- }
-}
-if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
- module.exports = buffer
-} else {
- // Copy properties from require('buffer')
- copyProps(buffer, exports)
- exports.Buffer = SafeBuffer
-}
-
-function SafeBuffer (arg, encodingOrOffset, length) {
- return Buffer(arg, encodingOrOffset, length)
-}
-
-// Copy static methods from Buffer
-copyProps(Buffer, SafeBuffer)
-
-SafeBuffer.from = function (arg, encodingOrOffset, length) {
- if (typeof arg === 'number') {
- throw new TypeError('Argument must not be a number')
- }
- return Buffer(arg, encodingOrOffset, length)
-}
-
-SafeBuffer.alloc = function (size, fill, encoding) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- var buf = Buffer(size)
- if (fill !== undefined) {
- if (typeof encoding === 'string') {
- buf.fill(fill, encoding)
- } else {
- buf.fill(fill)
- }
- } else {
- buf.fill(0)
- }
- return buf
-}
-
-SafeBuffer.allocUnsafe = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- return Buffer(size)
-}
-
-SafeBuffer.allocUnsafeSlow = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- return buffer.SlowBuffer(size)
-}
diff --git a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/package.json b/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/package.json
deleted file mode 100644
index 623fbc3f6..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/safe-buffer/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "safe-buffer",
- "description": "Safer Node.js Buffer API",
- "version": "5.1.2",
- "author": {
- "name": "Feross Aboukhadijeh",
- "email": "feross@feross.org",
- "url": "http://feross.org"
- },
- "bugs": {
- "url": "https://github.com/feross/safe-buffer/issues"
- },
- "devDependencies": {
- "standard": "*",
- "tape": "^4.0.0"
- },
- "homepage": "https://github.com/feross/safe-buffer",
- "keywords": [
- "buffer",
- "buffer allocate",
- "node security",
- "safe",
- "safe-buffer",
- "security",
- "uninitialized"
- ],
- "license": "MIT",
- "main": "index.js",
- "types": "index.d.ts",
- "repository": {
- "type": "git",
- "url": "git://github.com/feross/safe-buffer.git"
- },
- "scripts": {
- "test": "standard && tape test/*.js"
- }
-}
diff --git a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/.travis.yml b/node_modules/fs-write-stream-atomic/node_modules/string_decoder/.travis.yml
deleted file mode 100644
index 3347a7254..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/.travis.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-sudo: false
-language: node_js
-before_install:
- - npm install -g npm@2
- - test $NPM_LEGACY && npm install -g npm@latest-3 || npm install npm -g
-notifications:
- email: false
-matrix:
- fast_finish: true
- include:
- - node_js: '0.8'
- env:
- - TASK=test
- - NPM_LEGACY=true
- - node_js: '0.10'
- env:
- - TASK=test
- - NPM_LEGACY=true
- - node_js: '0.11'
- env:
- - TASK=test
- - NPM_LEGACY=true
- - node_js: '0.12'
- env:
- - TASK=test
- - NPM_LEGACY=true
- - node_js: 1
- env:
- - TASK=test
- - NPM_LEGACY=true
- - node_js: 2
- env:
- - TASK=test
- - NPM_LEGACY=true
- - node_js: 3
- env:
- - TASK=test
- - NPM_LEGACY=true
- - node_js: 4
- env: TASK=test
- - node_js: 5
- env: TASK=test
- - node_js: 6
- env: TASK=test
- - node_js: 7
- env: TASK=test
- - node_js: 8
- env: TASK=test
- - node_js: 9
- env: TASK=test
diff --git a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/LICENSE b/node_modules/fs-write-stream-atomic/node_modules/string_decoder/LICENSE
deleted file mode 100644
index 778edb207..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/LICENSE
+++ /dev/null
@@ -1,48 +0,0 @@
-Node.js is licensed for use as follows:
-
-"""
-Copyright Node.js contributors. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-"""
-
-This license applies to parts of Node.js originating from the
-https://github.com/joyent/node repository:
-
-"""
-Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-"""
-
diff --git a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/README.md b/node_modules/fs-write-stream-atomic/node_modules/string_decoder/README.md
deleted file mode 100644
index 5fd58315e..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# string_decoder
-
-***Node-core v8.9.4 string_decoder for userland***
-
-
-[![NPM](https://nodei.co/npm/string_decoder.png?downloads=true&downloadRank=true)](https://nodei.co/npm/string_decoder/)
-[![NPM](https://nodei.co/npm-dl/string_decoder.png?&months=6&height=3)](https://nodei.co/npm/string_decoder/)
-
-
-```bash
-npm install --save string_decoder
-```
-
-***Node-core string_decoder for userland***
-
-This package is a mirror of the string_decoder implementation in Node-core.
-
-Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.9.4/docs/api/).
-
-As of version 1.0.0 **string_decoder** uses semantic versioning.
-
-## Previous versions
-
-Previous version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10.
-
-## Update
-
-The *build/* directory contains a build script that will scrape the source from the [nodejs/node](https://github.com/nodejs/node) repo given a specific Node version.
-
-## Streams Working Group
-
-`string_decoder` is maintained by the Streams Working Group, which
-oversees the development and maintenance of the Streams API within
-Node.js. The responsibilities of the Streams Working Group include:
-
-* Addressing stream issues on the Node.js issue tracker.
-* Authoring and editing stream documentation within the Node.js project.
-* Reviewing changes to stream subclasses within the Node.js project.
-* Redirecting changes to streams from the Node.js project to this
- project.
-* Assisting in the implementation of stream providers within Node.js.
-* Recommending versions of `readable-stream` to be included in Node.js.
-* Messaging about the future of streams to give the community advance
- notice of changes.
-
-See [readable-stream](https://github.com/nodejs/readable-stream) for
-more details.
diff --git a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/lib/string_decoder.js b/node_modules/fs-write-stream-atomic/node_modules/string_decoder/lib/string_decoder.js
deleted file mode 100644
index 2e89e63f7..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/lib/string_decoder.js
+++ /dev/null
@@ -1,296 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-'use strict';
-
-/*<replacement>*/
-
-var Buffer = require('safe-buffer').Buffer;
-/*</replacement>*/
-
-var isEncoding = Buffer.isEncoding || function (encoding) {
- encoding = '' + encoding;
- switch (encoding && encoding.toLowerCase()) {
- case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
- return true;
- default:
- return false;
- }
-};
-
-function _normalizeEncoding(enc) {
- if (!enc) return 'utf8';
- var retried;
- while (true) {
- switch (enc) {
- case 'utf8':
- case 'utf-8':
- return 'utf8';
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return 'utf16le';
- case 'latin1':
- case 'binary':
- return 'latin1';
- case 'base64':
- case 'ascii':
- case 'hex':
- return enc;
- default:
- if (retried) return; // undefined
- enc = ('' + enc).toLowerCase();
- retried = true;
- }
- }
-};
-
-// Do not cache `Buffer.isEncoding` when checking encoding names as some
-// modules monkey-patch it to support additional encodings
-function normalizeEncoding(enc) {
- var nenc = _normalizeEncoding(enc);
- if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
- return nenc || enc;
-}
-
-// StringDecoder provides an interface for efficiently splitting a series of
-// buffers into a series of JS strings without breaking apart multi-byte
-// characters.
-exports.StringDecoder = StringDecoder;
-function StringDecoder(encoding) {
- this.encoding = normalizeEncoding(encoding);
- var nb;
- switch (this.encoding) {
- case 'utf16le':
- this.text = utf16Text;
- this.end = utf16End;
- nb = 4;
- break;
- case 'utf8':
- this.fillLast = utf8FillLast;
- nb = 4;
- break;
- case 'base64':
- this.text = base64Text;
- this.end = base64End;
- nb = 3;
- break;
- default:
- this.write = simpleWrite;
- this.end = simpleEnd;
- return;
- }
- this.lastNeed = 0;
- this.lastTotal = 0;
- this.lastChar = Buffer.allocUnsafe(nb);
-}
-
-StringDecoder.prototype.write = function (buf) {
- if (buf.length === 0) return '';
- var r;
- var i;
- if (this.lastNeed) {
- r = this.fillLast(buf);
- if (r === undefined) return '';
- i = this.lastNeed;
- this.lastNeed = 0;
- } else {
- i = 0;
- }
- if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
- return r || '';
-};
-
-StringDecoder.prototype.end = utf8End;
-
-// Returns only complete characters in a Buffer
-StringDecoder.prototype.text = utf8Text;
-
-// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
-StringDecoder.prototype.fillLast = function (buf) {
- if (this.lastNeed <= buf.length) {
- buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
- return this.lastChar.toString(this.encoding, 0, this.lastTotal);
- }
- buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
- this.lastNeed -= buf.length;
-};
-
-// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
-// continuation byte. If an invalid byte is detected, -2 is returned.
-function utf8CheckByte(byte) {
- if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
- return byte >> 6 === 0x02 ? -1 : -2;
-}
-
-// Checks at most 3 bytes at the end of a Buffer in order to detect an
-// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
-// needed to complete the UTF-8 character (if applicable) are returned.
-function utf8CheckIncomplete(self, buf, i) {
- var j = buf.length - 1;
- if (j < i) return 0;
- var nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) self.lastNeed = nb - 1;
- return nb;
- }
- if (--j < i || nb === -2) return 0;
- nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) self.lastNeed = nb - 2;
- return nb;
- }
- if (--j < i || nb === -2) return 0;
- nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) {
- if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
- }
- return nb;
- }
- return 0;
-}
-
-// Validates as many continuation bytes for a multi-byte UTF-8 character as
-// needed or are available. If we see a non-continuation byte where we expect
-// one, we "replace" the validated continuation bytes we've seen so far with
-// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
-// behavior. The continuation byte check is included three times in the case
-// where all of the continuation bytes for a character exist in the same buffer.
-// It is also done this way as a slight performance increase instead of using a
-// loop.
-function utf8CheckExtraBytes(self, buf, p) {
- if ((buf[0] & 0xC0) !== 0x80) {
- self.lastNeed = 0;
- return '\ufffd';
- }
- if (self.lastNeed > 1 && buf.length > 1) {
- if ((buf[1] & 0xC0) !== 0x80) {
- self.lastNeed = 1;
- return '\ufffd';
- }
- if (self.lastNeed > 2 && buf.length > 2) {
- if ((buf[2] & 0xC0) !== 0x80) {
- self.lastNeed = 2;
- return '\ufffd';
- }
- }
- }
-}
-
-// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
-function utf8FillLast(buf) {
- var p = this.lastTotal - this.lastNeed;
- var r = utf8CheckExtraBytes(this, buf, p);
- if (r !== undefined) return r;
- if (this.lastNeed <= buf.length) {
- buf.copy(this.lastChar, p, 0, this.lastNeed);
- return this.lastChar.toString(this.encoding, 0, this.lastTotal);
- }
- buf.copy(this.lastChar, p, 0, buf.length);
- this.lastNeed -= buf.length;
-}
-
-// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
-// partial character, the character's bytes are buffered until the required
-// number of bytes are available.
-function utf8Text(buf, i) {
- var total = utf8CheckIncomplete(this, buf, i);
- if (!this.lastNeed) return buf.toString('utf8', i);
- this.lastTotal = total;
- var end = buf.length - (total - this.lastNeed);
- buf.copy(this.lastChar, 0, end);
- return buf.toString('utf8', i, end);
-}
-
-// For UTF-8, a replacement character is added when ending on a partial
-// character.
-function utf8End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) return r + '\ufffd';
- return r;
-}
-
-// UTF-16LE typically needs two bytes per character, but even if we have an even
-// number of bytes available, we need to check if we end on a leading/high
-// surrogate. In that case, we need to wait for the next two bytes in order to
-// decode the last character properly.
-function utf16Text(buf, i) {
- if ((buf.length - i) % 2 === 0) {
- var r = buf.toString('utf16le', i);
- if (r) {
- var c = r.charCodeAt(r.length - 1);
- if (c >= 0xD800 && c <= 0xDBFF) {
- this.lastNeed = 2;
- this.lastTotal = 4;
- this.lastChar[0] = buf[buf.length - 2];
- this.lastChar[1] = buf[buf.length - 1];
- return r.slice(0, -1);
- }
- }
- return r;
- }
- this.lastNeed = 1;
- this.lastTotal = 2;
- this.lastChar[0] = buf[buf.length - 1];
- return buf.toString('utf16le', i, buf.length - 1);
-}
-
-// For UTF-16LE we do not explicitly append special replacement characters if we
-// end on a partial character, we simply let v8 handle that.
-function utf16End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) {
- var end = this.lastTotal - this.lastNeed;
- return r + this.lastChar.toString('utf16le', 0, end);
- }
- return r;
-}
-
-function base64Text(buf, i) {
- var n = (buf.length - i) % 3;
- if (n === 0) return buf.toString('base64', i);
- this.lastNeed = 3 - n;
- this.lastTotal = 3;
- if (n === 1) {
- this.lastChar[0] = buf[buf.length - 1];
- } else {
- this.lastChar[0] = buf[buf.length - 2];
- this.lastChar[1] = buf[buf.length - 1];
- }
- return buf.toString('base64', i, buf.length - n);
-}
-
-function base64End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
- return r;
-}
-
-// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
-function simpleWrite(buf) {
- return buf.toString(this.encoding);
-}
-
-function simpleEnd(buf) {
- return buf && buf.length ? this.write(buf) : '';
-} \ No newline at end of file
diff --git a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/package.json b/node_modules/fs-write-stream-atomic/node_modules/string_decoder/package.json
deleted file mode 100644
index 518c3eb9f..000000000
--- a/node_modules/fs-write-stream-atomic/node_modules/string_decoder/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "string_decoder",
- "version": "1.1.1",
- "description": "The string_decoder module from Node core",
- "main": "lib/string_decoder.js",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- },
- "devDependencies": {
- "babel-polyfill": "^6.23.0",
- "core-util-is": "^1.0.2",
- "inherits": "^2.0.3",
- "tap": "~0.4.8"
- },
- "scripts": {
- "test": "tap test/parallel/*.js && node test/verify-dependencies",
- "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/nodejs/string_decoder.git"
- },
- "homepage": "https://github.com/nodejs/string_decoder",
- "keywords": [
- "string",
- "decoder",
- "browser",
- "browserify"
- ],
- "license": "MIT"
-}
diff --git a/node_modules/fs-write-stream-atomic/package.json b/node_modules/fs-write-stream-atomic/package.json
deleted file mode 100644
index 5b3c0d11e..000000000
--- a/node_modules/fs-write-stream-atomic/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "fs-write-stream-atomic",
- "version": "1.0.10",
- "description": "Like `fs.createWriteStream(...)`, but atomic.",
- "main": "index.js",
- "directories": {
- "test": "test"
- },
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- },
- "devDependencies": {
- "rimraf": "^2.4.4",
- "standard": "^5.4.1",
- "tap": "^2.3.1"
- },
- "scripts": {
- "test": "standard && tap --coverage test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/npm/fs-write-stream-atomic"
- },
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/npm/fs-write-stream-atomic/issues"
- },
- "homepage": "https://github.com/npm/fs-write-stream-atomic"
-}
diff --git a/node_modules/fs-write-stream-atomic/test/basic.js b/node_modules/fs-write-stream-atomic/test/basic.js
deleted file mode 100644
index d0205e15f..000000000
--- a/node_modules/fs-write-stream-atomic/test/basic.js
+++ /dev/null
@@ -1,97 +0,0 @@
-var fs = require('graceful-fs')
-var test = require('tap').test
-var path = require('path')
-var writeStream = require('../index.js')
-
-var rename = fs.rename
-fs.rename = function (from, to, cb) {
- setTimeout(function () {
- rename(from, to, cb)
- }, 100)
-}
-
-test('basic', function (t) {
- // open 10 write streams to the same file.
- // then write to each of them, and to the target
- // and verify at the end that each of them does their thing
- var target = path.resolve(__dirname, 'test.txt')
- var n = 10
-
- // We run all of our assertions twice:
- // once for finish, once for close
- // There are 6 assertions, two fixed, plus 4 lines in the file.
- t.plan(n * 2 * 6)
-
- var streams = []
- for (var i = 0; i < n; i++) {
- var s = writeStream(target)
- s.on('finish', verifier('finish', i))
- s.on('close', verifier('close', i))
- streams.push(s)
- }
-
- function verifier (ev, num) {
- return function () {
- if (ev === 'close') {
- t.equal(this.__emittedFinish, true, num + '. closed only after finish')
- } else {
- this.__emittedFinish = true
- t.equal(ev, 'finish', num + '. finished')
- }
-
- // make sure that one of the atomic streams won.
- var res = fs.readFileSync(target, 'utf8')
- var lines = res.trim().split(/\n/)
- lines.forEach(function (line, lineno) {
- var first = lines[0].match(/\d+$/)[0]
- var cur = line.match(/\d+$/)[0]
- t.equal(cur, first, num + '. line ' + lineno + ' matches')
- })
-
- var resExpr = /^first write \d+\nsecond write \d+\nthird write \d+\nfinal write \d+\n$/
- t.similar(res, resExpr, num + '. content matches')
- }
- }
-
- // now write something to each stream.
- streams.forEach(function (stream, i) {
- stream.write('first write ' + i + '\n')
- })
-
- // wait a sec for those writes to go out.
- setTimeout(function () {
- // write something else to the target.
- fs.writeFileSync(target, 'brutality!\n')
-
- // write some more stuff.
- streams.forEach(function (stream, i) {
- stream.write('second write ' + i + '\n')
- })
-
- setTimeout(function () {
- // Oops! Deleted the file!
- fs.unlinkSync(target)
-
- // write some more stuff.
- streams.forEach(function (stream, i) {
- stream.write('third write ' + i + '\n')
- })
-
- setTimeout(function () {
- fs.writeFileSync(target, 'brutality TWO!\n')
- streams.forEach(function (stream, i) {
- stream.end('final write ' + i + '\n')
- })
- }, 50)
- }, 50)
- }, 50)
-})
-
-test('cleanup', function (t) {
- fs.readdirSync(__dirname).filter(function (f) {
- return f.match(/^test.txt/)
- }).forEach(function (file) {
- fs.unlinkSync(path.resolve(__dirname, file))
- })
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/chown.js b/node_modules/fs-write-stream-atomic/test/chown.js
deleted file mode 100644
index 1733cf27e..000000000
--- a/node_modules/fs-write-stream-atomic/test/chown.js
+++ /dev/null
@@ -1,44 +0,0 @@
-'use strict'
-var fs = require('graceful-fs')
-var path = require('path')
-var test = require('tap').test
-var rimraf = require('rimraf')
-var writeStream = require('../index.js')
-
-var target = path.resolve(__dirname, 'test-chown')
-
-test('chown works', function (t) {
- t.plan(1)
- var stream = writeStream(target, {chown: {uid: process.getuid(), gid: process.getgid()}})
- var hadError = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('close', function () {
- t.is(hadError, false, 'no errors before close')
- })
- stream.end()
-})
-
-test('chown fails', function (t) {
- t.plan(1)
- fs.chown = function (file, uid, gid, cb) {
- cb(new Error('TEST BREAK'))
- }
- var stream = writeStream(target, {chown: {uid: process.getuid(), gid: process.getgid()}})
- var hadError = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('close', function () {
- t.is(hadError, true, 'error before close')
- })
- stream.end()
-})
-
-test('cleanup', function (t) {
- rimraf.sync(target)
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/rename-eperm.js b/node_modules/fs-write-stream-atomic/test/rename-eperm.js
deleted file mode 100644
index b1be0f318..000000000
--- a/node_modules/fs-write-stream-atomic/test/rename-eperm.js
+++ /dev/null
@@ -1,154 +0,0 @@
-'use strict'
-var fs = require('graceful-fs')
-var path = require('path')
-var test = require('tap').test
-var rimraf = require('rimraf')
-var writeStream = require('../index.js')
-
-var target = path.resolve(__dirname, 'test-rename-eperm1')
-var target2 = path.resolve(__dirname, 'test-rename-eperm2')
-var target3 = path.resolve(__dirname, 'test-rename-eperm3')
-
-test('rename eperm none existing file', function (t) {
- t.plan(2)
-
- var _rename = fs.rename
- fs.existsSync = function (src) {
- return true
- }
- fs.rename = function (src, dest, cb) {
- // simulate a failure during rename where the file
- // is renamed successfully but the process encounters
- // an EPERM error and the target file does not exist
- _rename(src, dest, function (e) {
- var err = new Error('TEST BREAK')
- err.syscall = 'rename'
- err.code = 'EPERM'
- cb(err)
- })
- }
-
- var stream = writeStream(target, { isWin: true })
- var hadError = false
- var calledFinish = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('finish', function () {
- calledFinish = true
- })
- stream.on('close', function () {
- t.is(hadError, true, 'error was caught')
- t.is(calledFinish, false, 'finish was called before close')
- })
- stream.end()
-})
-
-// test existing file with diff. content
-test('rename eperm existing file different content', function (t) {
- t.plan(2)
-
- var _rename = fs.rename
- fs.existsSync = function (src) {
- return true
- }
- fs.rename = function (src, dest, cb) {
- // simulate a failure during rename where the file
- // is renamed successfully but the process encounters
- // an EPERM error and the target file that has another content than the
- // destination
- _rename(src, dest, function (e) {
- fs.writeFile(src, 'dest', function (writeErr) {
- if (writeErr) {
- return console.log('WRITEERR: ' + writeErr)
- }
-
- fs.writeFile(target2, 'target', function (writeErr) {
- if (writeErr) {
- return console.log('WRITEERR: ' + writeErr)
- }
-
- var err = new Error('TEST BREAK')
- err.syscall = 'rename'
- err.code = 'EPERM'
- cb(err)
- })
- })
- })
- }
-
- var stream = writeStream(target2, { isWin: true })
- var hadError = false
- var calledFinish = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('finish', function () {
- calledFinish = true
- })
- stream.on('close', function () {
- t.is(hadError, true, 'error was caught')
- t.is(calledFinish, false, 'finish was called before close')
- })
- stream.end()
-})
-
-// test existing file with the same content
-// test existing file with diff. content
-test('rename eperm existing file different content', function (t) {
- t.plan(2)
-
- var _rename = fs.rename
- fs.existsSync = function (src) {
- return true
- }
- fs.rename = function (src, dest, cb) {
- // simulate a failure during rename where the file
- // is renamed successfully but the process encounters
- // an EPERM error and the target file that has the same content than the
- // destination
- _rename(src, dest, function (e) {
- fs.writeFile(src, 'target2', function (writeErr) {
- if (writeErr) {
- return console.log('WRITEERR: ' + writeErr)
- }
-
- fs.writeFile(target3, 'target2', function (writeErr) {
- if (writeErr) {
- return console.log('WRITEERR: ' + writeErr)
- }
-
- var err = new Error('TEST BREAK')
- err.syscall = 'rename'
- err.code = 'EPERM'
- cb(err)
- })
- })
- })
- }
-
- var stream = writeStream(target3, { isWin: true })
- var hadError = false
- var calledFinish = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('finish', function () {
- calledFinish = true
- })
- stream.on('close', function () {
- t.is(hadError, false, 'error was caught')
- t.is(calledFinish, true, 'finish was called before close')
- })
- stream.end()
-})
-
-test('cleanup', function (t) {
- rimraf.sync(target)
- rimraf.sync(target2)
- rimraf.sync(target3)
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/rename-fail.js b/node_modules/fs-write-stream-atomic/test/rename-fail.js
deleted file mode 100644
index 7e27f0bfb..000000000
--- a/node_modules/fs-write-stream-atomic/test/rename-fail.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict'
-var fs = require('graceful-fs')
-var path = require('path')
-var test = require('tap').test
-var rimraf = require('rimraf')
-var writeStream = require('../index.js')
-
-var target = path.resolve(__dirname, 'test-rename')
-
-test('rename fails', function (t) {
- t.plan(1)
- fs.rename = function (src, dest, cb) {
- cb(new Error('TEST BREAK'))
- }
- var stream = writeStream(target)
- var hadError = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('close', function () {
- t.is(hadError, true, 'error before close')
- })
- stream.end()
-})
-
-test('cleanup', function (t) {
- rimraf.sync(target)
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/slow-close.js b/node_modules/fs-write-stream-atomic/test/slow-close.js
deleted file mode 100644
index 9840a6ef0..000000000
--- a/node_modules/fs-write-stream-atomic/test/slow-close.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict'
-var fs = require('graceful-fs')
-var path = require('path')
-var test = require('tap').test
-var rimraf = require('rimraf')
-var writeStream = require('../index.js')
-
-var target = path.resolve(__dirname, 'test-chown')
-
-test('slow close', function (t) {
- t.plan(2)
- // The goal here is to simulate the "file close" step happening so slowly
- // that the whole close/rename process could finish before the file is
- // actually closed (and thus buffers truely flushed to the OS). In
- // previous versions of this module, this would result in the module
- // emitting finish & close before the file was fully written and in
- // turn, could break other layers that tried to read the new file.
- var realEmit = fs.WriteStream.prototype.emit
- var reallyClosed = false
- fs.WriteStream.prototype.emit = function (event) {
- if (event !== 'close') return realEmit.apply(this, arguments)
- setTimeout(function () {
- reallyClosed = true
- realEmit.call(this, 'close')
- }.bind(this), 200)
- }
- var stream = writeStream(target)
- stream.on('finish', function () {
- t.is(reallyClosed, true, "didn't finish before target was closed")
- })
- stream.on('close', function () {
- t.is(reallyClosed, true, "didn't close before target was closed")
- })
- stream.end()
-})
-
-test('cleanup', function (t) {
- rimraf.sync(target)
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/toolong.js b/node_modules/fs-write-stream-atomic/test/toolong.js
deleted file mode 100644
index f146cc55b..000000000
--- a/node_modules/fs-write-stream-atomic/test/toolong.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var path = require('path')
-var test = require('tap').test
-var writeStream = require('../index.js')
-
-function repeat (times, string) {
- var output = ''
- for (var ii = 0; ii < times; ++ii) {
- output += string
- }
- return output
-}
-
-var target = path.resolve(__dirname, repeat(1000, 'test'))
-
-test('name too long', function (t) {
- t.plan(2)
- var stream = writeStream(target)
- var hadError = false
- stream.on('error', function (er) {
- if (!hadError) {
- t.is(er.code, 'ENAMETOOLONG', target.length + ' character name results in ENAMETOOLONG')
- hadError = true
- }
- })
- stream.on('close', function () {
- t.ok(hadError, 'got error before close')
- })
- stream.end()
-})
diff --git a/node_modules/iferr/LICENSE b/node_modules/iferr/LICENSE
deleted file mode 100644
index 19d5f4bce..000000000
--- a/node_modules/iferr/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Nadav Ivgi
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE. \ No newline at end of file
diff --git a/node_modules/iferr/README.md b/node_modules/iferr/README.md
deleted file mode 100644
index 7a24462a8..000000000
--- a/node_modules/iferr/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# iferr
-
-Higher-order functions for easier error handling.
-
-`if (err) return cb(err);` be gone!
-
-## Install
-```bash
-npm install iferr
-```
-
-## Use
-
-### JavaScript/ES6 example
-```js
-var iferr = require('iferr');
-
-function get_friends_count(id, cb) {
- User.load_user(id, iferr(cb, user =>
- user.load_friends(iferr(cb, friends =>
- cb(null, friends.length)
- ))
- ))
-}
-```
-
-### JavaScript/ES5 example
-```js
-var iferr = require('iferr');
-
-function get_friends_count(id, cb) {
- User.load_user(id, iferr(cb, function(user) {
- user.load_friends(iferr(cb, function(friends) {
- cb(null, friends.length)
- }))
- }))
-}
-```
-
-### CoffeeScript example
-```coffee
-iferr = require 'iferr'
-
-get_friends_count = (id, cb) ->
- User.load_user id, iferr cb, (user) ->
- user.load_friends iferr cb, (friends) ->
- cb null, friends.length
-```
-
-(TODO: document tiferr, throwerr and printerr)
-
-## License
-MIT
diff --git a/node_modules/iferr/iferr.js b/node_modules/iferr/iferr.js
deleted file mode 100644
index 028f0e24a..000000000
--- a/node_modules/iferr/iferr.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// Delegates to `succ` on sucecss or to `fail` on error
-// ex: Thing.load(123, iferr(cb, thing => ...))
-const iferr = (fail, succ) => (err, ...a) => err ? fail(err) : succ(...a)
-
-// Like iferr, but also catches errors thrown from `succ` and passes to `fail`
-const tiferr = (fail, succ) => iferr(fail, (...a) => {
- try { succ(...a) }
- catch (err) { fail(err) }
-})
-
-// Delegate to the success function on success, throws the error otherwise
-// ex: Thing.load(123, throwerr(thing => ...))
-const throwerr = iferr.bind(null, err => { throw err })
-
-// Prints errors when one is passed, or does nothing otherwise
-// ex: Thing.load(123, printerr)
-const printerr = iferr(err => console.error(err), () => {})
-
-module.exports = exports = iferr
-exports.iferr = iferr
-exports.tiferr = tiferr
-exports.throwerr = throwerr
-exports.printerr = printerr
diff --git a/node_modules/iferr/package.json b/node_modules/iferr/package.json
deleted file mode 100644
index 8e0952e13..000000000
--- a/node_modules/iferr/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "iferr",
- "version": "1.0.2",
- "description": "Higher-order functions for easier error handling",
- "main": "iferr.js",
- "files": [
- "iferr.js"
- ],
- "scripts": {
- "test": "mocha"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/shesek/iferr"
- },
- "keywords": [
- "error",
- "errors"
- ],
- "author": "Nadav Ivgi",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/shesek/iferr/issues"
- },
- "homepage": "https://github.com/shesek/iferr",
- "devDependencies": {
- "coffeescript": "^2.3.1",
- "mocha": "^4.0.1"
- }
-}
diff --git a/node_modules/invert-kv/index.js b/node_modules/invert-kv/index.js
deleted file mode 100644
index 61e219611..000000000
--- a/node_modules/invert-kv/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-module.exports = function (obj) {
- if (typeof obj !== 'object') {
- throw new TypeError('Expected an object');
- }
-
- var ret = {};
-
- for (var key in obj) {
- var val = obj[key];
- ret[val] = key;
- }
-
- return ret;
-};
diff --git a/node_modules/invert-kv/package.json b/node_modules/invert-kv/package.json
deleted file mode 100644
index 1e85d9b2f..000000000
--- a/node_modules/invert-kv/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "invert-kv",
- "version": "1.0.0",
- "description": "Invert the key/value of an object. Example: {foo: 'bar'} → {bar: 'foo'}",
- "license": "MIT",
- "repository": "sindresorhus/invert-kv",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "object",
- "obj",
- "key",
- "value",
- "val",
- "kv",
- "invert"
- ],
- "devDependencies": {
- "mocha": "*"
- }
-}
diff --git a/node_modules/invert-kv/readme.md b/node_modules/invert-kv/readme.md
deleted file mode 100644
index 039fc7cfa..000000000
--- a/node_modules/invert-kv/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# invert-kv [![Build Status](https://travis-ci.org/sindresorhus/invert-kv.svg?branch=master)](https://travis-ci.org/sindresorhus/invert-kv)
-
-> Invert the key/value of an object. Example: `{foo: 'bar'}` → `{bar: 'foo'}`
-
-
-## Install
-
-```sh
-$ npm install --save invert-kv
-```
-
-
-## Usage
-
-```js
-var invertKv = require('invert-kv');
-
-invertKv({foo: 'bar', unicorn: 'rainbow'});
-//=> {bar: 'foo', rainbow: 'unicorn'}
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/lazy-property/.npmignore b/node_modules/lazy-property/.npmignore
deleted file mode 100644
index 038e0242e..000000000
--- a/node_modules/lazy-property/.npmignore
+++ /dev/null
@@ -1,16 +0,0 @@
-lib-cov
-*.seed
-*.log
-*.csv
-*.dat
-*.out
-*.pid
-*.gz
-
-pids
-logs
-results
-
-npm-debug.log
-node_modules/*
-test/* \ No newline at end of file
diff --git a/node_modules/lazy-property/LICENSE b/node_modules/lazy-property/LICENSE
deleted file mode 100644
index 8ce206a84..000000000
--- a/node_modules/lazy-property/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2013 Mikola Lysenko
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/lazy-property/README.md b/node_modules/lazy-property/README.md
deleted file mode 100644
index d339c8f46..000000000
--- a/node_modules/lazy-property/README.md
+++ /dev/null
@@ -1,44 +0,0 @@
-lazy-property
-=============
-Adds a lazily initialized property to an object.
-
-## Example
-
-```javascript
-var addLazyProperty = require("lazy-property")
-
-var obj = {}
-
-addLazyProperty(obj, "foo", function() {
- console.log("initialized!")
- return "bar"
-})
-
-//Access the property
-console.log(obj.foo)
-console.log(obj.foo)
-
-//Prints out:
-//
-// initialized!
-// bar
-// bar
-//
-```
-
-## Install
-
- npm install lazy-property
-
-## API
-
-### `require("lazy-property")(obj, name, init[, enumerable])`
-Adds a lazily initialized property to the object.
-
-* `obj` is the object to add the property to
-* `name` is the name of the property
-* `init` is a function that computes the value of the property
-* `enumerable` if the property is enumerable (default `false`)
-
-## Credits
-(c) 2013 Mikola Lysenko. MIT License
diff --git a/node_modules/lazy-property/component.json b/node_modules/lazy-property/component.json
deleted file mode 100644
index 142938e49..000000000
--- a/node_modules/lazy-property/component.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "lazy-property",
- "version": "0.0.2",
- "description": "Lazily initialized properties for objects",
- "main": "lazyProperty.js",
- "scripts": ["lazyProperty.js"]
-}
diff --git a/node_modules/lazy-property/lazyProperty.js b/node_modules/lazy-property/lazyProperty.js
deleted file mode 100644
index 20e5fe191..000000000
--- a/node_modules/lazy-property/lazyProperty.js
+++ /dev/null
@@ -1,19 +0,0 @@
-"use strict"
-
-function addLazyProperty(object, name, initializer, enumerable) {
- Object.defineProperty(object, name, {
- get: function() {
- var v = initializer.call(this)
- Object.defineProperty(this, name, { value: v, enumerable: !!enumerable, writable: true })
- return v
- },
- set: function(v) {
- Object.defineProperty(this, name, { value: v, enumerable: !!enumerable, writable: true })
- return v
- },
- enumerable: !!enumerable,
- configurable: true
- })
-}
-
-module.exports = addLazyProperty
diff --git a/node_modules/lazy-property/package.json b/node_modules/lazy-property/package.json
deleted file mode 100644
index 21789c4df..000000000
--- a/node_modules/lazy-property/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "lazy-property",
- "version": "1.0.0",
- "description": "Lazily initialized properties for objects",
- "main": "lazyProperty.js",
- "directories": {
- "test": "test"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "^2.12.3"
- },
- "scripts": {
- "test": "tape test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/mikolalysenko/lazy-property.git"
- },
- "keywords": [
- "lazy",
- "property",
- "object",
- "initialize",
- "array",
- "dictionary"
- ],
- "author": "Mikola Lysenko",
- "license": "MIT",
- "readmeFilename": "README.md",
- "gitHead": "850a27f710ec72f05b534805c31f095ff590f1ea",
- "bugs": {
- "url": "https://github.com/mikolalysenko/lazy-property/issues"
- }
-}
diff --git a/node_modules/lcid/index.js b/node_modules/lcid/index.js
deleted file mode 100644
index 69bd3d231..000000000
--- a/node_modules/lcid/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-var invertKv = require('invert-kv');
-var all = require('./lcid.json');
-var inverted = invertKv(all);
-
-exports.from = function (lcidCode) {
- if (typeof lcidCode !== 'number') {
- throw new TypeError('Expected a number');
- }
-
- return inverted[lcidCode];
-};
-
-exports.to = function (localeId) {
- if (typeof localeId !== 'string') {
- throw new TypeError('Expected a string');
- }
-
- return all[localeId];
-};
-
-exports.all = all;
diff --git a/node_modules/lcid/lcid.json b/node_modules/lcid/lcid.json
deleted file mode 100644
index 9c89f6a49..000000000
--- a/node_modules/lcid/lcid.json
+++ /dev/null
@@ -1,203 +0,0 @@
-{
- "af_ZA": 1078,
- "am_ET": 1118,
- "ar_AE": 14337,
- "ar_BH": 15361,
- "ar_DZ": 5121,
- "ar_EG": 3073,
- "ar_IQ": 2049,
- "ar_JO": 11265,
- "ar_KW": 13313,
- "ar_LB": 12289,
- "ar_LY": 4097,
- "ar_MA": 6145,
- "ar_OM": 8193,
- "ar_QA": 16385,
- "ar_SA": 1025,
- "ar_SY": 10241,
- "ar_TN": 7169,
- "ar_YE": 9217,
- "arn_CL": 1146,
- "as_IN": 1101,
- "az_AZ": 2092,
- "ba_RU": 1133,
- "be_BY": 1059,
- "bg_BG": 1026,
- "bn_IN": 1093,
- "bo_BT": 2129,
- "bo_CN": 1105,
- "br_FR": 1150,
- "bs_BA": 8218,
- "ca_ES": 1027,
- "co_FR": 1155,
- "cs_CZ": 1029,
- "cy_GB": 1106,
- "da_DK": 1030,
- "de_AT": 3079,
- "de_CH": 2055,
- "de_DE": 1031,
- "de_LI": 5127,
- "de_LU": 4103,
- "div_MV": 1125,
- "dsb_DE": 2094,
- "el_GR": 1032,
- "en_AU": 3081,
- "en_BZ": 10249,
- "en_CA": 4105,
- "en_CB": 9225,
- "en_GB": 2057,
- "en_IE": 6153,
- "en_IN": 18441,
- "en_JA": 8201,
- "en_MY": 17417,
- "en_NZ": 5129,
- "en_PH": 13321,
- "en_TT": 11273,
- "en_US": 1033,
- "en_ZA": 7177,
- "en_ZW": 12297,
- "es_AR": 11274,
- "es_BO": 16394,
- "es_CL": 13322,
- "es_CO": 9226,
- "es_CR": 5130,
- "es_DO": 7178,
- "es_EC": 12298,
- "es_ES": 3082,
- "es_GT": 4106,
- "es_HN": 18442,
- "es_MX": 2058,
- "es_NI": 19466,
- "es_PA": 6154,
- "es_PE": 10250,
- "es_PR": 20490,
- "es_PY": 15370,
- "es_SV": 17418,
- "es_UR": 14346,
- "es_US": 21514,
- "es_VE": 8202,
- "et_EE": 1061,
- "eu_ES": 1069,
- "fa_IR": 1065,
- "fi_FI": 1035,
- "fil_PH": 1124,
- "fo_FO": 1080,
- "fr_BE": 2060,
- "fr_CA": 3084,
- "fr_CH": 4108,
- "fr_FR": 1036,
- "fr_LU": 5132,
- "fr_MC": 6156,
- "fy_NL": 1122,
- "ga_IE": 2108,
- "gbz_AF": 1164,
- "gl_ES": 1110,
- "gsw_FR": 1156,
- "gu_IN": 1095,
- "ha_NG": 1128,
- "he_IL": 1037,
- "hi_IN": 1081,
- "hr_BA": 4122,
- "hr_HR": 1050,
- "hu_HU": 1038,
- "hy_AM": 1067,
- "id_ID": 1057,
- "ii_CN": 1144,
- "is_IS": 1039,
- "it_CH": 2064,
- "it_IT": 1040,
- "iu_CA": 2141,
- "ja_JP": 1041,
- "ka_GE": 1079,
- "kh_KH": 1107,
- "kk_KZ": 1087,
- "kl_GL": 1135,
- "kn_IN": 1099,
- "ko_KR": 1042,
- "kok_IN": 1111,
- "ky_KG": 1088,
- "lb_LU": 1134,
- "lo_LA": 1108,
- "lt_LT": 1063,
- "lv_LV": 1062,
- "mi_NZ": 1153,
- "mk_MK": 1071,
- "ml_IN": 1100,
- "mn_CN": 2128,
- "mn_MN": 1104,
- "moh_CA": 1148,
- "mr_IN": 1102,
- "ms_BN": 2110,
- "ms_MY": 1086,
- "mt_MT": 1082,
- "my_MM": 1109,
- "nb_NO": 1044,
- "ne_NP": 1121,
- "nl_BE": 2067,
- "nl_NL": 1043,
- "nn_NO": 2068,
- "ns_ZA": 1132,
- "oc_FR": 1154,
- "or_IN": 1096,
- "pa_IN": 1094,
- "pl_PL": 1045,
- "ps_AF": 1123,
- "pt_BR": 1046,
- "pt_PT": 2070,
- "qut_GT": 1158,
- "quz_BO": 1131,
- "quz_EC": 2155,
- "quz_PE": 3179,
- "rm_CH": 1047,
- "ro_RO": 1048,
- "ru_RU": 1049,
- "rw_RW": 1159,
- "sa_IN": 1103,
- "sah_RU": 1157,
- "se_FI": 3131,
- "se_NO": 1083,
- "se_SE": 2107,
- "si_LK": 1115,
- "sk_SK": 1051,
- "sl_SI": 1060,
- "sma_NO": 6203,
- "sma_SE": 7227,
- "smj_NO": 4155,
- "smj_SE": 5179,
- "smn_FI": 9275,
- "sms_FI": 8251,
- "sq_AL": 1052,
- "sr_BA": 7194,
- "sr_SP": 3098,
- "sv_FI": 2077,
- "sv_SE": 1053,
- "sw_KE": 1089,
- "syr_SY": 1114,
- "ta_IN": 1097,
- "te_IN": 1098,
- "tg_TJ": 1064,
- "th_TH": 1054,
- "tk_TM": 1090,
- "tmz_DZ": 2143,
- "tn_ZA": 1074,
- "tr_TR": 1055,
- "tt_RU": 1092,
- "ug_CN": 1152,
- "uk_UA": 1058,
- "ur_IN": 2080,
- "ur_PK": 1056,
- "uz_UZ": 2115,
- "vi_VN": 1066,
- "wen_DE": 1070,
- "wo_SN": 1160,
- "xh_ZA": 1076,
- "yo_NG": 1130,
- "zh_CHS": 4,
- "zh_CHT": 31748,
- "zh_CN": 2052,
- "zh_HK": 3076,
- "zh_MO": 5124,
- "zh_SG": 4100,
- "zh_TW": 1028,
- "zu_ZA": 1077
-}
diff --git a/node_modules/lcid/license b/node_modules/lcid/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/lcid/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/lcid/package.json b/node_modules/lcid/package.json
deleted file mode 100644
index 034096390..000000000
--- a/node_modules/lcid/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "lcid",
- "version": "1.0.0",
- "description": "Mapping between standard locale identifiers and Windows locale identifiers (LCID)",
- "license": "MIT",
- "repository": "sindresorhus/lcid",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "node test.js"
- },
- "files": [
- "index.js",
- "lcid.json"
- ],
- "keywords": [
- "lcid",
- "locale",
- "string",
- "str",
- "id",
- "identifier",
- "windows",
- "language",
- "lang",
- "map",
- "mapping",
- "convert",
- "json",
- "bcp47",
- "ietf",
- "tag"
- ],
- "dependencies": {
- "invert-kv": "^1.0.0"
- },
- "devDependencies": {
- "ava": "0.0.4"
- }
-}
diff --git a/node_modules/lcid/readme.md b/node_modules/lcid/readme.md
deleted file mode 100644
index bee4a7016..000000000
--- a/node_modules/lcid/readme.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# lcid [![Build Status](https://travis-ci.org/sindresorhus/lcid.svg?branch=master)](https://travis-ci.org/sindresorhus/lcid)
-
-> Mapping between [standard locale identifiers](http://en.wikipedia.org/wiki/Locale) and [Windows locale identifiers (LCID)](http://en.wikipedia.org/wiki/Locale#Specifics_for_Microsoft_platforms)
-
-Based on the [mapping](https://github.com/python/cpython/blob/be2a1a76fa43bb1ea1b3577bb5bdd506a2e90e37/Lib/locale.py#L1395-L1604) used in the Python standard library.
-
-The mapping itself is just a [JSON file](lcid.json) and can be used wherever.
-
-
-## Install
-
-```
-$ npm install --save lcid
-```
-
-
-## Usage
-
-```js
-var lcid = require('lcid');
-
-lcid.from(1044);
-//=> 'nb_NO'
-
-lcid.to('nb_NO');
-//=> 1044
-
-lcid.all;
-//=> {'af_ZA': 1078, ...}
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/lock-verify/LICENSE b/node_modules/lock-verify/LICENSE
deleted file mode 100644
index 83e7c4c62..000000000
--- a/node_modules/lock-verify/LICENSE
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright (c) 2017, Rebecca Turner <me@re-becca.org>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
diff --git a/node_modules/lock-verify/README.md b/node_modules/lock-verify/README.md
deleted file mode 100644
index 0d7a6eae8..000000000
--- a/node_modules/lock-verify/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Note: pending imminent deprecation
-
-**This module will be deprecated once npm v7 is released. Please do not rely
-on it more than absolutely necessary (ie, only if you are depending on
-it for use with npm v6 internal dependencies).**
-
-----
-
-# lock-verify
-
-Report if your package.json is out of sync with your package-lock.json.
-
-## USAGE
-
-```
-const lockVerify = require('lock-verify')
-lockVerify(moduleDir).then(result => {
- result.warnings.forEach(w => console.error('Warning:', w))
- if (!result.status) {
- result.errors.forEach(e => console.error(e))
- process.exit(1)
- }
-})
-```
-
-As a library it's a function that takes the path to a module and returns a
-promise that resolves to an object with `.status`, `.warnings` and `.errors`
-properties. The first will be true if everything was ok (though warnings
-may exist). If there's no `package.json` or no lockfile in `moduleDir` or they're
-unreadable then the promise will be rejected.
diff --git a/node_modules/lock-verify/cli.js b/node_modules/lock-verify/cli.js
deleted file mode 100755
index 2cc5e16ab..000000000
--- a/node_modules/lock-verify/cli.js
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env node
-'use strict'
-require('@iarna/cli')(main)
- .usage('lock-verify [projectPath]')
- .help()
-
-const lockVerify = require('./index.js')
-
-function main (opts, check) {
- return lockVerify(check).then(result => {
- result.warnings.forEach(w => console.error('Warning:', w))
- if (!result.status) {
- result.errors.forEach(e => console.error(e))
- throw 1
- }
- })
-}
diff --git a/node_modules/lock-verify/index.js b/node_modules/lock-verify/index.js
deleted file mode 100644
index cf673888f..000000000
--- a/node_modules/lock-verify/index.js
+++ /dev/null
@@ -1,81 +0,0 @@
-'use strict'
-module.exports = lockVerify
-
-const fs = require('fs')
-const path = require('path')
-const npa = require('npm-package-arg')
-const semver = require('semver')
-
-function lockVerify(check) {
- if (!check) check = '.'
-
- const pjson = readJson(`${check}/package.json`)
- let plock = readJson(`${check}/npm-shrinkwrap.json`)
- .catch(() => readJson(`${check}/package-lock.json`))
-
- return Promise.all([pjson, plock]).then(result => {
- const pjson = result[0]
- const plock = result[1]
- let warnings = []
- let errors = []
- for (let type of [['dependencies'], ['devDependencies'], ['optionalDependencies', true]]) {
- const deps = pjson[type[0]]
- if (!deps) continue
- const isOptional = type[1]
- Object.keys(deps).forEach(name => {
- const spec = npa.resolve(name, deps[name])
- const lock = plock.dependencies[name]
- if (!lock) {
- if (isOptional) {
- warnings.push('Optional missing: ' + name + '@' + deps[name])
- } else {
- errors.push('Missing: ' + name + '@' + deps[name])
- }
- return
- }
- if (spec.registry) {
- // Can't match tags to package-lock w/o network
- if (spec.type === 'tag') return
- if (spec.type === 'alias') {
- const lockSpec = npa.resolve(name, lock.version)
- if (!semver.satisfies(lockSpec.subSpec.fetchSpec, spec.subSpec.fetchSpec)) {
- errors.push("Invalid: lock file's " + name + '@' + lock.version + ' does not satisfy ' + name + '@' + spec.rawSpec)
- return
- }
- } else {
- if (!semver.satisfies(lock.version, spec.fetchSpec)) {
- errors.push("Invalid: lock file's " + name + '@' + lock.version + ' does not satisfy ' + name + '@' + spec.fetchSpec)
- return
- }
- }
- } else if (spec.type === 'git') {
- // can't verify git w/o network
- return
- } else if (spec.type === 'remote') {
- if (lock.version !== spec.fetchSpec) {
- errors.push("Invalid: lock file's " + name + '@' + lock.version + ' does not satisfy ' + name + '@' + spec.fetchSpec)
- return
- }
- } else if (spec.type === 'file' || spec.type === 'directory') {
- const lockSpec = npa.resolve(name, lock.version)
- if (spec.fetchSpec !== lockSpec.fetchSpec) {
- errors.push("Invalid: lock file's " + name + '@' + lock.version + ' does not satisfy ' + name + '@' + deps[name])
- return
- }
- } else {
- console.log(spec)
- }
- })
- }
- return Promise.resolve({status: errors.length === 0, warnings: warnings, errors: errors})
- })
-}
-
-function readJson (file) {
- return new Promise((resolve, reject) => {
- fs.readFile(file, (err, content) => {
- if (err) return reject(err)
- return resolve(JSON.parse(content))
- })
- })
-}
diff --git a/node_modules/lock-verify/node_modules/.bin/semver b/node_modules/lock-verify/node_modules/.bin/semver
deleted file mode 120000
index 317eb293d..000000000
--- a/node_modules/lock-verify/node_modules/.bin/semver
+++ /dev/null
@@ -1 +0,0 @@
-../semver/bin/semver \ No newline at end of file
diff --git a/node_modules/lock-verify/node_modules/hosted-git-info/CHANGELOG.md b/node_modules/lock-verify/node_modules/hosted-git-info/CHANGELOG.md
deleted file mode 100644
index 4f86601e0..000000000
--- a/node_modules/lock-verify/node_modules/hosted-git-info/CHANGELOG.md
+++ /dev/null
@@ -1,141 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="2.8.8"></a>
-## [2.8.8](https://github.com/npm/hosted-git-info/compare/v2.8.7...v2.8.8) (2020-02-29)
-
-
-### Bug Fixes
-
-* [#61](https://github.com/npm/hosted-git-info/issues/61) & [#65](https://github.com/npm/hosted-git-info/issues/65) addressing issues w/ url.URL implmentation which regressed node 6 support ([5038b18](https://github.com/npm/hosted-git-info/commit/5038b18)), closes [#66](https://github.com/npm/hosted-git-info/issues/66)
-
-
-
-<a name="2.8.7"></a>
-## [2.8.7](https://github.com/npm/hosted-git-info/compare/v2.8.6...v2.8.7) (2020-02-26)
-
-
-### Bug Fixes
-
-* Do not attempt to use url.URL when unavailable ([2d0bb66](https://github.com/npm/hosted-git-info/commit/2d0bb66)), closes [#61](https://github.com/npm/hosted-git-info/issues/61) [#62](https://github.com/npm/hosted-git-info/issues/62)
-* Do not pass scp-style URLs to the WhatWG url.URL ([f2cdfcf](https://github.com/npm/hosted-git-info/commit/f2cdfcf)), closes [#60](https://github.com/npm/hosted-git-info/issues/60)
-
-
-
-<a name="2.8.6"></a>
-## [2.8.6](https://github.com/npm/hosted-git-info/compare/v2.8.5...v2.8.6) (2020-02-25)
-
-
-
-<a name="2.8.5"></a>
-## [2.8.5](https://github.com/npm/hosted-git-info/compare/v2.8.4...v2.8.5) (2019-10-07)
-
-
-### Bug Fixes
-
-* updated pathmatch for gitlab ([e8325b5](https://github.com/npm/hosted-git-info/commit/e8325b5)), closes [#51](https://github.com/npm/hosted-git-info/issues/51)
-* updated pathmatch for gitlab ([ffe056f](https://github.com/npm/hosted-git-info/commit/ffe056f))
-
-
-
-<a name="2.8.4"></a>
-## [2.8.4](https://github.com/npm/hosted-git-info/compare/v2.8.3...v2.8.4) (2019-08-12)
-
-
-
-<a name="2.8.3"></a>
-## [2.8.3](https://github.com/npm/hosted-git-info/compare/v2.8.2...v2.8.3) (2019-08-12)
-
-
-
-<a name="2.8.2"></a>
-## [2.8.2](https://github.com/npm/hosted-git-info/compare/v2.8.1...v2.8.2) (2019-08-05)
-
-
-### Bug Fixes
-
-* http protocol use sshurl by default ([3b1d629](https://github.com/npm/hosted-git-info/commit/3b1d629)), closes [#48](https://github.com/npm/hosted-git-info/issues/48)
-
-
-
-<a name="2.8.1"></a>
-## [2.8.1](https://github.com/npm/hosted-git-info/compare/v2.8.0...v2.8.1) (2019-08-05)
-
-
-### Bug Fixes
-
-* ignore noCommittish on tarball url generation ([5d4a8d7](https://github.com/npm/hosted-git-info/commit/5d4a8d7))
-* use gist tarball url that works for anonymous gists ([1692435](https://github.com/npm/hosted-git-info/commit/1692435))
-
-
-
-<a name="2.8.0"></a>
-# [2.8.0](https://github.com/npm/hosted-git-info/compare/v2.7.1...v2.8.0) (2019-08-05)
-
-
-### Bug Fixes
-
-* Allow slashes in gitlab project section ([bbcf7b2](https://github.com/npm/hosted-git-info/commit/bbcf7b2)), closes [#46](https://github.com/npm/hosted-git-info/issues/46) [#43](https://github.com/npm/hosted-git-info/issues/43)
-* **git-host:** disallow URI-encoded slash (%2F) in `path` ([3776fa5](https://github.com/npm/hosted-git-info/commit/3776fa5)), closes [#44](https://github.com/npm/hosted-git-info/issues/44)
-* **gitlab:** Do not URL encode slashes in project name for GitLab https URL ([cbf04f9](https://github.com/npm/hosted-git-info/commit/cbf04f9)), closes [#47](https://github.com/npm/hosted-git-info/issues/47)
-* do not allow invalid gist urls ([d5cf830](https://github.com/npm/hosted-git-info/commit/d5cf830))
-* **cache:** Switch to lru-cache to save ourselves from unlimited memory consumption ([e518222](https://github.com/npm/hosted-git-info/commit/e518222)), closes [#38](https://github.com/npm/hosted-git-info/issues/38)
-
-
-### Features
-
-* give these objects a name ([60abaea](https://github.com/npm/hosted-git-info/commit/60abaea))
-
-
-
-<a name="2.7.1"></a>
-## [2.7.1](https://github.com/npm/hosted-git-info/compare/v2.7.0...v2.7.1) (2018-07-07)
-
-
-### Bug Fixes
-
-* **index:** Guard against non-string types ([5bc580d](https://github.com/npm/hosted-git-info/commit/5bc580d))
-* **parse:** Crash on strings that parse to having no host ([c931482](https://github.com/npm/hosted-git-info/commit/c931482)), closes [#35](https://github.com/npm/hosted-git-info/issues/35)
-
-
-
-<a name="2.7.0"></a>
-# [2.7.0](https://github.com/npm/hosted-git-info/compare/v2.6.1...v2.7.0) (2018-07-06)
-
-
-### Bug Fixes
-
-* **github tarball:** update github tarballtemplate ([6efd582](https://github.com/npm/hosted-git-info/commit/6efd582)), closes [#34](https://github.com/npm/hosted-git-info/issues/34)
-* **gitlab docs:** switched to lowercase anchors for readmes ([701bcd1](https://github.com/npm/hosted-git-info/commit/701bcd1))
-
-
-### Features
-
-* **all:** Support www. prefixes on hostnames ([3349575](https://github.com/npm/hosted-git-info/commit/3349575)), closes [#32](https://github.com/npm/hosted-git-info/issues/32)
-
-
-
-<a name="2.6.1"></a>
-## [2.6.1](https://github.com/npm/hosted-git-info/compare/v2.6.0...v2.6.1) (2018-06-25)
-
-### Bug Fixes
-
-* **Revert:** "compat: remove Object.assign fallback ([#25](https://github.com/npm/hosted-git-info/issues/25))" ([cce5a62](https://github.com/npm/hosted-git-info/commit/cce5a62))
-* **Revert:** "git-host: fix forgotten extend()" ([a815ec9](https://github.com/npm/hosted-git-info/commit/a815ec9))
-
-
-
-<a name="2.6.0"></a>
-# [2.6.0](https://github.com/npm/hosted-git-info/compare/v2.5.0...v2.6.0) (2018-03-07)
-
-
-### Bug Fixes
-
-* **compat:** remove Object.assign fallback ([#25](https://github.com/npm/hosted-git-info/issues/25)) ([627ab55](https://github.com/npm/hosted-git-info/commit/627ab55))
-* **git-host:** fix forgotten extend() ([eba1f7b](https://github.com/npm/hosted-git-info/commit/eba1f7b))
-
-
-### Features
-
-* **browse:** fragment support for browse() ([#28](https://github.com/npm/hosted-git-info/issues/28)) ([cd5e5bb](https://github.com/npm/hosted-git-info/commit/cd5e5bb))
diff --git a/node_modules/lock-verify/node_modules/hosted-git-info/LICENSE b/node_modules/lock-verify/node_modules/hosted-git-info/LICENSE
deleted file mode 100644
index 45055763d..000000000
--- a/node_modules/lock-verify/node_modules/hosted-git-info/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (c) 2015, Rebecca Turner
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/lock-verify/node_modules/hosted-git-info/README.md b/node_modules/lock-verify/node_modules/hosted-git-info/README.md
deleted file mode 100644
index 7b723f6b9..000000000
--- a/node_modules/lock-verify/node_modules/hosted-git-info/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# hosted-git-info
-
-This will let you identify and transform various git hosts URLs between
-protocols. It also can tell you what the URL is for the raw path for
-particular file for direct access without git.
-
-## Example
-
-```javascript
-var hostedGitInfo = require("hosted-git-info")
-var info = hostedGitInfo.fromUrl("git@github.com:npm/hosted-git-info.git", opts)
-/* info looks like:
-{
- type: "github",
- domain: "github.com",
- user: "npm",
- project: "hosted-git-info"
-}
-*/
-```
-
-If the URL can't be matched with a git host, `null` will be returned. We
-can match git, ssh and https urls. Additionally, we can match ssh connect
-strings (`git@github.com:npm/hosted-git-info`) and shortcuts (eg,
-`github:npm/hosted-git-info`). Github specifically, is detected in the case
-of a third, unprefixed, form: `npm/hosted-git-info`.
-
-If it does match, the returned object has properties of:
-
-* info.type -- The short name of the service
-* info.domain -- The domain for git protocol use
-* info.user -- The name of the user/org on the git host
-* info.project -- The name of the project on the git host
-
-## Version Contract
-
-The major version will be bumped any time…
-
-* The constructor stops accepting URLs that it previously accepted.
-* A method is removed.
-* A method can no longer accept the number and type of arguments it previously accepted.
-* A method can return a different type than it currently returns.
-
-Implications:
-
-* I do not consider the specific format of the urls returned from, say
- `.https()` to be a part of the contract. The contract is that it will
- return a string that can be used to fetch the repo via HTTPS. But what
- that string looks like, specifically, can change.
-* Dropping support for a hosted git provider would constitute a breaking
- change.
-
-## Usage
-
-### var info = hostedGitInfo.fromUrl(gitSpecifier[, options])
-
-* *gitSpecifer* is a URL of a git repository or a SCP-style specifier of one.
-* *options* is an optional object. It can have the following properties:
- * *noCommittish* — If true then committishes won't be included in generated URLs.
- * *noGitPlus* — If true then `git+` won't be prefixed on URLs.
-
-## Methods
-
-All of the methods take the same options as the `fromUrl` factory. Options
-provided to a method override those provided to the constructor.
-
-* info.file(path, opts)
-
-Given the path of a file relative to the repository, returns a URL for
-directly fetching it from the githost. If no committish was set then
-`master` will be used as the default.
-
-For example `hostedGitInfo.fromUrl("git@github.com:npm/hosted-git-info.git#v1.0.0").file("package.json")`
-would return `https://raw.githubusercontent.com/npm/hosted-git-info/v1.0.0/package.json`
-
-* info.shortcut(opts)
-
-eg, `github:npm/hosted-git-info`
-
-* info.browse(path, fragment, opts)
-
-eg, `https://github.com/npm/hosted-git-info/tree/v1.2.0`,
-`https://github.com/npm/hosted-git-info/tree/v1.2.0/package.json`,
-`https://github.com/npm/hosted-git-info/tree/v1.2.0/REAMDE.md#supported-hosts`
-
-* info.bugs(opts)
-
-eg, `https://github.com/npm/hosted-git-info/issues`
-
-* info.docs(opts)
-
-eg, `https://github.com/npm/hosted-git-info/tree/v1.2.0#readme`
-
-* info.https(opts)
-
-eg, `git+https://github.com/npm/hosted-git-info.git`
-
-* info.sshurl(opts)
-
-eg, `git+ssh://git@github.com/npm/hosted-git-info.git`
-
-* info.ssh(opts)
-
-eg, `git@github.com:npm/hosted-git-info.git`
-
-* info.path(opts)
-
-eg, `npm/hosted-git-info`
-
-* info.tarball(opts)
-
-eg, `https://github.com/npm/hosted-git-info/archive/v1.2.0.tar.gz`
-
-* info.getDefaultRepresentation()
-
-Returns the default output type. The default output type is based on the
-string you passed in to be parsed
-
-* info.toString(opts)
-
-Uses the getDefaultRepresentation to call one of the other methods to get a URL for
-this resource. As such `hostedGitInfo.fromUrl(url).toString()` will give
-you a normalized version of the URL that still uses the same protocol.
-
-Shortcuts will still be returned as shortcuts, but the special case github
-form of `org/project` will be normalized to `github:org/project`.
-
-SSH connect strings will be normalized into `git+ssh` URLs.
-
-## Supported hosts
-
-Currently this supports Github, Bitbucket and Gitlab. Pull requests for
-additional hosts welcome.
diff --git a/node_modules/lock-verify/node_modules/hosted-git-info/git-host-info.js b/node_modules/lock-verify/node_modules/hosted-git-info/git-host-info.js
deleted file mode 100644
index 8147e3348..000000000
--- a/node_modules/lock-verify/node_modules/hosted-git-info/git-host-info.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict'
-
-var gitHosts = module.exports = {
- github: {
- // First two are insecure and generally shouldn't be used any more, but
- // they are still supported.
- 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
- 'domain': 'github.com',
- 'treepath': 'tree',
- 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',
- 'bugstemplate': 'https://{domain}/{user}/{project}/issues',
- 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',
- 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'
- },
- bitbucket: {
- 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],
- 'domain': 'bitbucket.org',
- 'treepath': 'src',
- 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'
- },
- gitlab: {
- 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],
- 'domain': 'gitlab.com',
- 'treepath': 'tree',
- 'bugstemplate': 'https://{domain}/{user}/{project}/issues',
- 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',
- 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',
- 'pathmatch': /^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/
- },
- gist: {
- 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],
- 'domain': 'gist.github.com',
- 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,
- 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',
- 'bugstemplate': 'https://{domain}/{project}',
- 'gittemplate': 'git://{domain}/{project}.git{#committish}',
- 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',
- 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',
- 'browsetemplate': 'https://{domain}/{project}{/committish}',
- 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',
- 'docstemplate': 'https://{domain}/{project}{/committish}',
- 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',
- 'shortcuttemplate': '{type}:{project}{#committish}',
- 'pathtemplate': '{project}{#committish}',
- 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',
- 'hashformat': function (fragment) {
- return 'file-' + formatHashFragment(fragment)
- }
- }
-}
-
-var gitHostDefaults = {
- 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',
- 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',
- 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',
- 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',
- 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',
- 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',
- 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',
- 'shortcuttemplate': '{type}:{user}/{project}{#committish}',
- 'pathtemplate': '{user}/{project}{#committish}',
- 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,
- 'hashformat': formatHashFragment
-}
-
-Object.keys(gitHosts).forEach(function (name) {
- Object.keys(gitHostDefaults).forEach(function (key) {
- if (gitHosts[name][key]) return
- gitHosts[name][key] = gitHostDefaults[key]
- })
- gitHosts[name].protocols_re = RegExp('^(' +
- gitHosts[name].protocols.map(function (protocol) {
- return protocol.replace(/([\\+*{}()[\]$^|])/g, '\\$1')
- }).join('|') + '):$')
-})
-
-function formatHashFragment (fragment) {
- return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-')
-}
diff --git a/node_modules/lock-verify/node_modules/hosted-git-info/git-host.js b/node_modules/lock-verify/node_modules/hosted-git-info/git-host.js
deleted file mode 100644
index 9616fbaa6..000000000
--- a/node_modules/lock-verify/node_modules/hosted-git-info/git-host.js
+++ /dev/null
@@ -1,156 +0,0 @@
-'use strict'
-var gitHosts = require('./git-host-info.js')
-/* eslint-disable node/no-deprecated-api */
-
-// copy-pasta util._extend from node's source, to avoid pulling
-// the whole util module into peoples' webpack bundles.
-/* istanbul ignore next */
-var extend = Object.assign || function _extend (target, source) {
- // Don't do anything if source isn't an object
- if (source === null || typeof source !== 'object') return target
-
- var keys = Object.keys(source)
- var i = keys.length
- while (i--) {
- target[keys[i]] = source[keys[i]]
- }
- return target
-}
-
-module.exports = GitHost
-function GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {
- var gitHostInfo = this
- gitHostInfo.type = type
- Object.keys(gitHosts[type]).forEach(function (key) {
- gitHostInfo[key] = gitHosts[type][key]
- })
- gitHostInfo.user = user
- gitHostInfo.auth = auth
- gitHostInfo.project = project
- gitHostInfo.committish = committish
- gitHostInfo.default = defaultRepresentation
- gitHostInfo.opts = opts || {}
-}
-
-GitHost.prototype.hash = function () {
- return this.committish ? '#' + this.committish : ''
-}
-
-GitHost.prototype._fill = function (template, opts) {
- if (!template) return
- var vars = extend({}, opts)
- vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''
- opts = extend(extend({}, this.opts), opts)
- var self = this
- Object.keys(this).forEach(function (key) {
- if (self[key] != null && vars[key] == null) vars[key] = self[key]
- })
- var rawAuth = vars.auth
- var rawcommittish = vars.committish
- var rawFragment = vars.fragment
- var rawPath = vars.path
- var rawProject = vars.project
- Object.keys(vars).forEach(function (key) {
- var value = vars[key]
- if ((key === 'path' || key === 'project') && typeof value === 'string') {
- vars[key] = value.split('/').map(function (pathComponent) {
- return encodeURIComponent(pathComponent)
- }).join('/')
- } else {
- vars[key] = encodeURIComponent(value)
- }
- })
- vars['auth@'] = rawAuth ? rawAuth + '@' : ''
- vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''
- vars.fragment = vars.fragment ? vars.fragment : ''
- vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''
- vars['/path'] = vars.path ? '/' + vars.path : ''
- vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')
- if (opts.noCommittish) {
- vars['#committish'] = ''
- vars['/tree/committish'] = ''
- vars['/committish'] = ''
- vars.committish = ''
- } else {
- vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''
- vars['/tree/committish'] = vars.committish
- ? '/' + vars.treepath + '/' + vars.committish
- : ''
- vars['/committish'] = vars.committish ? '/' + vars.committish : ''
- vars.committish = vars.committish || 'master'
- }
- var res = template
- Object.keys(vars).forEach(function (key) {
- res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])
- })
- if (opts.noGitPlus) {
- return res.replace(/^git[+]/, '')
- } else {
- return res
- }
-}
-
-GitHost.prototype.ssh = function (opts) {
- return this._fill(this.sshtemplate, opts)
-}
-
-GitHost.prototype.sshurl = function (opts) {
- return this._fill(this.sshurltemplate, opts)
-}
-
-GitHost.prototype.browse = function (P, F, opts) {
- if (typeof P === 'string') {
- if (typeof F !== 'string') {
- opts = F
- F = null
- }
- return this._fill(this.browsefiletemplate, extend({
- fragment: F,
- path: P
- }, opts))
- } else {
- return this._fill(this.browsetemplate, P)
- }
-}
-
-GitHost.prototype.docs = function (opts) {
- return this._fill(this.docstemplate, opts)
-}
-
-GitHost.prototype.bugs = function (opts) {
- return this._fill(this.bugstemplate, opts)
-}
-
-GitHost.prototype.https = function (opts) {
- return this._fill(this.httpstemplate, opts)
-}
-
-GitHost.prototype.git = function (opts) {
- return this._fill(this.gittemplate, opts)
-}
-
-GitHost.prototype.shortcut = function (opts) {
- return this._fill(this.shortcuttemplate, opts)
-}
-
-GitHost.prototype.path = function (opts) {
- return this._fill(this.pathtemplate, opts)
-}
-
-GitHost.prototype.tarball = function (opts_) {
- var opts = extend({}, opts_, { noCommittish: false })
- return this._fill(this.tarballtemplate, opts)
-}
-
-GitHost.prototype.file = function (P, opts) {
- return this._fill(this.filetemplate, extend({ path: P }, opts))
-}
-
-GitHost.prototype.getDefaultRepresentation = function () {
- return this.default
-}
-
-GitHost.prototype.toString = function (opts) {
- if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)
- return this.sshurl(opts)
-}
diff --git a/node_modules/lock-verify/node_modules/hosted-git-info/index.js b/node_modules/lock-verify/node_modules/hosted-git-info/index.js
deleted file mode 100644
index 21e53fe37..000000000
--- a/node_modules/lock-verify/node_modules/hosted-git-info/index.js
+++ /dev/null
@@ -1,148 +0,0 @@
-'use strict'
-var url = require('url')
-var gitHosts = require('./git-host-info.js')
-var GitHost = module.exports = require('./git-host.js')
-
-var protocolToRepresentationMap = {
- 'git+ssh:': 'sshurl',
- 'git+https:': 'https',
- 'ssh:': 'sshurl',
- 'git:': 'git'
-}
-
-function protocolToRepresentation (protocol) {
- return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)
-}
-
-var authProtocols = {
- 'git:': true,
- 'https:': true,
- 'git+https:': true,
- 'http:': true,
- 'git+http:': true
-}
-
-var cache = {}
-
-module.exports.fromUrl = function (giturl, opts) {
- if (typeof giturl !== 'string') return
- var key = giturl + JSON.stringify(opts || {})
-
- if (!(key in cache)) {
- cache[key] = fromUrl(giturl, opts)
- }
-
- return cache[key]
-}
-
-function fromUrl (giturl, opts) {
- if (giturl == null || giturl === '') return
- var url = fixupUnqualifiedGist(
- isGitHubShorthand(giturl) ? 'github:' + giturl : giturl
- )
- var parsed = parseGitUrl(url)
- var shortcutMatch = url.match(new RegExp('^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)'))
- var matches = Object.keys(gitHosts).map(function (gitHostName) {
- try {
- var gitHostInfo = gitHosts[gitHostName]
- var auth = null
- if (parsed.auth && authProtocols[parsed.protocol]) {
- auth = parsed.auth
- }
- var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null
- var user = null
- var project = null
- var defaultRepresentation = null
- if (shortcutMatch && shortcutMatch[1] === gitHostName) {
- user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])
- project = decodeURIComponent(shortcutMatch[3])
- defaultRepresentation = 'shortcut'
- } else {
- if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return
- if (!gitHostInfo.protocols_re.test(parsed.protocol)) return
- if (!parsed.path) return
- var pathmatch = gitHostInfo.pathmatch
- var matched = parsed.path.match(pathmatch)
- if (!matched) return
- /* istanbul ignore else */
- if (matched[1] !== null && matched[1] !== undefined) {
- user = decodeURIComponent(matched[1].replace(/^:/, ''))
- }
- project = decodeURIComponent(matched[2])
- defaultRepresentation = protocolToRepresentation(parsed.protocol)
- }
- return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)
- } catch (ex) {
- /* istanbul ignore else */
- if (ex instanceof URIError) {
- } else throw ex
- }
- }).filter(function (gitHostInfo) { return gitHostInfo })
- if (matches.length !== 1) return
- return matches[0]
-}
-
-function isGitHubShorthand (arg) {
- // Note: This does not fully test the git ref format.
- // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html
- //
- // The only way to do this properly would be to shell out to
- // git-check-ref-format, and as this is a fast sync function,
- // we don't want to do that. Just let git fail if it turns
- // out that the commit-ish is invalid.
- // GH usernames cannot start with . or -
- return /^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(arg)
-}
-
-function fixupUnqualifiedGist (giturl) {
- // necessary for round-tripping gists
- var parsed = url.parse(giturl)
- if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {
- return parsed.protocol + '/' + parsed.host
- } else {
- return giturl
- }
-}
-
-function parseGitUrl (giturl) {
- var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)
- if (!matched) {
- var legacy = url.parse(giturl)
- // If we don't have url.URL, then sorry, this is just not fixable.
- // This affects Node <= 6.12.
- if (legacy.auth && typeof url.URL === 'function') {
- // git urls can be in the form of scp-style/ssh-connect strings, like
- // git+ssh://user@host.com:some/path, which the legacy url parser
- // supports, but WhatWG url.URL class does not. However, the legacy
- // parser de-urlencodes the username and password, so something like
- // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes
- // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong.
- // Pull off just the auth and host, so we dont' get the confusing
- // scp-style URL, then pass that to the WhatWG parser to get the
- // auth properly escaped.
- var authmatch = giturl.match(/[^@]+@[^:/]+/)
- /* istanbul ignore else - this should be impossible */
- if (authmatch) {
- var whatwg = new url.URL(authmatch[0])
- legacy.auth = whatwg.username || ''
- if (whatwg.password) legacy.auth += ':' + whatwg.password
- }
- }
- return legacy
- }
- return {
- protocol: 'git+ssh:',
- slashes: true,
- auth: matched[1],
- host: matched[2],
- port: null,
- hostname: matched[2],
- hash: matched[4],
- search: null,
- query: null,
- pathname: '/' + matched[3],
- path: '/' + matched[3],
- href: 'git+ssh://' + matched[1] + '@' + matched[2] +
- '/' + matched[3] + (matched[4] || '')
- }
-}
diff --git a/node_modules/lock-verify/node_modules/hosted-git-info/package.json b/node_modules/lock-verify/node_modules/hosted-git-info/package.json
deleted file mode 100644
index e47c096ef..000000000
--- a/node_modules/lock-verify/node_modules/hosted-git-info/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "hosted-git-info",
- "version": "2.8.8",
- "description": "Provides metadata and conversions from repository urls for Github, Bitbucket and Gitlab",
- "main": "index.js",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/npm/hosted-git-info.git"
- },
- "keywords": [
- "git",
- "github",
- "bitbucket",
- "gitlab"
- ],
- "author": "Rebecca Turner <me@re-becca.org> (http://re-becca.org)",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/npm/hosted-git-info/issues"
- },
- "homepage": "https://github.com/npm/hosted-git-info",
- "scripts": {
- "prerelease": "npm t",
- "postrelease": "npm publish --tag=ancient-legacy-fixes && git push --follow-tags",
- "posttest": "standard",
- "release": "standard-version -s",
- "test:coverage": "tap --coverage-report=html -J --coverage=90 --no-esm test/*.js",
- "test": "tap -J --coverage=90 --no-esm test/*.js"
- },
- "devDependencies": {
- "standard": "^11.0.1",
- "standard-version": "^4.4.0",
- "tap": "^12.7.0"
- },
- "files": [
- "index.js",
- "git-host.js",
- "git-host-info.js"
- ]
-}
diff --git a/node_modules/lock-verify/node_modules/npm-package-arg/CHANGELOG.md b/node_modules/lock-verify/node_modules/npm-package-arg/CHANGELOG.md
deleted file mode 100644
index 1b3431acc..000000000
--- a/node_modules/lock-verify/node_modules/npm-package-arg/CHANGELOG.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="6.1.1"></a>
-## [6.1.1](https://github.com/npm/npm-package-arg/compare/v6.1.0...v6.1.1) (2019-08-21)
-
-
-### Bug Fixes
-
-* preserve drive letter on windows git file:// urls ([3909203](https://github.com/npm/npm-package-arg/commit/3909203))
-
-
-
-<a name="6.1.0"></a>
-# [6.1.0](https://github.com/npm/npm-package-arg/compare/v6.0.0...v6.1.0) (2018-04-10)
-
-
-### Bug Fixes
-
-* **git:** Fix gitRange for git+ssh for private git ([#33](https://github.com/npm/npm-package-arg/issues/33)) ([647a0b3](https://github.com/npm/npm-package-arg/commit/647a0b3))
-
-
-### Features
-
-* **alias:** add `npm:` registry alias spec ([#34](https://github.com/npm/npm-package-arg/issues/34)) ([ab99f8e](https://github.com/npm/npm-package-arg/commit/ab99f8e))
diff --git a/node_modules/lock-verify/node_modules/npm-package-arg/LICENSE b/node_modules/lock-verify/node_modules/npm-package-arg/LICENSE
deleted file mode 100644
index 05eeeb88c..000000000
--- a/node_modules/lock-verify/node_modules/npm-package-arg/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/lock-verify/node_modules/npm-package-arg/README.md b/node_modules/lock-verify/node_modules/npm-package-arg/README.md
deleted file mode 100644
index 847341b21..000000000
--- a/node_modules/lock-verify/node_modules/npm-package-arg/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# npm-package-arg
-
-[![Build Status](https://travis-ci.org/npm/npm-package-arg.svg?branch=master)](https://travis-ci.org/npm/npm-package-arg)
-
-Parses package name and specifier passed to commands like `npm install` or
-`npm cache add`, or as found in `package.json` dependency sections.
-
-## EXAMPLES
-
-```javascript
-var assert = require("assert")
-var npa = require("npm-package-arg")
-
-// Pass in the descriptor, and it'll return an object
-try {
- var parsed = npa("@bar/foo@1.2")
-} catch (ex) {
- …
-}
-```
-
-## USING
-
-`var npa = require('npm-package-arg')`
-
-### var result = npa(*arg*[, *where*])
-
-* *arg* - a string that you might pass to `npm install`, like:
-`foo@1.2`, `@bar/foo@1.2`, `foo@user/foo`, `http://x.com/foo.tgz`,
-`git+https://github.com/user/foo`, `bitbucket:user/foo`, `foo.tar.gz`,
-`../foo/bar/` or `bar`. If the *arg* you provide doesn't have a specifier
-part, eg `foo` then the specifier will default to `latest`.
-* *where* - Optionally the path to resolve file paths relative to. Defaults to `process.cwd()`
-
-**Throws** if the package name is invalid, a dist-tag is invalid or a URL's protocol is not supported.
-
-### var result = npa.resolve(*name*, *spec*[, *where*])
-
-* *name* - The name of the module you want to install. For example: `foo` or `@bar/foo`.
-* *spec* - The specifier indicating where and how you can get this module. Something like:
-`1.2`, `^1.7.17`, `http://x.com/foo.tgz`, `git+https://github.com/user/foo`,
-`bitbucket:user/foo`, `file:foo.tar.gz` or `file:../foo/bar/`. If not
-included then the default is `latest`.
-* *where* - Optionally the path to resolve file paths relative to. Defaults to `process.cwd()`
-
-**Throws** if the package name is invalid, a dist-tag is invalid or a URL's protocol is not supported.
-
-## RESULT OBJECT
-
-The objects that are returned by npm-package-arg contain the following
-keys:
-
-* `type` - One of the following strings:
- * `git` - A git repo
- * `tag` - A tagged version, like `"foo@latest"`
- * `version` - A specific version number, like `"foo@1.2.3"`
- * `range` - A version range, like `"foo@2.x"`
- * `file` - A local `.tar.gz`, `.tar` or `.tgz` file.
- * `directory` - A local directory.
- * `remote` - An http url (presumably to a tgz)
-* `registry` - If true this specifier refers to a resource hosted on a
- registry. This is true for `tag`, `version` and `range` types.
-* `name` - If known, the `name` field expected in the resulting pkg.
-* `scope` - If a name is something like `@org/module` then the `scope`
- field will be set to `@org`. If it doesn't have a scoped name, then
- scope is `null`.
-* `escapedName` - A version of `name` escaped to match the npm scoped packages
- specification. Mostly used when making requests against a registry. When
- `name` is `null`, `escapedName` will also be `null`.
-* `rawSpec` - The specifier part that was parsed out in calls to `npa(arg)`,
- or the value of `spec` in calls to `npa.resolve(name, spec).
-* `saveSpec` - The normalized specifier, for saving to package.json files.
- `null` for registry dependencies.
-* `fetchSpec` - The version of the specifier to be used to fetch this
- resource. `null` for shortcuts to hosted git dependencies as there isn't
- just one URL to try with them.
-* `gitRange` - If set, this is a semver specifier to match against git tags with
-* `gitCommittish` - If set, this is the specific committish to use with a git dependency.
-* `hosted` - If `from === 'hosted'` then this will be a `hosted-git-info`
- object. This property is not included when serializing the object as
- JSON.
-* `raw` - The original un-modified string that was provided. If called as
- `npa.resolve(name, spec)` then this will be `name + '@' + spec`.
diff --git a/node_modules/lock-verify/node_modules/npm-package-arg/npa.js b/node_modules/lock-verify/node_modules/npm-package-arg/npa.js
deleted file mode 100644
index bf2c17cfd..000000000
--- a/node_modules/lock-verify/node_modules/npm-package-arg/npa.js
+++ /dev/null
@@ -1,301 +0,0 @@
-'use strict'
-module.exports = npa
-module.exports.resolve = resolve
-module.exports.Result = Result
-
-let url
-let HostedGit
-let semver
-let path_
-function path () {
- if (!path_) path_ = require('path')
- return path_
-}
-let validatePackageName
-let osenv
-
-const isWindows = process.platform === 'win32' || global.FAKE_WINDOWS
-const hasSlashes = isWindows ? /\\|[/]/ : /[/]/
-const isURL = /^(?:git[+])?[a-z]+:/i
-const isFilename = /[.](?:tgz|tar.gz|tar)$/i
-
-function npa (arg, where) {
- let name
- let spec
- if (typeof arg === 'object') {
- if (arg instanceof Result && (!where || where === arg.where)) {
- return arg
- } else if (arg.name && arg.rawSpec) {
- return npa.resolve(arg.name, arg.rawSpec, where || arg.where)
- } else {
- return npa(arg.raw, where || arg.where)
- }
- }
- const nameEndsAt = arg[0] === '@' ? arg.slice(1).indexOf('@') + 1 : arg.indexOf('@')
- const namePart = nameEndsAt > 0 ? arg.slice(0, nameEndsAt) : arg
- if (isURL.test(arg)) {
- spec = arg
- } else if (namePart[0] !== '@' && (hasSlashes.test(namePart) || isFilename.test(namePart))) {
- spec = arg
- } else if (nameEndsAt > 0) {
- name = namePart
- spec = arg.slice(nameEndsAt + 1)
- } else {
- if (!validatePackageName) validatePackageName = require('validate-npm-package-name')
- const valid = validatePackageName(arg)
- if (valid.validForOldPackages) {
- name = arg
- } else {
- spec = arg
- }
- }
- return resolve(name, spec, where, arg)
-}
-
-const isFilespec = isWindows ? /^(?:[.]|~[/]|[/\\]|[a-zA-Z]:)/ : /^(?:[.]|~[/]|[/]|[a-zA-Z]:)/
-
-function resolve (name, spec, where, arg) {
- const res = new Result({
- raw: arg,
- name: name,
- rawSpec: spec,
- fromArgument: arg != null
- })
-
- if (name) res.setName(name)
-
- if (spec && (isFilespec.test(spec) || /^file:/i.test(spec))) {
- return fromFile(res, where)
- } else if (spec && /^npm:/i.test(spec)) {
- return fromAlias(res, where)
- }
- if (!HostedGit) HostedGit = require('hosted-git-info')
- const hosted = HostedGit.fromUrl(spec, {noGitPlus: true, noCommittish: true})
- if (hosted) {
- return fromHostedGit(res, hosted)
- } else if (spec && isURL.test(spec)) {
- return fromURL(res)
- } else if (spec && (hasSlashes.test(spec) || isFilename.test(spec))) {
- return fromFile(res, where)
- } else {
- return fromRegistry(res)
- }
-}
-
-function invalidPackageName (name, valid) {
- const err = new Error(`Invalid package name "${name}": ${valid.errors.join('; ')}`)
- err.code = 'EINVALIDPACKAGENAME'
- return err
-}
-function invalidTagName (name) {
- const err = new Error(`Invalid tag name "${name}": Tags may not have any characters that encodeURIComponent encodes.`)
- err.code = 'EINVALIDTAGNAME'
- return err
-}
-
-function Result (opts) {
- this.type = opts.type
- this.registry = opts.registry
- this.where = opts.where
- if (opts.raw == null) {
- this.raw = opts.name ? opts.name + '@' + opts.rawSpec : opts.rawSpec
- } else {
- this.raw = opts.raw
- }
- this.name = undefined
- this.escapedName = undefined
- this.scope = undefined
- this.rawSpec = opts.rawSpec == null ? '' : opts.rawSpec
- this.saveSpec = opts.saveSpec
- this.fetchSpec = opts.fetchSpec
- if (opts.name) this.setName(opts.name)
- this.gitRange = opts.gitRange
- this.gitCommittish = opts.gitCommittish
- this.hosted = opts.hosted
-}
-
-Result.prototype.setName = function (name) {
- if (!validatePackageName) validatePackageName = require('validate-npm-package-name')
- const valid = validatePackageName(name)
- if (!valid.validForOldPackages) {
- throw invalidPackageName(name, valid)
- }
- this.name = name
- this.scope = name[0] === '@' ? name.slice(0, name.indexOf('/')) : undefined
- // scoped packages in couch must have slash url-encoded, e.g. @foo%2Fbar
- this.escapedName = name.replace('/', '%2f')
- return this
-}
-
-Result.prototype.toString = function () {
- const full = []
- if (this.name != null && this.name !== '') full.push(this.name)
- const spec = this.saveSpec || this.fetchSpec || this.rawSpec
- if (spec != null && spec !== '') full.push(spec)
- return full.length ? full.join('@') : this.raw
-}
-
-Result.prototype.toJSON = function () {
- const result = Object.assign({}, this)
- delete result.hosted
- return result
-}
-
-function setGitCommittish (res, committish) {
- if (committish != null && committish.length >= 7 && committish.slice(0, 7) === 'semver:') {
- res.gitRange = decodeURIComponent(committish.slice(7))
- res.gitCommittish = null
- } else {
- res.gitCommittish = committish === '' ? null : committish
- }
- return res
-}
-
-const isAbsolutePath = /^[/]|^[A-Za-z]:/
-
-function resolvePath (where, spec) {
- if (isAbsolutePath.test(spec)) return spec
- return path().resolve(where, spec)
-}
-
-function isAbsolute (dir) {
- if (dir[0] === '/') return true
- if (/^[A-Za-z]:/.test(dir)) return true
- return false
-}
-
-function fromFile (res, where) {
- if (!where) where = process.cwd()
- res.type = isFilename.test(res.rawSpec) ? 'file' : 'directory'
- res.where = where
-
- const spec = res.rawSpec.replace(/\\/g, '/')
- .replace(/^file:[/]*([A-Za-z]:)/, '$1') // drive name paths on windows
- .replace(/^file:(?:[/]*([~./]))?/, '$1')
- if (/^~[/]/.test(spec)) {
- // this is needed for windows and for file:~/foo/bar
- if (!osenv) osenv = require('osenv')
- res.fetchSpec = resolvePath(osenv.home(), spec.slice(2))
- res.saveSpec = 'file:' + spec
- } else {
- res.fetchSpec = resolvePath(where, spec)
- if (isAbsolute(spec)) {
- res.saveSpec = 'file:' + spec
- } else {
- res.saveSpec = 'file:' + path().relative(where, res.fetchSpec)
- }
- }
- return res
-}
-
-function fromHostedGit (res, hosted) {
- res.type = 'git'
- res.hosted = hosted
- res.saveSpec = hosted.toString({noGitPlus: false, noCommittish: false})
- res.fetchSpec = hosted.getDefaultRepresentation() === 'shortcut' ? null : hosted.toString()
- return setGitCommittish(res, hosted.committish)
-}
-
-function unsupportedURLType (protocol, spec) {
- const err = new Error(`Unsupported URL Type "${protocol}": ${spec}`)
- err.code = 'EUNSUPPORTEDPROTOCOL'
- return err
-}
-
-function matchGitScp (spec) {
- // git ssh specifiers are overloaded to also use scp-style git
- // specifiers, so we have to parse those out and treat them special.
- // They are NOT true URIs, so we can't hand them to `url.parse`.
- //
- // This regex looks for things that look like:
- // git+ssh://git@my.custom.git.com:username/project.git#deadbeef
- //
- // ...and various combinations. The username in the beginning is *required*.
- const matched = spec.match(/^git\+ssh:\/\/([^:#]+:[^#]+(?:\.git)?)(?:#(.*))?$/i)
- return matched && !matched[1].match(/:[0-9]+\/?.*$/i) && {
- fetchSpec: matched[1],
- gitCommittish: matched[2] == null ? null : matched[2]
- }
-}
-
-function fromURL (res) {
- if (!url) url = require('url')
- const urlparse = url.parse(res.rawSpec)
- res.saveSpec = res.rawSpec
- // check the protocol, and then see if it's git or not
- switch (urlparse.protocol) {
- case 'git:':
- case 'git+http:':
- case 'git+https:':
- case 'git+rsync:':
- case 'git+ftp:':
- case 'git+file:':
- case 'git+ssh:':
- res.type = 'git'
- const match = urlparse.protocol === 'git+ssh:' && matchGitScp(res.rawSpec)
- if (match) {
- setGitCommittish(res, match.gitCommittish)
- res.fetchSpec = match.fetchSpec
- } else {
- setGitCommittish(res, urlparse.hash != null ? urlparse.hash.slice(1) : '')
- urlparse.protocol = urlparse.protocol.replace(/^git[+]/, '')
- if (urlparse.protocol === 'file:' && /^git\+file:\/\/[a-z]:/i.test(res.rawSpec)) {
- // keep the drive letter : on windows file paths
- urlparse.host += ':'
- urlparse.hostname += ':'
- }
- delete urlparse.hash
- res.fetchSpec = url.format(urlparse)
- }
- break
- case 'http:':
- case 'https:':
- res.type = 'remote'
- res.fetchSpec = res.saveSpec
- break
-
- default:
- throw unsupportedURLType(urlparse.protocol, res.rawSpec)
- }
-
- return res
-}
-
-function fromAlias (res, where) {
- const subSpec = npa(res.rawSpec.substr(4), where)
- if (subSpec.type === 'alias') {
- throw new Error('nested aliases not supported')
- }
- if (!subSpec.registry) {
- throw new Error('aliases only work for registry deps')
- }
- res.subSpec = subSpec
- res.registry = true
- res.type = 'alias'
- res.saveSpec = null
- res.fetchSpec = null
- return res
-}
-
-function fromRegistry (res) {
- res.registry = true
- const spec = res.rawSpec === '' ? 'latest' : res.rawSpec
- // no save spec for registry components as we save based on the fetched
- // version, not on the argument so this can't compute that.
- res.saveSpec = null
- res.fetchSpec = spec
- if (!semver) semver = require('semver')
- const version = semver.valid(spec, true)
- const range = semver.validRange(spec, true)
- if (version) {
- res.type = 'version'
- } else if (range) {
- res.type = 'range'
- } else {
- if (encodeURIComponent(spec) !== spec) {
- throw invalidTagName(spec)
- }
- res.type = 'tag'
- }
- return res
-}
diff --git a/node_modules/lock-verify/node_modules/npm-package-arg/package.json b/node_modules/lock-verify/node_modules/npm-package-arg/package.json
deleted file mode 100644
index 4c11182d2..000000000
--- a/node_modules/lock-verify/node_modules/npm-package-arg/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "npm-package-arg",
- "version": "6.1.1",
- "description": "Parse the things that can be arguments to `npm install`",
- "main": "npa.js",
- "directories": {
- "test": "test"
- },
- "files": [
- "npa.js"
- ],
- "dependencies": {
- "hosted-git-info": "^2.7.1",
- "osenv": "^0.1.5",
- "semver": "^5.6.0",
- "validate-npm-package-name": "^3.0.0"
- },
- "devDependencies": {
- "standard": "^11.0.1",
- "standard-version": "^4.4.0",
- "tap": "^12.5.0",
- "weallbehave": "^1.2.0",
- "weallcontribute": "^1.0.8"
- },
- "scripts": {
- "prerelease": "npm t",
- "postrelease": "npm publish && git push --follow-tags",
- "pretest": "standard",
- "release": "standard-version -s",
- "test": "tap --100 -J --coverage test/*.js",
- "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
- "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/npm/npm-package-arg"
- },
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/npm/npm-package-arg/issues"
- },
- "homepage": "https://github.com/npm/npm-package-arg"
-}
diff --git a/node_modules/lock-verify/node_modules/semver/CHANGELOG.md b/node_modules/lock-verify/node_modules/semver/CHANGELOG.md
deleted file mode 100644
index 66304fdd2..000000000
--- a/node_modules/lock-verify/node_modules/semver/CHANGELOG.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# changes log
-
-## 5.7
-
-* Add `minVersion` method
-
-## 5.6
-
-* Move boolean `loose` param to an options object, with
- backwards-compatibility protection.
-* Add ability to opt out of special prerelease version handling with
- the `includePrerelease` option flag.
-
-## 5.5
-
-* Add version coercion capabilities
-
-## 5.4
-
-* Add intersection checking
-
-## 5.3
-
-* Add `minSatisfying` method
-
-## 5.2
-
-* Add `prerelease(v)` that returns prerelease components
-
-## 5.1
-
-* Add Backus-Naur for ranges
-* Remove excessively cute inspection methods
-
-## 5.0
-
-* Remove AMD/Browserified build artifacts
-* Fix ltr and gtr when using the `*` range
-* Fix for range `*` with a prerelease identifier
diff --git a/node_modules/lock-verify/node_modules/semver/LICENSE b/node_modules/lock-verify/node_modules/semver/LICENSE
deleted file mode 100644
index 19129e315..000000000
--- a/node_modules/lock-verify/node_modules/semver/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/lock-verify/node_modules/semver/README.md b/node_modules/lock-verify/node_modules/semver/README.md
deleted file mode 100644
index f8dfa5a0d..000000000
--- a/node_modules/lock-verify/node_modules/semver/README.md
+++ /dev/null
@@ -1,412 +0,0 @@
-semver(1) -- The semantic versioner for npm
-===========================================
-
-## Install
-
-```bash
-npm install --save semver
-````
-
-## Usage
-
-As a node module:
-
-```js
-const semver = require('semver')
-
-semver.valid('1.2.3') // '1.2.3'
-semver.valid('a.b.c') // null
-semver.clean(' =v1.2.3 ') // '1.2.3'
-semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
-semver.gt('1.2.3', '9.8.7') // false
-semver.lt('1.2.3', '9.8.7') // true
-semver.minVersion('>=1.0.0') // '1.0.0'
-semver.valid(semver.coerce('v2')) // '2.0.0'
-semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
-```
-
-As a command-line utility:
-
-```
-$ semver -h
-
-A JavaScript implementation of the https://semver.org/ specification
-Copyright Isaac Z. Schlueter
-
-Usage: semver [options] <version> [<version> [...]]
-Prints valid versions sorted by SemVer precedence
-
-Options:
--r --range <range>
- Print versions that match the specified range.
-
--i --increment [<level>]
- Increment a version by the specified level. Level can
- be one of: major, minor, patch, premajor, preminor,
- prepatch, or prerelease. Default level is 'patch'.
- Only one version may be specified.
-
---preid <identifier>
- Identifier to be used to prefix premajor, preminor,
- prepatch or prerelease version increments.
-
--l --loose
- Interpret versions and ranges loosely
-
--p --include-prerelease
- Always include prerelease versions in range matching
-
--c --coerce
- Coerce a string into SemVer if possible
- (does not imply --loose)
-
-Program exits successfully if any valid version satisfies
-all supplied ranges, and prints all satisfying versions.
-
-If no satisfying versions are found, then exits failure.
-
-Versions are printed in ascending order, so supplying
-multiple versions to the utility will just sort them.
-```
-
-## Versions
-
-A "version" is described by the `v2.0.0` specification found at
-<https://semver.org/>.
-
-A leading `"="` or `"v"` character is stripped off and ignored.
-
-## Ranges
-
-A `version range` is a set of `comparators` which specify versions
-that satisfy the range.
-
-A `comparator` is composed of an `operator` and a `version`. The set
-of primitive `operators` is:
-
-* `<` Less than
-* `<=` Less than or equal to
-* `>` Greater than
-* `>=` Greater than or equal to
-* `=` Equal. If no operator is specified, then equality is assumed,
- so this operator is optional, but MAY be included.
-
-For example, the comparator `>=1.2.7` would match the versions
-`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
-or `1.1.0`.
-
-Comparators can be joined by whitespace to form a `comparator set`,
-which is satisfied by the **intersection** of all of the comparators
-it includes.
-
-A range is composed of one or more comparator sets, joined by `||`. A
-version matches a range if and only if every comparator in at least
-one of the `||`-separated comparator sets is satisfied by the version.
-
-For example, the range `>=1.2.7 <1.3.0` would match the versions
-`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
-or `1.1.0`.
-
-The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
-`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
-
-### Prerelease Tags
-
-If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
-it will only be allowed to satisfy comparator sets if at least one
-comparator with the same `[major, minor, patch]` tuple also has a
-prerelease tag.
-
-For example, the range `>1.2.3-alpha.3` would be allowed to match the
-version `1.2.3-alpha.7`, but it would *not* be satisfied by
-`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
-than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
-range only accepts prerelease tags on the `1.2.3` version. The
-version `3.4.5` *would* satisfy the range, because it does not have a
-prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
-
-The purpose for this behavior is twofold. First, prerelease versions
-frequently are updated very quickly, and contain many breaking changes
-that are (by the author's design) not yet fit for public consumption.
-Therefore, by default, they are excluded from range matching
-semantics.
-
-Second, a user who has opted into using a prerelease version has
-clearly indicated the intent to use *that specific* set of
-alpha/beta/rc versions. By including a prerelease tag in the range,
-the user is indicating that they are aware of the risk. However, it
-is still not appropriate to assume that they have opted into taking a
-similar risk on the *next* set of prerelease versions.
-
-Note that this behavior can be suppressed (treating all prerelease
-versions as if they were normal versions, for the purpose of range
-matching) by setting the `includePrerelease` flag on the options
-object to any
-[functions](https://github.com/npm/node-semver#functions) that do
-range matching.
-
-#### Prerelease Identifiers
-
-The method `.inc` takes an additional `identifier` string argument that
-will append the value of the string as a prerelease identifier:
-
-```javascript
-semver.inc('1.2.3', 'prerelease', 'beta')
-// '1.2.4-beta.0'
-```
-
-command-line example:
-
-```bash
-$ semver 1.2.3 -i prerelease --preid beta
-1.2.4-beta.0
-```
-
-Which then can be used to increment further:
-
-```bash
-$ semver 1.2.4-beta.0 -i prerelease
-1.2.4-beta.1
-```
-
-### Advanced Range Syntax
-
-Advanced range syntax desugars to primitive comparators in
-deterministic ways.
-
-Advanced ranges may be combined in the same way as primitive
-comparators using white space or `||`.
-
-#### Hyphen Ranges `X.Y.Z - A.B.C`
-
-Specifies an inclusive set.
-
-* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
-
-If a partial version is provided as the first version in the inclusive
-range, then the missing pieces are replaced with zeroes.
-
-* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
-
-If a partial version is provided as the second version in the
-inclusive range, then all versions that start with the supplied parts
-of the tuple are accepted, but nothing that would be greater than the
-provided tuple parts.
-
-* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
-* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
-
-#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
-
-Any of `X`, `x`, or `*` may be used to "stand in" for one of the
-numeric values in the `[major, minor, patch]` tuple.
-
-* `*` := `>=0.0.0` (Any version satisfies)
-* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
-* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
-
-A partial version range is treated as an X-Range, so the special
-character is in fact optional.
-
-* `""` (empty string) := `*` := `>=0.0.0`
-* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
-* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
-
-#### Tilde Ranges `~1.2.3` `~1.2` `~1`
-
-Allows patch-level changes if a minor version is specified on the
-comparator. Allows minor-level changes if not.
-
-* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
-* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
-* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
-* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
-* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
-* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
-* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
- the `1.2.3` version will be allowed, if they are greater than or
- equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
- `1.2.4-beta.2` would not, because it is a prerelease of a
- different `[major, minor, patch]` tuple.
-
-#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
-
-Allows changes that do not modify the left-most non-zero digit in the
-`[major, minor, patch]` tuple. In other words, this allows patch and
-minor updates for versions `1.0.0` and above, patch updates for
-versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
-
-Many authors treat a `0.x` version as if the `x` were the major
-"breaking-change" indicator.
-
-Caret ranges are ideal when an author may make breaking changes
-between `0.2.4` and `0.3.0` releases, which is a common practice.
-However, it presumes that there will *not* be breaking changes between
-`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
-additive (but non-breaking), according to commonly observed practices.
-
-* `^1.2.3` := `>=1.2.3 <2.0.0`
-* `^0.2.3` := `>=0.2.3 <0.3.0`
-* `^0.0.3` := `>=0.0.3 <0.0.4`
-* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
- the `1.2.3` version will be allowed, if they are greater than or
- equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
- `1.2.4-beta.2` would not, because it is a prerelease of a
- different `[major, minor, patch]` tuple.
-* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
- `0.0.3` version *only* will be allowed, if they are greater than or
- equal to `beta`. So, `0.0.3-pr.2` would be allowed.
-
-When parsing caret ranges, a missing `patch` value desugars to the
-number `0`, but will allow flexibility within that value, even if the
-major and minor versions are both `0`.
-
-* `^1.2.x` := `>=1.2.0 <2.0.0`
-* `^0.0.x` := `>=0.0.0 <0.1.0`
-* `^0.0` := `>=0.0.0 <0.1.0`
-
-A missing `minor` and `patch` values will desugar to zero, but also
-allow flexibility within those values, even if the major version is
-zero.
-
-* `^1.x` := `>=1.0.0 <2.0.0`
-* `^0.x` := `>=0.0.0 <1.0.0`
-
-### Range Grammar
-
-Putting all this together, here is a Backus-Naur grammar for ranges,
-for the benefit of parser authors:
-
-```bnf
-range-set ::= range ( logical-or range ) *
-logical-or ::= ( ' ' ) * '||' ( ' ' ) *
-range ::= hyphen | simple ( ' ' simple ) * | ''
-hyphen ::= partial ' - ' partial
-simple ::= primitive | partial | tilde | caret
-primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
-partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
-xr ::= 'x' | 'X' | '*' | nr
-nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
-tilde ::= '~' partial
-caret ::= '^' partial
-qualifier ::= ( '-' pre )? ( '+' build )?
-pre ::= parts
-build ::= parts
-parts ::= part ( '.' part ) *
-part ::= nr | [-0-9A-Za-z]+
-```
-
-## Functions
-
-All methods and classes take a final `options` object argument. All
-options in this object are `false` by default. The options supported
-are:
-
-- `loose` Be more forgiving about not-quite-valid semver strings.
- (Any resulting output will always be 100% strict compliant, of
- course.) For backwards compatibility reasons, if the `options`
- argument is a boolean value instead of an object, it is interpreted
- to be the `loose` param.
-- `includePrerelease` Set to suppress the [default
- behavior](https://github.com/npm/node-semver#prerelease-tags) of
- excluding prerelease tagged versions from ranges unless they are
- explicitly opted into.
-
-Strict-mode Comparators and Ranges will be strict about the SemVer
-strings that they parse.
-
-* `valid(v)`: Return the parsed version, or null if it's not valid.
-* `inc(v, release)`: Return the version incremented by the release
- type (`major`, `premajor`, `minor`, `preminor`, `patch`,
- `prepatch`, or `prerelease`), or null if it's not valid
- * `premajor` in one call will bump the version up to the next major
- version and down to a prerelease of that major version.
- `preminor`, and `prepatch` work the same way.
- * If called from a non-prerelease version, the `prerelease` will work the
- same as `prepatch`. It increments the patch version, then makes a
- prerelease. If the input version is already a prerelease it simply
- increments it.
-* `prerelease(v)`: Returns an array of prerelease components, or null
- if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
-* `major(v)`: Return the major version number.
-* `minor(v)`: Return the minor version number.
-* `patch(v)`: Return the patch version number.
-* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
- or comparators intersect.
-* `parse(v)`: Attempt to parse a string as a semantic version, returning either
- a `SemVer` object or `null`.
-
-### Comparison
-
-* `gt(v1, v2)`: `v1 > v2`
-* `gte(v1, v2)`: `v1 >= v2`
-* `lt(v1, v2)`: `v1 < v2`
-* `lte(v1, v2)`: `v1 <= v2`
-* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
- even if they're not the exact same string. You already know how to
- compare strings.
-* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
-* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
- the corresponding function above. `"==="` and `"!=="` do simple
- string comparison, but are included for completeness. Throws if an
- invalid comparison string is provided.
-* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
- `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
-* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
- in descending order when passed to `Array.sort()`.
-* `diff(v1, v2)`: Returns difference between two versions by the release type
- (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
- or null if the versions are the same.
-
-### Comparators
-
-* `intersects(comparator)`: Return true if the comparators intersect
-
-### Ranges
-
-* `validRange(range)`: Return the valid range or null if it's not valid
-* `satisfies(version, range)`: Return true if the version satisfies the
- range.
-* `maxSatisfying(versions, range)`: Return the highest version in the list
- that satisfies the range, or `null` if none of them do.
-* `minSatisfying(versions, range)`: Return the lowest version in the list
- that satisfies the range, or `null` if none of them do.
-* `minVersion(range)`: Return the lowest version that can possibly match
- the given range.
-* `gtr(version, range)`: Return `true` if version is greater than all the
- versions possible in the range.
-* `ltr(version, range)`: Return `true` if version is less than all the
- versions possible in the range.
-* `outside(version, range, hilo)`: Return true if the version is outside
- the bounds of the range in either the high or low direction. The
- `hilo` argument must be either the string `'>'` or `'<'`. (This is
- the function called by `gtr` and `ltr`.)
-* `intersects(range)`: Return true if any of the ranges comparators intersect
-
-Note that, since ranges may be non-contiguous, a version might not be
-greater than a range, less than a range, *or* satisfy a range! For
-example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
-until `2.0.0`, so the version `1.2.10` would not be greater than the
-range (because `2.0.1` satisfies, which is higher), nor less than the
-range (since `1.2.8` satisfies, which is lower), and it also does not
-satisfy the range.
-
-If you want to know if a version satisfies or does not satisfy a
-range, use the `satisfies(version, range)` function.
-
-### Coercion
-
-* `coerce(version)`: Coerces a string to semver if possible
-
-This aims to provide a very forgiving translation of a non-semver string to
-semver. It looks for the first digit in a string, and consumes all
-remaining characters which satisfy at least a partial semver (e.g., `1`,
-`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
-versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
-surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
-`3.4.0`). Only text which lacks digits will fail coercion (`version one`
-is not valid). The maximum length for any semver component considered for
-coercion is 16 characters; longer components will be ignored
-(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
-semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
-components are invalid (`9999999999999999.4.7.4` is likely invalid).
diff --git a/node_modules/lock-verify/node_modules/semver/bin/semver b/node_modules/lock-verify/node_modules/semver/bin/semver
deleted file mode 100755
index 801e77f13..000000000
--- a/node_modules/lock-verify/node_modules/semver/bin/semver
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env node
-// Standalone semver comparison program.
-// Exits successfully and prints matching version(s) if
-// any supplied version is valid and passes all tests.
-
-var argv = process.argv.slice(2)
-
-var versions = []
-
-var range = []
-
-var inc = null
-
-var version = require('../package.json').version
-
-var loose = false
-
-var includePrerelease = false
-
-var coerce = false
-
-var identifier
-
-var semver = require('../semver')
-
-var reverse = false
-
-var options = {}
-
-main()
-
-function main () {
- if (!argv.length) return help()
- while (argv.length) {
- var a = argv.shift()
- var indexOfEqualSign = a.indexOf('=')
- if (indexOfEqualSign !== -1) {
- a = a.slice(0, indexOfEqualSign)
- argv.unshift(a.slice(indexOfEqualSign + 1))
- }
- switch (a) {
- case '-rv': case '-rev': case '--rev': case '--reverse':
- reverse = true
- break
- case '-l': case '--loose':
- loose = true
- break
- case '-p': case '--include-prerelease':
- includePrerelease = true
- break
- case '-v': case '--version':
- versions.push(argv.shift())
- break
- case '-i': case '--inc': case '--increment':
- switch (argv[0]) {
- case 'major': case 'minor': case 'patch': case 'prerelease':
- case 'premajor': case 'preminor': case 'prepatch':
- inc = argv.shift()
- break
- default:
- inc = 'patch'
- break
- }
- break
- case '--preid':
- identifier = argv.shift()
- break
- case '-r': case '--range':
- range.push(argv.shift())
- break
- case '-c': case '--coerce':
- coerce = true
- break
- case '-h': case '--help': case '-?':
- return help()
- default:
- versions.push(a)
- break
- }
- }
-
- var options = { loose: loose, includePrerelease: includePrerelease }
-
- versions = versions.map(function (v) {
- return coerce ? (semver.coerce(v) || { version: v }).version : v
- }).filter(function (v) {
- return semver.valid(v)
- })
- if (!versions.length) return fail()
- if (inc && (versions.length !== 1 || range.length)) { return failInc() }
-
- for (var i = 0, l = range.length; i < l; i++) {
- versions = versions.filter(function (v) {
- return semver.satisfies(v, range[i], options)
- })
- if (!versions.length) return fail()
- }
- return success(versions)
-}
-
-function failInc () {
- console.error('--inc can only be used on a single version with no range')
- fail()
-}
-
-function fail () { process.exit(1) }
-
-function success () {
- var compare = reverse ? 'rcompare' : 'compare'
- versions.sort(function (a, b) {
- return semver[compare](a, b, options)
- }).map(function (v) {
- return semver.clean(v, options)
- }).map(function (v) {
- return inc ? semver.inc(v, inc, options, identifier) : v
- }).forEach(function (v, i, _) { console.log(v) })
-}
-
-function help () {
- console.log(['SemVer ' + version,
- '',
- 'A JavaScript implementation of the https://semver.org/ specification',
- 'Copyright Isaac Z. Schlueter',
- '',
- 'Usage: semver [options] <version> [<version> [...]]',
- 'Prints valid versions sorted by SemVer precedence',
- '',
- 'Options:',
- '-r --range <range>',
- ' Print versions that match the specified range.',
- '',
- '-i --increment [<level>]',
- ' Increment a version by the specified level. Level can',
- ' be one of: major, minor, patch, premajor, preminor,',
- " prepatch, or prerelease. Default level is 'patch'.",
- ' Only one version may be specified.',
- '',
- '--preid <identifier>',
- ' Identifier to be used to prefix premajor, preminor,',
- ' prepatch or prerelease version increments.',
- '',
- '-l --loose',
- ' Interpret versions and ranges loosely',
- '',
- '-p --include-prerelease',
- ' Always include prerelease versions in range matching',
- '',
- '-c --coerce',
- ' Coerce a string into SemVer if possible',
- ' (does not imply --loose)',
- '',
- 'Program exits successfully if any valid version satisfies',
- 'all supplied ranges, and prints all satisfying versions.',
- '',
- 'If no satisfying versions are found, then exits failure.',
- '',
- 'Versions are printed in ascending order, so supplying',
- 'multiple versions to the utility will just sort them.'
- ].join('\n'))
-}
diff --git a/node_modules/lock-verify/node_modules/semver/package.json b/node_modules/lock-verify/node_modules/semver/package.json
deleted file mode 100644
index 69d2db162..000000000
--- a/node_modules/lock-verify/node_modules/semver/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "semver",
- "version": "5.7.1",
- "description": "The semantic version parser used by npm.",
- "main": "semver.js",
- "scripts": {
- "test": "tap",
- "preversion": "npm test",
- "postversion": "npm publish",
- "postpublish": "git push origin --all; git push origin --tags"
- },
- "devDependencies": {
- "tap": "^13.0.0-rc.18"
- },
- "license": "ISC",
- "repository": "https://github.com/npm/node-semver",
- "bin": {
- "semver": "./bin/semver"
- },
- "files": [
- "bin",
- "range.bnf",
- "semver.js"
- ],
- "tap": {
- "check-coverage": true
- }
-}
diff --git a/node_modules/lock-verify/node_modules/semver/range.bnf b/node_modules/lock-verify/node_modules/semver/range.bnf
deleted file mode 100644
index d4c6ae0d7..000000000
--- a/node_modules/lock-verify/node_modules/semver/range.bnf
+++ /dev/null
@@ -1,16 +0,0 @@
-range-set ::= range ( logical-or range ) *
-logical-or ::= ( ' ' ) * '||' ( ' ' ) *
-range ::= hyphen | simple ( ' ' simple ) * | ''
-hyphen ::= partial ' - ' partial
-simple ::= primitive | partial | tilde | caret
-primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
-partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
-xr ::= 'x' | 'X' | '*' | nr
-nr ::= '0' | [1-9] ( [0-9] ) *
-tilde ::= '~' partial
-caret ::= '^' partial
-qualifier ::= ( '-' pre )? ( '+' build )?
-pre ::= parts
-build ::= parts
-parts ::= part ( '.' part ) *
-part ::= nr | [-0-9A-Za-z]+
diff --git a/node_modules/lock-verify/node_modules/semver/semver.js b/node_modules/lock-verify/node_modules/semver/semver.js
deleted file mode 100644
index d315d5d68..000000000
--- a/node_modules/lock-verify/node_modules/semver/semver.js
+++ /dev/null
@@ -1,1483 +0,0 @@
-exports = module.exports = SemVer
-
-var debug
-/* istanbul ignore next */
-if (typeof process === 'object' &&
- process.env &&
- process.env.NODE_DEBUG &&
- /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
- debug = function () {
- var args = Array.prototype.slice.call(arguments, 0)
- args.unshift('SEMVER')
- console.log.apply(console, args)
- }
-} else {
- debug = function () {}
-}
-
-// Note: this is the semver.org version of the spec that it implements
-// Not necessarily the package version of this code.
-exports.SEMVER_SPEC_VERSION = '2.0.0'
-
-var MAX_LENGTH = 256
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
- /* istanbul ignore next */ 9007199254740991
-
-// Max safe segment length for coercion.
-var MAX_SAFE_COMPONENT_LENGTH = 16
-
-// The actual regexps go on exports.re
-var re = exports.re = []
-var src = exports.src = []
-var R = 0
-
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
-
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
-
-var NUMERICIDENTIFIER = R++
-src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
-var NUMERICIDENTIFIERLOOSE = R++
-src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
-
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
-
-var NONNUMERICIDENTIFIER = R++
-src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
-
-// ## Main Version
-// Three dot-separated numeric identifiers.
-
-var MAINVERSION = R++
-src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')'
-
-var MAINVERSIONLOOSE = R++
-src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
-
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
-
-var PRERELEASEIDENTIFIER = R++
-src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
-
-var PRERELEASEIDENTIFIERLOOSE = R++
-src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
- '|' + src[NONNUMERICIDENTIFIER] + ')'
-
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
-
-var PRERELEASE = R++
-src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
-
-var PRERELEASELOOSE = R++
-src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
-
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
-
-var BUILDIDENTIFIER = R++
-src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
-
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
-
-var BUILD = R++
-src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
- '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
-
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
-
-// Note that the only major, minor, patch, and pre-release sections of
-// the version string are capturing groups. The build metadata is not a
-// capturing group, because it should not ever be used in version
-// comparison.
-
-var FULL = R++
-var FULLPLAIN = 'v?' + src[MAINVERSION] +
- src[PRERELEASE] + '?' +
- src[BUILD] + '?'
-
-src[FULL] = '^' + FULLPLAIN + '$'
-
-// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
-// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
-// common in the npm registry.
-var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
- src[PRERELEASELOOSE] + '?' +
- src[BUILD] + '?'
-
-var LOOSE = R++
-src[LOOSE] = '^' + LOOSEPLAIN + '$'
-
-var GTLT = R++
-src[GTLT] = '((?:<|>)?=?)'
-
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-var XRANGEIDENTIFIERLOOSE = R++
-src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
-var XRANGEIDENTIFIER = R++
-src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
-
-var XRANGEPLAIN = R++
-src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:' + src[PRERELEASE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
-
-var XRANGEPLAINLOOSE = R++
-src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[PRERELEASELOOSE] + ')?' +
- src[BUILD] + '?' +
- ')?)?'
-
-var XRANGE = R++
-src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
-var XRANGELOOSE = R++
-src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
-
-// Coercion.
-// Extract anything that could conceivably be a part of a valid semver
-var COERCE = R++
-src[COERCE] = '(?:^|[^\\d])' +
- '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:$|[^\\d])'
-
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-var LONETILDE = R++
-src[LONETILDE] = '(?:~>?)'
-
-var TILDETRIM = R++
-src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
-re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
-var tildeTrimReplace = '$1~'
-
-var TILDE = R++
-src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
-var TILDELOOSE = R++
-src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
-
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-var LONECARET = R++
-src[LONECARET] = '(?:\\^)'
-
-var CARETTRIM = R++
-src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
-re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
-var caretTrimReplace = '$1^'
-
-var CARET = R++
-src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
-var CARETLOOSE = R++
-src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
-
-// A simple gt/lt/eq thing, or just "" to indicate "any version"
-var COMPARATORLOOSE = R++
-src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'
-var COMPARATOR = R++
-src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'
-
-// An expression to strip any whitespace between the gtlt and the thing
-// it modifies, so that `> 1.2.3` ==> `>1.2.3`
-var COMPARATORTRIM = R++
-src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
- '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'
-
-// this one has to use the /g flag
-re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
-var comparatorTrimReplace = '$1$2$3'
-
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-var HYPHENRANGE = R++
-src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAIN] + ')' +
- '\\s*$'
-
-var HYPHENRANGELOOSE = R++
-src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s*$'
-
-// Star ranges basically just allow anything at all.
-var STAR = R++
-src[STAR] = '(<|>)?=?\\s*\\*'
-
-// Compile to actual regexp objects.
-// All are flag-free, unless they were created above with a flag.
-for (var i = 0; i < R; i++) {
- debug(i, src[i])
- if (!re[i]) {
- re[i] = new RegExp(src[i])
- }
-}
-
-exports.parse = parse
-function parse (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version !== 'string') {
- return null
- }
-
- if (version.length > MAX_LENGTH) {
- return null
- }
-
- var r = options.loose ? re[LOOSE] : re[FULL]
- if (!r.test(version)) {
- return null
- }
-
- try {
- return new SemVer(version, options)
- } catch (er) {
- return null
- }
-}
-
-exports.valid = valid
-function valid (version, options) {
- var v = parse(version, options)
- return v ? v.version : null
-}
-
-exports.clean = clean
-function clean (version, options) {
- var s = parse(version.trim().replace(/^[=v]+/, ''), options)
- return s ? s.version : null
-}
-
-exports.SemVer = SemVer
-
-function SemVer (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
- if (version instanceof SemVer) {
- if (version.loose === options.loose) {
- return version
- } else {
- version = version.version
- }
- } else if (typeof version !== 'string') {
- throw new TypeError('Invalid Version: ' + version)
- }
-
- if (version.length > MAX_LENGTH) {
- throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
- }
-
- if (!(this instanceof SemVer)) {
- return new SemVer(version, options)
- }
-
- debug('SemVer', version, options)
- this.options = options
- this.loose = !!options.loose
-
- var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
-
- if (!m) {
- throw new TypeError('Invalid Version: ' + version)
- }
-
- this.raw = version
-
- // these are actually numbers
- this.major = +m[1]
- this.minor = +m[2]
- this.patch = +m[3]
-
- if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
- throw new TypeError('Invalid major version')
- }
-
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
- throw new TypeError('Invalid minor version')
- }
-
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
- throw new TypeError('Invalid patch version')
- }
-
- // numberify any prerelease numeric ids
- if (!m[4]) {
- this.prerelease = []
- } else {
- this.prerelease = m[4].split('.').map(function (id) {
- if (/^[0-9]+$/.test(id)) {
- var num = +id
- if (num >= 0 && num < MAX_SAFE_INTEGER) {
- return num
- }
- }
- return id
- })
- }
-
- this.build = m[5] ? m[5].split('.') : []
- this.format()
-}
-
-SemVer.prototype.format = function () {
- this.version = this.major + '.' + this.minor + '.' + this.patch
- if (this.prerelease.length) {
- this.version += '-' + this.prerelease.join('.')
- }
- return this.version
-}
-
-SemVer.prototype.toString = function () {
- return this.version
-}
-
-SemVer.prototype.compare = function (other) {
- debug('SemVer.compare', this.version, this.options, other)
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- return this.compareMain(other) || this.comparePre(other)
-}
-
-SemVer.prototype.compareMain = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- return compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch)
-}
-
-SemVer.prototype.comparePre = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- // NOT having a prerelease is > having one
- if (this.prerelease.length && !other.prerelease.length) {
- return -1
- } else if (!this.prerelease.length && other.prerelease.length) {
- return 1
- } else if (!this.prerelease.length && !other.prerelease.length) {
- return 0
- }
-
- var i = 0
- do {
- var a = this.prerelease[i]
- var b = other.prerelease[i]
- debug('prerelease compare', i, a, b)
- if (a === undefined && b === undefined) {
- return 0
- } else if (b === undefined) {
- return 1
- } else if (a === undefined) {
- return -1
- } else if (a === b) {
- continue
- } else {
- return compareIdentifiers(a, b)
- }
- } while (++i)
-}
-
-// preminor will bump the version up to the next minor release, and immediately
-// down to pre-release. premajor and prepatch work the same way.
-SemVer.prototype.inc = function (release, identifier) {
- switch (release) {
- case 'premajor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor = 0
- this.major++
- this.inc('pre', identifier)
- break
- case 'preminor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor++
- this.inc('pre', identifier)
- break
- case 'prepatch':
- // If this is already a prerelease, it will bump to the next version
- // drop any prereleases that might already exist, since they are not
- // relevant at this point.
- this.prerelease.length = 0
- this.inc('patch', identifier)
- this.inc('pre', identifier)
- break
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case 'prerelease':
- if (this.prerelease.length === 0) {
- this.inc('patch', identifier)
- }
- this.inc('pre', identifier)
- break
-
- case 'major':
- // If this is a pre-major version, bump up to the same major version.
- // Otherwise increment major.
- // 1.0.0-5 bumps to 1.0.0
- // 1.1.0 bumps to 2.0.0
- if (this.minor !== 0 ||
- this.patch !== 0 ||
- this.prerelease.length === 0) {
- this.major++
- }
- this.minor = 0
- this.patch = 0
- this.prerelease = []
- break
- case 'minor':
- // If this is a pre-minor version, bump up to the same minor version.
- // Otherwise increment minor.
- // 1.2.0-5 bumps to 1.2.0
- // 1.2.1 bumps to 1.3.0
- if (this.patch !== 0 || this.prerelease.length === 0) {
- this.minor++
- }
- this.patch = 0
- this.prerelease = []
- break
- case 'patch':
- // If this is not a pre-release version, it will increment the patch.
- // If it is a pre-release it will bump up to the same patch version.
- // 1.2.0-5 patches to 1.2.0
- // 1.2.0 patches to 1.2.1
- if (this.prerelease.length === 0) {
- this.patch++
- }
- this.prerelease = []
- break
- // This probably shouldn't be used publicly.
- // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
- case 'pre':
- if (this.prerelease.length === 0) {
- this.prerelease = [0]
- } else {
- var i = this.prerelease.length
- while (--i >= 0) {
- if (typeof this.prerelease[i] === 'number') {
- this.prerelease[i]++
- i = -2
- }
- }
- if (i === -1) {
- // didn't increment anything
- this.prerelease.push(0)
- }
- }
- if (identifier) {
- // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
- // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
- if (this.prerelease[0] === identifier) {
- if (isNaN(this.prerelease[1])) {
- this.prerelease = [identifier, 0]
- }
- } else {
- this.prerelease = [identifier, 0]
- }
- }
- break
-
- default:
- throw new Error('invalid increment argument: ' + release)
- }
- this.format()
- this.raw = this.version
- return this
-}
-
-exports.inc = inc
-function inc (version, release, loose, identifier) {
- if (typeof (loose) === 'string') {
- identifier = loose
- loose = undefined
- }
-
- try {
- return new SemVer(version, loose).inc(release, identifier).version
- } catch (er) {
- return null
- }
-}
-
-exports.diff = diff
-function diff (version1, version2) {
- if (eq(version1, version2)) {
- return null
- } else {
- var v1 = parse(version1)
- var v2 = parse(version2)
- var prefix = ''
- if (v1.prerelease.length || v2.prerelease.length) {
- prefix = 'pre'
- var defaultResult = 'prerelease'
- }
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return prefix + key
- }
- }
- }
- return defaultResult // may be undefined
- }
-}
-
-exports.compareIdentifiers = compareIdentifiers
-
-var numeric = /^[0-9]+$/
-function compareIdentifiers (a, b) {
- var anum = numeric.test(a)
- var bnum = numeric.test(b)
-
- if (anum && bnum) {
- a = +a
- b = +b
- }
-
- return a === b ? 0
- : (anum && !bnum) ? -1
- : (bnum && !anum) ? 1
- : a < b ? -1
- : 1
-}
-
-exports.rcompareIdentifiers = rcompareIdentifiers
-function rcompareIdentifiers (a, b) {
- return compareIdentifiers(b, a)
-}
-
-exports.major = major
-function major (a, loose) {
- return new SemVer(a, loose).major
-}
-
-exports.minor = minor
-function minor (a, loose) {
- return new SemVer(a, loose).minor
-}
-
-exports.patch = patch
-function patch (a, loose) {
- return new SemVer(a, loose).patch
-}
-
-exports.compare = compare
-function compare (a, b, loose) {
- return new SemVer(a, loose).compare(new SemVer(b, loose))
-}
-
-exports.compareLoose = compareLoose
-function compareLoose (a, b) {
- return compare(a, b, true)
-}
-
-exports.rcompare = rcompare
-function rcompare (a, b, loose) {
- return compare(b, a, loose)
-}
-
-exports.sort = sort
-function sort (list, loose) {
- return list.sort(function (a, b) {
- return exports.compare(a, b, loose)
- })
-}
-
-exports.rsort = rsort
-function rsort (list, loose) {
- return list.sort(function (a, b) {
- return exports.rcompare(a, b, loose)
- })
-}
-
-exports.gt = gt
-function gt (a, b, loose) {
- return compare(a, b, loose) > 0
-}
-
-exports.lt = lt
-function lt (a, b, loose) {
- return compare(a, b, loose) < 0
-}
-
-exports.eq = eq
-function eq (a, b, loose) {
- return compare(a, b, loose) === 0
-}
-
-exports.neq = neq
-function neq (a, b, loose) {
- return compare(a, b, loose) !== 0
-}
-
-exports.gte = gte
-function gte (a, b, loose) {
- return compare(a, b, loose) >= 0
-}
-
-exports.lte = lte
-function lte (a, b, loose) {
- return compare(a, b, loose) <= 0
-}
-
-exports.cmp = cmp
-function cmp (a, op, b, loose) {
- switch (op) {
- case '===':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a === b
-
- case '!==':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a !== b
-
- case '':
- case '=':
- case '==':
- return eq(a, b, loose)
-
- case '!=':
- return neq(a, b, loose)
-
- case '>':
- return gt(a, b, loose)
-
- case '>=':
- return gte(a, b, loose)
-
- case '<':
- return lt(a, b, loose)
-
- case '<=':
- return lte(a, b, loose)
-
- default:
- throw new TypeError('Invalid operator: ' + op)
- }
-}
-
-exports.Comparator = Comparator
-function Comparator (comp, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (comp instanceof Comparator) {
- if (comp.loose === !!options.loose) {
- return comp
- } else {
- comp = comp.value
- }
- }
-
- if (!(this instanceof Comparator)) {
- return new Comparator(comp, options)
- }
-
- debug('comparator', comp, options)
- this.options = options
- this.loose = !!options.loose
- this.parse(comp)
-
- if (this.semver === ANY) {
- this.value = ''
- } else {
- this.value = this.operator + this.semver.version
- }
-
- debug('comp', this)
-}
-
-var ANY = {}
-Comparator.prototype.parse = function (comp) {
- var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
- var m = comp.match(r)
-
- if (!m) {
- throw new TypeError('Invalid comparator: ' + comp)
- }
-
- this.operator = m[1]
- if (this.operator === '=') {
- this.operator = ''
- }
-
- // if it literally is just '>' or '' then allow anything.
- if (!m[2]) {
- this.semver = ANY
- } else {
- this.semver = new SemVer(m[2], this.options.loose)
- }
-}
-
-Comparator.prototype.toString = function () {
- return this.value
-}
-
-Comparator.prototype.test = function (version) {
- debug('Comparator.test', version, this.options.loose)
-
- if (this.semver === ANY) {
- return true
- }
-
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
- }
-
- return cmp(version, this.operator, this.semver, this.options)
-}
-
-Comparator.prototype.intersects = function (comp, options) {
- if (!(comp instanceof Comparator)) {
- throw new TypeError('a Comparator is required')
- }
-
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- var rangeTmp
-
- if (this.operator === '') {
- rangeTmp = new Range(comp.value, options)
- return satisfies(this.value, rangeTmp, options)
- } else if (comp.operator === '') {
- rangeTmp = new Range(this.value, options)
- return satisfies(comp.semver, rangeTmp, options)
- }
-
- var sameDirectionIncreasing =
- (this.operator === '>=' || this.operator === '>') &&
- (comp.operator === '>=' || comp.operator === '>')
- var sameDirectionDecreasing =
- (this.operator === '<=' || this.operator === '<') &&
- (comp.operator === '<=' || comp.operator === '<')
- var sameSemVer = this.semver.version === comp.semver.version
- var differentDirectionsInclusive =
- (this.operator === '>=' || this.operator === '<=') &&
- (comp.operator === '>=' || comp.operator === '<=')
- var oppositeDirectionsLessThan =
- cmp(this.semver, '<', comp.semver, options) &&
- ((this.operator === '>=' || this.operator === '>') &&
- (comp.operator === '<=' || comp.operator === '<'))
- var oppositeDirectionsGreaterThan =
- cmp(this.semver, '>', comp.semver, options) &&
- ((this.operator === '<=' || this.operator === '<') &&
- (comp.operator === '>=' || comp.operator === '>'))
-
- return sameDirectionIncreasing || sameDirectionDecreasing ||
- (sameSemVer && differentDirectionsInclusive) ||
- oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
-}
-
-exports.Range = Range
-function Range (range, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- if (range instanceof Range) {
- if (range.loose === !!options.loose &&
- range.includePrerelease === !!options.includePrerelease) {
- return range
- } else {
- return new Range(range.raw, options)
- }
- }
-
- if (range instanceof Comparator) {
- return new Range(range.value, options)
- }
-
- if (!(this instanceof Range)) {
- return new Range(range, options)
- }
-
- this.options = options
- this.loose = !!options.loose
- this.includePrerelease = !!options.includePrerelease
-
- // First, split based on boolean or ||
- this.raw = range
- this.set = range.split(/\s*\|\|\s*/).map(function (range) {
- return this.parseRange(range.trim())
- }, this).filter(function (c) {
- // throw out any that are not relevant for whatever reason
- return c.length
- })
-
- if (!this.set.length) {
- throw new TypeError('Invalid SemVer Range: ' + range)
- }
-
- this.format()
-}
-
-Range.prototype.format = function () {
- this.range = this.set.map(function (comps) {
- return comps.join(' ').trim()
- }).join('||').trim()
- return this.range
-}
-
-Range.prototype.toString = function () {
- return this.range
-}
-
-Range.prototype.parseRange = function (range) {
- var loose = this.options.loose
- range = range.trim()
- // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
- var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]
- range = range.replace(hr, hyphenReplace)
- debug('hyphen replace', range)
- // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
- range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)
- debug('comparator trim', range, re[COMPARATORTRIM])
-
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[TILDETRIM], tildeTrimReplace)
-
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[CARETTRIM], caretTrimReplace)
-
- // normalize spaces
- range = range.split(/\s+/).join(' ')
-
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
-
- var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
- var set = range.split(' ').map(function (comp) {
- return parseComparator(comp, this.options)
- }, this).join(' ').split(/\s+/)
- if (this.options.loose) {
- // in loose mode, throw out any that are not valid comparators
- set = set.filter(function (comp) {
- return !!comp.match(compRe)
- })
- }
- set = set.map(function (comp) {
- return new Comparator(comp, this.options)
- }, this)
-
- return set
-}
-
-Range.prototype.intersects = function (range, options) {
- if (!(range instanceof Range)) {
- throw new TypeError('a Range is required')
- }
-
- return this.set.some(function (thisComparators) {
- return thisComparators.every(function (thisComparator) {
- return range.set.some(function (rangeComparators) {
- return rangeComparators.every(function (rangeComparator) {
- return thisComparator.intersects(rangeComparator, options)
- })
- })
- })
- })
-}
-
-// Mostly just for testing and legacy API reasons
-exports.toComparators = toComparators
-function toComparators (range, options) {
- return new Range(range, options).set.map(function (comp) {
- return comp.map(function (c) {
- return c.value
- }).join(' ').trim().split(' ')
- })
-}
-
-// comprised of xranges, tildes, stars, and gtlt's at this point.
-// already replaced the hyphen ranges
-// turn into a set of JUST comparators.
-function parseComparator (comp, options) {
- debug('comp', comp, options)
- comp = replaceCarets(comp, options)
- debug('caret', comp)
- comp = replaceTildes(comp, options)
- debug('tildes', comp)
- comp = replaceXRanges(comp, options)
- debug('xrange', comp)
- comp = replaceStars(comp, options)
- debug('stars', comp)
- return comp
-}
-
-function isX (id) {
- return !id || id.toLowerCase() === 'x' || id === '*'
-}
-
-// ~, ~> --> * (any, kinda silly)
-// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
-// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
-// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
-// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
-// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
-function replaceTildes (comp, options) {
- return comp.trim().split(/\s+/).map(function (comp) {
- return replaceTilde(comp, options)
- }).join(' ')
-}
-
-function replaceTilde (comp, options) {
- var r = options.loose ? re[TILDELOOSE] : re[TILDE]
- return comp.replace(r, function (_, M, m, p, pr) {
- debug('tilde', comp, _, M, m, p, pr)
- var ret
-
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (isX(p)) {
- // ~1.2 == >=1.2.0 <1.3.0
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- } else if (pr) {
- debug('replaceTilde pr', pr)
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + (+m + 1) + '.0'
- } else {
- // ~1.2.3 == >=1.2.3 <1.3.0
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
-
- debug('tilde return', ret)
- return ret
- })
-}
-
-// ^ --> * (any, kinda silly)
-// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
-// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
-// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
-// ^1.2.3 --> >=1.2.3 <2.0.0
-// ^1.2.0 --> >=1.2.0 <2.0.0
-function replaceCarets (comp, options) {
- return comp.trim().split(/\s+/).map(function (comp) {
- return replaceCaret(comp, options)
- }).join(' ')
-}
-
-function replaceCaret (comp, options) {
- debug('caret', comp, options)
- var r = options.loose ? re[CARETLOOSE] : re[CARET]
- return comp.replace(r, function (_, M, m, p, pr) {
- debug('caret', comp, _, M, m, p, pr)
- var ret
-
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (isX(p)) {
- if (M === '0') {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- } else {
- ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
- }
- } else if (pr) {
- debug('replaceCaret pr', pr)
- if (M === '0') {
- if (m === '0') {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + m + '.' + (+p + 1)
- } else {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
- } else {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + (+M + 1) + '.0.0'
- }
- } else {
- debug('no pr')
- if (M === '0') {
- if (m === '0') {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + m + '.' + (+p + 1)
- } else {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
- } else {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + (+M + 1) + '.0.0'
- }
- }
-
- debug('caret return', ret)
- return ret
- })
-}
-
-function replaceXRanges (comp, options) {
- debug('replaceXRanges', comp, options)
- return comp.split(/\s+/).map(function (comp) {
- return replaceXRange(comp, options)
- }).join(' ')
-}
-
-function replaceXRange (comp, options) {
- comp = comp.trim()
- var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]
- return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
- debug('xRange', comp, ret, gtlt, M, m, p, pr)
- var xM = isX(M)
- var xm = xM || isX(m)
- var xp = xm || isX(p)
- var anyX = xp
-
- if (gtlt === '=' && anyX) {
- gtlt = ''
- }
-
- if (xM) {
- if (gtlt === '>' || gtlt === '<') {
- // nothing is allowed
- ret = '<0.0.0'
- } else {
- // nothing is forbidden
- ret = '*'
- }
- } else if (gtlt && anyX) {
- // we know patch is an x, because we have any x at all.
- // replace X with 0
- if (xm) {
- m = 0
- }
- p = 0
-
- if (gtlt === '>') {
- // >1 => >=2.0.0
- // >1.2 => >=1.3.0
- // >1.2.3 => >= 1.2.4
- gtlt = '>='
- if (xm) {
- M = +M + 1
- m = 0
- p = 0
- } else {
- m = +m + 1
- p = 0
- }
- } else if (gtlt === '<=') {
- // <=0.7.x is actually <0.8.0, since any 0.7.x should
- // pass. Similarly, <=7.x is actually <8.0.0, etc.
- gtlt = '<'
- if (xm) {
- M = +M + 1
- } else {
- m = +m + 1
- }
- }
-
- ret = gtlt + M + '.' + m + '.' + p
- } else if (xm) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (xp) {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- }
-
- debug('xRange return', ret)
-
- return ret
- })
-}
-
-// Because * is AND-ed with everything else in the comparator,
-// and '' means "any version", just remove the *s entirely.
-function replaceStars (comp, options) {
- debug('replaceStars', comp, options)
- // Looseness is ignored here. star is always as loose as it gets!
- return comp.trim().replace(re[STAR], '')
-}
-
-// This function is passed to string.replace(re[HYPHENRANGE])
-// M, m, patch, prerelease, build
-// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
-// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
-// 1.2 - 3.4 => >=1.2.0 <3.5.0
-function hyphenReplace ($0,
- from, fM, fm, fp, fpr, fb,
- to, tM, tm, tp, tpr, tb) {
- if (isX(fM)) {
- from = ''
- } else if (isX(fm)) {
- from = '>=' + fM + '.0.0'
- } else if (isX(fp)) {
- from = '>=' + fM + '.' + fm + '.0'
- } else {
- from = '>=' + from
- }
-
- if (isX(tM)) {
- to = ''
- } else if (isX(tm)) {
- to = '<' + (+tM + 1) + '.0.0'
- } else if (isX(tp)) {
- to = '<' + tM + '.' + (+tm + 1) + '.0'
- } else if (tpr) {
- to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
- } else {
- to = '<=' + to
- }
-
- return (from + ' ' + to).trim()
-}
-
-// if ANY of the sets match ALL of its comparators, then pass
-Range.prototype.test = function (version) {
- if (!version) {
- return false
- }
-
- if (typeof version === 'string') {
- version = new SemVer(version, this.options)
- }
-
- for (var i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version, this.options)) {
- return true
- }
- }
- return false
-}
-
-function testSet (set, version, options) {
- for (var i = 0; i < set.length; i++) {
- if (!set[i].test(version)) {
- return false
- }
- }
-
- if (version.prerelease.length && !options.includePrerelease) {
- // Find the set of versions that are allowed to have prereleases
- // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
- // That should allow `1.2.3-pr.2` to pass.
- // However, `1.2.4-alpha.notready` should NOT be allowed,
- // even though it's within the range set by the comparators.
- for (i = 0; i < set.length; i++) {
- debug(set[i].semver)
- if (set[i].semver === ANY) {
- continue
- }
-
- if (set[i].semver.prerelease.length > 0) {
- var allowed = set[i].semver
- if (allowed.major === version.major &&
- allowed.minor === version.minor &&
- allowed.patch === version.patch) {
- return true
- }
- }
- }
-
- // Version has a -pre, but it's not one of the ones we like.
- return false
- }
-
- return true
-}
-
-exports.satisfies = satisfies
-function satisfies (version, range, options) {
- try {
- range = new Range(range, options)
- } catch (er) {
- return false
- }
- return range.test(version)
-}
-
-exports.maxSatisfying = maxSatisfying
-function maxSatisfying (versions, range, options) {
- var max = null
- var maxSV = null
- try {
- var rangeObj = new Range(range, options)
- } catch (er) {
- return null
- }
- versions.forEach(function (v) {
- if (rangeObj.test(v)) {
- // satisfies(v, range, options)
- if (!max || maxSV.compare(v) === -1) {
- // compare(max, v, true)
- max = v
- maxSV = new SemVer(max, options)
- }
- }
- })
- return max
-}
-
-exports.minSatisfying = minSatisfying
-function minSatisfying (versions, range, options) {
- var min = null
- var minSV = null
- try {
- var rangeObj = new Range(range, options)
- } catch (er) {
- return null
- }
- versions.forEach(function (v) {
- if (rangeObj.test(v)) {
- // satisfies(v, range, options)
- if (!min || minSV.compare(v) === 1) {
- // compare(min, v, true)
- min = v
- minSV = new SemVer(min, options)
- }
- }
- })
- return min
-}
-
-exports.minVersion = minVersion
-function minVersion (range, loose) {
- range = new Range(range, loose)
-
- var minver = new SemVer('0.0.0')
- if (range.test(minver)) {
- return minver
- }
-
- minver = new SemVer('0.0.0-0')
- if (range.test(minver)) {
- return minver
- }
-
- minver = null
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
-
- comparators.forEach(function (comparator) {
- // Clone to avoid manipulating the comparator's semver object.
- var compver = new SemVer(comparator.semver.version)
- switch (comparator.operator) {
- case '>':
- if (compver.prerelease.length === 0) {
- compver.patch++
- } else {
- compver.prerelease.push(0)
- }
- compver.raw = compver.format()
- /* fallthrough */
- case '':
- case '>=':
- if (!minver || gt(minver, compver)) {
- minver = compver
- }
- break
- case '<':
- case '<=':
- /* Ignore maximum versions */
- break
- /* istanbul ignore next */
- default:
- throw new Error('Unexpected operation: ' + comparator.operator)
- }
- })
- }
-
- if (minver && range.test(minver)) {
- return minver
- }
-
- return null
-}
-
-exports.validRange = validRange
-function validRange (range, options) {
- try {
- // Return '*' instead of '' so that truthiness works.
- // This will throw if it's invalid anyway
- return new Range(range, options).range || '*'
- } catch (er) {
- return null
- }
-}
-
-// Determine if version is less than all the versions possible in the range
-exports.ltr = ltr
-function ltr (version, range, options) {
- return outside(version, range, '<', options)
-}
-
-// Determine if version is greater than all the versions possible in the range.
-exports.gtr = gtr
-function gtr (version, range, options) {
- return outside(version, range, '>', options)
-}
-
-exports.outside = outside
-function outside (version, range, hilo, options) {
- version = new SemVer(version, options)
- range = new Range(range, options)
-
- var gtfn, ltefn, ltfn, comp, ecomp
- switch (hilo) {
- case '>':
- gtfn = gt
- ltefn = lte
- ltfn = lt
- comp = '>'
- ecomp = '>='
- break
- case '<':
- gtfn = lt
- ltefn = gte
- ltfn = gt
- comp = '<'
- ecomp = '<='
- break
- default:
- throw new TypeError('Must provide a hilo val of "<" or ">"')
- }
-
- // If it satisifes the range it is not outside
- if (satisfies(version, range, options)) {
- return false
- }
-
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
-
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
-
- var high = null
- var low = null
-
- comparators.forEach(function (comparator) {
- if (comparator.semver === ANY) {
- comparator = new Comparator('>=0.0.0')
- }
- high = high || comparator
- low = low || comparator
- if (gtfn(comparator.semver, high.semver, options)) {
- high = comparator
- } else if (ltfn(comparator.semver, low.semver, options)) {
- low = comparator
- }
- })
-
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false
- }
-
- // If the lowest version comparator has an operator and our version
- // is less than it then it isn't higher than the range
- if ((!low.operator || low.operator === comp) &&
- ltefn(version, low.semver)) {
- return false
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
- return false
- }
- }
- return true
-}
-
-exports.prerelease = prerelease
-function prerelease (version, options) {
- var parsed = parse(version, options)
- return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
-}
-
-exports.intersects = intersects
-function intersects (r1, r2, options) {
- r1 = new Range(r1, options)
- r2 = new Range(r2, options)
- return r1.intersects(r2)
-}
-
-exports.coerce = coerce
-function coerce (version) {
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version !== 'string') {
- return null
- }
-
- var match = version.match(re[COERCE])
-
- if (match == null) {
- return null
- }
-
- return parse(match[1] +
- '.' + (match[2] || '0') +
- '.' + (match[3] || '0'))
-}
diff --git a/node_modules/lock-verify/package.json b/node_modules/lock-verify/package.json
deleted file mode 100644
index 17c967bdf..000000000
--- a/node_modules/lock-verify/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "lock-verify",
- "version": "2.2.1",
- "description": "Report if your package.json is out of sync with your package-lock.json.",
- "main": "index.js",
- "bin": "cli.js",
- "author": "Rebecca Turner <me@re-becca.org> (http://re-becca.org/)",
- "license": "ISC",
- "dependencies": {
- "npm-package-arg": "^6.1.0",
- "semver": "^5.4.1",
- "@iarna/cli": "^1.2.0"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/iarna/lock-verify.git"
- },
- "bugs": {
- "url": "https://github.com/iarna/lock-verify/issues"
- },
- "homepage": "https://github.com/iarna/lock-verify#readme",
- "files": [
- "index.js",
- "cli.js"
- ]
-}
diff --git a/node_modules/lodash._baseuniq/LICENSE b/node_modules/lodash._baseuniq/LICENSE
deleted file mode 100644
index e0c69d560..000000000
--- a/node_modules/lodash._baseuniq/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Copyright jQuery Foundation and other contributors <https://jquery.org/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
diff --git a/node_modules/lodash._baseuniq/README.md b/node_modules/lodash._baseuniq/README.md
deleted file mode 100644
index c18dbb6c3..000000000
--- a/node_modules/lodash._baseuniq/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# lodash._baseuniq v4.6.0
-
-The internal [lodash](https://lodash.com/) function `baseUniq` exported as a [Node.js](https://nodejs.org/) module.
-
-## Installation
-
-Using npm:
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash._baseuniq
-```
-
-In Node.js:
-```js
-var baseUniq = require('lodash._baseuniq');
-```
-
-See the [package source](https://github.com/lodash/lodash/blob/4.6.0-npm-packages/lodash._baseuniq) for more details.
diff --git a/node_modules/lodash._baseuniq/index.js b/node_modules/lodash._baseuniq/index.js
deleted file mode 100644
index 8f3094f9b..000000000
--- a/node_modules/lodash._baseuniq/index.js
+++ /dev/null
@@ -1,801 +0,0 @@
-/**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-var createSet = require('lodash._createset'),
- root = require('lodash._root');
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** `Object#toString` result references. */
-var funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]';
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} array The array to search.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
- return !!array.length && baseIndexOf(array, value, 0) > -1;
-}
-
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} array The array to search.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
- var index = -1,
- length = array.length;
-
- while (++index < length) {
- if (comparator(value, array[index])) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to search.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
- if (value !== value) {
- return indexOfNaN(array, fromIndex);
- }
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (array[index] === value) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * Checks if a cache value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function cacheHas(cache, key) {
- return cache.has(key);
-}
-
-/**
- * Gets the index at which the first occurrence of `NaN` is found in `array`.
- *
- * @private
- * @param {Array} array The array to search.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched `NaN`, else `-1`.
- */
-function indexOfNaN(array, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 0 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- var other = array[index];
- if (other !== other) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
-}
-
-/**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
-function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
-}
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype,
- objectProto = Object.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = Function.prototype.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map'),
- nativeCreate = getNative(Object, 'create');
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
-}
-
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
- return this.has(key) && delete this.__data__[key];
-}
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
-}
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
- var data = this.__data__;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
- this.__data__ = [];
-}
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- return true;
-}
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
-}
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
-}
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
-}
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
- return getMapData(this, key)['delete'](key);
-}
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
- return getMapData(this, key).get(key);
-}
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
- return getMapData(this, key).has(key);
-}
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
- getMapData(this, key).set(key, value);
- return this;
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-/**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
-function SetCache(values) {
- var index = -1,
- length = values ? values.length : 0;
-
- this.__data__ = new MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
-}
-
-/**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
-function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
- return this;
-}
-
-/**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
-function setCacheHas(value) {
- return this.__data__.has(value);
-}
-
-// Add methods to `SetCache`.
-SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-SetCache.prototype.has = setCacheHas;
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to search.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseUniq(array, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- length = array.length,
- isCommon = true,
- result = [],
- seen = result;
-
- if (comparator) {
- isCommon = false;
- includes = arrayIncludesWith;
- }
- else if (length >= LARGE_ARRAY_SIZE) {
- var set = iteratee ? null : createSet(array);
- if (set) {
- return setToArray(set);
- }
- isCommon = false;
- includes = cacheHas;
- seen = new SetCache;
- }
- else {
- seen = iteratee ? [] : result;
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var seenIndex = seen.length;
- while (seenIndex--) {
- if (seen[seenIndex] === computed) {
- continue outer;
- }
- }
- if (iteratee) {
- seen.push(computed);
- }
- result.push(value);
- }
- else if (!includes(seen, computed, comparator)) {
- if (seen !== result) {
- seen.push(computed);
- }
- result.push(value);
- }
- }
- return result;
-}
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
-}
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = object[key];
- return isNative(value) ? value : undefined;
-}
-
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
-}
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'user': 'fred' };
- * var other = { 'user': 'fred' };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
- return value === other || (value !== value && other !== other);
-}
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified,
- * else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8 which returns 'object' for typed array and weak map constructors,
- // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * Checks if `value` is a native function.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- * @example
- *
- * _.isNative(Array.prototype.push);
- * // => true
- *
- * _.isNative(_);
- * // => false
- */
-function isNative(value) {
- if (!isObject(value)) {
- return false;
- }
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-module.exports = baseUniq;
diff --git a/node_modules/lodash._baseuniq/package.json b/node_modules/lodash._baseuniq/package.json
deleted file mode 100644
index f651973ea..000000000
--- a/node_modules/lodash._baseuniq/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "lodash._baseuniq",
- "version": "4.6.0",
- "description": "The internal lodash function `baseUniq` exported as a module.",
- "homepage": "https://lodash.com/",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "contributors": [
- "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
- "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
- ],
- "repository": "lodash/lodash",
- "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" },
- "dependencies": {
- "lodash._createset": "~4.0.0",
- "lodash._root": "~3.0.0"
- }
-}
diff --git a/node_modules/lodash._createset/LICENSE b/node_modules/lodash._createset/LICENSE
deleted file mode 100644
index e0c69d560..000000000
--- a/node_modules/lodash._createset/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Copyright jQuery Foundation and other contributors <https://jquery.org/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
diff --git a/node_modules/lodash._createset/README.md b/node_modules/lodash._createset/README.md
deleted file mode 100644
index 6486d7e85..000000000
--- a/node_modules/lodash._createset/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# lodash._createset v4.0.3
-
-The internal [lodash](https://lodash.com/) function `createSet` exported as a [Node.js](https://nodejs.org/) module.
-
-## Installation
-
-Using npm:
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash._createset
-```
-
-In Node.js:
-```js
-var createSet = require('lodash._createset');
-```
-
-See the [package source](https://github.com/lodash/lodash/blob/4.0.3-npm-packages/lodash._createset) for more details.
diff --git a/node_modules/lodash._createset/index.js b/node_modules/lodash._createset/index.js
deleted file mode 100644
index 9cadd2eee..000000000
--- a/node_modules/lodash._createset/index.js
+++ /dev/null
@@ -1,280 +0,0 @@
-/**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/** `Object#toString` result references. */
-var funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]';
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Used to determine if values are of the language type `Object`. */
-var objectTypes = {
- 'function': true,
- 'object': true
-};
-
-/** Detect free variable `exports`. */
-var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)
- ? exports
- : undefined;
-
-/** Detect free variable `module`. */
-var freeModule = (objectTypes[typeof module] && module && !module.nodeType)
- ? module
- : undefined;
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);
-
-/** Detect free variable `self`. */
-var freeSelf = checkGlobal(objectTypes[typeof self] && self);
-
-/** Detect free variable `window`. */
-var freeWindow = checkGlobal(objectTypes[typeof window] && window);
-
-/** Detect `this` as the global object. */
-var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
-
-/**
- * Used as a reference to the global object.
- *
- * The `this` value is used if it's the global object to avoid Greasemonkey's
- * restricted `window` object, otherwise the `window` object is used.
- */
-var root = freeGlobal ||
- ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||
- freeSelf || thisGlobal || Function('return this')();
-
-/**
- * Checks if `value` is a global object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {null|Object} Returns `value` if it's a global object, else `null`.
- */
-function checkGlobal(value) {
- return (value && value.Object === Object) ? value : null;
-}
-
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
-}
-
-/**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
-function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
-}
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = Function.prototype.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/* Built-in method references that are verified to be native. */
-var Set = getNative(root, 'Set');
-
-/**
- * Creates a set of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
-var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
- return new Set(values);
-};
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = object[key];
- return isNative(value) ? value : undefined;
-}
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified,
- * else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8 which returns 'object' for typed array and weak map constructors,
- // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * Checks if `value` is a native function.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- * @example
- *
- * _.isNative(Array.prototype.push);
- * // => true
- *
- * _.isNative(_);
- * // => false
- */
-function isNative(value) {
- if (!isObject(value)) {
- return false;
- }
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-/**
- * A no-operation function that returns `undefined` regardless of the
- * arguments it receives.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * var object = { 'user': 'fred' };
- *
- * _.noop(object) === undefined;
- * // => true
- */
-function noop() {
- // No operation performed.
-}
-
-module.exports = createSet;
diff --git a/node_modules/lodash._createset/package.json b/node_modules/lodash._createset/package.json
deleted file mode 100644
index ca7e01780..000000000
--- a/node_modules/lodash._createset/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "lodash._createset",
- "version": "4.0.3",
- "description": "The internal lodash function `createSet` exported as a module.",
- "homepage": "https://lodash.com/",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "contributors": [
- "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
- "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
- ],
- "repository": "lodash/lodash",
- "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }
-}
diff --git a/node_modules/lodash._root/LICENSE b/node_modules/lodash._root/LICENSE
deleted file mode 100644
index bcbe13d67..000000000
--- a/node_modules/lodash._root/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
-Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/lodash._root/README.md b/node_modules/lodash._root/README.md
deleted file mode 100644
index 0329abf23..000000000
--- a/node_modules/lodash._root/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# lodash._root v3.0.1
-
-The internal [lodash](https://lodash.com/) function `root` exported as a [Node.js](https://nodejs.org/) module.
-
-## Installation
-
-Using npm:
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash._root
-```
-
-In Node.js:
-```js
-var root = require('lodash._root');
-```
-
-See the [package source](https://github.com/lodash/lodash/blob/3.0.1-npm-packages/lodash._root) for more details.
diff --git a/node_modules/lodash._root/index.js b/node_modules/lodash._root/index.js
deleted file mode 100644
index 2d8ba0aff..000000000
--- a/node_modules/lodash._root/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * lodash 3.0.1 (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license <https://lodash.com/license>
- */
-
-/** Used to determine if values are of the language type `Object`. */
-var objectTypes = {
- 'function': true,
- 'object': true
-};
-
-/** Detect free variable `exports`. */
-var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)
- ? exports
- : undefined;
-
-/** Detect free variable `module`. */
-var freeModule = (objectTypes[typeof module] && module && !module.nodeType)
- ? module
- : undefined;
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);
-
-/** Detect free variable `self`. */
-var freeSelf = checkGlobal(objectTypes[typeof self] && self);
-
-/** Detect free variable `window`. */
-var freeWindow = checkGlobal(objectTypes[typeof window] && window);
-
-/** Detect `this` as the global object. */
-var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
-
-/**
- * Used as a reference to the global object.
- *
- * The `this` value is used if it's the global object to avoid Greasemonkey's
- * restricted `window` object, otherwise the `window` object is used.
- */
-var root = freeGlobal ||
- ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||
- freeSelf || thisGlobal || Function('return this')();
-
-/**
- * Checks if `value` is a global object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {null|Object} Returns `value` if it's a global object, else `null`.
- */
-function checkGlobal(value) {
- return (value && value.Object === Object) ? value : null;
-}
-
-module.exports = root;
diff --git a/node_modules/lodash._root/package.json b/node_modules/lodash._root/package.json
deleted file mode 100644
index f75400d14..000000000
--- a/node_modules/lodash._root/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "lodash._root",
- "version": "3.0.1",
- "description": "The internal lodash function `root` exported as a module.",
- "homepage": "https://lodash.com/",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "contributors": [
- "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "Blaine Bublitz <blaine@iceddev.com> (https://github.com/phated)",
- "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
- ],
- "repository": "lodash/lodash",
- "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }
-}
diff --git a/node_modules/lodash.union/LICENSE b/node_modules/lodash.union/LICENSE
deleted file mode 100644
index e0c69d560..000000000
--- a/node_modules/lodash.union/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Copyright jQuery Foundation and other contributors <https://jquery.org/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
diff --git a/node_modules/lodash.union/README.md b/node_modules/lodash.union/README.md
deleted file mode 100644
index 001092dde..000000000
--- a/node_modules/lodash.union/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# lodash.union v4.6.0
-
-The [lodash](https://lodash.com/) method `_.union` exported as a [Node.js](https://nodejs.org/) module.
-
-## Installation
-
-Using npm:
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash.union
-```
-
-In Node.js:
-```js
-var union = require('lodash.union');
-```
-
-See the [documentation](https://lodash.com/docs#union) or [package source](https://github.com/lodash/lodash/blob/4.6.0-npm-packages/lodash.union) for more details.
diff --git a/node_modules/lodash.union/index.js b/node_modules/lodash.union/index.js
deleted file mode 100644
index d1eb0305d..000000000
--- a/node_modules/lodash.union/index.js
+++ /dev/null
@@ -1,1181 +0,0 @@
-/**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
- MAX_SAFE_INTEGER = 9007199254740991;
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]';
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-/**
- * A faster alternative to `Function#apply`, this function invokes `func`
- * with the `this` binding of `thisArg` and the arguments of `args`.
- *
- * @private
- * @param {Function} func The function to invoke.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} args The arguments to invoke `func` with.
- * @returns {*} Returns the result of `func`.
- */
-function apply(func, thisArg, args) {
- switch (args.length) {
- case 0: return func.call(thisArg);
- case 1: return func.call(thisArg, args[0]);
- case 2: return func.call(thisArg, args[0], args[1]);
- case 3: return func.call(thisArg, args[0], args[1], args[2]);
- }
- return func.apply(thisArg, args);
-}
-
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
- var length = array ? array.length : 0;
- return !!length && baseIndexOf(array, value, 0) > -1;
-}
-
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
- var index = -1,
- length = array ? array.length : 0;
-
- while (++index < length) {
- if (comparator(value, array[index])) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
-function arrayPush(array, values) {
- var index = -1,
- length = values.length,
- offset = array.length;
-
- while (++index < length) {
- array[offset + index] = values[index];
- }
- return array;
-}
-
-/**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
- if (value !== value) {
- return baseFindIndex(array, baseIsNaN, fromIndex);
- }
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (array[index] === value) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
- return value !== value;
-}
-
-/**
- * Checks if a cache value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function cacheHas(cache, key) {
- return cache.has(key);
-}
-
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
- return object == null ? undefined : object[key];
-}
-
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
-}
-
-/**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
-function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
-}
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype,
- funcProto = Function.prototype,
- objectProto = Object.prototype;
-
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
-
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/** Built-in value references. */
-var Symbol = root.Symbol,
- propertyIsEnumerable = objectProto.propertyIsEnumerable,
- splice = arrayProto.splice,
- spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map'),
- Set = getNative(root, 'Set'),
- nativeCreate = getNative(Object, 'create');
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
-}
-
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
- return this.has(key) && delete this.__data__[key];
-}
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
-}
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
- var data = this.__data__;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
- this.__data__ = [];
-}
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- return true;
-}
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
-}
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
-}
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
-}
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
- return getMapData(this, key)['delete'](key);
-}
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
- return getMapData(this, key).get(key);
-}
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
- return getMapData(this, key).has(key);
-}
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
- getMapData(this, key).set(key, value);
- return this;
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-/**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
-function SetCache(values) {
- var index = -1,
- length = values ? values.length : 0;
-
- this.__data__ = new MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
-}
-
-/**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
-function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
- return this;
-}
-
-/**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
-function setCacheHas(value) {
- return this.__data__.has(value);
-}
-
-// Add methods to `SetCache`.
-SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-SetCache.prototype.has = setCacheHas;
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.flatten` with support for restricting flattening.
- *
- * @private
- * @param {Array} array The array to flatten.
- * @param {number} depth The maximum recursion depth.
- * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
- * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
- * @param {Array} [result=[]] The initial result value.
- * @returns {Array} Returns the new flattened array.
- */
-function baseFlatten(array, depth, predicate, isStrict, result) {
- var index = -1,
- length = array.length;
-
- predicate || (predicate = isFlattenable);
- result || (result = []);
-
- while (++index < length) {
- var value = array[index];
- if (depth > 0 && predicate(value)) {
- if (depth > 1) {
- // Recursively flatten arrays (susceptible to call stack limits).
- baseFlatten(value, depth - 1, predicate, isStrict, result);
- } else {
- arrayPush(result, value);
- }
- } else if (!isStrict) {
- result[result.length] = value;
- }
- }
- return result;
-}
-
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
-function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-/**
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- */
-function baseRest(func, start) {
- start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
- return function() {
- var args = arguments,
- index = -1,
- length = nativeMax(args.length - start, 0),
- array = Array(length);
-
- while (++index < length) {
- array[index] = args[start + index];
- }
- index = -1;
- var otherArgs = Array(start + 1);
- while (++index < start) {
- otherArgs[index] = args[index];
- }
- otherArgs[start] = array;
- return apply(func, this, otherArgs);
- };
-}
-
-/**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseUniq(array, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- length = array.length,
- isCommon = true,
- result = [],
- seen = result;
-
- if (comparator) {
- isCommon = false;
- includes = arrayIncludesWith;
- }
- else if (length >= LARGE_ARRAY_SIZE) {
- var set = iteratee ? null : createSet(array);
- if (set) {
- return setToArray(set);
- }
- isCommon = false;
- includes = cacheHas;
- seen = new SetCache;
- }
- else {
- seen = iteratee ? [] : result;
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var seenIndex = seen.length;
- while (seenIndex--) {
- if (seen[seenIndex] === computed) {
- continue outer;
- }
- }
- if (iteratee) {
- seen.push(computed);
- }
- result.push(value);
- }
- else if (!includes(seen, computed, comparator)) {
- if (seen !== result) {
- seen.push(computed);
- }
- result.push(value);
- }
- }
- return result;
-}
-
-/**
- * Creates a set object of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
-var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
- return new Set(values);
-};
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
-}
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
-}
-
-/**
- * Checks if `value` is a flattenable `arguments` object or array.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
- */
-function isFlattenable(value) {
- return isArray(value) || isArguments(value) ||
- !!(spreadableSymbol && value && value[spreadableSymbol]);
-}
-
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
-}
-
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
-}
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-/**
- * Creates an array of unique values, in order, from all given arrays using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.union([2], [1, 2]);
- * // => [2, 1]
- */
-var union = baseRest(function(arrays) {
- return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
-});
-
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
- return value === other || (value !== value && other !== other);
-}
-
-/**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
-function isArguments(value) {
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
- return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
- (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
-}
-
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
-
-/**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
-function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
-}
-
-/**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- * else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
-function isArrayLikeObject(value) {
- return isObjectLike(value) && isArrayLike(value);
-}
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
-function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
-
-/**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
-function noop() {
- // No operation performed.
-}
-
-module.exports = union;
diff --git a/node_modules/lodash.union/package.json b/node_modules/lodash.union/package.json
deleted file mode 100644
index 968baba85..000000000
--- a/node_modules/lodash.union/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "lodash.union",
- "version": "4.6.0",
- "description": "The lodash method `_.union` exported as a module.",
- "homepage": "https://lodash.com/",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "keywords": "lodash-modularized, union",
- "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "contributors": [
- "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
- "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
- ],
- "repository": "lodash/lodash",
- "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }
-}
diff --git a/node_modules/lodash.uniq/LICENSE b/node_modules/lodash.uniq/LICENSE
deleted file mode 100644
index e0c69d560..000000000
--- a/node_modules/lodash.uniq/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Copyright jQuery Foundation and other contributors <https://jquery.org/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
diff --git a/node_modules/lodash.uniq/README.md b/node_modules/lodash.uniq/README.md
deleted file mode 100644
index a662a5e38..000000000
--- a/node_modules/lodash.uniq/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# lodash.uniq v4.5.0
-
-The [lodash](https://lodash.com/) method `_.uniq` exported as a [Node.js](https://nodejs.org/) module.
-
-## Installation
-
-Using npm:
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash.uniq
-```
-
-In Node.js:
-```js
-var uniq = require('lodash.uniq');
-```
-
-See the [documentation](https://lodash.com/docs#uniq) or [package source](https://github.com/lodash/lodash/blob/4.5.0-npm-packages/lodash.uniq) for more details.
diff --git a/node_modules/lodash.uniq/index.js b/node_modules/lodash.uniq/index.js
deleted file mode 100644
index 83fce2bc4..000000000
--- a/node_modules/lodash.uniq/index.js
+++ /dev/null
@@ -1,896 +0,0 @@
-/**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/** `Object#toString` result references. */
-var funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]';
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
- var length = array ? array.length : 0;
- return !!length && baseIndexOf(array, value, 0) > -1;
-}
-
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
- var index = -1,
- length = array ? array.length : 0;
-
- while (++index < length) {
- if (comparator(value, array[index])) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
- if (value !== value) {
- return baseFindIndex(array, baseIsNaN, fromIndex);
- }
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (array[index] === value) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
- return value !== value;
-}
-
-/**
- * Checks if a cache value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function cacheHas(cache, key) {
- return cache.has(key);
-}
-
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
- return object == null ? undefined : object[key];
-}
-
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
-}
-
-/**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
-function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
-}
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype,
- funcProto = Function.prototype,
- objectProto = Object.prototype;
-
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
-
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map'),
- Set = getNative(root, 'Set'),
- nativeCreate = getNative(Object, 'create');
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
-}
-
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
- return this.has(key) && delete this.__data__[key];
-}
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
-}
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
- var data = this.__data__;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
- this.__data__ = [];
-}
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- return true;
-}
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
-}
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
-}
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
-}
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
- return getMapData(this, key)['delete'](key);
-}
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
- return getMapData(this, key).get(key);
-}
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
- return getMapData(this, key).has(key);
-}
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
- getMapData(this, key).set(key, value);
- return this;
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-/**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
-function SetCache(values) {
- var index = -1,
- length = values ? values.length : 0;
-
- this.__data__ = new MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
-}
-
-/**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
-function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
- return this;
-}
-
-/**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
-function setCacheHas(value) {
- return this.__data__.has(value);
-}
-
-// Add methods to `SetCache`.
-SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-SetCache.prototype.has = setCacheHas;
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
-function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-/**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseUniq(array, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- length = array.length,
- isCommon = true,
- result = [],
- seen = result;
-
- if (comparator) {
- isCommon = false;
- includes = arrayIncludesWith;
- }
- else if (length >= LARGE_ARRAY_SIZE) {
- var set = iteratee ? null : createSet(array);
- if (set) {
- return setToArray(set);
- }
- isCommon = false;
- includes = cacheHas;
- seen = new SetCache;
- }
- else {
- seen = iteratee ? [] : result;
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var seenIndex = seen.length;
- while (seenIndex--) {
- if (seen[seenIndex] === computed) {
- continue outer;
- }
- }
- if (iteratee) {
- seen.push(computed);
- }
- result.push(value);
- }
- else if (!includes(seen, computed, comparator)) {
- if (seen !== result) {
- seen.push(computed);
- }
- result.push(value);
- }
- }
- return result;
-}
-
-/**
- * Creates a set object of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
-var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
- return new Set(values);
-};
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
-}
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
-}
-
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
-}
-
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
-}
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-/**
- * Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons, in which only the first occurrence of each
- * element is kept.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniq([2, 1, 2]);
- * // => [2, 1]
- */
-function uniq(array) {
- return (array && array.length)
- ? baseUniq(array)
- : [];
-}
-
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
- return value === other || (value !== value && other !== other);
-}
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
-function noop() {
- // No operation performed.
-}
-
-module.exports = uniq;
diff --git a/node_modules/lodash.uniq/package.json b/node_modules/lodash.uniq/package.json
deleted file mode 100644
index d43312344..000000000
--- a/node_modules/lodash.uniq/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "lodash.uniq",
- "version": "4.5.0",
- "description": "The lodash method `_.uniq` exported as a module.",
- "homepage": "https://lodash.com/",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "keywords": "lodash-modularized, uniq",
- "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "contributors": [
- "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
- "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
- ],
- "repository": "lodash/lodash",
- "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }
-}
diff --git a/node_modules/lodash.without/LICENSE b/node_modules/lodash.without/LICENSE
deleted file mode 100644
index e0c69d560..000000000
--- a/node_modules/lodash.without/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Copyright jQuery Foundation and other contributors <https://jquery.org/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
diff --git a/node_modules/lodash.without/README.md b/node_modules/lodash.without/README.md
deleted file mode 100644
index 8c00f8a4a..000000000
--- a/node_modules/lodash.without/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# lodash.without v4.4.0
-
-The [lodash](https://lodash.com/) method `_.without` exported as a [Node.js](https://nodejs.org/) module.
-
-## Installation
-
-Using npm:
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash.without
-```
-
-In Node.js:
-```js
-var without = require('lodash.without');
-```
-
-See the [documentation](https://lodash.com/docs#without) or [package source](https://github.com/lodash/lodash/blob/4.4.0-npm-packages/lodash.without) for more details.
diff --git a/node_modules/lodash.without/index.js b/node_modules/lodash.without/index.js
deleted file mode 100644
index b75daee5f..000000000
--- a/node_modules/lodash.without/index.js
+++ /dev/null
@@ -1,1051 +0,0 @@
-/**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/** `Object#toString` result references. */
-var funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]';
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-/**
- * A faster alternative to `Function#apply`, this function invokes `func`
- * with the `this` binding of `thisArg` and the arguments of `args`.
- *
- * @private
- * @param {Function} func The function to invoke.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} args The arguments to invoke `func` with.
- * @returns {*} Returns the result of `func`.
- */
-function apply(func, thisArg, args) {
- switch (args.length) {
- case 0: return func.call(thisArg);
- case 1: return func.call(thisArg, args[0]);
- case 2: return func.call(thisArg, args[0], args[1]);
- case 3: return func.call(thisArg, args[0], args[1], args[2]);
- }
- return func.apply(thisArg, args);
-}
-
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
- var length = array ? array.length : 0;
- return !!length && baseIndexOf(array, value, 0) > -1;
-}
-
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
- var index = -1,
- length = array ? array.length : 0;
-
- while (++index < length) {
- if (comparator(value, array[index])) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
-function arrayMap(array, iteratee) {
- var index = -1,
- length = array ? array.length : 0,
- result = Array(length);
-
- while (++index < length) {
- result[index] = iteratee(array[index], index, array);
- }
- return result;
-}
-
-/**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
- if (value !== value) {
- return baseFindIndex(array, baseIsNaN, fromIndex);
- }
- var index = fromIndex - 1,
- length = array.length;
-
- while (++index < length) {
- if (array[index] === value) {
- return index;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
- return value !== value;
-}
-
-/**
- * The base implementation of `_.unary` without support for storing metadata.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- */
-function baseUnary(func) {
- return function(value) {
- return func(value);
- };
-}
-
-/**
- * Checks if a cache value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function cacheHas(cache, key) {
- return cache.has(key);
-}
-
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
- return object == null ? undefined : object[key];
-}
-
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
-}
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype,
- funcProto = Function.prototype,
- objectProto = Object.prototype;
-
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
-
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map'),
- nativeCreate = getNative(Object, 'create');
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
-}
-
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
- return this.has(key) && delete this.__data__[key];
-}
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
-}
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
- var data = this.__data__;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
- this.__data__ = [];
-}
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- return true;
-}
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
-}
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
-}
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
- var index = -1,
- length = entries ? entries.length : 0;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
-}
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
-}
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
- return getMapData(this, key)['delete'](key);
-}
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
- return getMapData(this, key).get(key);
-}
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
- return getMapData(this, key).has(key);
-}
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
- getMapData(this, key).set(key, value);
- return this;
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-/**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
-function SetCache(values) {
- var index = -1,
- length = values ? values.length : 0;
-
- this.__data__ = new MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
-}
-
-/**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
-function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
- return this;
-}
-
-/**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
-function setCacheHas(value) {
- return this.__data__.has(value);
-}
-
-// Add methods to `SetCache`.
-SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-SetCache.prototype.has = setCacheHas;
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
-}
-
-/**
- * The base implementation of methods like `_.difference` without support
- * for excluding multiple arrays or iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Array} values The values to exclude.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- */
-function baseDifference(array, values, iteratee, comparator) {
- var index = -1,
- includes = arrayIncludes,
- isCommon = true,
- length = array.length,
- result = [],
- valuesLength = values.length;
-
- if (!length) {
- return result;
- }
- if (iteratee) {
- values = arrayMap(values, baseUnary(iteratee));
- }
- if (comparator) {
- includes = arrayIncludesWith;
- isCommon = false;
- }
- else if (values.length >= LARGE_ARRAY_SIZE) {
- includes = cacheHas;
- isCommon = false;
- values = new SetCache(values);
- }
- outer:
- while (++index < length) {
- var value = array[index],
- computed = iteratee ? iteratee(value) : value;
-
- value = (comparator || value !== 0) ? value : 0;
- if (isCommon && computed === computed) {
- var valuesIndex = valuesLength;
- while (valuesIndex--) {
- if (values[valuesIndex] === computed) {
- continue outer;
- }
- }
- result.push(value);
- }
- else if (!includes(values, computed, comparator)) {
- result.push(value);
- }
- }
- return result;
-}
-
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
-function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
-}
-
-/**
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- */
-function baseRest(func, start) {
- start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
- return function() {
- var args = arguments,
- index = -1,
- length = nativeMax(args.length - start, 0),
- array = Array(length);
-
- while (++index < length) {
- array[index] = args[start + index];
- }
- index = -1;
- var otherArgs = Array(start + 1);
- while (++index < start) {
- otherArgs[index] = args[index];
- }
- otherArgs[start] = array;
- return apply(func, this, otherArgs);
- };
-}
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
-}
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
-}
-
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
-}
-
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
-}
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
-}
-
-/**
- * Creates an array excluding all given values using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * **Note:** Unlike `_.pull`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...*} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.difference, _.xor
- * @example
- *
- * _.without([2, 1, 2, 3], 1, 2);
- * // => [3]
- */
-var without = baseRest(function(array, values) {
- return isArrayLikeObject(array)
- ? baseDifference(array, values)
- : [];
-});
-
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
- return value === other || (value !== value && other !== other);
-}
-
-/**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
-function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
-}
-
-/**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- * else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
-function isArrayLikeObject(value) {
- return isObjectLike(value) && isArrayLike(value);
-}
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
-function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
-
-module.exports = without;
diff --git a/node_modules/lodash.without/package.json b/node_modules/lodash.without/package.json
deleted file mode 100644
index 3ed576418..000000000
--- a/node_modules/lodash.without/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "lodash.without",
- "version": "4.4.0",
- "description": "The lodash method `_.without` exported as a module.",
- "homepage": "https://lodash.com/",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "keywords": "lodash-modularized, without",
- "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "contributors": [
- "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
- "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
- "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
- ],
- "repository": "lodash/lodash",
- "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }
-}
diff --git a/node_modules/mem/index.js b/node_modules/mem/index.js
deleted file mode 100644
index aa5a07398..000000000
--- a/node_modules/mem/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict';
-const mimicFn = require('mimic-fn');
-
-const cacheStore = new WeakMap();
-
-const defaultCacheKey = function (x) {
- if (arguments.length === 1 && (x === null || x === undefined || (typeof x !== 'function' && typeof x !== 'object'))) {
- return x;
- }
-
- return JSON.stringify(arguments);
-};
-
-module.exports = (fn, opts) => {
- opts = Object.assign({
- cacheKey: defaultCacheKey,
- cache: new Map()
- }, opts);
-
- const memoized = function () {
- const cache = cacheStore.get(memoized);
- const key = opts.cacheKey.apply(null, arguments);
-
- if (cache.has(key)) {
- const c = cache.get(key);
-
- if (typeof opts.maxAge !== 'number' || Date.now() < c.maxAge) {
- return c.data;
- }
- }
-
- const ret = fn.apply(null, arguments);
-
- cache.set(key, {
- data: ret,
- maxAge: Date.now() + (opts.maxAge || 0)
- });
-
- return ret;
- };
-
- mimicFn(memoized, fn);
-
- cacheStore.set(memoized, opts.cache);
-
- return memoized;
-};
-
-module.exports.clear = fn => {
- const cache = cacheStore.get(fn);
-
- if (cache && typeof cache.clear === 'function') {
- cache.clear();
- }
-};
diff --git a/node_modules/mem/license b/node_modules/mem/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/mem/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/mem/package.json b/node_modules/mem/package.json
deleted file mode 100644
index a492892c8..000000000
--- a/node_modules/mem/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "mem",
- "version": "1.1.0",
- "description": "Memoize functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input",
- "license": "MIT",
- "repository": "sindresorhus/mem",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "memoize",
- "function",
- "mem",
- "memoization",
- "cache",
- "caching",
- "optimize",
- "performance",
- "ttl",
- "expire",
- "promise"
- ],
- "dependencies": {
- "mimic-fn": "^1.0.0"
- },
- "devDependencies": {
- "ava": "*",
- "delay": "^1.1.0",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/node_modules/mem/readme.md b/node_modules/mem/readme.md
deleted file mode 100644
index 7ebab84f0..000000000
--- a/node_modules/mem/readme.md
+++ /dev/null
@@ -1,147 +0,0 @@
-# mem [![Build Status](https://travis-ci.org/sindresorhus/mem.svg?branch=master)](https://travis-ci.org/sindresorhus/mem)
-
-> [Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input
-
-
-## Install
-
-```
-$ npm install --save mem
-```
-
-
-## Usage
-
-```js
-const mem = require('mem');
-
-let i = 0;
-const counter = () => ++i;
-const memoized = mem(counter);
-
-memoized('foo');
-//=> 1
-
-// cached as it's the same arguments
-memoized('foo');
-//=> 1
-
-// not cached anymore as the arguments changed
-memoized('bar');
-//=> 2
-
-memoized('bar');
-//=> 2
-```
-
-##### Works fine with promise returning functions
-
-```js
-const mem = require('mem');
-
-let i = 0;
-const counter = () => Promise.resolve(++i);
-const memoized = mem(counter);
-
-memoized().then(a => {
- console.log(a);
- //=> 1
-
- memoized().then(b => {
- // the return value didn't increase as it's cached
- console.log(b);
- //=> 1
- });
-});
-```
-
-```js
-const mem = require('mem');
-const got = require('got');
-const memGot = mem(got, {maxAge: 1000});
-
-memGot('sindresorhus.com').then(() => {
- // this call is cached
- memGot('sindresorhus.com').then(() => {
- setTimeout(() => {
- // this call is not cached as the cache has expired
- memGot('sindresorhus.com').then(() => {});
- }, 2000);
- });
-});
-```
-
-
-## API
-
-### mem(fn, [options])
-
-#### fn
-
-Type: `Function`
-
-Function to be memoized.
-
-#### options
-
-##### maxAge
-
-Type: `number`<br>
-Default: `Infinity`
-
-Milliseconds until the cache expires.
-
-##### cacheKey
-
-Type: `Function`
-
-Determines the cache key for storing the result based on the function arguments. By default, if there's only one argument and it's a [primitive](https://developer.mozilla.org/en-US/docs/Glossary/Primitive), it's used directly as a key, otherwise it's all the function arguments JSON stringified as an array.
-
-You could for example change it to only cache on the first argument `x => JSON.stringify(x)`.
-
-##### cache
-
-Type: `Object`<br>
-Default: `new Map()`
-
-Use a different cache storage. Must implement the following methods: `.has(key)`, `.get(key)`, `.set(key, value)`, and optionally `.clear()`. You could for example use a `WeakMap` instead.
-
-### mem.clear(fn)
-
-Clear all cached data of a memoized function.
-
-#### fn
-
-Type: `Function`
-
-Memoized function.
-
-
-## Tips
-
-### Cache statistics
-
-If you want to know how many times your cache had a hit or a miss, you can make use of [stats-map](https://github.com/SamVerschueren/stats-map) as a replacement for the default cache.
-
-#### Example
-
-```js
-const mem = require('mem');
-const StatsMap = require('stats-map');
-const got = require('got');
-
-const cache = new StatsMap();
-const memGot = mem(got, {cache});
-
-memGot('sindresorhus.com')
- .then(() => memGot('sindresorhus.com'))
- .then(() => memGot('sindresorhus.com'));
-
-console.log(cache.stats);
-//=> {hits: 2, misses: 1}
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/mimic-fn/index.js b/node_modules/mimic-fn/index.js
deleted file mode 100644
index 08e69d3d8..000000000
--- a/node_modules/mimic-fn/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-module.exports = (to, from) => {
- // TODO: use `Reflect.ownKeys()` when targeting Node.js 6
- for (const prop of Object.getOwnPropertyNames(from).concat(Object.getOwnPropertySymbols(from))) {
- Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));
- }
-
- return to;
-};
diff --git a/node_modules/mimic-fn/license b/node_modules/mimic-fn/license
deleted file mode 100644
index e7af2f771..000000000
--- a/node_modules/mimic-fn/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/mimic-fn/package.json b/node_modules/mimic-fn/package.json
deleted file mode 100644
index f6c229946..000000000
--- a/node_modules/mimic-fn/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "mimic-fn",
- "version": "1.2.0",
- "description": "Make a function mimic another one",
- "license": "MIT",
- "repository": "sindresorhus/mimic-fn",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "function",
- "mimic",
- "imitate",
- "rename",
- "copy",
- "inherit",
- "properties",
- "name",
- "func",
- "fn",
- "set",
- "infer",
- "change"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/node_modules/mimic-fn/readme.md b/node_modules/mimic-fn/readme.md
deleted file mode 100644
index e57573438..000000000
--- a/node_modules/mimic-fn/readme.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# mimic-fn [![Build Status](https://travis-ci.org/sindresorhus/mimic-fn.svg?branch=master)](https://travis-ci.org/sindresorhus/mimic-fn)
-
-> Make a function mimic another one
-
-Useful when you wrap a function in another function and like to preserve the original name and other properties.
-
-
-## Install
-
-```
-$ npm install mimic-fn
-```
-
-
-## Usage
-
-```js
-const mimicFn = require('mimic-fn');
-
-function foo() {}
-foo.unicorn = '🦄';
-
-function wrapper() {
- return foo() {};
-}
-
-console.log(wrapper.name);
-//=> 'wrapper'
-
-mimicFn(wrapper, foo);
-
-console.log(wrapper.name);
-//=> 'foo'
-
-console.log(wrapper.unicorn);
-//=> '🦄'
-```
-
-
-## API
-
-It will copy over the properties `name`, `length`, `displayName`, and any custom properties you may have set.
-
-### mimicFn(to, from)
-
-It will modify `to` and return it.
-
-#### to
-
-Type: `Function`
-
-Mimicking function.
-
-#### from
-
-Type: `Function`
-
-Function to mimic.
-
-
-## Related
-
-- [rename-fn](https://github.com/sindresorhus/rename-fn) - Rename a function
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/os-locale/index.js b/node_modules/os-locale/index.js
deleted file mode 100644
index 1ada7a494..000000000
--- a/node_modules/os-locale/index.js
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict';
-const execa = require('execa');
-const lcid = require('lcid');
-const mem = require('mem');
-
-const defaultOpts = {spawn: true};
-const defaultLocale = 'en_US';
-
-function getEnvLocale(env) {
- env = env || process.env;
- return env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;
-}
-
-function parseLocale(x) {
- const env = x.split('\n').reduce((env, def) => {
- def = def.split('=');
- env[def[0]] = def[1].replace(/^"|"$/g, '');
- return env;
- }, {});
- return getEnvLocale(env);
-}
-
-function getLocale(str) {
- return (str && str.replace(/[.:].*/, ''));
-}
-
-function getAppleLocale() {
- return execa.stdout('defaults', ['read', '-g', 'AppleLocale']);
-}
-
-function getAppleLocaleSync() {
- return execa.sync('defaults', ['read', '-g', 'AppleLocale']).stdout;
-}
-
-function getUnixLocale() {
- if (process.platform === 'darwin') {
- return getAppleLocale();
- }
-
- return execa.stdout('locale')
- .then(stdout => getLocale(parseLocale(stdout)));
-}
-
-function getUnixLocaleSync() {
- if (process.platform === 'darwin') {
- return getAppleLocaleSync();
- }
-
- return getLocale(parseLocale(execa.sync('locale').stdout));
-}
-
-function getWinLocale() {
- return execa.stdout('wmic', ['os', 'get', 'locale'])
- .then(stdout => {
- const lcidCode = parseInt(stdout.replace('Locale', ''), 16);
- return lcid.from(lcidCode);
- });
-}
-
-function getWinLocaleSync() {
- const stdout = execa.sync('wmic', ['os', 'get', 'locale']).stdout;
- const lcidCode = parseInt(stdout.replace('Locale', ''), 16);
- return lcid.from(lcidCode);
-}
-
-module.exports = mem(opts => {
- opts = opts || defaultOpts;
- const envLocale = getEnvLocale();
- let thenable;
-
- if (envLocale || opts.spawn === false) {
- thenable = Promise.resolve(getLocale(envLocale));
- } else if (process.platform === 'win32') {
- thenable = getWinLocale();
- } else {
- thenable = getUnixLocale();
- }
-
- return thenable.then(locale => locale || defaultLocale)
- .catch(() => defaultLocale);
-});
-
-module.exports.sync = mem(opts => {
- opts = opts || defaultOpts;
- const envLocale = getEnvLocale();
- let res;
-
- if (envLocale || opts.spawn === false) {
- res = getLocale(envLocale);
- } else {
- try {
- if (process.platform === 'win32') {
- res = getWinLocaleSync();
- } else {
- res = getUnixLocaleSync();
- }
- } catch (err) {}
- }
-
- return res || defaultLocale;
-});
diff --git a/node_modules/os-locale/license b/node_modules/os-locale/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/os-locale/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/os-locale/package.json b/node_modules/os-locale/package.json
deleted file mode 100644
index 84c095333..000000000
--- a/node_modules/os-locale/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "os-locale",
- "version": "2.1.0",
- "description": "Get the system locale",
- "license": "MIT",
- "repository": "sindresorhus/os-locale",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "locale",
- "lang",
- "language",
- "system",
- "os",
- "string",
- "str",
- "user",
- "country",
- "id",
- "identifier",
- "region"
- ],
- "dependencies": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- },
- "devDependencies": {
- "ava": "*",
- "import-fresh": "^2.0.0",
- "xo": "*"
- }
-}
diff --git a/node_modules/os-locale/readme.md b/node_modules/os-locale/readme.md
deleted file mode 100644
index 7c80d3358..000000000
--- a/node_modules/os-locale/readme.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# os-locale [![Build Status](https://travis-ci.org/sindresorhus/os-locale.svg?branch=master)](https://travis-ci.org/sindresorhus/os-locale)
-
-> Get the system [locale](https://en.wikipedia.org/wiki/Locale_(computer_software))
-
-Useful for localizing your module or app.
-
-POSIX systems: The returned locale refers to the [`LC_MESSAGE`](http://www.gnu.org/software/libc/manual/html_node/Locale-Categories.html#Locale-Categories) category, suitable for selecting the language used in the user interface for message translation.
-
-
-## Install
-
-```
-$ npm install --save os-locale
-```
-
-
-## Usage
-
-```js
-const osLocale = require('os-locale');
-
-osLocale().then(locale => {
- console.log(locale);
- //=> 'en_US'
-});
-```
-
-
-## API
-
-### osLocale([options])
-
-Returns a `Promise` for the locale.
-
-### osLocale.sync([options])
-
-Returns the locale.
-
-#### options
-
-Type: `Object`
-
-##### spawn
-
-Type: `boolean`<br>
-Default: `true`
-
-Set to `false` to avoid spawning subprocesses and instead only resolve the locale from environment variables.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/prr/.npmignore b/node_modules/prr/.npmignore
deleted file mode 100644
index b512c09d4..000000000
--- a/node_modules/prr/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules \ No newline at end of file
diff --git a/node_modules/prr/.travis.yml b/node_modules/prr/.travis.yml
deleted file mode 100644
index 33dcbc3a8..000000000
--- a/node_modules/prr/.travis.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-language: node_js
-node_js:
- - 0.8
- - "0.10"
-branches:
- only:
- - master
-notifications:
- email:
- - rod@vagg.org \ No newline at end of file
diff --git a/node_modules/prr/LICENSE.md b/node_modules/prr/LICENSE.md
deleted file mode 100644
index 29b95e39a..000000000
--- a/node_modules/prr/LICENSE.md
+++ /dev/null
@@ -1,11 +0,0 @@
-The MIT License (MIT)
-=====================
-
-Copyright (c) 2014 Rod Vagg
----------------------------
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/prr/README.md b/node_modules/prr/README.md
deleted file mode 100644
index b93404823..000000000
--- a/node_modules/prr/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# prr [![Build Status](https://secure.travis-ci.org/rvagg/prr.png)](http://travis-ci.org/rvagg/prr)
-
-An sensible alternative to `Object.defineProperty()`. Available in npm and Ender as **prr**.
-
-## Usage
-
-Set the property `'foo'` (`obj.foo`) to have the value `'bar'` with default options (`'enumerable'`, `'configurable'` and `'writable'` are all `false`):
-
-```js
-prr(obj, 'foo', 'bar')
-```
-
-Adjust the default options:
-
-```js
-prr(obj, 'foo', 'bar', { enumerable: true, writable: true })
-```
-
-Do the same operation for multiple properties:
-
-```js
-prr(obj, { one: 'one', two: 'two' })
-// or with options:
-prr(obj, { one: 'one', two: 'two' }, { enumerable: true, writable: true })
-```
-
-### Simplify!
-
-But obviously, having to write out the full options object makes it nearly as bad as the original `Object.defineProperty()` so we can simplify.
-
-As an alternative method we can use an options string where each character represents a option: `'e'=='enumerable'`, `'c'=='configurable'` and `'w'=='writable'`:
-
-```js
-prr(obj, 'foo', 'bar', 'ew') // enumerable and writable but not configurable
-// muliple properties:
-prr(obj, { one: 'one', two: 'two' }, 'ewc') // configurable too
-```
-
-## Where can I use it?
-
-Anywhere! For pre-ES5 environments *prr* will simply fall-back to an `object[property] = value` so you can get close to what you want.
-
-*prr* is Ender-compatible so you can include it in your Ender build and `$.prr(...)` or `var prr = require('prr'); prr(...)`.
-
-## Licence
-
-prr is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licensed under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.
diff --git a/node_modules/prr/package.json b/node_modules/prr/package.json
deleted file mode 100644
index 5d298e598..000000000
--- a/node_modules/prr/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "prr",
- "description": "A better Object.defineProperty()",
- "version": "1.0.1",
- "homepage": "https://github.com/rvagg/prr",
- "author": "Rod Vagg <rod@vagg.org> (https://github.com/rvagg)",
- "keywords": [
- "property",
- "properties",
- "defineProperty",
- "ender"
- ],
- "main": "./prr.js",
- "repository": {
- "type": "git",
- "url": "https://github.com/rvagg/prr.git"
- },
- "dependencies": {},
- "devDependencies": {
- "tap": "*"
- },
- "scripts": {
- "test": "node ./test.js"
- },
- "license": "MIT"
-}
diff --git a/node_modules/prr/prr.js b/node_modules/prr/prr.js
deleted file mode 100644
index 94f58628b..000000000
--- a/node_modules/prr/prr.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/*!
- * prr
- * (c) 2013 Rod Vagg <rod@vagg.org>
- * https://github.com/rvagg/prr
- * License: MIT
- */
-
-(function (name, context, definition) {
- if (typeof module != 'undefined' && module.exports)
- module.exports = definition()
- else
- context[name] = definition()
-})('prr', this, function() {
-
- var setProperty = typeof Object.defineProperty == 'function'
- ? function (obj, key, options) {
- Object.defineProperty(obj, key, options)
- return obj
- }
- : function (obj, key, options) { // < es5
- obj[key] = options.value
- return obj
- }
-
- , makeOptions = function (value, options) {
- var oo = typeof options == 'object'
- , os = !oo && typeof options == 'string'
- , op = function (p) {
- return oo
- ? !!options[p]
- : os
- ? options.indexOf(p[0]) > -1
- : false
- }
-
- return {
- enumerable : op('enumerable')
- , configurable : op('configurable')
- , writable : op('writable')
- , value : value
- }
- }
-
- , prr = function (obj, key, value, options) {
- var k
-
- options = makeOptions(value, options)
-
- if (typeof key == 'object') {
- for (k in key) {
- if (Object.hasOwnProperty.call(key, k)) {
- options.value = key[k]
- setProperty(obj, k, options)
- }
- }
- return obj
- }
-
- return setProperty(obj, key, options)
- }
-
- return prr
-}) \ No newline at end of file
diff --git a/node_modules/prr/test.js b/node_modules/prr/test.js
deleted file mode 100644
index 5222e3073..000000000
--- a/node_modules/prr/test.js
+++ /dev/null
@@ -1,169 +0,0 @@
-const test = require('tap').test
- , prr = require('./')
-
-test('test prr(o, key, value) form', function (t) {
- t.plan(2)
-
- var o = {}
- prr(o, 'foo', 'bar')
- t.equal(o.foo, 'bar', 'correct value')
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, 'foo')
- , {
- enumerable : false
- , configurable : false
- , writable : false
- , value : 'bar'
- }
- , 'correct property descriptor'
- )
- t.end()
-})
-
-test('test prr(o, { key: value }) form', function (t) {
- t.plan(2)
-
- var o = {}
- prr(o, { foo: 'bar' })
-
- t.equal(o.foo, 'bar', 'correct value')
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, 'foo')
- , {
- enumerable : false
- , configurable : false
- , writable : false
- , value : 'bar'
- }
- , 'correct property descriptor'
- )
- t.end()
-})
-
-test('test multiple key:value pairs', function (t) {
- var o = { foo: 'bar' }
-
- prr(o, { one: 'ONE', two: 'TWO', obj: { o: 'o' }})
-
- t.deepEqual(o, { foo: 'bar' }, 'properties are not enumerable')
- t.equal(o.one, 'ONE', 'correctly set property')
- t.equal(o.two, 'TWO', 'correctly set property')
- t.deepEqual(o.obj, { o: 'o' }, 'correctly set property')
-
- ;[ 'one', 'two', 'obj' ].forEach(function (p) {
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, p)
- , {
- enumerable : false
- , configurable : false
- , writable : false
- , value : p == 'obj' ? { o: 'o' } : p.toUpperCase()
- }
- , 'correct property descriptor'
- )
- })
-
- t.end()
-})
-
-test('test descriptor options', function (t) {
- var o = {}
-
- prr(o, 'foo', 'bar', {
- enumerable : true
- , configurable : false
- })
- t.equal(o.foo, 'bar', 'correct value')
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, 'foo')
- , {
- enumerable : true
- , configurable : false
- , writable : false
- , value : 'bar'
- }
- , 'correct property descriptor'
- )
-
- prr(o, 'foo2', 'bar2', {
- enumerable : true
- , configurable : true
- , writable : false
- })
- t.equal(o.foo2, 'bar2', 'correct value')
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, 'foo2')
- , {
- enumerable : true
- , configurable : true
- , writable : false
- , value : 'bar2'
- }
- , 'correct property descriptor'
- )
-
- prr(o, 'foo3', 'bar3', {
- enumerable : true
- , configurable : true
- , writable : true
- })
- t.equal(o.foo3, 'bar3', 'correct value')
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, 'foo3')
- , {
- enumerable : true
- , configurable : true
- , writable : true
- , value : 'bar3'
- }
- , 'correct property descriptor'
- )
-
- t.end()
-})
-
-
-test('test descriptor options, string form', function (t) {
- var o = {}
-
- prr(o, 'foo', 'bar', 'e')
- t.equal(o.foo, 'bar', 'correct value')
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, 'foo')
- , {
- enumerable : true
- , configurable : false
- , writable : false
- , value : 'bar'
- }
- , 'correct property descriptor'
- )
-
- prr(o, 'foo2', 'bar2', 'ec')
- t.equal(o.foo2, 'bar2', 'correct value')
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, 'foo2')
- , {
- enumerable : true
- , configurable : true
- , writable : false
- , value : 'bar2'
- }
- , 'correct property descriptor'
- )
-
- prr(o, 'foo3', 'bar3', 'ecw')
- t.equal(o.foo3, 'bar3', 'correct value')
- t.deepEqual(
- Object.getOwnPropertyDescriptor(o, 'foo3')
- , {
- enumerable : true
- , configurable : true
- , writable : true
- , value : 'bar3'
- }
- , 'correct property descriptor'
- )
-
- t.end()
-})
diff --git a/node_modules/query-string/index.d.ts b/node_modules/query-string/index.d.ts
deleted file mode 100644
index b3a3c99af..000000000
--- a/node_modules/query-string/index.d.ts
+++ /dev/null
@@ -1,385 +0,0 @@
-export interface ParseOptions {
- /**
- Decode the keys and values. URI components are decoded with [`decode-uri-component`](https://github.com/SamVerschueren/decode-uri-component).
-
- @default true
- */
- readonly decode?: boolean;
-
- /**
- @default 'none'
-
- - `bracket`: Parse arrays with bracket representation:
-
- ```
- import queryString = require('query-string');
-
- queryString.parse('foo[]=1&foo[]=2&foo[]=3', {arrayFormat: 'bracket'});
- //=> {foo: ['1', '2', '3']}
- ```
-
- - `index`: Parse arrays with index representation:
-
- ```
- import queryString = require('query-string');
-
- queryString.parse('foo[0]=1&foo[1]=2&foo[3]=3', {arrayFormat: 'index'});
- //=> {foo: ['1', '2', '3']}
- ```
-
- - `comma`: Parse arrays with elements separated by comma:
-
- ```
- import queryString = require('query-string');
-
- queryString.parse('foo=1,2,3', {arrayFormat: 'comma'});
- //=> {foo: ['1', '2', '3']}
- ```
-
- - `separator`: Parse arrays with elements separated by a custom character:
-
- ```
- import queryString = require('query-string');
-
- queryString.parse('foo=1|2|3', {arrayFormat: 'separator', arrayFormatSeparator: '|'});
- //=> {foo: ['1', '2', '3']}
- ```
-
- - `none`: Parse arrays with elements using duplicate keys:
-
- ```
- import queryString = require('query-string');
-
- queryString.parse('foo=1&foo=2&foo=3');
- //=> {foo: ['1', '2', '3']}
- ```
- */
- readonly arrayFormat?: 'bracket' | 'index' | 'comma' | 'separator' | 'none';
-
- /**
- The character used to separate array elements when using `{arrayFormat: 'separator'}`.
-
- @default ,
- */
- readonly arrayFormatSeparator?: string;
-
- /**
- Supports both `Function` as a custom sorting function or `false` to disable sorting.
-
- If omitted, keys are sorted using `Array#sort`, which means, converting them to strings and comparing strings in Unicode code point order.
-
- @default true
-
- @example
- ```
- import queryString = require('query-string');
-
- const order = ['c', 'a', 'b'];
-
- queryString.parse('?a=one&b=two&c=three', {
- sort: (itemLeft, itemRight) => order.indexOf(itemLeft) - order.indexOf(itemRight)
- });
- //=> {c: 'three', a: 'one', b: 'two'}
- ```
-
- @example
- ```
- import queryString = require('query-string');
-
- queryString.parse('?a=one&c=three&b=two', {sort: false});
- //=> {a: 'one', c: 'three', b: 'two'}
- ```
- */
- readonly sort?: ((itemLeft: string, itemRight: string) => number) | false;
-
- /**
- Parse the value as a number type instead of string type if it's a number.
-
- @default false
-
- @example
- ```
- import queryString = require('query-string');
-
- queryString.parse('foo=1', {parseNumbers: true});
- //=> {foo: 1}
- ```
- */
- readonly parseNumbers?: boolean;
-
- /**
- Parse the value as a boolean type instead of string type if it's a boolean.
-
- @default false
-
- @example
- ```
- import queryString = require('query-string');
-
- queryString.parse('foo=true', {parseBooleans: true});
- //=> {foo: true}
- ```
- */
- readonly parseBooleans?: boolean;
-
- /**
- Parse the fragment identifier from the URL and add it to result object.
-
- @default false
-
- @example
- ```
- import queryString = require('query-string');
-
- queryString.parseUrl('https://foo.bar?foo=bar#xyz', {parseFragmentIdentifier: true});
- //=> {url: 'https://foo.bar', query: {foo: 'bar'}, fragmentIdentifier: 'xyz'}
- ```
- */
- readonly parseFragmentIdentifier?: boolean;
-}
-
-export interface ParsedQuery<T = string> {
- [key: string]: T | T[] | null | undefined;
-}
-
-/**
-Parse a query string into an object. Leading `?` or `#` are ignored, so you can pass `location.search` or `location.hash` directly.
-
-The returned object is created with [`Object.create(null)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create) and thus does not have a `prototype`.
-
-@param query - The query string to parse.
-*/
-export function parse(query: string, options: {parseBooleans: true, parseNumbers: true} & ParseOptions): ParsedQuery<string | boolean | number>;
-export function parse(query: string, options: {parseBooleans: true} & ParseOptions): ParsedQuery<string | boolean>;
-export function parse(query: string, options: {parseNumbers: true} & ParseOptions): ParsedQuery<string | number>;
-export function parse(query: string, options?: ParseOptions): ParsedQuery;
-
-export interface ParsedUrl {
- readonly url: string;
- readonly query: ParsedQuery;
-
- /**
- The fragment identifier of the URL.
-
- Present when the `parseFragmentIdentifier` option is `true`.
- */
- readonly fragmentIdentifier?: string;
-}
-
-/**
-Extract the URL and the query string as an object.
-
-If the `parseFragmentIdentifier` option is `true`, the object will also contain a `fragmentIdentifier` property.
-
-@param url - The URL to parse.
-
-@example
-```
-import queryString = require('query-string');
-
-queryString.parseUrl('https://foo.bar?foo=bar');
-//=> {url: 'https://foo.bar', query: {foo: 'bar'}}
-
-queryString.parseUrl('https://foo.bar?foo=bar#xyz', {parseFragmentIdentifier: true});
-//=> {url: 'https://foo.bar', query: {foo: 'bar'}, fragmentIdentifier: 'xyz'}
-```
-*/
-export function parseUrl(url: string, options?: ParseOptions): ParsedUrl;
-
-export interface StringifyOptions {
- /**
- Strictly encode URI components with [`strict-uri-encode`](https://github.com/kevva/strict-uri-encode). It uses [`encodeURIComponent`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) if set to `false`. You probably [don't care](https://github.com/sindresorhus/query-string/issues/42) about this option.
-
- @default true
- */
- readonly strict?: boolean;
-
- /**
- [URL encode](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) the keys and values.
-
- @default true
- */
- readonly encode?: boolean;
-
- /**
- @default 'none'
-
- - `bracket`: Serialize arrays using bracket representation:
-
- ```
- import queryString = require('query-string');
-
- queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'bracket'});
- //=> 'foo[]=1&foo[]=2&foo[]=3'
- ```
-
- - `index`: Serialize arrays using index representation:
-
- ```
- import queryString = require('query-string');
-
- queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'index'});
- //=> 'foo[0]=1&foo[1]=2&foo[2]=3'
- ```
-
- - `comma`: Serialize arrays by separating elements with comma:
-
- ```
- import queryString = require('query-string');
-
- queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'comma'});
- //=> 'foo=1,2,3'
- ```
-
- - `separator`: Serialize arrays by separating elements with character:
-
- ```
- import queryString = require('query-string');
-
- queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'separator', arrayFormatSeparator: '|'});
- //=> 'foo=1|2|3'
- ```
-
- - `none`: Serialize arrays by using duplicate keys:
-
- ```
- import queryString = require('query-string');
-
- queryString.stringify({foo: [1, 2, 3]});
- //=> 'foo=1&foo=2&foo=3'
- ```
- */
- readonly arrayFormat?: 'bracket' | 'index' | 'comma' | 'separator' | 'none';
-
- /**
- The character used to separate array elements when using `{arrayFormat: 'separator'}`.
-
- @default ,
- */
- readonly arrayFormatSeparator?: string;
-
- /**
- Supports both `Function` as a custom sorting function or `false` to disable sorting.
-
- If omitted, keys are sorted using `Array#sort`, which means, converting them to strings and comparing strings in Unicode code point order.
-
- @default true
-
- @example
- ```
- import queryString = require('query-string');
-
- const order = ['c', 'a', 'b'];
-
- queryString.stringify({a: 1, b: 2, c: 3}, {
- sort: (itemLeft, itemRight) => order.indexOf(itemLeft) - order.indexOf(itemRight)
- });
- //=> 'c=3&a=1&b=2'
- ```
-
- @example
- ```
- import queryString = require('query-string');
-
- queryString.stringify({b: 1, c: 2, a: 3}, {sort: false});
- //=> 'b=1&c=2&a=3'
- ```
- */
- readonly sort?: ((itemLeft: string, itemRight: string) => number) | false;
-
- /**
- Skip keys with `null` as the value.
-
- Note that keys with `undefined` as the value are always skipped.
-
- @default false
-
- @example
- ```
- import queryString = require('query-string');
-
- queryString.stringify({a: 1, b: undefined, c: null, d: 4}, {
- skipNull: true
- });
- //=> 'a=1&d=4'
-
- queryString.stringify({a: undefined, b: null}, {
- skipNull: true
- });
- //=> ''
- ```
- */
- readonly skipNull?: boolean;
-
- /**
- Skip keys with an empty string as the value.
-
- @default false
-
- @example
- ```
- import queryString = require('query-string');
-
- queryString.stringify({a: 1, b: '', c: '', d: 4}, {
- skipEmptyString: true
- });
- //=> 'a=1&d=4'
- ```
-
- @example
- ```
- import queryString = require('query-string');
-
- queryString.stringify({a: '', b: ''}, {
- skipEmptyString: true
- });
- //=> ''
- ```
- */
- readonly skipEmptyString?: boolean;
-}
-
-/**
-Stringify an object into a query string and sort the keys.
-*/
-export function stringify(
- object: {[key: string]: any},
- options?: StringifyOptions
-): string;
-
-/**
-Extract a query string from a URL that can be passed into `.parse()`.
-
-Note: This behaviour can be changed with the `skipNull` option.
-*/
-export function extract(url: string): string;
-
-/**
-Stringify an object into a URL with a query string and sorting the keys. The inverse of [`.parseUrl()`](https://github.com/sindresorhus/query-string#parseurlstring-options)
-
-Query items in the `query` property overrides queries in the `url` property.
-
-The `fragmentIdentifier` property overrides the fragment identifier in the `url` property.
-
-@example
-```
-queryString.stringifyUrl({url: 'https://foo.bar', query: {foo: 'bar'}});
-//=> 'https://foo.bar?foo=bar'
-
-queryString.stringifyUrl({url: 'https://foo.bar?foo=baz', query: {foo: 'bar'}});
-//=> 'https://foo.bar?foo=bar'
-
-queryString.stringifyUrl({
- url: 'https://foo.bar',
- query: {
- top: 'foo'
- },
- fragmentIdentifier: 'bar'
-});
-//=> 'https://foo.bar?top=foo#bar'
-```
-*/
-export function stringifyUrl(
- object: ParsedUrl,
- options?: StringifyOptions
-): string;
diff --git a/node_modules/query-string/index.js b/node_modules/query-string/index.js
deleted file mode 100644
index de1d7b182..000000000
--- a/node_modules/query-string/index.js
+++ /dev/null
@@ -1,378 +0,0 @@
-'use strict';
-const strictUriEncode = require('strict-uri-encode');
-const decodeComponent = require('decode-uri-component');
-const splitOnFirst = require('split-on-first');
-
-const isNullOrUndefined = value => value === null || value === undefined;
-
-function encoderForArrayFormat(options) {
- switch (options.arrayFormat) {
- case 'index':
- return key => (result, value) => {
- const index = result.length;
-
- if (
- value === undefined ||
- (options.skipNull && value === null) ||
- (options.skipEmptyString && value === '')
- ) {
- return result;
- }
-
- if (value === null) {
- return [...result, [encode(key, options), '[', index, ']'].join('')];
- }
-
- return [
- ...result,
- [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')
- ];
- };
-
- case 'bracket':
- return key => (result, value) => {
- if (
- value === undefined ||
- (options.skipNull && value === null) ||
- (options.skipEmptyString && value === '')
- ) {
- return result;
- }
-
- if (value === null) {
- return [...result, [encode(key, options), '[]'].join('')];
- }
-
- return [...result, [encode(key, options), '[]=', encode(value, options)].join('')];
- };
-
- case 'comma':
- case 'separator':
- return key => (result, value) => {
- if (value === null || value === undefined || value.length === 0) {
- return result;
- }
-
- if (result.length === 0) {
- return [[encode(key, options), '=', encode(value, options)].join('')];
- }
-
- return [[result, encode(value, options)].join(options.arrayFormatSeparator)];
- };
-
- default:
- return key => (result, value) => {
- if (
- value === undefined ||
- (options.skipNull && value === null) ||
- (options.skipEmptyString && value === '')
- ) {
- return result;
- }
-
- if (value === null) {
- return [...result, encode(key, options)];
- }
-
- return [...result, [encode(key, options), '=', encode(value, options)].join('')];
- };
- }
-}
-
-function parserForArrayFormat(options) {
- let result;
-
- switch (options.arrayFormat) {
- case 'index':
- return (key, value, accumulator) => {
- result = /\[(\d*)\]$/.exec(key);
-
- key = key.replace(/\[\d*\]$/, '');
-
- if (!result) {
- accumulator[key] = value;
- return;
- }
-
- if (accumulator[key] === undefined) {
- accumulator[key] = {};
- }
-
- accumulator[key][result[1]] = value;
- };
-
- case 'bracket':
- return (key, value, accumulator) => {
- result = /(\[\])$/.exec(key);
- key = key.replace(/\[\]$/, '');
-
- if (!result) {
- accumulator[key] = value;
- return;
- }
-
- if (accumulator[key] === undefined) {
- accumulator[key] = [value];
- return;
- }
-
- accumulator[key] = [].concat(accumulator[key], value);
- };
-
- case 'comma':
- case 'separator':
- return (key, value, accumulator) => {
- const isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1;
- const newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);
- accumulator[key] = newValue;
- };
-
- default:
- return (key, value, accumulator) => {
- if (accumulator[key] === undefined) {
- accumulator[key] = value;
- return;
- }
-
- accumulator[key] = [].concat(accumulator[key], value);
- };
- }
-}
-
-function validateArrayFormatSeparator(value) {
- if (typeof value !== 'string' || value.length !== 1) {
- throw new TypeError('arrayFormatSeparator must be single character string');
- }
-}
-
-function encode(value, options) {
- if (options.encode) {
- return options.strict ? strictUriEncode(value) : encodeURIComponent(value);
- }
-
- return value;
-}
-
-function decode(value, options) {
- if (options.decode) {
- return decodeComponent(value);
- }
-
- return value;
-}
-
-function keysSorter(input) {
- if (Array.isArray(input)) {
- return input.sort();
- }
-
- if (typeof input === 'object') {
- return keysSorter(Object.keys(input))
- .sort((a, b) => Number(a) - Number(b))
- .map(key => input[key]);
- }
-
- return input;
-}
-
-function removeHash(input) {
- const hashStart = input.indexOf('#');
- if (hashStart !== -1) {
- input = input.slice(0, hashStart);
- }
-
- return input;
-}
-
-function getHash(url) {
- let hash = '';
- const hashStart = url.indexOf('#');
- if (hashStart !== -1) {
- hash = url.slice(hashStart);
- }
-
- return hash;
-}
-
-function extract(input) {
- input = removeHash(input);
- const queryStart = input.indexOf('?');
- if (queryStart === -1) {
- return '';
- }
-
- return input.slice(queryStart + 1);
-}
-
-function parseValue(value, options) {
- if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {
- value = Number(value);
- } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
- value = value.toLowerCase() === 'true';
- }
-
- return value;
-}
-
-function parse(input, options) {
- options = Object.assign({
- decode: true,
- sort: true,
- arrayFormat: 'none',
- arrayFormatSeparator: ',',
- parseNumbers: false,
- parseBooleans: false
- }, options);
-
- validateArrayFormatSeparator(options.arrayFormatSeparator);
-
- const formatter = parserForArrayFormat(options);
-
- // Create an object with no prototype
- const ret = Object.create(null);
-
- if (typeof input !== 'string') {
- return ret;
- }
-
- input = input.trim().replace(/^[?#&]/, '');
-
- if (!input) {
- return ret;
- }
-
- for (const param of input.split('&')) {
- let [key, value] = splitOnFirst(options.decode ? param.replace(/\+/g, ' ') : param, '=');
-
- // Missing `=` should be `null`:
- // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
- value = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);
- formatter(decode(key, options), value, ret);
- }
-
- for (const key of Object.keys(ret)) {
- const value = ret[key];
- if (typeof value === 'object' && value !== null) {
- for (const k of Object.keys(value)) {
- value[k] = parseValue(value[k], options);
- }
- } else {
- ret[key] = parseValue(value, options);
- }
- }
-
- if (options.sort === false) {
- return ret;
- }
-
- return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {
- const value = ret[key];
- if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {
- // Sort object keys, not values
- result[key] = keysSorter(value);
- } else {
- result[key] = value;
- }
-
- return result;
- }, Object.create(null));
-}
-
-exports.extract = extract;
-exports.parse = parse;
-
-exports.stringify = (object, options) => {
- if (!object) {
- return '';
- }
-
- options = Object.assign({
- encode: true,
- strict: true,
- arrayFormat: 'none',
- arrayFormatSeparator: ','
- }, options);
-
- validateArrayFormatSeparator(options.arrayFormatSeparator);
-
- const shouldFilter = key => (
- (options.skipNull && isNullOrUndefined(object[key])) ||
- (options.skipEmptyString && object[key] === '')
- );
-
- const formatter = encoderForArrayFormat(options);
-
- const objectCopy = {};
-
- for (const key of Object.keys(object)) {
- if (!shouldFilter(key)) {
- objectCopy[key] = object[key];
- }
- }
-
- const keys = Object.keys(objectCopy);
-
- if (options.sort !== false) {
- keys.sort(options.sort);
- }
-
- return keys.map(key => {
- const value = object[key];
-
- if (value === undefined) {
- return '';
- }
-
- if (value === null) {
- return encode(key, options);
- }
-
- if (Array.isArray(value)) {
- return value
- .reduce(formatter(key), [])
- .join('&');
- }
-
- return encode(key, options) + '=' + encode(value, options);
- }).filter(x => x.length > 0).join('&');
-};
-
-exports.parseUrl = (input, options) => {
- options = Object.assign({
- decode: true
- }, options);
-
- const [url, hash] = splitOnFirst(input, '#');
-
- return Object.assign(
- {
- url: url.split('?')[0] || '',
- query: parse(extract(input), options)
- },
- options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}
- );
-};
-
-exports.stringifyUrl = (input, options) => {
- options = Object.assign({
- encode: true,
- strict: true
- }, options);
-
- const url = removeHash(input.url).split('?')[0] || '';
- const queryFromUrl = exports.extract(input.url);
- const parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});
-
- const query = Object.assign(parsedQueryFromUrl, input.query);
- let queryString = exports.stringify(query, options);
- if (queryString) {
- queryString = `?${queryString}`;
- }
-
- let hash = getHash(input.url);
- if (input.fragmentIdentifier) {
- hash = `#${encode(input.fragmentIdentifier, options)}`;
- }
-
- return `${url}${queryString}${hash}`;
-};
diff --git a/node_modules/query-string/license b/node_modules/query-string/license
deleted file mode 100644
index e464bf785..000000000
--- a/node_modules/query-string/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (http://sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/query-string/package.json b/node_modules/query-string/package.json
deleted file mode 100644
index 011b68358..000000000
--- a/node_modules/query-string/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "query-string",
- "version": "6.13.1",
- "description": "Parse and stringify URL query strings",
- "license": "MIT",
- "repository": "sindresorhus/query-string",
- "funding": "https://github.com/sponsors/sindresorhus",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "https://sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "benchmark": "node benchmark.js",
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "browser",
- "querystring",
- "query",
- "string",
- "qs",
- "param",
- "parameter",
- "url",
- "parse",
- "stringify",
- "encode",
- "decode",
- "searchparams"
- ],
- "dependencies": {
- "decode-uri-component": "^0.2.0",
- "split-on-first": "^1.0.0",
- "strict-uri-encode": "^2.0.0"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "benchmark": "^2.1.4",
- "deep-equal": "^1.0.1",
- "fast-check": "^1.5.0",
- "tsd": "^0.7.3",
- "xo": "^0.24.0"
- }
-}
diff --git a/node_modules/query-string/readme.md b/node_modules/query-string/readme.md
deleted file mode 100644
index 46e58b5b0..000000000
--- a/node_modules/query-string/readme.md
+++ /dev/null
@@ -1,469 +0,0 @@
-# query-string [![Build Status](https://travis-ci.com/sindresorhus/query-string.svg?branch=master)](https://travis-ci.com/github/sindresorhus/query-string) [![](https://badgen.net/bundlephobia/minzip/query-string)](https://bundlephobia.com/result?p=query-string)
-
-> Parse and stringify URL [query strings](https://en.wikipedia.org/wiki/Query_string)
-
-<br>
-
----
-
-<div align="center">
- <p>
- <p>
- <sup>
- <a href="https://github.com/sponsors/sindresorhus">My open source work is supported by the community</a>
- </sup>
- </p>
- <sup>Special thanks to:</sup>
- <br>
- <br>
- <a href="https://standardresume.co">
- <img src="https://sindresorhus.com/assets/thanks/standard-resume-logo.svg" width="200"/>
- </a>
- </p>
-</div>
-
----
-
-<br>
-
-## Install
-
-```
-$ npm install query-string
-```
-
-This module targets Node.js 6 or later and the latest version of Chrome, Firefox, and Safari. If you want support for older browsers, or, if your project is using create-react-app v1, use version 5: `npm install query-string@5`.
-
-## Usage
-
-```js
-const queryString = require('query-string');
-
-console.log(location.search);
-//=> '?foo=bar'
-
-const parsed = queryString.parse(location.search);
-console.log(parsed);
-//=> {foo: 'bar'}
-
-console.log(location.hash);
-//=> '#token=bada55cafe'
-
-const parsedHash = queryString.parse(location.hash);
-console.log(parsedHash);
-//=> {token: 'bada55cafe'}
-
-parsed.foo = 'unicorn';
-parsed.ilike = 'pizza';
-
-const stringified = queryString.stringify(parsed);
-//=> 'foo=unicorn&ilike=pizza'
-
-location.search = stringified;
-// note that `location.search` automatically prepends a question mark
-console.log(location.search);
-//=> '?foo=unicorn&ilike=pizza'
-```
-
-## API
-
-### .parse(string, options?)
-
-Parse a query string into an object. Leading `?` or `#` are ignored, so you can pass `location.search` or `location.hash` directly.
-
-The returned object is created with [`Object.create(null)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create) and thus does not have a `prototype`.
-
-#### options
-
-Type: `object`
-
-##### decode
-
-Type: `boolean`\
-Default: `true`
-
-Decode the keys and values. URL components are decoded with [`decode-uri-component`](https://github.com/SamVerschueren/decode-uri-component).
-
-##### arrayFormat
-
-Type: `string`\
-Default: `'none'`
-
-- `'bracket'`: Parse arrays with bracket representation:
-
-```js
-const queryString = require('query-string');
-
-queryString.parse('foo[]=1&foo[]=2&foo[]=3', {arrayFormat: 'bracket'});
-//=> {foo: ['1', '2', '3']}
-```
-
-- `'index'`: Parse arrays with index representation:
-
-```js
-const queryString = require('query-string');
-
-queryString.parse('foo[0]=1&foo[1]=2&foo[3]=3', {arrayFormat: 'index'});
-//=> {foo: ['1', '2', '3']}
-```
-
-- `'comma'`: Parse arrays with elements separated by comma:
-
-```js
-const queryString = require('query-string');
-
-queryString.parse('foo=1,2,3', {arrayFormat: 'comma'});
-//=> {foo: ['1', '2', '3']}
-```
-
-- `'separator'`: Parse arrays with elements separated by a custom character:
-
-```js
-const queryString = require('query-string');
-
-queryString.parse('foo=1|2|3', {arrayFormat: 'separator', arrayFormatSeparator: '|'});
-//=> {foo: ['1', '2', '3']}
-```
-
-- `'none'`: Parse arrays with elements using duplicate keys:
-
-```js
-const queryString = require('query-string');
-
-queryString.parse('foo=1&foo=2&foo=3');
-//=> {foo: ['1', '2', '3']}
-```
-
-##### arrayFormatSeparator
-
-Type: `string`\
-Default: `','`
-
-The character used to separate array elements when using `{arrayFormat: 'separator'}`.
-
-##### sort
-
-Type: `Function | boolean`\
-Default: `true`
-
-Supports both `Function` as a custom sorting function or `false` to disable sorting.
-
-##### parseNumbers
-
-Type: `boolean`\
-Default: `false`
-
-```js
-const queryString = require('query-string');
-
-queryString.parse('foo=1', {parseNumbers: true});
-//=> {foo: 1}
-```
-
-Parse the value as a number type instead of string type if it's a number.
-
-##### parseBooleans
-
-Type: `boolean`\
-Default: `false`
-
-```js
-const queryString = require('query-string');
-
-queryString.parse('foo=true', {parseBooleans: true});
-//=> {foo: true}
-```
-
-Parse the value as a boolean type instead of string type if it's a boolean.
-
-### .stringify(object, options?)
-
-Stringify an object into a query string and sorting the keys.
-
-#### options
-
-Type: `object`
-
-##### strict
-
-Type: `boolean`\
-Default: `true`
-
-Strictly encode URI components with [strict-uri-encode](https://github.com/kevva/strict-uri-encode). It uses [encodeURIComponent](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) if set to false. You probably [don't care](https://github.com/sindresorhus/query-string/issues/42) about this option.
-
-##### encode
-
-Type: `boolean`\
-Default: `true`
-
-[URL encode](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) the keys and values.
-
-##### arrayFormat
-
-Type: `string`\
-Default: `'none'`
-
-- `'bracket'`: Serialize arrays using bracket representation:
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'bracket'});
-//=> 'foo[]=1&foo[]=2&foo[]=3'
-```
-
-- `'index'`: Serialize arrays using index representation:
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'index'});
-//=> 'foo[0]=1&foo[1]=2&foo[2]=3'
-```
-
-- `'comma'`: Serialize arrays by separating elements with comma:
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'comma'});
-//=> 'foo=1,2,3'
-```
-
-- `'none'`: Serialize arrays by using duplicate keys:
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({foo: [1, 2, 3]});
-//=> 'foo=1&foo=2&foo=3'
-```
-
-##### arrayFormatSeparator
-
-Type: `string`\
-Default: `','`
-
-The character used to separate array elements when using `{arrayFormat: 'separator'}`.
-
-##### sort
-
-Type: `Function | boolean`
-
-Supports both `Function` as a custom sorting function or `false` to disable sorting.
-
-```js
-const queryString = require('query-string');
-
-const order = ['c', 'a', 'b'];
-
-queryString.stringify({a: 1, b: 2, c: 3}, {
- sort: (a, b) => order.indexOf(a) - order.indexOf(b)
-});
-//=> 'c=3&a=1&b=2'
-```
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({b: 1, c: 2, a: 3}, {sort: false});
-//=> 'b=1&c=2&a=3'
-```
-
-If omitted, keys are sorted using `Array#sort()`, which means, converting them to strings and comparing strings in Unicode code point order.
-
-##### skipNull
-
-Skip keys with `null` as the value.
-
-Note that keys with `undefined` as the value are always skipped.
-
-Type: `boolean`\
-Default: `false`
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({a: 1, b: undefined, c: null, d: 4}, {
- skipNull: true
-});
-//=> 'a=1&d=4'
-```
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({a: undefined, b: null}, {
- skipNull: true
-});
-//=> ''
-```
-
-##### skipEmptyString
-
-Skip keys with an empty string as the value.
-
-Type: `boolean`\
-Default: `false`
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({a: 1, b: '', c: '', d: 4}, {
- skipEmptyString: true
-});
-//=> 'a=1&d=4'
-```
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({a: '', b: ''}, {
- skipEmptyString: true
-});
-//=> ''
-```
-
-### .extract(string)
-
-Extract a query string from a URL that can be passed into `.parse()`.
-
-Note: This behaviour can be changed with the `skipNull` option.
-
-### .parseUrl(string, options?)
-
-Extract the URL and the query string as an object.
-
-Returns an object with a `url` and `query` property.
-
-If the `parseFragmentIdentifier` option is `true`, the object will also contain a `fragmentIdentifier` property.
-
-```js
-const queryString = require('query-string');
-
-queryString.parseUrl('https://foo.bar?foo=bar');
-//=> {url: 'https://foo.bar', query: {foo: 'bar'}}
-
-queryString.parseUrl('https://foo.bar?foo=bar#xyz', {parseFragmentIdentifier: true});
-//=> {url: 'https://foo.bar', query: {foo: 'bar'}, fragmentIdentifier: 'xyz'}
-```
-
-#### options
-
-Type: `object`
-
-The options are the same as for `.parse()`.
-
-Extra options are as below.
-
-##### parseFragmentIdentifier
-
-Parse the fragment identifier from the URL.
-
-Type: `boolean`\
-Default: `false`
-
-```js
-const queryString = require('query-string');
-
-queryString.parseUrl('https://foo.bar?foo=bar#xyz', {parseFragmentIdentifier: true});
-//=> {url: 'https://foo.bar', query: {foo: 'bar'}, fragmentIdentifier: 'xyz'}
-```
-
-### .stringifyUrl(object, options?)
-
-Stringify an object into a URL with a query string and sorting the keys. The inverse of [`.parseUrl()`](https://github.com/sindresorhus/query-string#parseurlstring-options)
-
-The `options` are the same as for `.stringify()`.
-
-Returns a string with the URL and a query string.
-
-Query items in the `query` property overrides queries in the `url` property.
-
-The `fragmentIdentifier` property overrides the fragment identifier in the `url` property.
-
-```js
-queryString.stringifyUrl({url: 'https://foo.bar', query: {foo: 'bar'}});
-//=> 'https://foo.bar?foo=bar'
-
-queryString.stringifyUrl({url: 'https://foo.bar?foo=baz', query: {foo: 'bar'}});
-//=> 'https://foo.bar?foo=bar'
-
-queryString.stringifyUrl({
- url: 'https://foo.bar',
- query: {
- top: 'foo'
- },
- fragmentIdentifier: 'bar'
-});
-//=> 'https://foo.bar?top=foo#bar'
-```
-
-#### object
-
-Type: `object`
-
-##### url
-
-Type: `string`
-
-The URL to stringify.
-
-##### query
-
-Type: `object`
-
-Query items to add to the URL.
-
-## Nesting
-
-This module intentionally doesn't support nesting as it's not spec'd and varies between implementations, which causes a lot of [edge cases](https://github.com/visionmedia/node-querystring/issues).
-
-You're much better off just converting the object to a JSON string:
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({
- foo: 'bar',
- nested: JSON.stringify({
- unicorn: 'cake'
- })
-});
-//=> 'foo=bar&nested=%7B%22unicorn%22%3A%22cake%22%7D'
-```
-
-However, there is support for multiple instances of the same key:
-
-```js
-const queryString = require('query-string');
-
-queryString.parse('likes=cake&name=bob&likes=icecream');
-//=> {likes: ['cake', 'icecream'], name: 'bob'}
-
-queryString.stringify({color: ['taupe', 'chartreuse'], id: '515'});
-//=> 'color=taupe&color=chartreuse&id=515'
-```
-
-## Falsy values
-
-Sometimes you want to unset a key, or maybe just make it present without assigning a value to it. Here is how falsy values are stringified:
-
-```js
-const queryString = require('query-string');
-
-queryString.stringify({foo: false});
-//=> 'foo=false'
-
-queryString.stringify({foo: null});
-//=> 'foo'
-
-queryString.stringify({foo: undefined});
-//=> ''
-```
-
-## query-string for enterprise
-
-Available as part of the Tidelift Subscription.
-
-The maintainers of query-string and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-query-string?utm_source=npm-query-string&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/node_modules/split-on-first/index.d.ts b/node_modules/split-on-first/index.d.ts
deleted file mode 100644
index 6123bef91..000000000
--- a/node_modules/split-on-first/index.d.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
-Split a string on the first occurrence of a given separator.
-
-@param string - The string to split.
-@param separator - The separator to split on.
-
-@example
-```
-import splitOnFirst = require('split-on-first');
-
-splitOnFirst('a-b-c', '-');
-//=> ['a', 'b-c']
-
-splitOnFirst('key:value:value2', ':');
-//=> ['key', 'value:value2']
-
-splitOnFirst('a---b---c', '---');
-//=> ['a', 'b---c']
-
-splitOnFirst('a-b-c', '+');
-//=> ['a-b-c']
-```
-*/
-declare function splitOnFirst(
- string: string,
- separator: string
-): [string, string?];
-
-export = splitOnFirst;
diff --git a/node_modules/split-on-first/index.js b/node_modules/split-on-first/index.js
deleted file mode 100644
index d9140706d..000000000
--- a/node_modules/split-on-first/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-module.exports = (string, separator) => {
- if (!(typeof string === 'string' && typeof separator === 'string')) {
- throw new TypeError('Expected the arguments to be of type `string`');
- }
-
- if (separator === '') {
- return [string];
- }
-
- const separatorIndex = string.indexOf(separator);
-
- if (separatorIndex === -1) {
- return [string];
- }
-
- return [
- string.slice(0, separatorIndex),
- string.slice(separatorIndex + separator.length)
- ];
-};
diff --git a/node_modules/split-on-first/license b/node_modules/split-on-first/license
deleted file mode 100644
index e7af2f771..000000000
--- a/node_modules/split-on-first/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/split-on-first/package.json b/node_modules/split-on-first/package.json
deleted file mode 100644
index 1082ec476..000000000
--- a/node_modules/split-on-first/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "split-on-first",
- "version": "1.1.0",
- "description": "Split a string on the first occurance of a given separator",
- "license": "MIT",
- "repository": "sindresorhus/split-on-first",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=6"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "split",
- "string",
- "first",
- "occurrence",
- "separator",
- "delimiter",
- "text"
- ],
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.2",
- "xo": "^0.24.0"
- }
-}
diff --git a/node_modules/split-on-first/readme.md b/node_modules/split-on-first/readme.md
deleted file mode 100644
index 2463cf1cc..000000000
--- a/node_modules/split-on-first/readme.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# split-on-first [![Build Status](https://travis-ci.com/sindresorhus/split-on-first.svg?branch=master)](https://travis-ci.com/sindresorhus/split-on-first)
-
-> Split a string on the first occurrence of a given separator
-
-This is similar to [`String#split()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split), but that one splits on all the occurrences, not just the first one.
-
-
-## Install
-
-```
-$ npm install split-on-first
-```
-
-
-## Usage
-
-```js
-const splitOnFirst = require('split-on-first');
-
-splitOnFirst('a-b-c', '-');
-//=> ['a', 'b-c']
-
-splitOnFirst('key:value:value2', ':');
-//=> ['key', 'value:value2']
-
-splitOnFirst('a---b---c', '---');
-//=> ['a', 'b---c']
-
-splitOnFirst('a-b-c', '+');
-//=> ['a-b-c']
-```
-
-
-## API
-
-### splitOnFirst(string, separator)
-
-#### string
-
-Type: `string`
-
-The string to split.
-
-#### separator
-
-Type: `string`
-
-The separator to split on.
-
-
-## Related
-
-- [split-at](https://github.com/sindresorhus/split-at) - Split a string at one or more indices
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/strict-uri-encode/index.js b/node_modules/strict-uri-encode/index.js
deleted file mode 100644
index affabef0c..000000000
--- a/node_modules/strict-uri-encode/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-'use strict';
-module.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);
diff --git a/node_modules/strict-uri-encode/license b/node_modules/strict-uri-encode/license
deleted file mode 100644
index 0f8cf79c3..000000000
--- a/node_modules/strict-uri-encode/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Kevin Martensson <kevinmartensson@gmail.com> (github.com/kevva)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/strict-uri-encode/package.json b/node_modules/strict-uri-encode/package.json
deleted file mode 100644
index 565fb632b..000000000
--- a/node_modules/strict-uri-encode/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "strict-uri-encode",
- "version": "2.0.0",
- "description": "A stricter URI encode adhering to RFC 3986",
- "license": "MIT",
- "repository": "kevva/strict-uri-encode",
- "author": {
- "name": "Kevin Mårtensson",
- "email": "kevinmartensson@gmail.com",
- "url": "github.com/kevva"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "component",
- "encode",
- "RFC3986",
- "uri"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/node_modules/strict-uri-encode/readme.md b/node_modules/strict-uri-encode/readme.md
deleted file mode 100644
index 05e3fee25..000000000
--- a/node_modules/strict-uri-encode/readme.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# strict-uri-encode [![Build Status](https://travis-ci.org/kevva/strict-uri-encode.svg?branch=master)](https://travis-ci.org/kevva/strict-uri-encode)
-
-> A stricter URI encode adhering to [RFC 3986](http://tools.ietf.org/html/rfc3986)
-
-
-## Install
-
-```
-$ npm install --save strict-uri-encode
-```
-
-
-## Usage
-
-```js
-const strictUriEncode = require('strict-uri-encode');
-
-strictUriEncode('unicorn!foobar');
-//=> 'unicorn%21foobar'
-
-strictUriEncode('unicorn*foobar');
-//=> 'unicorn%2Afoobar'
-```
-
-
-## API
-
-### strictUriEncode(string)
-
-#### string
-
-Type: `string`, `number`
-
-String to URI encode.
-
-
-## License
-
-MIT © [Kevin Mårtensson](http://github.com/kevva)
diff --git a/node_modules/through/.travis.yml b/node_modules/through/.travis.yml
deleted file mode 100644
index c693a939d..000000000
--- a/node_modules/through/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
- - 0.6
- - 0.8
- - "0.10"
diff --git a/node_modules/through/LICENSE.APACHE2 b/node_modules/through/LICENSE.APACHE2
deleted file mode 100644
index 6366c0471..000000000
--- a/node_modules/through/LICENSE.APACHE2
+++ /dev/null
@@ -1,15 +0,0 @@
-Apache License, Version 2.0
-
-Copyright (c) 2011 Dominic Tarr
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/node_modules/through/LICENSE.MIT b/node_modules/through/LICENSE.MIT
deleted file mode 100644
index 6eafbd734..000000000
--- a/node_modules/through/LICENSE.MIT
+++ /dev/null
@@ -1,24 +0,0 @@
-The MIT License
-
-Copyright (c) 2011 Dominic Tarr
-
-Permission is hereby granted, free of charge,
-to any person obtaining a copy of this software and
-associated documentation files (the "Software"), to
-deal in the Software without restriction, including
-without limitation the rights to use, copy, modify,
-merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom
-the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/through/index.js b/node_modules/through/index.js
deleted file mode 100644
index ca5fc5901..000000000
--- a/node_modules/through/index.js
+++ /dev/null
@@ -1,108 +0,0 @@
-var Stream = require('stream')
-
-// through
-//
-// a stream that does nothing but re-emit the input.
-// useful for aggregating a series of changing but not ending streams into one stream)
-
-exports = module.exports = through
-through.through = through
-
-//create a readable writable stream.
-
-function through (write, end, opts) {
- write = write || function (data) { this.queue(data) }
- end = end || function () { this.queue(null) }
-
- var ended = false, destroyed = false, buffer = [], _ended = false
- var stream = new Stream()
- stream.readable = stream.writable = true
- stream.paused = false
-
-// stream.autoPause = !(opts && opts.autoPause === false)
- stream.autoDestroy = !(opts && opts.autoDestroy === false)
-
- stream.write = function (data) {
- write.call(this, data)
- return !stream.paused
- }
-
- function drain() {
- while(buffer.length && !stream.paused) {
- var data = buffer.shift()
- if(null === data)
- return stream.emit('end')
- else
- stream.emit('data', data)
- }
- }
-
- stream.queue = stream.push = function (data) {
-// console.error(ended)
- if(_ended) return stream
- if(data === null) _ended = true
- buffer.push(data)
- drain()
- return stream
- }
-
- //this will be registered as the first 'end' listener
- //must call destroy next tick, to make sure we're after any
- //stream piped from here.
- //this is only a problem if end is not emitted synchronously.
- //a nicer way to do this is to make sure this is the last listener for 'end'
-
- stream.on('end', function () {
- stream.readable = false
- if(!stream.writable && stream.autoDestroy)
- process.nextTick(function () {
- stream.destroy()
- })
- })
-
- function _end () {
- stream.writable = false
- end.call(stream)
- if(!stream.readable && stream.autoDestroy)
- stream.destroy()
- }
-
- stream.end = function (data) {
- if(ended) return
- ended = true
- if(arguments.length) stream.write(data)
- _end() // will emit or queue
- return stream
- }
-
- stream.destroy = function () {
- if(destroyed) return
- destroyed = true
- ended = true
- buffer.length = 0
- stream.writable = stream.readable = false
- stream.emit('close')
- return stream
- }
-
- stream.pause = function () {
- if(stream.paused) return
- stream.paused = true
- return stream
- }
-
- stream.resume = function () {
- if(stream.paused) {
- stream.paused = false
- stream.emit('resume')
- }
- drain()
- //may have become paused again,
- //as drain emits 'data'.
- if(!stream.paused)
- stream.emit('drain')
- return stream
- }
- return stream
-}
-
diff --git a/node_modules/through/package.json b/node_modules/through/package.json
deleted file mode 100644
index 98621899d..000000000
--- a/node_modules/through/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "through",
- "version": "2.3.8",
- "description": "simplified stream construction",
- "main": "index.js",
- "scripts": {
- "test": "set -e; for t in test/*.js; do node $t; done"
- },
- "devDependencies": {
- "stream-spec": "~0.3.5",
- "tape": "~2.3.2",
- "from": "~0.1.3"
- },
- "keywords": [
- "stream",
- "streams",
- "user-streams",
- "pipe"
- ],
- "author": "Dominic Tarr <dominic.tarr@gmail.com> (dominictarr.com)",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/dominictarr/through.git"
- },
- "homepage": "https://github.com/dominictarr/through",
- "testling": {
- "browsers": [
- "ie/8..latest",
- "ff/15..latest",
- "chrome/20..latest",
- "safari/5.1..latest"
- ],
- "files": "test/*.js"
- }
-}
diff --git a/node_modules/through/readme.markdown b/node_modules/through/readme.markdown
deleted file mode 100644
index cb34c8135..000000000
--- a/node_modules/through/readme.markdown
+++ /dev/null
@@ -1,64 +0,0 @@
-#through
-
-[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)
-[![testling badge](https://ci.testling.com/dominictarr/through.png)](https://ci.testling.com/dominictarr/through)
-
-Easy way to create a `Stream` that is both `readable` and `writable`.
-
-* Pass in optional `write` and `end` methods.
-* `through` takes care of pause/resume logic if you use `this.queue(data)` instead of `this.emit('data', data)`.
-* Use `this.pause()` and `this.resume()` to manage flow.
-* Check `this.paused` to see current flow state. (`write` always returns `!this.paused`).
-
-This function is the basis for most of the synchronous streams in
-[event-stream](http://github.com/dominictarr/event-stream).
-
-``` js
-var through = require('through')
-
-through(function write(data) {
- this.queue(data) //data *must* not be null
- },
- function end () { //optional
- this.queue(null)
- })
-```
-
-Or, can also be used _without_ buffering on pause, use `this.emit('data', data)`,
-and this.emit('end')
-
-``` js
-var through = require('through')
-
-through(function write(data) {
- this.emit('data', data)
- //this.pause()
- },
- function end () { //optional
- this.emit('end')
- })
-```
-
-## Extended Options
-
-You will probably not need these 99% of the time.
-
-### autoDestroy=false
-
-By default, `through` emits close when the writable
-and readable side of the stream has ended.
-If that is not desired, set `autoDestroy=false`.
-
-``` js
-var through = require('through')
-
-//like this
-var ts = through(write, end, {autoDestroy: false})
-//or like this
-var ts = through(write, end)
-ts.autoDestroy = false
-```
-
-## License
-
-MIT / Apache2
diff --git a/node_modules/through/test/async.js b/node_modules/through/test/async.js
deleted file mode 100644
index 46bdbaebc..000000000
--- a/node_modules/through/test/async.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var from = require('from')
-var through = require('../')
-
-var tape = require('tape')
-
-tape('simple async example', function (t) {
-
- var n = 0, expected = [1,2,3,4,5], actual = []
- from(expected)
- .pipe(through(function(data) {
- this.pause()
- n ++
- setTimeout(function(){
- console.log('pushing data', data)
- this.push(data)
- this.resume()
- }.bind(this), 300)
- })).pipe(through(function(data) {
- console.log('pushing data second time', data);
- this.push(data)
- })).on('data', function (d) {
- actual.push(d)
- }).on('end', function() {
- t.deepEqual(actual, expected)
- t.end()
- })
-
-})
diff --git a/node_modules/through/test/auto-destroy.js b/node_modules/through/test/auto-destroy.js
deleted file mode 100644
index 9a8fd0006..000000000
--- a/node_modules/through/test/auto-destroy.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var test = require('tape')
-var through = require('../')
-
-// must emit end before close.
-
-test('end before close', function (assert) {
- var ts = through()
- ts.autoDestroy = false
- var ended = false, closed = false
-
- ts.on('end', function () {
- assert.ok(!closed)
- ended = true
- })
- ts.on('close', function () {
- assert.ok(ended)
- closed = true
- })
-
- ts.write(1)
- ts.write(2)
- ts.write(3)
- ts.end()
- assert.ok(ended)
- assert.notOk(closed)
- ts.destroy()
- assert.ok(closed)
- assert.end()
-})
-
diff --git a/node_modules/through/test/buffering.js b/node_modules/through/test/buffering.js
deleted file mode 100644
index b0084bfc6..000000000
--- a/node_modules/through/test/buffering.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var test = require('tape')
-var through = require('../')
-
-// must emit end before close.
-
-test('buffering', function(assert) {
- var ts = through(function (data) {
- this.queue(data)
- }, function () {
- this.queue(null)
- })
-
- var ended = false, actual = []
-
- ts.on('data', actual.push.bind(actual))
- ts.on('end', function () {
- ended = true
- })
-
- ts.write(1)
- ts.write(2)
- ts.write(3)
- assert.deepEqual(actual, [1, 2, 3])
- ts.pause()
- ts.write(4)
- ts.write(5)
- ts.write(6)
- assert.deepEqual(actual, [1, 2, 3])
- ts.resume()
- assert.deepEqual(actual, [1, 2, 3, 4, 5, 6])
- ts.pause()
- ts.end()
- assert.ok(!ended)
- ts.resume()
- assert.ok(ended)
- assert.end()
-})
-
-test('buffering has data in queue, when ends', function (assert) {
-
- /*
- * If stream ends while paused with data in the queue,
- * stream should still emit end after all data is written
- * on resume.
- */
-
- var ts = through(function (data) {
- this.queue(data)
- }, function () {
- this.queue(null)
- })
-
- var ended = false, actual = []
-
- ts.on('data', actual.push.bind(actual))
- ts.on('end', function () {
- ended = true
- })
-
- ts.pause()
- ts.write(1)
- ts.write(2)
- ts.write(3)
- ts.end()
- assert.deepEqual(actual, [], 'no data written yet, still paused')
- assert.ok(!ended, 'end not emitted yet, still paused')
- ts.resume()
- assert.deepEqual(actual, [1, 2, 3], 'resumed, all data should be delivered')
- assert.ok(ended, 'end should be emitted once all data was delivered')
- assert.end();
-})
diff --git a/node_modules/through/test/end.js b/node_modules/through/test/end.js
deleted file mode 100644
index fa113f58e..000000000
--- a/node_modules/through/test/end.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var test = require('tape')
-var through = require('../')
-
-// must emit end before close.
-
-test('end before close', function (assert) {
- var ts = through()
- var ended = false, closed = false
-
- ts.on('end', function () {
- assert.ok(!closed)
- ended = true
- })
- ts.on('close', function () {
- assert.ok(ended)
- closed = true
- })
-
- ts.write(1)
- ts.write(2)
- ts.write(3)
- ts.end()
- assert.ok(ended)
- assert.ok(closed)
- assert.end()
-})
-
-test('end only once', function (t) {
-
- var ts = through()
- var ended = false, closed = false
-
- ts.on('end', function () {
- t.equal(ended, false)
- ended = true
- })
-
- ts.queue(null)
- ts.queue(null)
- ts.queue(null)
-
- ts.resume()
-
- t.end()
-})
diff --git a/node_modules/through/test/index.js b/node_modules/through/test/index.js
deleted file mode 100644
index 96da82f97..000000000
--- a/node_modules/through/test/index.js
+++ /dev/null
@@ -1,133 +0,0 @@
-
-var test = require('tape')
-var spec = require('stream-spec')
-var through = require('../')
-
-/*
- I'm using these two functions, and not streams and pipe
- so there is less to break. if this test fails it must be
- the implementation of _through_
-*/
-
-function write(array, stream) {
- array = array.slice()
- function next() {
- while(array.length)
- if(stream.write(array.shift()) === false)
- return stream.once('drain', next)
-
- stream.end()
- }
-
- next()
-}
-
-function read(stream, callback) {
- var actual = []
- stream.on('data', function (data) {
- actual.push(data)
- })
- stream.once('end', function () {
- callback(null, actual)
- })
- stream.once('error', function (err) {
- callback(err)
- })
-}
-
-test('simple defaults', function(assert) {
-
- var l = 1000
- , expected = []
-
- while(l--) expected.push(l * Math.random())
-
- var t = through()
- var s = spec(t).through().pausable()
-
- read(t, function (err, actual) {
- assert.ifError(err)
- assert.deepEqual(actual, expected)
- assert.end()
- })
-
- t.on('close', s.validate)
-
- write(expected, t)
-});
-
-test('simple functions', function(assert) {
-
- var l = 1000
- , expected = []
-
- while(l--) expected.push(l * Math.random())
-
- var t = through(function (data) {
- this.emit('data', data*2)
- })
- var s = spec(t).through().pausable()
-
-
- read(t, function (err, actual) {
- assert.ifError(err)
- assert.deepEqual(actual, expected.map(function (data) {
- return data*2
- }))
- assert.end()
- })
-
- t.on('close', s.validate)
-
- write(expected, t)
-})
-
-test('pauses', function(assert) {
-
- var l = 1000
- , expected = []
-
- while(l--) expected.push(l) //Math.random())
-
- var t = through()
-
- var s = spec(t)
- .through()
- .pausable()
-
- t.on('data', function () {
- if(Math.random() > 0.1) return
- t.pause()
- process.nextTick(function () {
- t.resume()
- })
- })
-
- read(t, function (err, actual) {
- assert.ifError(err)
- assert.deepEqual(actual, expected)
- })
-
- t.on('close', function () {
- s.validate()
- assert.end()
- })
-
- write(expected, t)
-})
-
-test('does not soft-end on `undefined`', function(assert) {
- var stream = through()
- , count = 0
-
- stream.on('data', function (data) {
- count++
- })
-
- stream.write(undefined)
- stream.write(undefined)
-
- assert.equal(count, 2)
-
- assert.end()
-})
diff --git a/node_modules/worker-farm/.editorconfig b/node_modules/worker-farm/.editorconfig
deleted file mode 100644
index feaebc231..000000000
--- a/node_modules/worker-farm/.editorconfig
+++ /dev/null
@@ -1,16 +0,0 @@
-# This file is for unifying the coding style for different editors and IDEs
-# editorconfig.org
-
-root = true
-
-[*]
-end_of_line = lf
-charset = utf-8
-insert_final_newline = true
-trim_trailing_whitespace = true
-indent_style = space
-indent_size = 2
-
-[*.js]
-max_line_length = 80
-View
diff --git a/node_modules/worker-farm/.travis.yml b/node_modules/worker-farm/.travis.yml
deleted file mode 100644
index 7af56429c..000000000
--- a/node_modules/worker-farm/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: node_js
-node_js:
- - 6
- - 8
- - 10
- - 12
-branches:
- only:
- - master
-notifications:
- email:
- - rod@vagg.org
diff --git a/node_modules/worker-farm/LICENSE.md b/node_modules/worker-farm/LICENSE.md
deleted file mode 100644
index 274c9b460..000000000
--- a/node_modules/worker-farm/LICENSE.md
+++ /dev/null
@@ -1,13 +0,0 @@
-The MIT License (MIT)
-=====================
-
-Copyright (c) 2014 LevelUP contributors
----------------------------------------
-
-*LevelUP contributors listed at <https://github.com/rvagg/node-levelup#contributors>*
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/worker-farm/README.md b/node_modules/worker-farm/README.md
deleted file mode 100644
index c52689ed9..000000000
--- a/node_modules/worker-farm/README.md
+++ /dev/null
@@ -1,150 +0,0 @@
-# Worker Farm [![Build Status](https://secure.travis-ci.org/rvagg/node-worker-farm.svg)](http://travis-ci.org/rvagg/node-worker-farm)
-
-[![NPM](https://nodei.co/npm/worker-farm.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/worker-farm/) [![NPM](https://nodei.co/npm-dl/worker-farm.png?months=6&height=3)](https://nodei.co/npm/worker-farm/)
-
-
-Distribute processing tasks to child processes with an über-simple API and baked-in durability & custom concurrency options. *Available in npm as <strong>worker-farm</strong>*.
-
-## Example
-
-Given a file, *child.js*:
-
-```js
-module.exports = function (inp, callback) {
- callback(null, inp + ' BAR (' + process.pid + ')')
-}
-```
-
-And a main file:
-
-```js
-var workerFarm = require('worker-farm')
- , workers = workerFarm(require.resolve('./child'))
- , ret = 0
-
-for (var i = 0; i < 10; i++) {
- workers('#' + i + ' FOO', function (err, outp) {
- console.log(outp)
- if (++ret == 10)
- workerFarm.end(workers)
- })
-}
-```
-
-We'll get an output something like the following:
-
-```
-#1 FOO BAR (8546)
-#0 FOO BAR (8545)
-#8 FOO BAR (8545)
-#9 FOO BAR (8546)
-#2 FOO BAR (8548)
-#4 FOO BAR (8551)
-#3 FOO BAR (8549)
-#6 FOO BAR (8555)
-#5 FOO BAR (8553)
-#7 FOO BAR (8557)
-```
-
-This example is contained in the *[examples/basic](https://github.com/rvagg/node-worker-farm/tree/master/examples/basic/)* directory.
-
-### Example #1: Estimating π using child workers
-
-You will also find a more complex example in *[examples/pi](https://github.com/rvagg/node-worker-farm/tree/master/examples/pi/)* that estimates the value of **π** by using a Monte Carlo *area-under-the-curve* method and compares the speed of doing it all in-process vs using child workers to complete separate portions.
-
-Running `node examples/pi` will give you something like:
-
-```
-Doing it the slow (single-process) way...
-π ≈ 3.1416269360000006 (0.0000342824102075312 away from actual!)
-took 8341 milliseconds
-Doing it the fast (multi-process) way...
-π ≈ 3.1416233600000036 (0.00003070641021052367 away from actual!)
-took 1985 milliseconds
-```
-
-## Durability
-
-An important feature of Worker Farm is **call durability**. If a child process dies for any reason during the execution of call(s), those calls will be re-queued and taken care of by other child processes. In this way, when you ask for something to be done, unless there is something *seriously* wrong with what you're doing, you should get a result on your callback function.
-
-## My use-case
-
-There are other libraries for managing worker processes available but my use-case was fairly specific: I need to make heavy use of the [node-java](https://github.com/nearinfinity/node-java) library to interact with JVM code. Unfortunately, because the JVM garbage collector is so difficult to interact with, it's prone to killing your Node process when the GC kicks under heavy load. For safety I needed a durable way to make calls so that (1) it wouldn't kill my main process and (2) any calls that weren't successful would be resubmitted for processing.
-
-Worker Farm allows me to spin up multiple JVMs to be controlled by Node, and have a single, uncomplicated API that acts the same way as an in-process API and the calls will be taken care of by a child process even if an error kills a child process while it is working as the call will simply be passed to a new child process.
-
-**But**, don't think that Worker Farm is specific to that use-case, it's designed to be very generic and simple to adapt to anything requiring the use of child Node processes.
-
-## API
-
-Worker Farm exports a main function and an `end()` method. The main function sets up a "farm" of coordinated child-process workers and it can be used to instantiate multiple farms, all operating independently.
-
-### workerFarm([options, ]pathToModule[, exportedMethods])
-
-In its most basic form, you call `workerFarm()` with the path to a module file to be invoked by the child process. You should use an **absolute path** to the module file, the best way to obtain the path is with `require.resolve('./path/to/module')`, this function can be used in exactly the same way as `require('./path/to/module')` but it returns an absolute path.
-
-#### `exportedMethods`
-
-If your module exports a single function on `module.exports` then you should omit the final parameter. However, if you are exporting multiple functions on `module.exports` then you should list them in an Array of Strings:
-
-```js
-var workers = workerFarm(require.resolve('./mod'), [ 'doSomething', 'doSomethingElse' ])
-workers.doSomething(function () {})
-workers.doSomethingElse(function () {})
-```
-
-Listing the available methods will instruct Worker Farm what API to provide you with on the returned object. If you don't list a `exportedMethods` Array then you'll get a single callable function to use; but if you list the available methods then you'll get an object with callable functions by those names.
-
-**It is assumed that each function you call on your child module will take a `callback` function as the last argument.**
-
-#### `options`
-
-If you don't provide an `options` object then the following defaults will be used:
-
-```js
-{
- workerOptions : {}
- , maxCallsPerWorker : Infinity
- , maxConcurrentWorkers : require('os').cpus().length
- , maxConcurrentCallsPerWorker : 10
- , maxConcurrentCalls : Infinity
- , maxCallTime : Infinity
- , maxRetries : Infinity
- , autoStart : false
- , onChild : function() {}
-}
-```
-
- * **<code>workerOptions</code>** allows you to customize all the parameters passed to child nodes. This object supports [all possible options of `child_process.fork`](https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options). The default options passed are the parent `execArgv`, `cwd` and `env`. Any (or all) of them can be overridden, and others can be added as well.
-
- * **<code>maxCallsPerWorker</code>** allows you to control the lifespan of your child processes. A positive number will indicate that you only want each child to accept that many calls before it is terminated. This may be useful if you need to control memory leaks or similar in child processes.
-
- * **<code>maxConcurrentWorkers</code>** will set the number of child processes to maintain concurrently. By default it is set to the number of CPUs available on the current system, but it can be any reasonable number, including `1`.
-
- * **<code>maxConcurrentCallsPerWorker</code>** allows you to control the *concurrency* of individual child processes. Calls are placed into a queue and farmed out to child processes according to the number of calls they are allowed to handle concurrently. It is arbitrarily set to 10 by default so that calls are shared relatively evenly across workers, however if your calls predictably take a similar amount of time then you could set it to `Infinity` and Worker Farm won't queue any calls but spread them evenly across child processes and let them go at it. If your calls aren't I/O bound then it won't matter what value you use here as the individual workers won't be able to execute more than a single call at a time.
-
- * **<code>maxConcurrentCalls</code>** allows you to control the maximum number of calls in the queue&mdash;either actively being processed or waiting for a worker to be processed. `Infinity` indicates no limit but if you have conditions that may endlessly queue jobs and you need to set a limit then provide a `>0` value and any calls that push the limit will return on their callback with a `MaxConcurrentCallsError` error (check `err.type == 'MaxConcurrentCallsError'`).
-
- * **<code>maxCallTime</code>** *(use with caution, understand what this does before you use it!)* when `!== Infinity`, will cap a time, in milliseconds, that *any single call* can take to execute in a worker. If this time limit is exceeded by just a single call then the worker running that call will be killed and any calls running on that worker will have their callbacks returned with a `TimeoutError` (check `err.type == 'TimeoutError'`). If you are running with `maxConcurrentCallsPerWorker` value greater than `1` then **all calls currently executing** will fail and will be automatically resubmitted uless you've changed the `maxRetries` option. Use this if you have jobs that may potentially end in infinite loops that you can't programatically end with your child code. Preferably run this with a `maxConcurrentCallsPerWorker` so you don't interrupt other calls when you have a timeout. This timeout operates on a per-call basis but will interrupt a whole worker.
-
- * **<code>maxRetries</code>** allows you to control the max number of call requeues after worker termination (unexpected or timeout). By default this option is set to `Infinity` which means that each call of each terminated worker will always be auto requeued. When the number of retries exceeds `maxRetries` value, the job callback will be executed with a `ProcessTerminatedError`. Note that if you are running with finite `maxCallTime` and `maxConcurrentCallsPerWorkers` greater than `1` then any `TimeoutError` will increase the retries counter *for each* concurrent call of the terminated worker.
-
- * **<code>autoStart</code>** when set to `true` will start the workers as early as possible. Use this when your workers have to do expensive initialization. That way they'll be ready when the first request comes through.
-
- * **<code>onChild</code>** when new child process starts this callback will be called with subprocess object as an argument. Use this when you need to add some custom communication with child processes.
-
-### workerFarm.end(farm)
-
-Child processes stay alive waiting for jobs indefinitely and your farm manager will stay alive managing its workers, so if you need it to stop then you have to do so explicitly. If you send your farm API to `workerFarm.end()` then it'll cleanly end your worker processes. Note though that it's a *soft* ending so it'll wait for child processes to finish what they are working on before asking them to die.
-
-Any calls that are queued and not yet being handled by a child process will be discarded. `end()` only waits for those currently in progress.
-
-Once you end a farm, it won't handle any more calls, so don't even try!
-
-## Related
-
-* [farm-cli](https://github.com/Kikobeats/farm-cli) – Launch a farm of workers from CLI.
-
-## License
-
-Worker Farm is Copyright (c) 2014 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.
diff --git a/node_modules/worker-farm/examples/basic/child.js b/node_modules/worker-farm/examples/basic/child.js
deleted file mode 100644
index 0f0900b5e..000000000
--- a/node_modules/worker-farm/examples/basic/child.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict'
-
-module.exports = function (inp, callback) {
- callback(null, inp + ' BAR (' + process.pid + ')')
-}
diff --git a/node_modules/worker-farm/examples/basic/index.js b/node_modules/worker-farm/examples/basic/index.js
deleted file mode 100644
index 452e7b163..000000000
--- a/node_modules/worker-farm/examples/basic/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-let workerFarm = require('../../')
- , workers = workerFarm(require.resolve('./child'))
- , ret = 0
-
-for (let i = 0; i < 10; i++) {
- workers('#' + i + ' FOO', function (err, outp) {
- console.log(outp)
- if (++ret == 10)
- workerFarm.end(workers)
- })
-}
diff --git a/node_modules/worker-farm/examples/pi/calc.js b/node_modules/worker-farm/examples/pi/calc.js
deleted file mode 100644
index df9e5bae1..000000000
--- a/node_modules/worker-farm/examples/pi/calc.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict'
-
-/* A simple π estimation function using a Monte Carlo method
- * For 0 to `points`, take 2 random numbers < 1, square and add them to
- * find the area under that point in a 1x1 square. If that area is <= 1
- * then it's *within* a quarter-circle, otherwise it's outside.
- * Take the number of points <= 1 and multiply it by 4 and you have an
- * estimate!
- * Do this across multiple processes and average the results to
- * increase accuracy.
- */
-
-module.exports = function (points, callback) {
- let inside = 0
- , i = points
-
- while (i--)
- if (Math.pow(Math.random(), 2) + Math.pow(Math.random(), 2) <= 1)
- inside++
-
- callback(null, (inside / points) * 4)
-}
diff --git a/node_modules/worker-farm/examples/pi/index.js b/node_modules/worker-farm/examples/pi/index.js
deleted file mode 100644
index b7b26839e..000000000
--- a/node_modules/worker-farm/examples/pi/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict'
-
-const CHILDREN = 500
- , POINTS_PER_CHILD = 1000000
- , FARM_OPTIONS = {
- maxConcurrentWorkers : require('os').cpus().length
- , maxCallsPerWorker : Infinity
- , maxConcurrentCallsPerWorker : 1
- }
-
-let workerFarm = require('../../')
- , calcDirect = require('./calc')
- , calcWorker = workerFarm(FARM_OPTIONS, require.resolve('./calc'))
-
- , ret
- , start
-
- , tally = function (finish, err, avg) {
- ret.push(avg)
- if (ret.length == CHILDREN) {
- let pi = ret.reduce(function (a, b) { return a + b }) / ret.length
- , end = +new Date()
- console.log('π ≈', pi, '\t(' + Math.abs(pi - Math.PI), 'away from actual!)')
- console.log('took', end - start, 'milliseconds')
- if (finish)
- finish()
- }
- }
-
- , calc = function (method, callback) {
- ret = []
- start = +new Date()
- for (let i = 0; i < CHILDREN; i++)
- method(POINTS_PER_CHILD, tally.bind(null, callback))
- }
-
-console.log('Doing it the slow (single-process) way...')
-calc(calcDirect, function () {
- console.log('Doing it the fast (multi-process) way...')
- calc(calcWorker, process.exit)
-})
diff --git a/node_modules/worker-farm/index.d.ts b/node_modules/worker-farm/index.d.ts
deleted file mode 100644
index 310e91503..000000000
--- a/node_modules/worker-farm/index.d.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { ForkOptions } from "child_process";
-
-export = Farm;
-
-declare function Farm(name: string): Farm.Workers;
-declare function Farm(name: string, exportedMethods: string[]): Farm.Workers;
-declare function Farm(options: Farm.FarmOptions, name: string): Farm.Workers;
-declare function Farm(
- options: Farm.FarmOptions,
- name: string,
- exportedMethods: string[],
-): Farm.Workers;
-
-type WorkerCallback0 = () => void;
-type WorkerCallback1 = (arg1: any) => void;
-type WorkerCallback2 = (arg1: any, arg2: any) => void;
-type WorkerCallback3 = (arg1: any, arg2: any, arg3: any) => void;
-type WorkerCallback4 = (arg1: any, arg2: any, arg3: any, arg4: any) => void;
-
-declare namespace Farm {
- export function end(workers: Workers, callback?: Function): void;
-
- export interface Workers {
- [x: string]: Workers,
- (callback: WorkerCallback): void;
- (arg1: any, callback: WorkerCallback): void;
- (arg1: any, arg2: any, callback: WorkerCallback): void;
- (arg1: any, arg2: any, arg3: any, callback: WorkerCallback): void;
- (
- arg1: any,
- arg2: any,
- arg3: any,
- arg4: any,
- callback: WorkerCallback,
- ): void;
- }
-
- export interface FarmOptions {
- maxCallsPerWorker?: number;
- maxConcurrentWorkers?: number;
- maxConcurrentCallsPerWorker?: number;
- maxConcurrentCalls?: number;
- maxCallTime?: number;
- maxRetries?: number;
- autoStart?: boolean;
- workerOptions?: ForkOptions;
- }
-
- export type WorkerCallback =
- | WorkerCallback0
- | WorkerCallback1
- | WorkerCallback2
- | WorkerCallback3
- | WorkerCallback4;
-}
diff --git a/node_modules/worker-farm/lib/child/index.js b/node_modules/worker-farm/lib/child/index.js
deleted file mode 100644
index 78f633713..000000000
--- a/node_modules/worker-farm/lib/child/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict'
-
-let $module
-
-/*
- let contextProto = this.context;
- while (contextProto = Object.getPrototypeOf(contextProto)) {
- completionGroups.push(Object.getOwnPropertyNames(contextProto));
- }
-*/
-
-
-function handle (data) {
- let idx = data.idx
- , child = data.child
- , method = data.method
- , args = data.args
- , callback = function () {
- let _args = Array.prototype.slice.call(arguments)
- if (_args[0] instanceof Error) {
- let e = _args[0]
- _args[0] = {
- '$error' : '$error'
- , 'type' : e.constructor.name
- , 'message' : e.message
- , 'stack' : e.stack
- }
- Object.keys(e).forEach(function(key) {
- _args[0][key] = e[key]
- })
- }
- process.send({ owner: 'farm', idx: idx, child: child, args: _args })
- }
- , exec
-
- if (method == null && typeof $module == 'function')
- exec = $module
- else if (typeof $module[method] == 'function')
- exec = $module[method]
-
- if (!exec)
- return console.error('NO SUCH METHOD:', method)
-
- exec.apply(null, args.concat([ callback ]))
-}
-
-
-process.on('message', function (data) {
- if (data.owner !== 'farm') {
- return;
- }
-
- if (!$module) return $module = require(data.module)
- if (data.event == 'die') return process.exit(0)
- handle(data)
-})
diff --git a/node_modules/worker-farm/lib/farm.js b/node_modules/worker-farm/lib/farm.js
deleted file mode 100644
index 60720dc56..000000000
--- a/node_modules/worker-farm/lib/farm.js
+++ /dev/null
@@ -1,348 +0,0 @@
-'use strict'
-
-const DEFAULT_OPTIONS = {
- workerOptions : {}
- , maxCallsPerWorker : Infinity
- , maxConcurrentWorkers : (require('os').cpus() || { length: 1 }).length
- , maxConcurrentCallsPerWorker : 10
- , maxConcurrentCalls : Infinity
- , maxCallTime : Infinity // exceed this and the whole worker is terminated
- , maxRetries : Infinity
- , forcedKillTime : 100
- , autoStart : false
- , onChild : function() {}
- }
-
-const fork = require('./fork')
- , TimeoutError = require('errno').create('TimeoutError')
- , ProcessTerminatedError = require('errno').create('ProcessTerminatedError')
- , MaxConcurrentCallsError = require('errno').create('MaxConcurrentCallsError')
-
-
-function Farm (options, path) {
- this.options = Object.assign({}, DEFAULT_OPTIONS, options)
- this.path = path
- this.activeCalls = 0
-}
-
-
-// make a handle to pass back in the form of an external API
-Farm.prototype.mkhandle = function (method) {
- return function () {
- let args = Array.prototype.slice.call(arguments)
- if (this.activeCalls + this.callQueue.length >= this.options.maxConcurrentCalls) {
- let err = new MaxConcurrentCallsError('Too many concurrent calls (active: ' + this.activeCalls + ', queued: ' + this.callQueue.length + ')')
- if (typeof args[args.length - 1] == 'function')
- return process.nextTick(args[args.length - 1].bind(null, err))
- throw err
- }
- this.addCall({
- method : method
- , callback : args.pop()
- , args : args
- , retries : 0
- })
- }.bind(this)
-}
-
-
-// a constructor of sorts
-Farm.prototype.setup = function (methods) {
- let iface
- if (!methods) { // single-function export
- iface = this.mkhandle()
- } else { // multiple functions on the export
- iface = {}
- methods.forEach(function (m) {
- iface[m] = this.mkhandle(m)
- }.bind(this))
- }
-
- this.searchStart = -1
- this.childId = -1
- this.children = {}
- this.activeChildren = 0
- this.callQueue = []
-
- if (this.options.autoStart) {
- while (this.activeChildren < this.options.maxConcurrentWorkers)
- this.startChild()
- }
-
- return iface
-}
-
-
-// when a child exits, check if there are any outstanding jobs and requeue them
-Farm.prototype.onExit = function (childId) {
- // delay this to give any sends a chance to finish
- setTimeout(function () {
- let doQueue = false
- if (this.children[childId] && this.children[childId].activeCalls) {
- this.children[childId].calls.forEach(function (call, i) {
- if (!call) return
- else if (call.retries >= this.options.maxRetries) {
- this.receive({
- idx : i
- , child : childId
- , args : [ new ProcessTerminatedError('cancel after ' + call.retries + ' retries!') ]
- })
- } else {
- call.retries++
- this.callQueue.unshift(call)
- doQueue = true
- }
- }.bind(this))
- }
- this.stopChild(childId)
- doQueue && this.processQueue()
- }.bind(this), 10)
-}
-
-
-// start a new worker
-Farm.prototype.startChild = function () {
- this.childId++
-
- let forked = fork(this.path, this.options.workerOptions)
- , id = this.childId
- , c = {
- send : forked.send
- , child : forked.child
- , calls : []
- , activeCalls : 0
- , exitCode : null
- }
-
- this.options.onChild(forked.child);
-
- forked.child.on('message', function(data) {
- if (data.owner !== 'farm') {
- return;
- }
- this.receive(data);
- }.bind(this))
- forked.child.once('exit', function (code) {
- c.exitCode = code
- this.onExit(id)
- }.bind(this))
-
- this.activeChildren++
- this.children[id] = c
-}
-
-
-// stop a worker, identified by id
-Farm.prototype.stopChild = function (childId) {
- let child = this.children[childId]
- if (child) {
- child.send({owner: 'farm', event: 'die'})
- setTimeout(function () {
- if (child.exitCode === null)
- child.child.kill('SIGKILL')
- }, this.options.forcedKillTime).unref()
- ;delete this.children[childId]
- this.activeChildren--
- }
-}
-
-
-// called from a child process, the data contains information needed to
-// look up the child and the original call so we can invoke the callback
-Farm.prototype.receive = function (data) {
- let idx = data.idx
- , childId = data.child
- , args = data.args
- , child = this.children[childId]
- , call
-
- if (!child) {
- return console.error(
- 'Worker Farm: Received message for unknown child. '
- + 'This is likely as a result of premature child death, '
- + 'the operation will have been re-queued.'
- )
- }
-
- call = child.calls[idx]
- if (!call) {
- return console.error(
- 'Worker Farm: Received message for unknown index for existing child. '
- + 'This should not happen!'
- )
- }
-
- if (this.options.maxCallTime !== Infinity)
- clearTimeout(call.timer)
-
- if (args[0] && args[0].$error == '$error') {
- let e = args[0]
- switch (e.type) {
- case 'TypeError': args[0] = new TypeError(e.message); break
- case 'RangeError': args[0] = new RangeError(e.message); break
- case 'EvalError': args[0] = new EvalError(e.message); break
- case 'ReferenceError': args[0] = new ReferenceError(e.message); break
- case 'SyntaxError': args[0] = new SyntaxError(e.message); break
- case 'URIError': args[0] = new URIError(e.message); break
- default: args[0] = new Error(e.message)
- }
- args[0].type = e.type
- args[0].stack = e.stack
-
- // Copy any custom properties to pass it on.
- Object.keys(e).forEach(function(key) {
- args[0][key] = e[key];
- });
- }
-
- process.nextTick(function () {
- call.callback.apply(null, args)
- })
-
- ;delete child.calls[idx]
- child.activeCalls--
- this.activeCalls--
-
- if (child.calls.length >= this.options.maxCallsPerWorker
- && !Object.keys(child.calls).length) {
- // this child has finished its run, kill it
- this.stopChild(childId)
- }
-
- // allow any outstanding calls to be processed
- this.processQueue()
-}
-
-
-Farm.prototype.childTimeout = function (childId) {
- let child = this.children[childId]
- , i
-
- if (!child)
- return
-
- for (i in child.calls) {
- this.receive({
- idx : i
- , child : childId
- , args : [ new TimeoutError('worker call timed out!') ]
- })
- }
- this.stopChild(childId)
-}
-
-
-// send a call to a worker, identified by id
-Farm.prototype.send = function (childId, call) {
- let child = this.children[childId]
- , idx = child.calls.length
-
- child.calls.push(call)
- child.activeCalls++
- this.activeCalls++
-
- child.send({
- owner : 'farm'
- , idx : idx
- , child : childId
- , method : call.method
- , args : call.args
- })
-
- if (this.options.maxCallTime !== Infinity) {
- call.timer =
- setTimeout(this.childTimeout.bind(this, childId), this.options.maxCallTime)
- }
-}
-
-
-// a list of active worker ids, in order, but the starting offset is
-// shifted each time this method is called, so we work our way through
-// all workers when handing out jobs
-Farm.prototype.childKeys = function () {
- let cka = Object.keys(this.children)
- , cks
-
- if (this.searchStart >= cka.length - 1)
- this.searchStart = 0
- else
- this.searchStart++
-
- cks = cka.splice(0, this.searchStart)
-
- return cka.concat(cks)
-}
-
-
-// Calls are added to a queue, this processes the queue and is called
-// whenever there might be a chance to send more calls to the workers.
-// The various options all impact on when we're able to send calls,
-// they may need to be kept in a queue until a worker is ready.
-Farm.prototype.processQueue = function () {
- let cka, i = 0, childId
-
- if (!this.callQueue.length)
- return this.ending && this.end()
-
- if (this.activeChildren < this.options.maxConcurrentWorkers)
- this.startChild()
-
- for (cka = this.childKeys(); i < cka.length; i++) {
- childId = +cka[i]
- if (this.children[childId].activeCalls < this.options.maxConcurrentCallsPerWorker
- && this.children[childId].calls.length < this.options.maxCallsPerWorker) {
-
- this.send(childId, this.callQueue.shift())
- if (!this.callQueue.length)
- return this.ending && this.end()
- } /*else {
- console.log(
- , this.children[childId].activeCalls < this.options.maxConcurrentCallsPerWorker
- , this.children[childId].calls.length < this.options.maxCallsPerWorker
- , this.children[childId].calls.length , this.options.maxCallsPerWorker)
- }*/
- }
-
- if (this.ending)
- this.end()
-}
-
-
-// add a new call to the call queue, then trigger a process of the queue
-Farm.prototype.addCall = function (call) {
- if (this.ending)
- return this.end() // don't add anything new to the queue
- this.callQueue.push(call)
- this.processQueue()
-}
-
-
-// kills child workers when they're all done
-Farm.prototype.end = function (callback) {
- let complete = true
- if (this.ending === false)
- return
- if (callback)
- this.ending = callback
- else if (this.ending == null)
- this.ending = true
- Object.keys(this.children).forEach(function (child) {
- if (!this.children[child])
- return
- if (!this.children[child].activeCalls)
- this.stopChild(child)
- else
- complete = false
- }.bind(this))
-
- if (complete && typeof this.ending == 'function') {
- process.nextTick(function () {
- this.ending()
- this.ending = false
- }.bind(this))
- }
-}
-
-
-module.exports = Farm
-module.exports.TimeoutError = TimeoutError
diff --git a/node_modules/worker-farm/lib/fork.js b/node_modules/worker-farm/lib/fork.js
deleted file mode 100644
index 5a035d974..000000000
--- a/node_modules/worker-farm/lib/fork.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-const childProcess = require('child_process')
- , childModule = require.resolve('./child/index')
-
-
-function fork (forkModule, workerOptions) {
- // suppress --debug / --inspect flags while preserving others (like --harmony)
- let filteredArgs = process.execArgv.filter(function (v) {
- return !(/^--(debug|inspect)/).test(v)
- })
- , options = Object.assign({
- execArgv : filteredArgs
- , env : process.env
- , cwd : process.cwd()
- }, workerOptions)
- , child = childProcess.fork(childModule, process.argv, options)
-
- child.on('error', function() {
- // this *should* be picked up by onExit and the operation requeued
- })
-
- child.send({ owner: 'farm', module: forkModule })
-
- // return a send() function for this child
- return {
- send : child.send.bind(child)
- , child : child
- }
-}
-
-
-module.exports = fork
diff --git a/node_modules/worker-farm/lib/index.js b/node_modules/worker-farm/lib/index.js
deleted file mode 100644
index 8c1422273..000000000
--- a/node_modules/worker-farm/lib/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict'
-
-const Farm = require('./farm')
-
-let farms = [] // keep record of farms so we can end() them if required
-
-
-function farm (options, path, methods) {
- if (typeof options == 'string') {
- methods = path
- path = options
- options = {}
- }
-
- let f = new Farm(options, path)
- , api = f.setup(methods)
-
- farms.push({ farm: f, api: api })
-
- // return the public API
- return api
-}
-
-
-function end (api, callback) {
- for (let i = 0; i < farms.length; i++)
- if (farms[i] && farms[i].api === api)
- return farms[i].farm.end(callback)
- process.nextTick(callback.bind(null, new Error('Worker farm not found!')))
-}
-
-
-module.exports = farm
-module.exports.end = end
diff --git a/node_modules/worker-farm/package.json b/node_modules/worker-farm/package.json
deleted file mode 100644
index 1c4a1b80e..000000000
--- a/node_modules/worker-farm/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "worker-farm",
- "description": "Distribute processing tasks to child processes with an über-simple API and baked-in durability & custom concurrency options.",
- "version": "1.7.0",
- "homepage": "https://github.com/rvagg/node-worker-farm",
- "authors": [
- "Rod Vagg @rvagg <rod@vagg.org> (https://github.com/rvagg)"
- ],
- "keywords": [
- "worker",
- "child",
- "processing",
- "farm"
- ],
- "main": "./lib/index.js",
- "repository": {
- "type": "git",
- "url": "https://github.com/rvagg/node-worker-farm.git"
- },
- "dependencies": {
- "errno": "~0.1.7"
- },
- "devDependencies": {
- "tape": "~4.10.1"
- },
- "scripts": {
- "test": "node ./tests/"
- },
- "types": "./index.d.ts",
- "license": "MIT"
-}
diff --git a/node_modules/worker-farm/tests/child.js b/node_modules/worker-farm/tests/child.js
deleted file mode 100644
index 71cb728f7..000000000
--- a/node_modules/worker-farm/tests/child.js
+++ /dev/null
@@ -1,87 +0,0 @@
-'use strict'
-
-const fs = require('fs')
-const started = Date.now()
-
-
-module.exports = function (timeout, callback) {
- callback = callback.bind(null, null, process.pid, Math.random(), timeout)
- if (timeout)
- return setTimeout(callback, timeout)
- callback()
-}
-
-
-module.exports.args = function (callback) {
- callback(null, {
- argv : process.argv
- , cwd : process.cwd()
- , execArgv : process.execArgv
- })
-}
-
-
-module.exports.run0 = function (callback) {
- module.exports(0, callback)
-}
-
-
-module.exports.killable = function (id, callback) {
- if (Math.random() < 0.5)
- return process.exit(-1)
- callback(null, id, process.pid)
-}
-
-
-module.exports.err = function (type, message, data, callback) {
- if (typeof data == 'function') {
- callback = data
- data = null
- } else {
- let err = new Error(message)
- Object.keys(data).forEach(function(key) {
- err[key] = data[key]
- })
- callback(err)
- return
- }
-
- if (type == 'TypeError')
- return callback(new TypeError(message))
- callback(new Error(message))
-}
-
-
-module.exports.block = function () {
- while (true);
-}
-
-
-// use provided file path to save retries count among terminated workers
-module.exports.stubborn = function (path, callback) {
- function isOutdated(path) {
- return ((new Date).getTime() - fs.statSync(path).mtime.getTime()) > 2000
- }
-
- // file may not be properly deleted, check if modified no earler than two seconds ago
- if (!fs.existsSync(path) || isOutdated(path)) {
- fs.writeFileSync(path, '1')
- process.exit(-1)
- }
-
- let retry = parseInt(fs.readFileSync(path, 'utf8'))
- if (Number.isNaN(retry))
- return callback(new Error('file contents is not a number'))
-
- if (retry > 4) {
- callback(null, 12)
- } else {
- fs.writeFileSync(path, String(retry + 1))
- process.exit(-1)
- }
-}
-
-
-module.exports.uptime = function (callback) {
- callback(null, Date.now() - started)
-}
diff --git a/node_modules/worker-farm/tests/debug.js b/node_modules/worker-farm/tests/debug.js
deleted file mode 100644
index 4d2b80321..000000000
--- a/node_modules/worker-farm/tests/debug.js
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict'
-
-const workerFarm = require('../')
- , workers = workerFarm(require.resolve('./child'), ['args'])
-
-
-workers.args(function(err, result) {
- console.log(result);
- workerFarm.end(workers)
- console.log('FINISHED')
- process.exit(0)
-})
diff --git a/node_modules/worker-farm/tests/index.js b/node_modules/worker-farm/tests/index.js
deleted file mode 100644
index e6be7bb7a..000000000
--- a/node_modules/worker-farm/tests/index.js
+++ /dev/null
@@ -1,616 +0,0 @@
-'use strict'
-
-const tape = require('tape')
- , child_process = require('child_process')
- , workerFarm = require('../')
- , childPath = require.resolve('./child')
- , fs = require('fs')
- , os = require('os')
-
-function uniq (ar) {
- let a = [], i, j
- o: for (i = 0; i < ar.length; ++i) {
- for (j = 0; j < a.length; ++j) if (a[j] == ar[i]) continue o
- a[a.length] = ar[i]
- }
- return a
-}
-
-
-// a child where module.exports = function ...
-tape('simple, exports=function test', function (t) {
- t.plan(4)
-
- let child = workerFarm(childPath)
- child(0, function (err, pid, rnd) {
- t.ok(pid > process.pid, 'pid makes sense')
- t.ok(pid < process.pid + 750, 'pid makes sense')
- t.ok(rnd >= 0 && rnd < 1, 'rnd result makes sense')
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-// a child where we have module.exports.fn = function ...
-tape('simple, exports.fn test', function (t) {
- t.plan(4)
-
- let child = workerFarm(childPath, [ 'run0' ])
- child.run0(function (err, pid, rnd) {
- t.ok(pid > process.pid, 'pid makes sense')
- t.ok(pid < process.pid + 750, 'pid makes sense')
- t.ok(rnd >= 0 && rnd < 1, 'rnd result makes sense')
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-tape('on child', function (t) {
- t.plan(2)
-
- let child = workerFarm({ onChild: function(subprocess) { childPid = subprocess.pid } }, childPath)
- , childPid = null;
-
- child(0, function(err, pid) {
- t.equal(childPid, pid)
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-// use the returned pids to check that we're using a single child process
-// when maxConcurrentWorkers = 1
-tape('single worker', function (t) {
- t.plan(2)
-
- let child = workerFarm({ maxConcurrentWorkers: 1 }, childPath)
- , pids = []
- , i = 10
-
- while (i--) {
- child(0, function (err, pid) {
- pids.push(pid)
- if (pids.length == 10) {
- t.equal(1, uniq(pids).length, 'only a single process (by pid)')
- } else if (pids.length > 10)
- t.fail('too many callbacks!')
- })
- }
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-// use the returned pids to check that we're using two child processes
-// when maxConcurrentWorkers = 2
-tape('two workers', function (t) {
- t.plan(2)
-
- let child = workerFarm({ maxConcurrentWorkers: 2 }, childPath)
- , pids = []
- , i = 10
-
- while (i--) {
- child(0, function (err, pid) {
- pids.push(pid)
- if (pids.length == 10) {
- t.equal(2, uniq(pids).length, 'only two child processes (by pid)')
- } else if (pids.length > 10)
- t.fail('too many callbacks!')
- })
- }
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-// use the returned pids to check that we're using a child process per
-// call when maxConcurrentWorkers = 10
-tape('many workers', function (t) {
- t.plan(2)
-
- let child = workerFarm({ maxConcurrentWorkers: 10 }, childPath)
- , pids = []
- , i = 10
-
- while (i--) {
- child(1, function (err, pid) {
- pids.push(pid)
- if (pids.length == 10) {
- t.equal(10, uniq(pids).length, 'pids are all the same (by pid)')
- } else if (pids.length > 10)
- t.fail('too many callbacks!')
- })
- }
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-tape('auto start workers', function (t) {
- let child = workerFarm({ maxConcurrentWorkers: 3, autoStart: true }, childPath, ['uptime'])
- , pids = []
- , count = 5
- , i = count
- , delay = 250
-
- t.plan(count + 1)
-
- setTimeout(function() {
- while (i--)
- child.uptime(function (err, uptime) {
- t.ok(uptime > 10, 'child has been up before the request (' + uptime + 'ms)')
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- }, delay)
-})
-
-
-// use the returned pids to check that we're using a child process per
-// call when we set maxCallsPerWorker = 1 even when we have maxConcurrentWorkers = 1
-tape('single call per worker', function (t) {
- t.plan(2)
-
- let child = workerFarm({
- maxConcurrentWorkers: 1
- , maxConcurrentCallsPerWorker: Infinity
- , maxCallsPerWorker: 1
- , autoStart: true
- }, childPath)
- , pids = []
- , count = 25
- , i = count
-
- while (i--) {
- child(0, function (err, pid) {
- pids.push(pid)
- if (pids.length == count) {
- t.equal(count, uniq(pids).length, 'one process for each call (by pid)')
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- } else if (pids.length > count)
- t.fail('too many callbacks!')
- })
- }
-})
-
-
-// use the returned pids to check that we're using a child process per
-// two-calls when we set maxCallsPerWorker = 2 even when we have maxConcurrentWorkers = 1
-tape('two calls per worker', function (t) {
- t.plan(2)
-
- let child = workerFarm({
- maxConcurrentWorkers: 1
- , maxConcurrentCallsPerWorker: Infinity
- , maxCallsPerWorker: 2
- , autoStart: true
- }, childPath)
- , pids = []
- , count = 20
- , i = count
-
- while (i--) {
- child(0, function (err, pid) {
- pids.push(pid)
- if (pids.length == count) {
- t.equal(count / 2, uniq(pids).length, 'one process for each call (by pid)')
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- } else if (pids.length > count)
- t.fail('too many callbacks!')
- })
- }
-})
-
-
-// use timing to confirm that one worker will process calls sequentially
-tape('many concurrent calls', function (t) {
- t.plan(2)
-
- let child = workerFarm({
- maxConcurrentWorkers: 1
- , maxConcurrentCallsPerWorker: Infinity
- , maxCallsPerWorker: Infinity
- , autoStart: true
- }, childPath)
- , defer = 200
- , count = 200
- , i = count
- , cbc = 0
-
- setTimeout(function () {
- let start = Date.now()
-
- while (i--) {
- child(defer, function () {
- if (++cbc == count) {
- let time = Date.now() - start
- // upper-limit not tied to `count` at all
- t.ok(time > defer && time < (defer * 2.5), 'processed tasks concurrently (' + time + 'ms)')
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- } else if (cbc > count)
- t.fail('too many callbacks!')
- })
- }
- }, 250)
-})
-
-
-// use timing to confirm that one child processes calls sequentially with
-// maxConcurrentCallsPerWorker = 1
-tape('single concurrent call', function (t) {
- t.plan(2)
-
- let child = workerFarm({
- maxConcurrentWorkers: 1
- , maxConcurrentCallsPerWorker: 1
- , maxCallsPerWorker: Infinity
- , autoStart: true
- }, childPath)
- , defer = 20
- , count = 100
- , i = count
- , cbc = 0
-
- setTimeout(function () {
- let start = Date.now()
-
- while (i--) {
- child(defer, function () {
- if (++cbc == count) {
- let time = Date.now() - start
- // upper-limit tied closely to `count`, 1.3 is generous but accounts for all the timers
- // coming back at the same time and the IPC overhead
- t.ok(time > (defer * count) && time < (defer * count * 1.3), 'processed tasks sequentially (' + time + ')')
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- } else if (cbc > count)
- t.fail('too many callbacks!')
- })
- }
- }, 250)
-})
-
-
-// use timing to confirm that one child processes *only* 5 calls concurrently
-tape('multiple concurrent calls', function (t) {
- t.plan(2)
-
- let callsPerWorker = 5
- , child = workerFarm({
- maxConcurrentWorkers: 1
- , maxConcurrentCallsPerWorker: callsPerWorker
- , maxCallsPerWorker: Infinity
- , autoStart: true
- }, childPath)
- , defer = 100
- , count = 100
- , i = count
- , cbc = 0
-
- setTimeout(function () {
- let start = Date.now()
-
- while (i--) {
- child(defer, function () {
- if (++cbc == count) {
- let time = Date.now() - start
- let min = defer * 1.5
- // (defer * (count / callsPerWorker + 2)) - if precise it'd be count/callsPerWorker
- // but accounting for IPC and other overhead, we need to give it a bit of extra time,
- // hence the +2
- let max = defer * (count / callsPerWorker + 2)
- t.ok(time > min && time < max, 'processed tasks concurrently (' + time + ' > ' + min + ' && ' + time + ' < ' + max + ')')
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- } else if (cbc > count)
- t.fail('too many callbacks!')
- })
- }
- }, 250)
-})
-
-
-// call a method that will die with a probability of 0.5 but expect that
-// we'll get results for each of our calls anyway
-tape('durability', function (t) {
- t.plan(3)
-
- let child = workerFarm({ maxConcurrentWorkers: 2 }, childPath, [ 'killable' ])
- , ids = []
- , pids = []
- , count = 20
- , i = count
-
- while (i--) {
- child.killable(i, function (err, id, pid) {
- ids.push(id)
- pids.push(pid)
- if (ids.length == count) {
- t.ok(uniq(pids).length > 2, 'processed by many (' + uniq(pids).length + ') workers, but got there in the end!')
- t.ok(uniq(ids).length == count, 'received a single result for each unique call')
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- } else if (ids.length > count)
- t.fail('too many callbacks!')
- })
- }
-})
-
-
-// a callback provided to .end() can and will be called (uses "simple, exports=function test" to create a child)
-tape('simple, end callback', function (t) {
- t.plan(4)
-
- let child = workerFarm(childPath)
- child(0, function (err, pid, rnd) {
- t.ok(pid > process.pid, 'pid makes sense ' + pid + ' vs ' + process.pid)
- t.ok(pid < process.pid + 750, 'pid makes sense ' + pid + ' vs ' + process.pid)
- t.ok(rnd >= 0 && rnd < 1, 'rnd result makes sense')
- })
-
- workerFarm.end(child, function() {
- t.pass('an .end() callback was successfully called')
- })
-})
-
-
-tape('call timeout test', function (t) {
- t.plan(3 + 3 + 4 + 4 + 4 + 3 + 1)
-
- let child = workerFarm({ maxCallTime: 250, maxConcurrentWorkers: 1 }, childPath)
-
- // should come back ok
- child(50, function (err, pid, rnd) {
- t.ok(pid > process.pid, 'pid makes sense ' + pid + ' vs ' + process.pid)
- t.ok(pid < process.pid + 750, 'pid makes sense ' + pid + ' vs ' + process.pid)
- t.ok(rnd > 0 && rnd < 1, 'rnd result makes sense ' + rnd)
- })
-
- // should come back ok
- child(50, function (err, pid, rnd) {
- t.ok(pid > process.pid, 'pid makes sense ' + pid + ' vs ' + process.pid)
- t.ok(pid < process.pid + 750, 'pid makes sense ' + pid + ' vs ' + process.pid)
- t.ok(rnd > 0 && rnd < 1, 'rnd result makes sense ' + rnd)
- })
-
- // should die
- child(500, function (err, pid, rnd) {
- t.ok(err, 'got an error')
- t.equal(err.type, 'TimeoutError', 'correct error type')
- t.ok(pid === undefined, 'no pid')
- t.ok(rnd === undefined, 'no rnd')
- })
-
- // should die
- child(1000, function (err, pid, rnd) {
- t.ok(err, 'got an error')
- t.equal(err.type, 'TimeoutError', 'correct error type')
- t.ok(pid === undefined, 'no pid')
- t.ok(rnd === undefined, 'no rnd')
- })
-
- // should die even though it is only a 100ms task, it'll get caught up
- // in a dying worker
- setTimeout(function () {
- child(100, function (err, pid, rnd) {
- t.ok(err, 'got an error')
- t.equal(err.type, 'TimeoutError', 'correct error type')
- t.ok(pid === undefined, 'no pid')
- t.ok(rnd === undefined, 'no rnd')
- })
- }, 200)
-
- // should be ok, new worker
- setTimeout(function () {
- child(50, function (err, pid, rnd) {
- t.ok(pid > process.pid, 'pid makes sense ' + pid + ' vs ' + process.pid)
- t.ok(pid < process.pid + 750, 'pid makes sense ' + pid + ' vs ' + process.pid)
- t.ok(rnd > 0 && rnd < 1, 'rnd result makes sense ' + rnd)
- })
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- }, 400)
-})
-
-
-tape('test error passing', function (t) {
- t.plan(10)
-
- let child = workerFarm(childPath, [ 'err' ])
- child.err('Error', 'this is an Error', function (err) {
- t.ok(err instanceof Error, 'is an Error object')
- t.equal('Error', err.type, 'correct type')
- t.equal('this is an Error', err.message, 'correct message')
- })
- child.err('TypeError', 'this is a TypeError', function (err) {
- t.ok(err instanceof Error, 'is a TypeError object')
- t.equal('TypeError', err.type, 'correct type')
- t.equal('this is a TypeError', err.message, 'correct message')
- })
- child.err('Error', 'this is an Error with custom props', {foo: 'bar', 'baz': 1}, function (err) {
- t.ok(err instanceof Error, 'is an Error object')
- t.equal(err.foo, 'bar', 'passes data')
- t.equal(err.baz, 1, 'passes data')
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-tape('test maxConcurrentCalls', function (t) {
- t.plan(10)
-
- let child = workerFarm({ maxConcurrentCalls: 5 }, childPath)
-
- child(50, function (err) { t.notOk(err, 'no error') })
- child(50, function (err) { t.notOk(err, 'no error') })
- child(50, function (err) { t.notOk(err, 'no error') })
- child(50, function (err) { t.notOk(err, 'no error') })
- child(50, function (err) { t.notOk(err, 'no error') })
- child(50, function (err) {
- t.ok(err)
- t.equal(err.type, 'MaxConcurrentCallsError', 'correct error type')
- })
- child(50, function (err) {
- t.ok(err)
- t.equal(err.type, 'MaxConcurrentCallsError', 'correct error type')
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-tape('test maxConcurrentCalls + queue', function (t) {
- t.plan(13)
-
- let child = workerFarm({ maxConcurrentCalls: 4, maxConcurrentWorkers: 2, maxConcurrentCallsPerWorker: 1 }, childPath)
-
- child(20, function (err) { console.log('ended short1'); t.notOk(err, 'no error, short call 1') })
- child(20, function (err) { console.log('ended short2'); t.notOk(err, 'no error, short call 2') })
- child(300, function (err) { t.notOk(err, 'no error, long call 1') })
- child(300, function (err) { t.notOk(err, 'no error, long call 2') })
- child(20, function (err) {
- t.ok(err, 'short call 3 should error')
- t.equal(err.type, 'MaxConcurrentCallsError', 'correct error type')
- })
- child(20, function (err) {
- t.ok(err, 'short call 4 should error')
- t.equal(err.type, 'MaxConcurrentCallsError', 'correct error type')
- })
-
- // cross fingers and hope the two short jobs have ended
- setTimeout(function () {
- child(20, function (err) { t.notOk(err, 'no error, delayed short call 1') })
- child(20, function (err) { t.notOk(err, 'no error, delayed short call 2') })
- child(20, function (err) {
- t.ok(err, 'delayed short call 3 should error')
- t.equal(err.type, 'MaxConcurrentCallsError', 'correct error type')
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
- }, 250)
-})
-
-
-// this test should not keep the process running! if the test process
-// doesn't die then the problem is here
-tape('test timeout kill', function (t) {
- t.plan(3)
-
- let child = workerFarm({ maxCallTime: 250, maxConcurrentWorkers: 1 }, childPath, [ 'block' ])
- child.block(function (err) {
- t.ok(err, 'got an error')
- t.equal(err.type, 'TimeoutError', 'correct error type')
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-tape('test max retries after process terminate', function (t) {
- t.plan(7)
-
- // temporary file is used to store the number of retries among terminating workers
- let filepath1 = '.retries1'
- let child1 = workerFarm({ maxConcurrentWorkers: 1, maxRetries: 5}, childPath, [ 'stubborn' ])
- child1.stubborn(filepath1, function (err, result) {
- t.notOk(err, 'no error')
- t.equal(result, 12, 'correct result')
- })
-
- workerFarm.end(child1, function () {
- fs.unlinkSync(filepath1)
- t.ok(true, 'workerFarm ended')
- })
-
- let filepath2 = '.retries2'
- let child2 = workerFarm({ maxConcurrentWorkers: 1, maxRetries: 3}, childPath, [ 'stubborn' ])
- child2.stubborn(filepath2, function (err, result) {
- t.ok(err, 'got an error')
- t.equal(err.type, 'ProcessTerminatedError', 'correct error type')
- t.equal(err.message, 'cancel after 3 retries!', 'correct message and number of retries')
- })
-
- workerFarm.end(child2, function () {
- fs.unlinkSync(filepath2)
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-tape('custom arguments can be passed to "fork"', function (t) {
- t.plan(3)
-
- // allocate a real, valid path, in any OS
- let cwd = fs.realpathSync(os.tmpdir())
- , workerOptions = {
- cwd : cwd
- , execArgv : ['--expose-gc']
- }
- , child = workerFarm({ maxConcurrentWorkers: 1, maxRetries: 5, workerOptions: workerOptions}, childPath, ['args'])
-
- child.args(function (err, result) {
- t.equal(result.execArgv[0], '--expose-gc', 'flags passed (overridden default)')
- t.equal(result.cwd, cwd, 'correct cwd folder')
- })
-
- workerFarm.end(child, function () {
- t.ok(true, 'workerFarm ended')
- })
-})
-
-
-tape('ensure --debug/--inspect not propagated to children', function (t) {
- t.plan(3)
-
- let script = __dirname + '/debug.js'
- , debugArg = process.version.replace(/^v(\d+)\..*$/, '$1') >= 8 ? '--inspect' : '--debug=8881'
- , child = child_process.spawn(process.execPath, [ debugArg, script ])
- , stdout = ''
-
- child.stdout.on('data', function (data) {
- stdout += data.toString()
- })
-
- child.on('close', function (code) {
- t.equal(code, 0, 'exited without error (' + code + ')')
- t.ok(stdout.indexOf('FINISHED') > -1, 'process finished')
- t.ok(stdout.indexOf('--debug') === -1, 'child does not receive debug flag')
- })
-})
diff --git a/package-lock.json b/package-lock.json
index f8f3e040c..1cd5b8c70 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,35 +19,23 @@
"bin-links",
"byte-size",
"cacache",
- "call-limit",
"chalk",
"chownr",
- "ci-info",
"cli-columns",
"cli-table3",
"columnify",
"config-chain",
- "detect-indent",
- "detect-newline",
- "dezalgo",
"editor",
"find-npm-prefix",
- "fs-write-stream-atomic",
"glob",
"graceful-fs",
"has-unicode",
"hosted-git-info",
- "iferr",
"infer-owner",
- "inflight",
"inherits",
"ini",
"init-package-json",
"is-cidr",
- "json-parse-better-errors",
- "json-parse-even-better-errors",
- "JSONStream",
- "lazy-property",
"libnpmaccess",
"libnpmfund",
"libnpmhook",
@@ -57,22 +45,14 @@
"libnpmsearch",
"libnpmteam",
"libnpmversion",
- "lock-verify",
"lockfile",
- "lodash._baseuniq",
- "lodash.clonedeep",
- "lodash.union",
- "lodash.uniq",
- "lodash.without",
"meant",
"mkdirp",
"mkdirp-infer-owner",
"ms",
"nopt",
- "normalize-package-data",
"npm-audit-report",
"npm-package-arg",
- "npm-packlist",
"npm-pick-manifest",
"npm-profile",
"npm-registry-fetch",
@@ -83,39 +63,27 @@
"osenv",
"pacote",
"parse-conflict-json",
- "path-is-inside",
- "promise-inflight",
"qrcode-terminal",
- "query-string",
"qw",
"read",
"read-package-json",
- "read-package-tree",
- "readable-stream",
- "readdir-scoped-modules",
"request",
"retry",
"rimraf",
- "safe-buffer",
"semver",
"sha",
"slide",
"sorted-object",
"ssri",
- "stringify-package",
"tar",
"text-table",
"tiny-relative-date",
"uid-number",
"umask",
- "unique-filename",
- "unpipe",
"update-notifier",
"uuid",
- "validate-npm-package-license",
"validate-npm-package-name",
"which",
- "worker-farm",
"write-file-atomic"
],
"license": "Artistic-2.0",
@@ -131,35 +99,23 @@
"bin-links": "^2.1.2",
"byte-size": "^5.0.1",
"cacache": "^15.0.5",
- "call-limit": "^1.1.1",
"chalk": "^4.1.0",
"chownr": "^2.0.0",
- "ci-info": "^2.0.0",
"cli-columns": "^3.1.2",
"cli-table3": "^0.5.1",
"columnify": "~1.5.4",
"config-chain": "^1.1.12",
- "detect-indent": "~5.0.0",
- "detect-newline": "^2.1.0",
- "dezalgo": "~1.0.3",
"editor": "~1.0.0",
"find-npm-prefix": "^1.0.2",
- "fs-write-stream-atomic": "~1.0.10",
"glob": "^7.1.4",
"graceful-fs": "^4.2.3",
"has-unicode": "~2.0.1",
"hosted-git-info": "^3.0.5",
- "iferr": "^1.0.2",
"infer-owner": "^1.0.4",
- "inflight": "~1.0.6",
"inherits": "^2.0.4",
"ini": "^1.3.5",
"init-package-json": "^1.10.3",
"is-cidr": "^3.0.0",
- "json-parse-better-errors": "^1.0.2",
- "json-parse-even-better-errors": "^2.2.0",
- "JSONStream": "^1.3.5",
- "lazy-property": "~1.0.0",
"libnpmaccess": "^4.0.0",
"libnpmfund": "0.0.0",
"libnpmhook": "^6.0.0",
@@ -169,22 +125,14 @@
"libnpmsearch": "^3.0.0",
"libnpmteam": "^2.0.1",
"libnpmversion": "^1.0.2",
- "lock-verify": "^2.1.0",
"lockfile": "^1.0.4",
- "lodash._baseuniq": "~4.6.0",
- "lodash.clonedeep": "~4.5.0",
- "lodash.union": "~4.6.0",
- "lodash.uniq": "~4.5.0",
- "lodash.without": "~4.4.0",
"meant": "~1.0.1",
"mkdirp": "^1.0.4",
"mkdirp-infer-owner": "^2.0.0",
"ms": "^2.1.2",
"nopt": "^4.0.3",
- "normalize-package-data": "^2.5.0",
"npm-audit-report": "^2.1.3",
"npm-package-arg": "^8.0.1",
- "npm-packlist": "^2.1.0",
"npm-pick-manifest": "^6.1.0",
"npm-profile": "^5.0.1",
"npm-registry-fetch": "^8.1.2",
@@ -195,39 +143,27 @@
"osenv": "^0.1.5",
"pacote": "^11.1.10",
"parse-conflict-json": "^1.1.0",
- "path-is-inside": "~1.0.2",
- "promise-inflight": "~1.0.1",
"qrcode-terminal": "^0.12.0",
- "query-string": "^6.8.2",
"qw": "~1.0.1",
"read": "~1.0.7",
"read-package-json": "^2.1.1",
- "read-package-tree": "^5.3.1",
- "readable-stream": "^3.4.0",
- "readdir-scoped-modules": "^1.1.0",
"request": "^2.88.0",
"retry": "^0.12.0",
"rimraf": "^2.6.3",
- "safe-buffer": "^5.1.2",
"semver": "^7.3.2",
"sha": "^3.0.0",
"slide": "~1.1.6",
"sorted-object": "~2.0.1",
"ssri": "^8.0.0",
- "stringify-package": "^1.0.1",
"tar": "^6.0.2",
"text-table": "~0.2.0",
"tiny-relative-date": "^1.3.0",
"uid-number": "0.0.6",
"umask": "~1.1.0",
- "unique-filename": "^1.1.1",
- "unpipe": "~1.0.0",
"update-notifier": "^2.5.0",
"uuid": "^3.3.3",
- "validate-npm-package-license": "^3.0.4",
"validate-npm-package-name": "~3.0.0",
"which": "^2.0.2",
- "worker-farm": "^1.7.0",
"write-file-atomic": "^2.4.3"
},
"bin": {
@@ -460,102 +396,6 @@
"integrity": "sha512-KyqT0kkdxgbGys9mvo/1Mgdt/LGvUFPCZIK9pWPIfOM2mYzMDd/eVYy4sMP1YqvVI129k0alxRyM53H2MAs/Nw==",
"dev": true
},
- "node_modules/@iarna/cli": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@iarna/cli/-/cli-1.2.0.tgz",
- "integrity": "sha512-ukITQAqVs2n9HGmn3car/Ir7d3ta650iXhrG7pjr3EWdFmJuuOVWgYsu7ftsSe5VifEFFhjxVuX9+8F7L8hwcA==",
- "inBundle": true,
- "dependencies": {
- "signal-exit": "^3.0.2",
- "update-notifier": "^2.2.0",
- "yargs": "^8.0.2"
- }
- },
- "node_modules/@iarna/cli/node_modules/cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "inBundle": true,
- "dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "node_modules/@iarna/cli/node_modules/cliui/node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "inBundle": true,
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@iarna/cli/node_modules/get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "inBundle": true
- },
- "node_modules/@iarna/cli/node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "inBundle": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@iarna/cli/node_modules/require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "inBundle": true
- },
- "node_modules/@iarna/cli/node_modules/y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
- "inBundle": true
- },
- "node_modules/@iarna/cli/node_modules/yargs": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
- "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
- "inBundle": true,
- "dependencies": {
- "camelcase": "^4.1.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "read-pkg-up": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^7.0.0"
- }
- },
- "node_modules/@iarna/cli/node_modules/yargs-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
- "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
- "inBundle": true,
- "dependencies": {
- "camelcase": "^4.1.0"
- }
- },
"node_modules/@npmcli/arborist": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-0.0.10.tgz",
@@ -1362,12 +1202,6 @@
"node": ">=6"
}
},
- "node_modules/call-limit": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/call-limit/-/call-limit-1.1.1.tgz",
- "integrity": "sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ==",
- "inBundle": true
- },
"node_modules/caller": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/caller/-/caller-1.0.1.tgz",
@@ -1454,12 +1288,6 @@
"node": ">=10"
}
},
- "node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "inBundle": true
- },
"node_modules/cidr-regex": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-2.0.10.tgz",
@@ -1948,20 +1776,11 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "inBundle": true,
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/deep-equal": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
@@ -2019,7 +1838,7 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"object-keys": "^1.0.12"
},
@@ -2051,24 +1870,6 @@
"node": ">= 0.6"
}
},
- "node_modules/detect-indent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
- "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=",
- "inBundle": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/detect-newline": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
- "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
- "inBundle": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/dezalgo": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
@@ -2219,23 +2020,11 @@
"integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=",
"inBundle": true
},
- "node_modules/errno": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
- "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
- "inBundle": true,
- "dependencies": {
- "prr": "~1.0.1"
- },
- "bin": {
- "errno": "cli.js"
- }
- },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"is-arrayish": "^0.2.1"
}
@@ -2253,7 +2042,7 @@
"version": "1.17.6",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
"integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
@@ -2278,7 +2067,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -2964,7 +2753,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"locate-path": "^2.0.0"
},
@@ -3145,54 +2934,6 @@
"node": ">= 8"
}
},
- "node_modules/fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
- "inBundle": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- }
- },
- "node_modules/fs-write-stream-atomic/node_modules/iferr": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
- "inBundle": true
- },
- "node_modules/fs-write-stream-atomic/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "inBundle": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/fs-write-stream-atomic/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "inBundle": true
- },
- "node_modules/fs-write-stream-atomic/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "inBundle": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -3217,7 +2958,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "inBundle": true
+ "dev": true
},
"node_modules/function-loop": {
"version": "1.0.2",
@@ -3419,7 +3160,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"function-bind": "^1.1.1"
},
@@ -3440,7 +3181,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -3604,15 +3345,6 @@
"integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
"dev": true
},
- "node_modules/iferr": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-1.0.2.tgz",
- "integrity": "sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg==",
- "inBundle": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/ignore": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@@ -3745,15 +3477,6 @@
"semver": "bin/semver"
}
},
- "node_modules/invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "inBundle": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@@ -3782,7 +3505,7 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "inBundle": true
+ "dev": true
},
"node_modules/is-binary-path": {
"version": "2.1.0",
@@ -3800,7 +3523,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
"integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -3842,7 +3565,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -3951,7 +3674,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
"integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"has-symbols": "^1.0.1"
},
@@ -3996,7 +3719,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"has-symbols": "^1.0.1"
},
@@ -4352,22 +4075,6 @@
],
"inBundle": true
},
- "node_modules/JSONStream": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
- "inBundle": true,
- "dependencies": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- },
- "bin": {
- "JSONStream": "bin.js"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -4407,24 +4114,6 @@
"node": ">=4"
}
},
- "node_modules/lazy-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lazy-property/-/lazy-property-1.0.0.tgz",
- "integrity": "sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc=",
- "inBundle": true
- },
- "node_modules/lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "inBundle": true,
- "dependencies": {
- "invert-kv": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/lcov-parse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz",
@@ -4607,7 +4296,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
@@ -4622,7 +4311,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"p-locate": "^2.0.0",
"path-exists": "^3.0.0"
@@ -4631,47 +4320,6 @@
"node": ">=4"
}
},
- "node_modules/lock-verify": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/lock-verify/-/lock-verify-2.2.1.tgz",
- "integrity": "sha512-n0Zw2DVupKfZMazy/HIFVNohJ1z8fIoZ77WBnyyBGG6ixw83uJNyrbiJvvHWe1QKkGiBCjj8RCPlymltliqEww==",
- "inBundle": true,
- "dependencies": {
- "@iarna/cli": "^1.2.0",
- "npm-package-arg": "^6.1.0",
- "semver": "^5.4.1"
- },
- "bin": {
- "lock-verify": "cli.js"
- }
- },
- "node_modules/lock-verify/node_modules/hosted-git-info": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
- "inBundle": true
- },
- "node_modules/lock-verify/node_modules/npm-package-arg": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
- "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
- "inBundle": true,
- "dependencies": {
- "hosted-git-info": "^2.7.1",
- "osenv": "^0.1.5",
- "semver": "^5.6.0",
- "validate-npm-package-name": "^3.0.0"
- }
- },
- "node_modules/lock-verify/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "inBundle": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/lockfile": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz",
@@ -4687,28 +4335,6 @@
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
"dev": true
},
- "node_modules/lodash._baseuniq": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz",
- "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=",
- "inBundle": true,
- "dependencies": {
- "lodash._createset": "~4.0.0",
- "lodash._root": "~3.0.0"
- }
- },
- "node_modules/lodash._createset": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz",
- "integrity": "sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=",
- "inBundle": true
- },
- "node_modules/lodash._root": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
- "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
- "inBundle": true
- },
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
@@ -4721,24 +4347,6 @@
"integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
"dev": true
},
- "node_modules/lodash.union": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
- "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
- "inBundle": true
- },
- "node_modules/lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
- "inBundle": true
- },
- "node_modules/lodash.without": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz",
- "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=",
- "inBundle": true
- },
"node_modules/log-driver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
@@ -4874,18 +4482,6 @@
"integrity": "sha512-KN+1uowN/NK+sT/Lzx7WSGIj2u+3xe5n2LbwObfjOhPZiA+cCfCm6idVl0RkEfjThkw5XJ96CyRcanq6GmKtUg==",
"inBundle": true
},
- "node_modules/mem": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
- "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
- "inBundle": true,
- "dependencies": {
- "mimic-fn": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/merge-source-map": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
@@ -4925,15 +4521,6 @@
"node": ">= 0.6"
}
},
- "node_modules/mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "inBundle": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -5739,7 +5326,7 @@
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
"integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
- "inBundle": true,
+ "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -5764,7 +5351,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">= 0.4"
}
@@ -5773,7 +5360,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
"integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"define-properties": "^1.1.2",
"function-bind": "^1.1.1",
@@ -5788,7 +5375,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
"integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.0-next.1"
@@ -5883,20 +5470,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/os-locale": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "inBundle": true,
- "dependencies": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -5944,7 +5517,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"p-try": "^1.0.0"
},
@@ -5956,7 +5529,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"p-limit": "^1.1.0"
},
@@ -5983,7 +5556,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">=4"
}
@@ -6102,7 +5675,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"error-ex": "^1.2.0"
},
@@ -6123,7 +5696,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">=4"
}
@@ -6162,7 +5735,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"pify": "^2.0.0"
},
@@ -6192,7 +5765,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -6335,12 +5908,6 @@
"integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
"inBundle": true
},
- "node_modules/prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
- "inBundle": true
- },
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -6380,23 +5947,6 @@
"node": ">=0.6"
}
},
- "node_modules/query-string": {
- "version": "6.13.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.1.tgz",
- "integrity": "sha512-RfoButmcK+yCta1+FuU8REvisx1oEzhMKwhLUNcepQTPGcNMp1sIqjnfCtfnvGSQZQEhaBHvccujtWoUV3TTbA==",
- "inBundle": true,
- "dependencies": {
- "decode-uri-component": "^0.2.0",
- "split-on-first": "^1.0.0",
- "strict-uri-encode": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
@@ -6504,7 +6054,7 @@
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz",
"integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"read-package-json": "^2.0.0",
"readdir-scoped-modules": "^1.0.0",
@@ -6515,7 +6065,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"load-json-file": "^2.0.0",
"normalize-package-data": "^2.3.2",
@@ -6529,7 +6079,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"find-up": "^2.0.0",
"read-pkg": "^2.0.0"
@@ -6542,7 +6092,7 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -6688,7 +6238,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -7111,15 +6661,6 @@
"spdx-ranges": "^2.0.0"
}
},
- "node_modules/split-on-first": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
- "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
- "inBundle": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/sprintf-js": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
@@ -7181,20 +6722,11 @@
"node": ">= 0.6"
}
},
- "node_modules/strict-uri-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
- "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=",
- "inBundle": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"safe-buffer": "~5.2.0"
}
@@ -7237,7 +6769,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
"integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
@@ -7250,7 +6782,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
"integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
@@ -7281,7 +6813,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">=4"
}
@@ -9746,12 +9278,6 @@
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"inBundle": true
},
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "inBundle": true
- },
"node_modules/timed-out": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
@@ -9982,7 +9508,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "inBundle": true,
+ "dev": true,
"engines": {
"node": ">= 0.8"
}
@@ -10141,7 +9667,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz",
"integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"object.getownpropertydescriptors": "^2.0.3"
}
@@ -10252,7 +9778,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "inBundle": true
+ "dev": true
},
"node_modules/wide-align": {
"version": "1.1.3",
@@ -10293,20 +9819,11 @@
"node": ">=0.4.0"
}
},
- "node_modules/worker-farm": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
- "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
- "inBundle": true,
- "dependencies": {
- "errno": "~0.1.7"
- }
- },
"node_modules/wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1"
@@ -10319,7 +9836,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"number-is-nan": "^1.0.0"
},
@@ -10331,7 +9848,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "inBundle": true,
+ "dev": true,
"dependencies": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -10631,91 +10148,6 @@
"integrity": "sha512-KyqT0kkdxgbGys9mvo/1Mgdt/LGvUFPCZIK9pWPIfOM2mYzMDd/eVYy4sMP1YqvVI129k0alxRyM53H2MAs/Nw==",
"dev": true
},
- "@iarna/cli": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@iarna/cli/-/cli-1.2.0.tgz",
- "integrity": "sha512-ukITQAqVs2n9HGmn3car/Ir7d3ta650iXhrG7pjr3EWdFmJuuOVWgYsu7ftsSe5VifEFFhjxVuX9+8F7L8hwcA==",
- "requires": {
- "signal-exit": "^3.0.2",
- "update-notifier": "^2.2.0",
- "yargs": "^8.0.2"
- },
- "dependencies": {
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- }
- }
- },
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
- },
- "y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
- },
- "yargs": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
- "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
- "requires": {
- "camelcase": "^4.1.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "read-pkg-up": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^7.0.0"
- }
- },
- "yargs-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
- "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
- "requires": {
- "camelcase": "^4.1.0"
- }
- }
- }
- },
"@npmcli/arborist": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-0.0.10.tgz",
@@ -11358,11 +10790,6 @@
"write-file-atomic": "^2.4.2"
}
},
- "call-limit": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/call-limit/-/call-limit-1.1.1.tgz",
- "integrity": "sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ=="
- },
"caller": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/caller/-/caller-1.0.1.tgz",
@@ -11420,11 +10847,6 @@
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
},
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
- },
"cidr-regex": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-2.0.10.tgz",
@@ -11789,12 +11211,8 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
},
"deep-equal": {
"version": "1.1.1",
@@ -11842,6 +11260,7 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
"requires": {
"object-keys": "^1.0.12"
}
@@ -11861,16 +11280,6 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
- "detect-indent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
- "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50="
- },
- "detect-newline": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
- "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I="
- },
"dezalgo": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
@@ -11989,18 +11398,11 @@
"resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
"integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA="
},
- "errno": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
- "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
- "requires": {
- "prr": "~1.0.1"
- }
- },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
"requires": {
"is-arrayish": "^0.2.1"
}
@@ -12015,6 +11417,7 @@
"version": "1.17.6",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
"integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
+ "dev": true,
"requires": {
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
@@ -12033,6 +11436,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
"requires": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -12579,6 +11983,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
"requires": {
"locate-path": "^2.0.0"
}
@@ -12726,51 +12131,6 @@
"minipass": "^3.0.0"
}
},
- "fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
- "requires": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- },
- "dependencies": {
- "iferr": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE="
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -12786,7 +12146,8 @@
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
},
"function-loop": {
"version": "1.0.2",
@@ -12939,6 +12300,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
"requires": {
"function-bind": "^1.1.1"
}
@@ -12951,7 +12313,8 @@
"has-symbols": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
- "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+ "dev": true
},
"has-unicode": {
"version": "2.0.1",
@@ -13074,11 +12437,6 @@
"integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
"dev": true
},
- "iferr": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-1.0.2.tgz",
- "integrity": "sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg=="
- },
"ignore": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@@ -13180,11 +12538,6 @@
}
}
},
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
- },
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@@ -13204,7 +12557,8 @@
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
},
"is-binary-path": {
"version": "2.1.0",
@@ -13218,7 +12572,8 @@
"is-callable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw=="
+ "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
+ "dev": true
},
"is-ci": {
"version": "1.2.1",
@@ -13246,7 +12601,8 @@
"is-date-object": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
- "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="
+ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+ "dev": true
},
"is-extglob": {
"version": "2.1.1",
@@ -13315,6 +12671,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
"integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
+ "dev": true,
"requires": {
"has-symbols": "^1.0.1"
}
@@ -13339,6 +12696,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
"requires": {
"has-symbols": "^1.0.1"
}
@@ -13612,15 +12970,6 @@
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
},
- "JSONStream": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
- "requires": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- }
- },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -13650,19 +12999,6 @@
"package-json": "^4.0.0"
}
},
- "lazy-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lazy-property/-/lazy-property-1.0.0.tgz",
- "integrity": "sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc="
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
"lcov-parse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz",
@@ -13805,6 +13141,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
@@ -13816,44 +13153,12 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
"requires": {
"p-locate": "^2.0.0",
"path-exists": "^3.0.0"
}
},
- "lock-verify": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/lock-verify/-/lock-verify-2.2.1.tgz",
- "integrity": "sha512-n0Zw2DVupKfZMazy/HIFVNohJ1z8fIoZ77WBnyyBGG6ixw83uJNyrbiJvvHWe1QKkGiBCjj8RCPlymltliqEww==",
- "requires": {
- "@iarna/cli": "^1.2.0",
- "npm-package-arg": "^6.1.0",
- "semver": "^5.4.1"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg=="
- },
- "npm-package-arg": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
- "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
- "requires": {
- "hosted-git-info": "^2.7.1",
- "osenv": "^0.1.5",
- "semver": "^5.6.0",
- "validate-npm-package-name": "^3.0.0"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
"lockfile": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz",
@@ -13868,25 +13173,6 @@
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
"dev": true
},
- "lodash._baseuniq": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz",
- "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=",
- "requires": {
- "lodash._createset": "~4.0.0",
- "lodash._root": "~3.0.0"
- }
- },
- "lodash._createset": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz",
- "integrity": "sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY="
- },
- "lodash._root": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
- "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI="
- },
"lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
@@ -13898,21 +13184,6 @@
"integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
"dev": true
},
- "lodash.union": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
- "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg="
- },
- "lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
- },
- "lodash.without": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz",
- "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw="
- },
"log-driver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
@@ -14013,14 +13284,6 @@
"resolved": "https://registry.npmjs.org/meant/-/meant-1.0.2.tgz",
"integrity": "sha512-KN+1uowN/NK+sT/Lzx7WSGIj2u+3xe5n2LbwObfjOhPZiA+cCfCm6idVl0RkEfjThkw5XJ96CyRcanq6GmKtUg=="
},
- "mem": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
- "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
"merge-source-map": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
@@ -14051,11 +13314,6 @@
"mime-db": "1.44.0"
}
},
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
- },
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -14676,7 +13934,8 @@
"object-inspect": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
- "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA=="
+ "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
+ "dev": true
},
"object-is": {
"version": "1.1.2",
@@ -14691,12 +13950,14 @@
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
},
"object.assign": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
"integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
"requires": {
"define-properties": "^1.1.2",
"function-bind": "^1.1.1",
@@ -14708,6 +13969,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
"integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
+ "dev": true,
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.0-next.1"
@@ -14775,16 +14037,6 @@
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
},
- "os-locale": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- }
- },
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -14823,6 +14075,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
"requires": {
"p-try": "^1.0.0"
}
@@ -14831,6 +14084,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
"requires": {
"p-limit": "^1.1.0"
}
@@ -14846,7 +14100,8 @@
"p-try": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
},
"package-hash": {
"version": "3.0.0",
@@ -14937,6 +14192,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
"requires": {
"error-ex": "^1.2.0"
}
@@ -14950,7 +14206,8 @@
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
},
"path-is-absolute": {
"version": "1.0.1",
@@ -14977,6 +14234,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
"requires": {
"pify": "^2.0.0"
}
@@ -14995,7 +14253,8 @@
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
},
"pirates": {
"version": "3.0.2",
@@ -15098,11 +14357,6 @@
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
"integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk="
},
- "prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
- },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -15128,16 +14382,6 @@
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
},
- "query-string": {
- "version": "6.13.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.1.tgz",
- "integrity": "sha512-RfoButmcK+yCta1+FuU8REvisx1oEzhMKwhLUNcepQTPGcNMp1sIqjnfCtfnvGSQZQEhaBHvccujtWoUV3TTbA==",
- "requires": {
- "decode-uri-component": "^0.2.0",
- "split-on-first": "^1.0.0",
- "strict-uri-encode": "^2.0.0"
- }
- },
"querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
@@ -15222,6 +14466,7 @@
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz",
"integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==",
+ "dev": true,
"requires": {
"read-package-json": "^2.0.0",
"readdir-scoped-modules": "^1.0.0",
@@ -15232,6 +14477,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
"requires": {
"load-json-file": "^2.0.0",
"normalize-package-data": "^2.3.2",
@@ -15242,6 +14488,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
"requires": {
"find-up": "^2.0.0",
"read-pkg": "^2.0.0"
@@ -15251,6 +14498,7 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -15361,7 +14609,8 @@
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
},
"require-inject": {
"version": "1.4.4",
@@ -15679,11 +14928,6 @@
"spdx-ranges": "^2.0.0"
}
},
- "split-on-first": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
- "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw=="
- },
"sprintf-js": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
@@ -15726,15 +14970,11 @@
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
"dev": true
},
- "strict-uri-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
- "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY="
- },
"string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
"requires": {
"safe-buffer": "~5.2.0"
}
@@ -15767,6 +15007,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
"integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+ "dev": true,
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
@@ -15776,6 +15017,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
"integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+ "dev": true,
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
@@ -15797,7 +15039,8 @@
"strip-bom": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
},
"strip-eof": {
"version": "1.0.0",
@@ -17683,11 +16926,6 @@
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
},
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
- },
"timed-out": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
@@ -17860,7 +17098,8 @@
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
},
"unzip-response": {
"version": "2.0.1",
@@ -17984,6 +17223,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz",
"integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=",
+ "dev": true,
"requires": {
"object.getownpropertydescriptors": "^2.0.3"
}
@@ -18068,7 +17308,8 @@
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
},
"wide-align": {
"version": "1.1.3",
@@ -18098,18 +17339,11 @@
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
"dev": true
},
- "worker-farm": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
- "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
- "requires": {
- "errno": "~0.1.7"
- }
- },
"wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
"requires": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1"
@@ -18119,6 +17353,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -18127,6 +17362,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
diff --git a/package.json b/package.json
index e4e277669..5e5806565 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,6 @@
"@npmcli/arborist": "^0.0.10",
"@npmcli/ci-detect": "^1.2.0",
"@npmcli/run-script": "^1.4.0",
- "JSONStream": "^1.3.5",
"abbrev": "~1.1.1",
"ansicolors": "~0.3.2",
"ansistyles": "~0.1.3",
@@ -45,34 +44,23 @@
"bin-links": "^2.1.2",
"byte-size": "^5.0.1",
"cacache": "^15.0.5",
- "call-limit": "^1.1.1",
"chalk": "^4.1.0",
"chownr": "^2.0.0",
- "ci-info": "^2.0.0",
"cli-columns": "^3.1.2",
"cli-table3": "^0.5.1",
"columnify": "~1.5.4",
"config-chain": "^1.1.12",
- "detect-indent": "~5.0.0",
- "detect-newline": "^2.1.0",
- "dezalgo": "~1.0.3",
"editor": "~1.0.0",
"find-npm-prefix": "^1.0.2",
- "fs-write-stream-atomic": "~1.0.10",
"glob": "^7.1.4",
"graceful-fs": "^4.2.3",
"has-unicode": "~2.0.1",
"hosted-git-info": "^3.0.5",
- "iferr": "^1.0.2",
"infer-owner": "^1.0.4",
- "inflight": "~1.0.6",
"inherits": "^2.0.4",
"ini": "^1.3.5",
"init-package-json": "^1.10.3",
"is-cidr": "^3.0.0",
- "json-parse-better-errors": "^1.0.2",
- "json-parse-even-better-errors": "^2.2.0",
- "lazy-property": "~1.0.0",
"libnpmaccess": "^4.0.0",
"libnpmfund": "0.0.0",
"libnpmhook": "^6.0.0",
@@ -82,22 +70,14 @@
"libnpmsearch": "^3.0.0",
"libnpmteam": "^2.0.1",
"libnpmversion": "^1.0.2",
- "lock-verify": "^2.1.0",
"lockfile": "^1.0.4",
- "lodash._baseuniq": "~4.6.0",
- "lodash.clonedeep": "~4.5.0",
- "lodash.union": "~4.6.0",
- "lodash.uniq": "~4.5.0",
- "lodash.without": "~4.4.0",
"meant": "~1.0.1",
"mkdirp": "^1.0.4",
"mkdirp-infer-owner": "^2.0.0",
"ms": "^2.1.2",
"nopt": "^4.0.3",
- "normalize-package-data": "^2.5.0",
"npm-audit-report": "^2.1.3",
"npm-package-arg": "^8.0.1",
- "npm-packlist": "^2.1.0",
"npm-pick-manifest": "^6.1.0",
"npm-profile": "^5.0.1",
"npm-registry-fetch": "^8.1.2",
@@ -108,39 +88,27 @@
"osenv": "^0.1.5",
"pacote": "^11.1.10",
"parse-conflict-json": "^1.1.0",
- "path-is-inside": "~1.0.2",
- "promise-inflight": "~1.0.1",
"qrcode-terminal": "^0.12.0",
- "query-string": "^6.8.2",
"qw": "~1.0.1",
"read": "~1.0.7",
"read-package-json": "^2.1.1",
- "read-package-tree": "^5.3.1",
- "readable-stream": "^3.4.0",
- "readdir-scoped-modules": "^1.1.0",
"request": "^2.88.0",
"retry": "^0.12.0",
"rimraf": "^2.6.3",
- "safe-buffer": "^5.1.2",
"semver": "^7.3.2",
"sha": "^3.0.0",
"slide": "~1.1.6",
"sorted-object": "~2.0.1",
"ssri": "^8.0.0",
- "stringify-package": "^1.0.1",
"tar": "^6.0.2",
"text-table": "~0.2.0",
"tiny-relative-date": "^1.3.0",
"uid-number": "0.0.6",
"umask": "~1.1.0",
- "unique-filename": "^1.1.1",
- "unpipe": "~1.0.0",
"update-notifier": "^2.5.0",
"uuid": "^3.3.3",
- "validate-npm-package-license": "^3.0.4",
"validate-npm-package-name": "~3.0.0",
"which": "^2.0.2",
- "worker-farm": "^1.7.0",
"write-file-atomic": "^2.4.3"
},
"bundleDependencies": [
@@ -155,35 +123,23 @@
"bin-links",
"byte-size",
"cacache",
- "call-limit",
"chalk",
"chownr",
- "ci-info",
"cli-columns",
"cli-table3",
"columnify",
"config-chain",
- "detect-indent",
- "detect-newline",
- "dezalgo",
"editor",
"find-npm-prefix",
- "fs-write-stream-atomic",
"glob",
"graceful-fs",
"has-unicode",
"hosted-git-info",
- "iferr",
"infer-owner",
- "inflight",
"inherits",
"ini",
"init-package-json",
"is-cidr",
- "json-parse-better-errors",
- "json-parse-even-better-errors",
- "JSONStream",
- "lazy-property",
"libnpmaccess",
"libnpmfund",
"libnpmhook",
@@ -193,22 +149,14 @@
"libnpmsearch",
"libnpmteam",
"libnpmversion",
- "lock-verify",
"lockfile",
- "lodash._baseuniq",
- "lodash.clonedeep",
- "lodash.union",
- "lodash.uniq",
- "lodash.without",
"meant",
"mkdirp",
"mkdirp-infer-owner",
"ms",
"nopt",
- "normalize-package-data",
"npm-audit-report",
"npm-package-arg",
- "npm-packlist",
"npm-pick-manifest",
"npm-profile",
"npm-registry-fetch",
@@ -219,39 +167,27 @@
"osenv",
"pacote",
"parse-conflict-json",
- "path-is-inside",
- "promise-inflight",
"qrcode-terminal",
- "query-string",
"qw",
"read",
"read-package-json",
- "read-package-tree",
- "readable-stream",
- "readdir-scoped-modules",
"request",
"retry",
"rimraf",
- "safe-buffer",
"semver",
"sha",
"slide",
"sorted-object",
"ssri",
- "stringify-package",
"tar",
"text-table",
"tiny-relative-date",
"uid-number",
"umask",
- "unique-filename",
- "unpipe",
"update-notifier",
"uuid",
- "validate-npm-package-license",
"validate-npm-package-name",
"which",
- "worker-farm",
"write-file-atomic"
],
"devDependencies": {