From 4870213f9e30e21dcbef19282d04cc40e04035cb Mon Sep 17 00:00:00 2001
From: Forrest L Norvell
Date: Fri, 17 Apr 2015 01:12:21 -0700
Subject: [PATCH] deps: upgrade npm to 2.8.3
---
deps/npm/AUTHORS | 3 +
deps/npm/CHANGELOG.md | 323 ++++++++++++
deps/npm/doc/cli/npm-dist-tag.md | 3 +-
deps/npm/doc/cli/npm-install.md | 42 +-
deps/npm/doc/files/package.json.md | 10 +-
deps/npm/html/doc/README.html | 4 +-
deps/npm/html/doc/api/npm-bin.html | 2 +-
deps/npm/html/doc/api/npm-bugs.html | 2 +-
deps/npm/html/doc/api/npm-cache.html | 2 +-
deps/npm/html/doc/api/npm-commands.html | 2 +-
deps/npm/html/doc/api/npm-config.html | 2 +-
deps/npm/html/doc/api/npm-deprecate.html | 2 +-
deps/npm/html/doc/api/npm-docs.html | 2 +-
deps/npm/html/doc/api/npm-edit.html | 2 +-
deps/npm/html/doc/api/npm-explore.html | 2 +-
deps/npm/html/doc/api/npm-help-search.html | 2 +-
deps/npm/html/doc/api/npm-init.html | 2 +-
deps/npm/html/doc/api/npm-install.html | 2 +-
deps/npm/html/doc/api/npm-link.html | 2 +-
deps/npm/html/doc/api/npm-load.html | 2 +-
deps/npm/html/doc/api/npm-ls.html | 2 +-
deps/npm/html/doc/api/npm-outdated.html | 2 +-
deps/npm/html/doc/api/npm-owner.html | 2 +-
deps/npm/html/doc/api/npm-pack.html | 2 +-
deps/npm/html/doc/api/npm-prefix.html | 2 +-
deps/npm/html/doc/api/npm-prune.html | 2 +-
deps/npm/html/doc/api/npm-publish.html | 2 +-
deps/npm/html/doc/api/npm-rebuild.html | 2 +-
deps/npm/html/doc/api/npm-repo.html | 2 +-
deps/npm/html/doc/api/npm-restart.html | 2 +-
deps/npm/html/doc/api/npm-root.html | 2 +-
deps/npm/html/doc/api/npm-run-script.html | 2 +-
deps/npm/html/doc/api/npm-search.html | 2 +-
deps/npm/html/doc/api/npm-shrinkwrap.html | 2 +-
deps/npm/html/doc/api/npm-start.html | 2 +-
deps/npm/html/doc/api/npm-stop.html | 2 +-
deps/npm/html/doc/api/npm-tag.html | 2 +-
deps/npm/html/doc/api/npm-test.html | 2 +-
deps/npm/html/doc/api/npm-uninstall.html | 2 +-
deps/npm/html/doc/api/npm-unpublish.html | 2 +-
deps/npm/html/doc/api/npm-update.html | 2 +-
deps/npm/html/doc/api/npm-version.html | 2 +-
deps/npm/html/doc/api/npm-view.html | 2 +-
deps/npm/html/doc/api/npm-whoami.html | 2 +-
deps/npm/html/doc/api/npm.html | 4 +-
deps/npm/html/doc/cli/npm-access.html | 2 +-
deps/npm/html/doc/cli/npm-adduser.html | 2 +-
deps/npm/html/doc/cli/npm-bin.html | 2 +-
deps/npm/html/doc/cli/npm-bugs.html | 2 +-
deps/npm/html/doc/cli/npm-build.html | 2 +-
deps/npm/html/doc/cli/npm-bundle.html | 2 +-
deps/npm/html/doc/cli/npm-cache.html | 2 +-
deps/npm/html/doc/cli/npm-completion.html | 2 +-
deps/npm/html/doc/cli/npm-config.html | 2 +-
deps/npm/html/doc/cli/npm-dedupe.html | 2 +-
deps/npm/html/doc/cli/npm-deprecate.html | 2 +-
deps/npm/html/doc/cli/npm-dist-tag.html | 5 +-
deps/npm/html/doc/cli/npm-docs.html | 2 +-
deps/npm/html/doc/cli/npm-edit.html | 2 +-
deps/npm/html/doc/cli/npm-explore.html | 2 +-
deps/npm/html/doc/cli/npm-help-search.html | 2 +-
deps/npm/html/doc/cli/npm-help.html | 2 +-
deps/npm/html/doc/cli/npm-init.html | 2 +-
deps/npm/html/doc/cli/npm-install.html | 32 +-
deps/npm/html/doc/cli/npm-link.html | 2 +-
deps/npm/html/doc/cli/npm-logout.html | 2 +-
deps/npm/html/doc/cli/npm-ls.html | 4 +-
deps/npm/html/doc/cli/npm-outdated.html | 2 +-
deps/npm/html/doc/cli/npm-owner.html | 2 +-
deps/npm/html/doc/cli/npm-pack.html | 2 +-
deps/npm/html/doc/cli/npm-prefix.html | 2 +-
deps/npm/html/doc/cli/npm-prune.html | 2 +-
deps/npm/html/doc/cli/npm-publish.html | 2 +-
deps/npm/html/doc/cli/npm-rebuild.html | 2 +-
deps/npm/html/doc/cli/npm-repo.html | 2 +-
deps/npm/html/doc/cli/npm-restart.html | 2 +-
deps/npm/html/doc/cli/npm-rm.html | 2 +-
deps/npm/html/doc/cli/npm-root.html | 2 +-
deps/npm/html/doc/cli/npm-run-script.html | 2 +-
deps/npm/html/doc/cli/npm-search.html | 2 +-
deps/npm/html/doc/cli/npm-shrinkwrap.html | 2 +-
deps/npm/html/doc/cli/npm-star.html | 2 +-
deps/npm/html/doc/cli/npm-stars.html | 2 +-
deps/npm/html/doc/cli/npm-start.html | 2 +-
deps/npm/html/doc/cli/npm-stop.html | 2 +-
deps/npm/html/doc/cli/npm-tag.html | 2 +-
deps/npm/html/doc/cli/npm-test.html | 2 +-
deps/npm/html/doc/cli/npm-uninstall.html | 2 +-
deps/npm/html/doc/cli/npm-unpublish.html | 2 +-
deps/npm/html/doc/cli/npm-update.html | 2 +-
deps/npm/html/doc/cli/npm-version.html | 2 +-
deps/npm/html/doc/cli/npm-view.html | 2 +-
deps/npm/html/doc/cli/npm-whoami.html | 2 +-
deps/npm/html/doc/cli/npm.html | 10 +-
deps/npm/html/doc/files/npm-folders.html | 2 +-
deps/npm/html/doc/files/npm-global.html | 2 +-
deps/npm/html/doc/files/npm-json.html | 12 +-
deps/npm/html/doc/files/npmrc.html | 2 +-
deps/npm/html/doc/files/package.json.html | 12 +-
deps/npm/html/doc/index.html | 2 +-
deps/npm/html/doc/misc/npm-coding-style.html | 2 +-
deps/npm/html/doc/misc/npm-config.html | 2 +-
deps/npm/html/doc/misc/npm-developers.html | 2 +-
deps/npm/html/doc/misc/npm-disputes.html | 8 +-
deps/npm/html/doc/misc/npm-faq.html | 4 +-
deps/npm/html/doc/misc/npm-index.html | 2 +-
deps/npm/html/doc/misc/npm-registry.html | 2 +-
deps/npm/html/doc/misc/npm-scope.html | 2 +-
deps/npm/html/doc/misc/npm-scripts.html | 2 +-
deps/npm/html/doc/misc/removing-npm.html | 2 +-
deps/npm/html/doc/misc/semver.html | 2 +-
deps/npm/html/partial/doc/README.html | 2 +-
deps/npm/html/partial/doc/api/npm.html | 2 +-
deps/npm/html/partial/doc/cli/npm-dist-tag.html | 3 +-
deps/npm/html/partial/doc/cli/npm-install.html | 30 +-
deps/npm/html/partial/doc/cli/npm-ls.html | 2 +-
deps/npm/html/partial/doc/cli/npm.html | 8 +-
deps/npm/html/partial/doc/files/npm-json.html | 10 +-
deps/npm/html/partial/doc/files/package.json.html | 10 +-
deps/npm/html/partial/doc/misc/npm-disputes.html | 6 +-
deps/npm/html/partial/doc/misc/npm-faq.html | 2 +-
deps/npm/lib/cache.js | 9 +-
deps/npm/lib/cache/add-remote-git.js | 548 ++++++++++++---------
deps/npm/lib/cache/maybe-github.js | 35 --
deps/npm/lib/install.js | 17 +-
deps/npm/lib/npm.js | 3 -
deps/npm/lib/utils/spawn.js | 13 +-
deps/npm/man/man1/npm-dist-tag.1 | 3 +-
deps/npm/man/man1/npm-install.1 | 50 +-
deps/npm/man/man1/npm-ls.1 | 2 +-
deps/npm/man/man1/npm.1 | 2 +-
deps/npm/man/man3/npm.3 | 2 +-
deps/npm/man/man5/npm-json.5 | 10 +-
deps/npm/man/man5/package.json.5 | 10 +-
deps/npm/node_modules/child-process-close/index.js | 48 --
.../node_modules/child-process-close/package.json | 37 --
.../child-process-close/test/test-exec.js | 50 --
.../child-process-close/test/test-fork.js | 41 --
.../test/test-spawn-and-execfile.js | 73 ---
.../node_modules/child-process-close/test/test.js | 41 --
.../child-process-close/test/worker-fork.js | 3 -
.../child-process-close/test/worker-spawn.js | 5 -
deps/npm/node_modules/columnify/Makefile | 2 +-
deps/npm/node_modules/columnify/Readme.md | 14 +-
deps/npm/node_modules/columnify/columnify.js | 82 +--
deps/npm/node_modules/columnify/index.js | 6 +
.../wcwidth/node_modules/defaults/LICENSE} | 28 +-
.../wcwidth/node_modules/defaults/README.md | 2 +-
.../defaults/node_modules/clone/package.json | 3 +-
.../wcwidth/node_modules/defaults/package.json | 29 +-
.../columnify/node_modules/wcwidth/package.json | 3 +-
deps/npm/node_modules/columnify/package.json | 30 +-
deps/npm/node_modules/glob/common.js | 22 +-
deps/npm/node_modules/glob/glob.js | 2 +-
.../glob/node_modules/path-is-absolute/index.js | 20 +
.../glob/node_modules/path-is-absolute/license | 21 +
.../node_modules/path-is-absolute/package.json | 69 +++
.../glob/node_modules/path-is-absolute/readme.md | 51 ++
deps/npm/node_modules/glob/package.json | 22 +-
deps/npm/node_modules/glob/sync.js | 2 +-
deps/npm/node_modules/hosted-git-info/README.md | 19 +-
.../node_modules/hosted-git-info/git-host-info.js | 64 +++
deps/npm/node_modules/hosted-git-info/git-host.js | 96 ++++
deps/npm/node_modules/hosted-git-info/index.js | 255 +++-------
deps/npm/node_modules/hosted-git-info/package.json | 34 +-
.../npm/node_modules/hosted-git-info/test/basic.js | 20 +-
.../test/bitbucket-https-with-embedded-auth.js | 27 +
.../node_modules/hosted-git-info/test/bitbucket.js | 30 +-
deps/npm/node_modules/hosted-git-info/test/gist.js | 56 ++-
.../node_modules/hosted-git-info/test/github.js | 55 +--
.../node_modules/hosted-git-info/test/gitlab.js | 31 +-
.../hosted-git-info/test/https-with-inline-auth.js | 39 ++
.../hosted-git-info/test/lib/standard-tests.js | 43 +-
.../node_modules/init-package-json/package.json | 40 +-
deps/npm/node_modules/lru-cache/lib/lru-cache.js | 1 +
deps/npm/node_modules/lru-cache/package.json | 31 +-
deps/npm/node_modules/lru-cache/t.js | 25 +
deps/npm/node_modules/lru-cache/test/basic.js | 2 +-
deps/npm/node_modules/lru-cache/test/timeout.js | 21 +
deps/npm/node_modules/node-gyp/addon.gypi | 27 +-
deps/npm/node_modules/node-gyp/lib/build.js | 8 +-
deps/npm/node_modules/node-gyp/lib/install.js | 40 +-
.../node-gyp/src/win_delay_load_hook.c | 32 --
.../node_modules/normalize-package-data/README.md | 6 +-
.../normalize-package-data/lib/fixer.js | 42 +-
.../normalize-package-data/package.json | 38 +-
.../normalize-package-data/test/normalize.js | 17 +-
.../normalize-package-data/test/typo.js | 13 +
deps/npm/node_modules/npm-package-arg/npa.js | 2 +
deps/npm/node_modules/npm-package-arg/package.json | 40 +-
.../node_modules/npm-package-arg/test/bitbucket.js | 12 +-
.../node_modules/npm-package-arg/test/github.js | 20 +-
.../node_modules/npm-package-arg/test/gitlab.js | 12 +-
.../npm-registry-client/lib/adduser.js | 2 +-
.../node_modules/concat-stream/index.js | 8 +-
.../node_modules/core-util-is/package.json | 5 +-
.../node_modules/readable-stream/package.json | 2 +-
.../node_modules/concat-stream/package.json | 20 +-
.../node_modules/concat-stream/readme.md | 2 +-
.../node_modules/npm-registry-client/package.json | 18 +-
.../fixtures/@npm/npm-registry-client/cache.json | 1 +
.../test/fixtures/underscore/1.3.3/cache.json | 1 +
.../test/fixtures/underscore/1.3.3/package.tgz | Bin 0 -> 58692 bytes
.../test/fixtures/underscore/cache.json | 1 +
.../npmlog/node_modules/gauge/README.md~ | 153 ++++++
.../gauge/node_modules/has-unicode/README.md~ | 4 +
.../readdir-scoped-modules/package.json | 26 +-
deps/npm/node_modules/read-installed/package.json | 12 +-
.../node_modules/read-package-json/package.json | 12 +-
.../read-package-json/test/non-json.js | 2 +-
.../realize-package-specifier/package.json | 33 +-
.../test/npa-bitbucket.js | 12 +-
.../realize-package-specifier/test/npa-github.js | 18 +-
.../realize-package-specifier/test/npa-gitlab.js | 12 +-
deps/npm/node_modules/request/.eslintrc | 39 ++
deps/npm/node_modules/request/CHANGELOG.md | 9 +
deps/npm/node_modules/request/index.js | 117 +++--
deps/npm/node_modules/request/lib/helpers.js | 44 +-
deps/npm/node_modules/request/lib/multipart.js | 2 +-
.../node_modules/request/node_modules/bl/.jshintrc | 59 +++
.../request/node_modules/forever-agent/index.js | 17 +-
.../node_modules/forever-agent/package.json | 20 +-
.../{ => form-data/node_modules}/async/.travis.yml | 0
.../{ => form-data/node_modules}/async/LICENSE | 0
.../{ => form-data/node_modules}/async/README.md | 0
.../node_modules}/async/component.json | 0
.../node_modules}/async/lib/async.js | 0
.../node_modules}/async/package.json | 5 +-
.../request/node_modules/har-validator/README.md | 20 +-
.../node_modules/har-validator/bin/har-validator | 2 +-
.../har-validator/node_modules/bluebird/README.md | 2 +-
.../node_modules/bluebird/changelog.md | 51 ++
.../node_modules/bluebird/js/browser/bluebird.js | 478 ++++++++++++++++--
.../bluebird/js/browser/bluebird.min.js | 8 +-
.../node_modules/bluebird/js/main/async.js | 142 +++++-
.../node_modules/bluebird/js/main/cancel.js | 1 +
.../bluebird/js/main/captured_trace.js | 2 +-
.../node_modules/bluebird/js/main/debuggability.js | 10 +-
.../node_modules/bluebird/js/main/promisify.js | 2 +-
.../node_modules/bluebird/js/main/schedule.js | 4 +
.../node_modules/bluebird/js/main/util.js | 8 +-
.../node_modules/bluebird/package.json | 20 +-
.../chalk/node_modules/ansi-styles/package.json | 3 +-
.../node_modules/escape-string-regexp/package.json | 3 +-
.../has-ansi/node_modules/get-stdin/package.json | 3 +-
.../chalk/node_modules/has-ansi/package.json | 3 +-
.../chalk/node_modules/supports-color/package.json | 3 +-
.../har-validator/node_modules/chalk/package.json | 3 +-
.../har-validator/node_modules/debug/.npmignore | 6 -
.../har-validator/node_modules/debug/History.md | 186 -------
.../har-validator/node_modules/debug/Makefile | 33 --
.../har-validator/node_modules/debug/Readme.md | 178 -------
.../har-validator/node_modules/debug/bower.json | 28 --
.../har-validator/node_modules/debug/browser.js | 175 -------
.../node_modules/debug/component.json | 19 -
.../har-validator/node_modules/debug/debug.js | 197 --------
.../har-validator/node_modules/debug/node.js | 209 --------
.../node_modules/debug/node_modules/ms/.npmignore | 5 -
.../node_modules/debug/node_modules/ms/LICENSE | 20 -
.../node_modules/debug/node_modules/ms/README.md | 35 --
.../node_modules/debug/node_modules/ms/index.js | 123 -----
.../debug/node_modules/ms/package.json | 47 --
.../har-validator/node_modules/debug/package.json | 73 ---
.../node_modules/is-my-json-valid/index.js | 4 +-
.../node_modules/generate-object-property/LICENSE | 21 +
.../generate-object-property/package.json | 23 +-
.../is-my-json-valid/node_modules/xtend/.jshintrc | 30 ++
.../node_modules/xtend/package.json | 23 +-
.../node_modules/is-my-json-valid/package.json | 18 +-
.../node_modules/require-directory/.npmignore | 1 -
.../node_modules/require-directory/.travis.yml | 3 -
.../node_modules/require-directory/LICENSE | 22 -
.../node_modules/require-directory/README.markdown | 183 -------
.../node_modules/require-directory/index.js | 86 ----
.../node_modules/require-directory/package.json | 71 ---
.../node_modules/har-validator/package.json | 28 +-
.../node_modules/har-validator/src/error.js | 10 +
.../node_modules/har-validator/src/index.js | 12 +-
.../node_modules/har-validator/src/schemas.json | 222 ---------
.../har-validator/src/schemas/cache.json | 13 +
.../har-validator/src/schemas/cacheEntry.json | 25 +
.../har-validator/src/schemas/content.json | 27 +
.../har-validator/src/schemas/cookie.json | 34 ++
.../har-validator/src/schemas/creator.json | 18 +
.../har-validator/src/schemas/entry.json | 48 ++
.../har-validator/src/schemas/har.json | 11 +
.../har-validator/src/schemas/index.js | 49 ++
.../har-validator/src/schemas/log.json | 34 ++
.../har-validator/src/schemas/page.json | 30 ++
.../har-validator/src/schemas/pageTimings.json | 16 +
.../har-validator/src/schemas/postData.json | 41 ++
.../har-validator/src/schemas/record.json | 18 +
.../har-validator/src/schemas/request.json | 55 +++
.../har-validator/src/schemas/response.json | 52 ++
.../har-validator/src/schemas/timings.json | 40 ++
.../hawk/node_modules/boom/.travis.yml | 2 +
.../node_modules/hawk/node_modules/boom/Makefile | 9 -
.../node_modules/hawk/node_modules/boom/README.md | 3 +-
.../hawk/node_modules/boom/lib/index.js | 3 +-
.../hawk/node_modules/boom/package.json | 24 +-
.../hawk/node_modules/boom/test/index.js | 9 +-
.../hawk/node_modules/cryptiles/package.json | 0
.../hawk/node_modules/sntp/package.json | 0
.../request/node_modules/hawk/package.json | 0
.../request/node_modules/isstream/.jshintrc | 59 +++
.../request/node_modules/isstream/package.json | 3 +-
.../request/node_modules/node-uuid/package.json | 3 +-
.../node_modules/request/node_modules/qs/.jshintrc | 10 +
.../node_modules/request/node_modules/qs/README.md | 233 +++++++++
.../node_modules/punycode/package.json | 3 +-
.../request/node_modules/tunnel-agent/.jshintrc | 5 +
deps/npm/node_modules/request/package.json | 19 +-
deps/npm/node_modules/request/request.js | 19 +-
deps/npm/node_modules/tar/lib/extract.js | 17 +-
deps/npm/node_modules/tar/package.json | 34 +-
.../npm/node_modules/tar/test/dir-normalization.js | 92 ++--
.../node_modules/tar/test/dir-normalization.tar | Bin 10240 -> 4608 bytes
deps/npm/package.json | 40 +-
deps/npm/test/common-tap.js | 83 +++-
.../forked-underscore-1.5.1.tgz} | Bin
.../gitignore-and-npmignore-2.tar | Bin
.../gitignore-and-npmignore.tar | Bin
.../gitignore-and-npmignore.tgz | Bin
.../gitignore.tgz | Bin
.../npmignore.tgz | Bin
deps/npm/test/tap/add-remote-git-fake-windows.js | 113 ++---
deps/npm/test/tap/add-remote-git-file.js | 29 +-
deps/npm/test/tap/add-remote-git-get-resolved.js | 101 ++++
deps/npm/test/tap/add-remote-git-shrinkwrap.js | 21 +-
deps/npm/test/tap/add-remote-git.js | 105 ++--
deps/npm/test/tap/adduser-legacy-auth.js | 96 ++--
.../tap/bitbucket-https-url-with-creds-package.js | 83 ++++
.../npm/test/tap/bitbucket-https-url-with-creds.js | 80 +++
deps/npm/test/tap/bitbucket-shortcut-package.js | 84 ++++
deps/npm/test/tap/bitbucket-shortcut.js | 81 +++
deps/npm/test/tap/cache-shasum-fork.js | 154 +++---
deps/npm/test/tap/circular-dep.js | 123 +++--
.../test/tap/circular-dep/minimist/package.json | 7 -
deps/npm/test/tap/dedupe.js | 111 +++--
deps/npm/test/tap/dedupe/package.json | 9 -
deps/npm/test/tap/false-name.js | 85 ++++
deps/npm/test/tap/false_name.js | 55 ---
deps/npm/test/tap/false_name/index.js | 1 -
deps/npm/test/tap/false_name/package.json | 8 -
deps/npm/test/tap/gist-short-shortcut-package.js | 84 ++++
deps/npm/test/tap/gist-short-shortcut.js | 81 +++
deps/npm/test/tap/gist-shortcut-package.js | 84 ++++
deps/npm/test/tap/gist-shortcut.js | 81 +++
deps/npm/test/tap/git-cache-locking.js | 44 +-
deps/npm/test/tap/git-dependency-install-link.js | 21 +-
deps/npm/test/tap/github-shortcut-package.js | 84 ++++
deps/npm/test/tap/github-shortcut.js | 55 ++-
deps/npm/test/tap/gitlab-shortcut-package.js | 83 ++++
deps/npm/test/tap/gitlab-shortcut.js | 80 +++
deps/npm/test/tap/ignore-scripts.js | 134 +++--
deps/npm/test/tap/ignore-scripts/binding.gyp | 1 -
deps/npm/test/tap/ignore-scripts/package.json | 28 --
deps/npm/test/tap/ignore-shrinkwrap.js | 164 ++++--
.../test/tap/ignore-shrinkwrap/npm-shrinkwrap.json | 17 -
deps/npm/test/tap/ignore-shrinkwrap/package.json | 8 -
deps/npm/test/tap/install-at-locally.js | 85 ++--
.../install-at-locally/package@1.2.3/package.json | 5 -
deps/npm/test/tap/install-cli-production.js | 108 ++--
.../install-cli-production/dependency/package.json | 5 -
.../dev-dependency/package.json | 5 -
.../test/tap/install-cli-production/package.json | 14 -
deps/npm/test/tap/install-cli-unicode.js | 84 +++-
deps/npm/test/tap/install-cli/README.md | 1 -
deps/npm/test/tap/install-cli/index.js | 1 -
deps/npm/test/tap/install-cli/package.json | 10 -
deps/npm/test/tap/install-from-local.js | 117 +++--
.../package-local-dependency/package.json | 5 -
.../package-local-dev-dependency/package.json | 5 -
.../package-scoped-dependency/package.json | 5 -
.../package-with-local-paths/package.json | 10 -
.../package-with-scoped-paths/package.json | 8 -
deps/npm/test/tap/install-save-exact.js | 186 ++++---
deps/npm/test/tap/install-save-exact/README.md | 1 -
deps/npm/test/tap/install-save-exact/index.js | 1 -
deps/npm/test/tap/install-save-exact/package.json | 7 -
deps/npm/test/tap/install-save-local.js | 159 ++++--
.../package-local-dependency/package.json | 5 -
.../package-local-dev-dependency/package.json | 5 -
.../tap/install-save-local/package/package.json | 4 -
deps/npm/test/tap/install-save-prefix.js | 289 ++++++-----
deps/npm/test/tap/install-save-prefix/README.md | 1 -
deps/npm/test/tap/install-save-prefix/index.js | 1 -
deps/npm/test/tap/install-save-prefix/package.json | 7 -
.../test/tap/install-scoped-already-installed.js | 167 ++++---
deps/npm/test/tap/install-scoped-link.js | 99 ++--
.../tap/install-scoped-with-peer-dependency.js | 60 +++
deps/npm/test/tap/install-scoped/package.json | 7 -
deps/npm/test/tap/install-scoped/world.js | 1 -
deps/npm/test/tap/lifecycle-path.js | 78 ++-
deps/npm/test/tap/lifecycle-path/package.json | 1 -
deps/npm/test/tap/lifecycle-path/print-path.js | 1 -
deps/npm/test/tap/lifecycle-signal.js | 57 ++-
deps/npm/test/tap/lifecycle-signal/package.json | 3 -
deps/npm/test/tap/ls-depth-cli.js | 161 +++---
deps/npm/test/tap/ls-depth-unmet.js | 230 ++++++---
deps/npm/test/tap/ls-depth-unmet/package.json | 10 -
deps/npm/test/tap/ls-depth/package.json | 8 -
deps/npm/test/tap/ls-env.js | 52 +-
deps/npm/test/tap/ls-l-depth-0.js | 98 ++--
deps/npm/test/tap/map-to-registry.js | 124 ++---
deps/npm/test/tap/maybe-github.js | 72 ---
.../tap/optional-metadep-rollback-collision.js | 247 ++++++++--
.../deps/d1/package.json | 13 -
.../deps/d2/blart.js | 52 --
.../deps/d2/package.json | 15 -
.../deps/opdep/bad-server.js | 35 --
.../deps/opdep/package.json | 15 -
.../package.json | 10 -
deps/npm/test/tap/outdated-color.js | 77 ++-
deps/npm/test/tap/outdated-depth.js | 81 +--
deps/npm/test/tap/outdated-depth/README.md | 1 -
deps/npm/test/tap/outdated-depth/index.js | 1 -
deps/npm/test/tap/outdated-depth/package.json | 11 -
deps/npm/test/tap/outdated-git.js | 35 +-
.../test/tap/outdated-include-devdependencies.js | 57 ++-
.../outdated-include-devdependencies/package.json | 8 -
deps/npm/test/tap/outdated-json.js | 147 +++---
deps/npm/test/tap/outdated-long.js | 123 +++--
deps/npm/test/tap/outdated-new-versions.js | 62 ++-
.../test/tap/outdated-new-versions/package.json | 11 -
deps/npm/test/tap/outdated.js | 118 +++--
deps/npm/test/tap/outdated/README.md | 1 -
deps/npm/test/tap/outdated/index.js | 1 -
deps/npm/test/tap/outdated/package.json | 10 -
.../test/tap/package-with-peer-dep/package.json | 7 -
deps/npm/test/tap/peer-deps-invalid.js | 127 +++--
deps/npm/test/tap/peer-deps-invalid/file-fail.js | 10 -
deps/npm/test/tap/peer-deps-invalid/file-ok.js | 11 -
deps/npm/test/tap/peer-deps-invalid/package.json | 9 -
.../npm/test/tap/peer-deps-without-package-json.js | 85 ++--
.../tap/peer-deps-without-package-json/.gitkeep | 0
.../tap/peer-deps-without-package-json/file-js.js | 11 -
deps/npm/test/tap/prune.js | 153 +++---
deps/npm/test/tap/prune/package.json | 13 -
deps/npm/test/tap/publish-scoped.js | 8 -
deps/npm/test/tap/scripts-whitespace-windows.js | 109 ++--
.../test/tap/scripts-whitespace-windows/README.md | 1 -
.../tap/scripts-whitespace-windows/dep/README.md | 1 -
.../tap/scripts-whitespace-windows/dep/bin/foo | 4 -
.../scripts-whitespace-windows/dep/package.json | 6 -
.../tap/scripts-whitespace-windows/package.json | 11 -
deps/npm/test/tap/search.js | 325 ++++++------
deps/npm/test/tap/shrinkwrap-empty-deps.js | 98 ++--
.../test/tap/shrinkwrap-empty-deps/package.json | 7 -
deps/npm/test/tap/startstop.js | 76 +--
deps/npm/test/tap/startstop/package.json | 7 -
deps/npm/test/tap/umask-lifecycle.js | 58 +--
deps/npm/test/tap/uninstall-package.js | 103 ++--
deps/npm/test/tap/uninstall-package/package.json | 11 -
deps/npm/test/tap/unpack-foreign-tarball.js | 98 ++--
deps/npm/test/tap/update-save.js | 270 ++++++----
deps/npm/test/tap/update-save/README.md | 1 -
deps/npm/test/tap/update-save/index.js | 1 -
deps/npm/test/tap/update-save/package.json | 10 -
deps/npm/test/tap/url-dependencies.js | 131 +++--
deps/npm/test/tap/url-dependencies/package.json | 8 -
deps/npm/test/tap/version-message-config.js | 62 +--
deps/npm/test/tap/version-update-shrinkwrap.js | 289 ++++-------
463 files changed, 9178 insertions(+), 6879 deletions(-)
delete mode 100644 deps/npm/lib/cache/maybe-github.js
delete mode 100644 deps/npm/node_modules/child-process-close/index.js
delete mode 100644 deps/npm/node_modules/child-process-close/package.json
delete mode 100644 deps/npm/node_modules/child-process-close/test/test-exec.js
delete mode 100644 deps/npm/node_modules/child-process-close/test/test-fork.js
delete mode 100644 deps/npm/node_modules/child-process-close/test/test-spawn-and-execfile.js
delete mode 100644 deps/npm/node_modules/child-process-close/test/test.js
delete mode 100644 deps/npm/node_modules/child-process-close/test/worker-fork.js
delete mode 100644 deps/npm/node_modules/child-process-close/test/worker-spawn.js
rename deps/npm/node_modules/{child-process-close/README.md => columnify/node_modules/wcwidth/node_modules/defaults/LICENSE} (62%)
create mode 100644 deps/npm/node_modules/glob/node_modules/path-is-absolute/index.js
create mode 100644 deps/npm/node_modules/glob/node_modules/path-is-absolute/license
create mode 100644 deps/npm/node_modules/glob/node_modules/path-is-absolute/package.json
create mode 100644 deps/npm/node_modules/glob/node_modules/path-is-absolute/readme.md
create mode 100644 deps/npm/node_modules/hosted-git-info/git-host-info.js
create mode 100644 deps/npm/node_modules/hosted-git-info/git-host.js
create mode 100644 deps/npm/node_modules/hosted-git-info/test/bitbucket-https-with-embedded-auth.js
create mode 100644 deps/npm/node_modules/hosted-git-info/test/https-with-inline-auth.js
create mode 100644 deps/npm/node_modules/lru-cache/t.js
create mode 100644 deps/npm/node_modules/lru-cache/test/timeout.js
delete mode 100644 deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c
create mode 100644 deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json
create mode 100644 deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json
create mode 100644 deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz
create mode 100644 deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json
create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/README.md~
create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/README.md~
create mode 100644 deps/npm/node_modules/request/.eslintrc
create mode 100644 deps/npm/node_modules/request/node_modules/bl/.jshintrc
rename deps/npm/node_modules/request/node_modules/{ => form-data/node_modules}/async/.travis.yml (100%)
rename deps/npm/node_modules/request/node_modules/{ => form-data/node_modules}/async/LICENSE (100%)
rename deps/npm/node_modules/request/node_modules/{ => form-data/node_modules}/async/README.md (100%)
rename deps/npm/node_modules/request/node_modules/{ => form-data/node_modules}/async/component.json (100%)
rename deps/npm/node_modules/request/node_modules/{ => form-data/node_modules}/async/lib/async.js (100%)
rename deps/npm/node_modules/request/node_modules/{ => form-data/node_modules}/async/package.json (94%)
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/.npmignore
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/History.md
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/Makefile
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/Readme.md
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/bower.json
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/browser.js
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/component.json
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/debug.js
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/node.js
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/node_modules/ms/.npmignore
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/node_modules/ms/LICENSE
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/node_modules/ms/README.md
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/node_modules/ms/index.js
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/node_modules/ms/package.json
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/debug/package.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.jshintrc
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/require-directory/.npmignore
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/require-directory/.travis.yml
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/require-directory/LICENSE
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/require-directory/README.markdown
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/require-directory/index.js
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/node_modules/require-directory/package.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/error.js
delete mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/cache.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/cacheEntry.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/content.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/cookie.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/creator.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/entry.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/har.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/index.js
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/log.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/page.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/pageTimings.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/postData.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/record.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/request.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/response.json
create mode 100644 deps/npm/node_modules/request/node_modules/har-validator/src/schemas/timings.json
delete mode 100755 deps/npm/node_modules/request/node_modules/hawk/node_modules/boom/Makefile
mode change 100755 => 100644 deps/npm/node_modules/request/node_modules/hawk/node_modules/boom/package.json
mode change 100755 => 100644 deps/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json
mode change 100755 => 100644 deps/npm/node_modules/request/node_modules/hawk/node_modules/sntp/package.json
mode change 100755 => 100644 deps/npm/node_modules/request/node_modules/hawk/package.json
create mode 100644 deps/npm/node_modules/request/node_modules/isstream/.jshintrc
create mode 100644 deps/npm/node_modules/request/node_modules/qs/.jshintrc
create mode 100755 deps/npm/node_modules/request/node_modules/qs/README.md
create mode 100644 deps/npm/node_modules/request/node_modules/tunnel-agent/.jshintrc
rename deps/npm/test/{tap/cache-shasum-fork/underscore-1.5.1.tgz => fixtures/forked-underscore-1.5.1.tgz} (100%)
rename deps/npm/test/{tap/unpack-foreign-tarball => fixtures}/gitignore-and-npmignore-2.tar (100%)
rename deps/npm/test/{tap/unpack-foreign-tarball => fixtures}/gitignore-and-npmignore.tar (100%)
rename deps/npm/test/{tap/unpack-foreign-tarball => fixtures}/gitignore-and-npmignore.tgz (100%)
rename deps/npm/test/{tap/unpack-foreign-tarball => fixtures}/gitignore.tgz (100%)
rename deps/npm/test/{tap/unpack-foreign-tarball => fixtures}/npmignore.tgz (100%)
create mode 100644 deps/npm/test/tap/add-remote-git-get-resolved.js
create mode 100644 deps/npm/test/tap/bitbucket-https-url-with-creds-package.js
create mode 100644 deps/npm/test/tap/bitbucket-https-url-with-creds.js
create mode 100644 deps/npm/test/tap/bitbucket-shortcut-package.js
create mode 100644 deps/npm/test/tap/bitbucket-shortcut.js
delete mode 100644 deps/npm/test/tap/circular-dep/minimist/package.json
delete mode 100644 deps/npm/test/tap/dedupe/package.json
create mode 100644 deps/npm/test/tap/false-name.js
delete mode 100644 deps/npm/test/tap/false_name.js
delete mode 100644 deps/npm/test/tap/false_name/index.js
delete mode 100644 deps/npm/test/tap/false_name/package.json
create mode 100644 deps/npm/test/tap/gist-short-shortcut-package.js
create mode 100644 deps/npm/test/tap/gist-short-shortcut.js
create mode 100644 deps/npm/test/tap/gist-shortcut-package.js
create mode 100644 deps/npm/test/tap/gist-shortcut.js
create mode 100644 deps/npm/test/tap/github-shortcut-package.js
create mode 100644 deps/npm/test/tap/gitlab-shortcut-package.js
create mode 100644 deps/npm/test/tap/gitlab-shortcut.js
delete mode 100644 deps/npm/test/tap/ignore-scripts/binding.gyp
delete mode 100644 deps/npm/test/tap/ignore-scripts/package.json
delete mode 100644 deps/npm/test/tap/ignore-shrinkwrap/npm-shrinkwrap.json
delete mode 100644 deps/npm/test/tap/ignore-shrinkwrap/package.json
delete mode 100644 deps/npm/test/tap/install-at-locally/package@1.2.3/package.json
delete mode 100644 deps/npm/test/tap/install-cli-production/dependency/package.json
delete mode 100644 deps/npm/test/tap/install-cli-production/dev-dependency/package.json
delete mode 100644 deps/npm/test/tap/install-cli-production/package.json
delete mode 100644 deps/npm/test/tap/install-cli/README.md
delete mode 100644 deps/npm/test/tap/install-cli/index.js
delete mode 100644 deps/npm/test/tap/install-cli/package.json
delete mode 100644 deps/npm/test/tap/install-from-local/package-local-dependency/package.json
delete mode 100644 deps/npm/test/tap/install-from-local/package-local-dev-dependency/package.json
delete mode 100644 deps/npm/test/tap/install-from-local/package-scoped-dependency/package.json
delete mode 100644 deps/npm/test/tap/install-from-local/package-with-local-paths/package.json
delete mode 100644 deps/npm/test/tap/install-from-local/package-with-scoped-paths/package.json
delete mode 100644 deps/npm/test/tap/install-save-exact/README.md
delete mode 100644 deps/npm/test/tap/install-save-exact/index.js
delete mode 100644 deps/npm/test/tap/install-save-exact/package.json
delete mode 100644 deps/npm/test/tap/install-save-local/package-local-dependency/package.json
delete mode 100644 deps/npm/test/tap/install-save-local/package-local-dev-dependency/package.json
delete mode 100644 deps/npm/test/tap/install-save-local/package/package.json
delete mode 100644 deps/npm/test/tap/install-save-prefix/README.md
delete mode 100644 deps/npm/test/tap/install-save-prefix/index.js
delete mode 100644 deps/npm/test/tap/install-save-prefix/package.json
create mode 100644 deps/npm/test/tap/install-scoped-with-peer-dependency.js
delete mode 100644 deps/npm/test/tap/install-scoped/package.json
delete mode 100644 deps/npm/test/tap/install-scoped/world.js
delete mode 100644 deps/npm/test/tap/lifecycle-path/package.json
delete mode 100644 deps/npm/test/tap/lifecycle-path/print-path.js
delete mode 100644 deps/npm/test/tap/lifecycle-signal/package.json
delete mode 100644 deps/npm/test/tap/ls-depth-unmet/package.json
delete mode 100644 deps/npm/test/tap/ls-depth/package.json
delete mode 100644 deps/npm/test/tap/maybe-github.js
delete mode 100644 deps/npm/test/tap/optional-metadep-rollback-collision/deps/d1/package.json
delete mode 100644 deps/npm/test/tap/optional-metadep-rollback-collision/deps/d2/blart.js
delete mode 100644 deps/npm/test/tap/optional-metadep-rollback-collision/deps/d2/package.json
delete mode 100644 deps/npm/test/tap/optional-metadep-rollback-collision/deps/opdep/bad-server.js
delete mode 100644 deps/npm/test/tap/optional-metadep-rollback-collision/deps/opdep/package.json
delete mode 100644 deps/npm/test/tap/optional-metadep-rollback-collision/package.json
delete mode 100644 deps/npm/test/tap/outdated-depth/README.md
delete mode 100644 deps/npm/test/tap/outdated-depth/index.js
delete mode 100644 deps/npm/test/tap/outdated-depth/package.json
delete mode 100644 deps/npm/test/tap/outdated-include-devdependencies/package.json
delete mode 100644 deps/npm/test/tap/outdated-new-versions/package.json
delete mode 100644 deps/npm/test/tap/outdated/README.md
delete mode 100644 deps/npm/test/tap/outdated/index.js
delete mode 100644 deps/npm/test/tap/outdated/package.json
delete mode 100644 deps/npm/test/tap/package-with-peer-dep/package.json
delete mode 100644 deps/npm/test/tap/peer-deps-invalid/file-fail.js
delete mode 100644 deps/npm/test/tap/peer-deps-invalid/file-ok.js
delete mode 100644 deps/npm/test/tap/peer-deps-invalid/package.json
delete mode 100644 deps/npm/test/tap/peer-deps-without-package-json/.gitkeep
delete mode 100644 deps/npm/test/tap/peer-deps-without-package-json/file-js.js
delete mode 100644 deps/npm/test/tap/prune/package.json
delete mode 100644 deps/npm/test/tap/scripts-whitespace-windows/README.md
delete mode 100644 deps/npm/test/tap/scripts-whitespace-windows/dep/README.md
delete mode 100644 deps/npm/test/tap/scripts-whitespace-windows/dep/bin/foo
delete mode 100644 deps/npm/test/tap/scripts-whitespace-windows/dep/package.json
delete mode 100644 deps/npm/test/tap/scripts-whitespace-windows/package.json
delete mode 100644 deps/npm/test/tap/shrinkwrap-empty-deps/package.json
delete mode 100644 deps/npm/test/tap/startstop/package.json
delete mode 100644 deps/npm/test/tap/uninstall-package/package.json
delete mode 100644 deps/npm/test/tap/update-save/README.md
delete mode 100644 deps/npm/test/tap/update-save/index.js
delete mode 100644 deps/npm/test/tap/update-save/package.json
delete mode 100644 deps/npm/test/tap/url-dependencies/package.json
diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS
index 12969cc..94afe57 100644
--- a/deps/npm/AUTHORS
+++ b/deps/npm/AUTHORS
@@ -268,3 +268,6 @@ Takaya Kobayashi
Ra'Shaun Stovall
Julien Meddah
Michiel Sikma
+Jakob Krigovsky
+Charmander <~@charmander.me>
+erik wienhold
diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md
index 7c18862..a6ab68d 100644
--- a/deps/npm/CHANGELOG.md
+++ b/deps/npm/CHANGELOG.md
@@ -1,3 +1,326 @@
+### v2.8.3 (2015-04-15):
+
+#### TWO SMALL GIT TWEAKS
+
+This is the last of a set of releases intended to ensure npm's git support is
+robust enough that we can stop working on it for a while. These fixes are
+small, but prevent a common crasher and clear up one of the more confusing
+error messages coming out of npm when working with repositories hosted on git.
+
+* [`387f889`](https://github.com/npm/npm/commit/387f889c0e8fb617d9cc9a42ed0a3ec49424ab5d)
+ [#7961](https://github.com/npm/npm/issues/7961) Ensure that hosted git SSH
+ URLs always have a valid protocol when stored in `resolved` fields in
+ `npm-shrinkwrap.json`. ([@othiym23](https://github.com/othiym23))
+* [`394c2f5`](https://github.com/npm/npm/commit/394c2f5a1227232c0baf42fbba1402aafe0d6ffb)
+ Switch the order in which hosted Git providers are checked to `git:`,
+ `git+https:`, then `git+ssh:` (from `git:`, `git+ssh:`, then `git+https:`) in
+ an effort to go from most to least likely to succeed, to make for less
+ confusing error message. ([@othiym23](https://github.com/othiym23))
+
+### v2.8.2 (2015-04-14):
+
+#### PEACE IN OUR TIME
+
+npm has been having an issue with CouchDB's web server since the release
+of io.js and Node.js 0.12.0 that has consumed a huge amount of my time
+to little visible effect. Sam Mikes picked up the thread from me, and
+after a [_lot_ of effort](https://github.com/npm/npm/issues/7699#issuecomment-93091111)
+figured out that ultimately there are probably a couple problems with
+the new HTTP Agent keep-alive handling in new versions of Node. In
+addition, `npm-registry-client` was gratuitously sending a body along
+with a GET request which was triggering the bugs. Sam removed about 10 bytes from
+one file in `npm-registry-client`, and this problem, which has been bugging us for months,
+completely went away.
+
+In conclusion, Sam Mikes is great, and anybody using a private registry
+hosted on CouchDB should thank him for his hard work. Also, thanks to
+the community at large for pitching in on this bug, which has been
+around for months now.
+
+* [`431c3bf`](https://github.com/npm/npm/commit/431c3bf6cdec50f9f0c735f478cb2f3f337d3313)
+ [#7699](https://github.com/npm/npm/issues/7699) `npm-registry-client@6.3.2`:
+ Don't send body with HTTP GET requests when logging in.
+ ([@smikes](https://github.com/smikes))
+
+### v2.8.1 (2015-04-12):
+
+#### CORRECTION: NPM'S GIT INTEGRATION IS DOING OKAY
+
+A [helpful bug report](https://github.com/npm/npm/issues/7872#issuecomment-91809553)
+led to another round of changes to
+[`hosted-git-info`](https://github.com/npm/hosted-git-info/commit/827163c74531b69985d1ede7abced4861e7b0cd4),
+some additional test-writing, and a bunch of hands-on testing against actual
+private repositories. While the complexity of npm's git dependency handling is
+nearly fractal (because npm is very complex, and git is even more complex),
+it's feeling way more solid than it has for a while. We think this is a
+substantial improvement over what we had before, so give `npm@2.8.1` a shot if
+you have particularly complex git use cases and
+[let us know](https://github.com/npm/npm/issues/new) how it goes.
+
+(NOTE: These changes mostly affect cloning and saving references to packages
+hosted in git repositories, and don't address some known issues with things
+like lifecycle scripts not being run on npm dependencies. Work continues on
+other issues that affect parity between git and npm registry packages.)
+
+* [`66377c6`](https://github.com/npm/npm/commit/66377c6ece2cf4d53d9a618b7d9824e1452bc293)
+ [#7872](https://github.com/npm/npm/issues/7872) `hosted-git-info@2.1.2`: Pass
+ through credentials embedded in SSH and HTTPs git URLs.
+ ([@othiym23](https://github.com/othiym23))
+* [`15efe12`](https://github.com/npm/npm/commit/15efe124753257728a0ddc64074fa5a4b9c2eb30)
+ [#7872](https://github.com/npm/npm/issues/7872) Use the new version of
+ `hosted-git-info` to pass along credentials embedded in git URLs. Test it.
+ Test it a lot. ([@othiym23](https://github.com/othiym23))
+
+#### SCOPED DEPENDENCIES AND PEER DEPENDENCIES: NOT QUITE REESE'S
+
+Big thanks to [@ewie](https://github.com/ewie) for identifying an issue with
+how npm was handling `peerDependencies` that were implicitly installed from the
+`package.json` files of scoped dependencies. This
+[will be a moot point](https://github.com/npm/npm/issues/6565#issuecomment-74971689)
+with the release of `npm@3`, but until then, it's important that
+`peerDependency` auto-installation work as expected.
+
+* [`b027319`](https://github.com/npm/npm/commit/b0273190c71eba14395ddfdd1d9f7ba625297523)
+ [#7920](https://github.com/npm/npm/issues/7920) Scoped packages with
+ `peerDependencies` were installing the `peerDependencies` into the wrong
+ directory. ([@ewie](https://github.com/ewie))
+* [`649e31a`](https://github.com/npm/npm/commit/649e31ae4fd02568bae5dc6b4ea783431ce3d63e)
+ [#7920](https://github.com/npm/npm/issues/7920) Test `peerDependency`
+ installs involving scoped packages using `npm-package-arg` instead of simple
+ path tests, for consistency. ([@othiym23](https://github.com/othiym23))
+
+#### MAKING IT EASIER TO WRITE NPM TESTS, VERSION 0.0.1
+
+[@iarna](https://github.com/iarna) and I
+([@othiym23](https://github.com/othiym23)) have been discussing a
+[candidate plan](https://github.com/npm/npm/wiki/rewriting-npm's-tests:-a-plan-maybe)
+for improving npm's test suite, with the goal of making it easier for new
+contributors to get involved with npm by reducing the learning curve
+necessary to be able to write good tests for proposed changes. This is the
+first substantial piece of that effort. Here's what the commit message for
+[`ed7e249`](https://github.com/npm/npm/commit/ed7e249d50444312cd266942ce3b89e1ca049bdf)
+had to say about this work:
+
+> It's too difficult for npm contributors to figure out what the conventional
+> style is for tests. Part of the problem is that the documentation in
+> CONTRIBUTING.md is inadequate, but another important factor is that the tests
+> themselves are written in a variety of styles. One of the most notable
+> examples of this is the fact that many tests use fixture directories to store
+> precooked test scenarios and package.json files.
+>
+> This had some negative consequences:
+>
+> * tests weren't idempotent
+> * subtle dependencies between tests existed
+> * new tests get written in this deprecated style because it's not
+> obvious that the style is out of favor
+> * it's hard to figure out why a lot of those directories existed,
+> because they served a variety of purposes, so it was difficult to
+> tell when it was safe to remove them
+>
+> All in all, the fixture directories were a major source of technical debt, and
+> cleaning them up, while time-consuming, makes the whole test suite much more
+> approachable, and makes it more likely that new tests written by outside
+> contributors will follow a conventional style. To support that, all of the
+> tests touched by this changed were cleaned up to pass the `standard` style
+> checker.
+
+And here's a little extra context from a comment I left on [#7929](https://github.com/npm/npm/issues/7929):
+
+> One of the other things that encouraged me was looking at this
+> [presentation on technical debt](http://www.slideshare.net/nnja/pycon-2015-technical-debt-the-monster-in-your-closet)
+> from Pycon 2015, especially slide 53, which I interpreted in terms of
+> difficulty getting new contributors to submit patches to an OSS project like
+> npm. npm has a long ways to go, but I feel good about this change.
+
+* [`ed7e249`](https://github.com/npm/npm/commit/ed7e249d50444312cd266942ce3b89e1ca049bdf)
+ [#7929](https://github.com/npm/npm/issues/7929) Eliminate fixture directories
+ from `test/tap`, leaving each test self-contained.
+ ([@othiym23](https://github.com/othiym23))
+* [`4928d30`](https://github.com/npm/npm/commit/4928d30140821c63e03fffed73f8d88ebdc43710)
+ [#7929](https://github.com/npm/npm/issues/7929) Move fixture files from
+ `test/tap/*` to `test/fixtures`. ([@othiym23](https://github.com/othiym23))
+* [`e925deb`](https://github.com/npm/npm/commit/e925debca91092a814c1a00933babc3a8cf975be)
+ [#7929](https://github.com/npm/npm/issues/7929) Tweak the run scripts to stop
+ slaughtering the CPU on doc rebuild.
+ ([@othiym23](https://github.com/othiym23))
+* [`65bf7cf`](https://github.com/npm/npm/commit/65bf7cffaf91c426b676c47529eee796f8b8b75c)
+ [#7923](https://github.com/npm/npm/issues/7923) Use an alias of scripts and
+ run-scripts in `npm run test-all` ([@watilde](https://github.com/watilde))
+* [`756a3fb`](https://github.com/npm/npm/commit/756a3fbb852a2469afe706635ed88d22c37743e5)
+ [#7923](https://github.com/npm/npm/issues/7923) Sync timeout time of `npm
+ run-script test-all` to be the same as `test` and `tap` scripts.
+ ([@watilde](https://github.com/watilde))
+* [`8299b5f`](https://github.com/npm/npm/commit/8299b5fb6373354a7fbaab6f333863758812ae90)
+ Set a timeout for tap tests for `npm run-script test-all`.
+ ([@othiym23](https://github.com/othiym23))
+
+#### THE EVER-BEATING DRUM OF DEPENDENCY UPDATES
+
+* [`d90d0b9`](https://github.com/npm/npm/commit/d90d0b992acbf62fd5d68debf9d1dbd6cfa20804)
+ [#7924](https://github.com/npm/npm/issues/7924) Remove `child-process-close`,
+ as it was included for Node 0.6 compatibility, and npm no longer supports
+ 0.6. ([@robertkowalski](https://github.com/robertkowalski))
+* [`16427c1`](https://github.com/npm/npm/commit/16427c1f3ea3d71ee753c62eb4c2663c7b32b84f)
+ `lru-cache@2.5.2`: More accurate updating of expiry times when `maxAge` is
+ set. ([@isaacs](https://github.com/isaacs))
+* [`03cce83`](https://github.com/npm/npm/commit/03cce83b64344a9e0fe036dce214f4d68cfcc9e7)
+ `nock@1.6.0`: Mocked network error handling.
+ ([@pgte](https://github.com/pgte))
+* [`f93b1f0`](https://github.com/npm/npm/commit/f93b1f0b7eb5d1b8a7967e837bbd756db1091d00)
+ `glob@5.0.5`: Use `path-is-absolute` polyfill, allowing newer Node.js and
+ io.js versions to use `path.isAbsolute()`.
+ ([@sindresorhus](https://github.com/sindresorhus))
+* [`a70d694`](https://github.com/npm/npm/commit/a70d69495a6e96997e64855d9e749d943ee6d64f)
+ `request@2.55.0`: Bug fixes and simplification.
+ ([@simov](https://github.com/simov))
+* [`2aecc6f`](https://github.com/npm/npm/commit/2aecc6f4083526feeb14615b4e5484edc66175b5)
+ `columnify@1.5.1`: Switch to using babel from 6to5.
+ ([@timoxley](https://github.com/timoxley))
+
+### v2.8.0 (2015-04-09):
+
+#### WE WILL NEVER BE DONE FIXING NPM'S GIT SUPPORT
+
+If you look at [the last release's release
+notes](https://github.com/npm/npm/blob/master/CHANGELOG.md#git-mean-git-tuff-git-all-the-way-away-from-my-stuff),
+you will note that they confidently assert that it's perfectly OK to force all
+GitHub URLs through the same `git:` -> `git+ssh:` fallback flow for cloning. It
+turns out that many users depend on `git+https:` URLs in their build
+environments because they use GitHub auth tokens instead of SSH keys. Also, in
+some cases you just want to be able to explicitly say how a given dependency
+should be cloned from GitHub.
+
+Because of the way we resolved the inconsistency in GitHub shorthand handling
+[before](https://github.com/npm/npm/blob/master/CHANGELOG.md#bug-fixes-1), this
+turned out to be difficult to work around. So instead of hacking around it, we
+completely redid how git is handled within npm and its attendant packages.
+Again. This time, we changed things so that `normalize-package-data` and
+`read-package-json` leave more of the git logic to npm itself, which makes
+handling shorthand syntax consistently much easier, and also allows users to
+resume using explicit, fully-qualified git URLs without npm messing with them.
+
+Here's a summary of what's changed:
+
+* Instead of converting the GitHub shorthand syntax to a `git+ssh:`, `git:`, or
+ `git+https:` URL and saving that, save the shorthand itself to
+ `package.json`.
+* If presented with shortcuts, try cloning via the git protocol, SSH, and HTTPS
+ (in that order).
+* No longer prompt for credentials -- it didn't work right with the spinner,
+ and wasn't guaranteed to work anyway. We may experiment with doing this a
+ better way in the future. Users can override this by setting `GIT_ASKPASS` in
+ their environment if they want to experiment with interactive cloning, but
+ should also set `--no-spin` on the npm command line (or run `npm config set
+ spin=false`).
+* **EXPERIMENTAL FEATURE**: Add support for `github:`, `gist:`, `bitbucket:`,
+ and `gitlab:` shorthand prefixes. GitHub shortcuts will continue to be
+ normalized to `org/repo` instead of being saved as `github:org/repo`, but
+ `gitlab:`, `gist:`, and `bitbucket:` prefixes will be used on the command
+ line and from `package.json`. BE CAREFUL WITH THIS. `package.json` files
+ published with the new shorthand syntax can _only_ be read by `npm@2.8.0` and
+ later, and this feature is mostly meant for playing around with it. If you
+ want to save git dependencies in a form that older versions of npm can read,
+ use `--save-exact`, which will save the git URL and resolved commit hash of
+ the head of the branch in a manner similar to the way that `--save-exact`
+ pins versions for registry dependencies. This is documented (so check `npm
+ help install` for details), but we're not going to make a lot of noise about
+ it until it has a chance to bake in a little more.
+
+It is [@othiym23](https://github.com/othiym23)'s sincere hope that this will
+resolve all of the inconsistencies users were seeing with GitHub and git-hosted
+packages, but given the level of change here, that may just be a fond wish.
+Extra testing of this change is requested.
+
+* [`6b0f588`](https://github.com/npm/npm/commit/6b0f58877f37df9904490ffbaaad33862bd36dce)
+ [#7867](https://github.com/npm/npm/issues/7867) Use git shorthand and git
+ URLs as presented by user. Support new `hosted-git-info` shortcut syntax.
+ Save shorthand in `package.json`. Try cloning via `git:`, `git+ssh:`, and
+ `git+https:`, in that order, when supported by the underlying hosting
+ provider. ([@othiym23](https://github.com/othiym23))
+* [`75d4267`](https://github.com/npm/npm/commit/75d426787869d54ca7400408f562f971b34649ef)
+ [#7867](https://github.com/npm/npm/issues/7867) Document new GitHub, GitHub
+ gist, Bitbucket, and GitLab shorthand syntax.
+ ([@othiym23](https://github.com/othiym23))
+* [`7d92c75`](https://github.com/npm/npm/commit/7d92c7592998d90ec883fa989ca74f04ec1b93de)
+ [#7867](https://github.com/npm/npm/issues/7867) When `--save-exact` is used
+ with git shorthand or URLs, save the fully-resolved URL, with branch name
+ resolved to the exact hash for the commit checked out.
+ ([@othiym23](https://github.com/othiym23))
+* [`9220e59`](https://github.com/npm/npm/commit/9220e59f8def8c82c6d331a39ba29ad4c44e3a9b)
+ [#7867](https://github.com/npm/npm/issues/7867) Ensure that non-prefixed and
+ non-normalized GitHub shortcuts are saved to `package.json`.
+ ([@othiym23](https://github.com/othiym23))
+* [`dd398e9`](https://github.com/npm/npm/commit/dd398e98a8eba27eeba84378200da3d078fdf980)
+ [#7867](https://github.com/npm/npm/issues/7867) `hosted-git-info@2.1.1`:
+ Ensure that `gist:` shorthand survives being round-tripped through
+ `package.json`. ([@othiym23](https://github.com/othiym23))
+* [`33d1420`](https://github.com/npm/npm/commit/33d1420bf2f629332fceb2ac7e174e63ac48f96a)
+ [#7867](https://github.com/npm/npm/issues/7867) `hosted-git-info@2.1.0`: Add
+ support for auth embedded directly in git URLs.
+ ([@othiym23](https://github.com/othiym23))
+* [`23a1d5a`](https://github.com/npm/npm/commit/23a1d5a540e8db27f5cd0245de7c3694e2bddad1)
+ [#7867](https://github.com/npm/npm/issues/7867) `hosted-git-info@2.0.2`: Make
+ it possible to determine in which form a hosted git URL was passed.
+ ([@iarna](https://github.com/iarna))
+* [`eaf75ac`](https://github.com/npm/npm/commit/eaf75acb718611ad5cfb360084ec86938d9c66c5)
+ [#7867](https://github.com/npm/npm/issues/7867)
+ `normalize-package-data@2.0.0`: Normalize GitHub specifiers so they pass
+ through shortcut syntax and preserve explicit URLs.
+ ([@iarna](https://github.com/iarna))
+* [`95e0535`](https://github.com/npm/npm/commit/95e0535e365e0aca49c634dd2061a0369b0475f1)
+ [#7867](https://github.com/npm/npm/issues/7867) `npm-package-arg@4.0.0`: Add
+ git URL and shortcut to hosted git spec and use `hosted-git-info@2.0.2`.
+ ([@iarna](https://github.com/iarna))
+* [`a808926`](https://github.com/npm/npm/commit/a8089268d5f3d57f42dbaba02ff6437da5121191)
+ [#7867](https://github.com/npm/npm/issues/7867)
+ `realize-package-specifier@3.0.0`: Use `npm-package-arg@4.0.0` and test
+ shortcut specifier behavior. ([@iarna](https://github.com/iarna))
+* [`6dd1e03`](https://github.com/npm/npm/commit/6dd1e039bddf8cf5383343f91d84bc5d78acd083)
+ [#7867](https://github.com/npm/npm/issues/7867) `init-package-json@1.4.0`:
+ Allow dependency on `read-package-json@2.0.0`.
+ ([@iarna](https://github.com/iarna))
+* [`63254bb`](https://github.com/npm/npm/commit/63254bb6358f66752aca6aa1a275271b3ae03f7c)
+ [#7867](https://github.com/npm/npm/issues/7867) `read-installed@4.0.0`: Use
+ `read-package-json@2.0.0`. ([@iarna](https://github.com/iarna))
+* [`254b887`](https://github.com/npm/npm/commit/254b8871f5a173bb464cc5b0ace460c7878b8097)
+ [#7867](https://github.com/npm/npm/issues/7867) `read-package-json@2.0.0`:
+ Use `normalize-package-data@2.0.0`. ([@iarna](https://github.com/iarna))
+* [`0b9f8be`](https://github.com/npm/npm/commit/0b9f8be62fe5252abe54d49e36a696f4816c2eca)
+ [#7867](https://github.com/npm/npm/issues/7867) `npm-registry-client@6.3.0`:
+ Mark compatibility with `normalize-package-data@2.0.0` and
+ `npm-package-arg@4.0.0`. ([@iarna](https://github.com/iarna))
+* [`f40ecaa`](https://github.com/npm/npm/commit/f40ecaad68f77abc50eb6f5b224e31dec3d250fc)
+ [#7867](https://github.com/npm/npm/issues/7867) Extract a common method to
+ use when cloning git repos for testing.
+ ([@othiym23](https://github.com/othiym23))
+
+#### TEST FIXES FOR NODE 0.8
+
+npm continues to [get closer](https://github.com/npm/npm/issues/7842) to being
+completely green on Travis for Node 0.8.
+
+* [`26d36e9`](https://github.com/npm/npm/commit/26d36e9cf0eca69fe1863d2ea536c28555b9e8de)
+ [#7842](https://github.com/npm/npm/issues/7842) When spawning child
+ processes, map exit code 127 to ENOENT so Node 0.8 handles child process
+ failures the same as later versions.
+ ([@SonicHedgehog](https://github.com/SonicHedgehog))
+* [`54cd895`](https://github.com/npm/npm/commit/54cd8956ea783f96749e46597d8c2cb9397c5d5f)
+ [#7842](https://github.com/npm/npm/issues/7842) Node 0.8 requires -e with -p
+ when evaluating snippets; fix test.
+ ([@SonicHedgehog](https://github.com/SonicHedgehog))
+
+#### SMALL FIX AND DOC TWEAK
+
+* [`20e9003`](https://github.com/npm/npm/commit/20e90031b847e9f7c7168f3dad8b1e526f9a2586)
+ `tar@2.0.1`: Fix regression where relative symbolic links within an
+ extraction root that pointed within an extraction root would get normalized
+ to absolute symbolic links. ([@isaacs](https://github.com/isaacs))
+* [`2ef8898`](https://github.com/npm/npm/commit/2ef88989c41bee1578570bb2172c90ede129dbd1)
+ [#7879](https://github.com/npm/npm/issues/7879) Better document that `npm
+ publish --tag=foo` will not set `latest` to that version.
+ ([@linclark](https://github.com/linclark))
+
### v2.7.6 (2015-04-02):
#### GIT MEAN, GIT TUFF, GIT ALL THE WAY AWAY FROM MY STUFF
diff --git a/deps/npm/doc/cli/npm-dist-tag.md b/deps/npm/doc/cli/npm-dist-tag.md
index f8e4566..ce4f7ed 100644
--- a/deps/npm/doc/cli/npm-dist-tag.md
+++ b/deps/npm/doc/cli/npm-dist-tag.md
@@ -33,7 +33,8 @@ When installing dependencies, a preferred tagged version may be specified:
This also applies to `npm dedupe`.
-Publishing a package always sets the "latest" tag to the published version.
+Publishing a package sets the "latest" tag to the published version unless the
+`--tag` option is used. For example, `npm publish --tag=beta`.
## PURPOSE
diff --git a/deps/npm/doc/cli/npm-install.md b/deps/npm/doc/cli/npm-install.md
index acc221d..6c732c4 100644
--- a/deps/npm/doc/cli/npm-install.md
+++ b/deps/npm/doc/cli/npm-install.md
@@ -164,15 +164,51 @@ after packing it up into a tarball (b).
npm install mygithubuser/myproject
- To reference a package in a git repo that is not on GitHub, see git
- remote urls below.
+ To reference a package in a generic git repo (not on GitHub), see git remote
+ urls below.
+
+* `npm install github:/`:
+
+ The same as the above, but explicitly marked as a GitHub dependency.
+
+ Example:
+
+ npm install github:npm/npm
+
+* `npm install gist:[/]`:
+
+ Install the package at `https://gist.github.com/gistID` by attempting to
+ clone it using `git`. The GitHub username associated with the gist is
+ optional and will not be saved in `package.json` if `--save` is used.
+
+ Example:
+
+ npm install gist:101a11beef
+
+* `npm install bitbucket:/`:
+
+ Install the package at `https://bitbucket.org/bitbucketname/bitbucketrepo`
+ by attempting to clone it using `git`.
+
+ Example:
+
+ npm install bitbucket:mybitbucketuser/myproject
+
+* `npm install gitlab:/`:
+
+ Install the package at `https://gitlab.com/gitlabname/gitlabrepo`
+ by attempting to clone it using `git`.
+
+ Example:
+
+ npm install gitlab:mygitlabuser/myproject
* `npm install `:
Install a package by cloning a git remote url. The format of the git
url is:
- ://[@][#]
+ ://[[:]@][#]
`` is one of `git`, `git+ssh`, `git+http`, or
`git+https`. If no `` is specified, then `master` is
diff --git a/deps/npm/doc/files/package.json.md b/deps/npm/doc/files/package.json.md
index 18a398b..b1c8f21 100644
--- a/deps/npm/doc/files/package.json.md
+++ b/deps/npm/doc/files/package.json.md
@@ -272,11 +272,17 @@ The URL should be a publicly available (perhaps read-only) url that can be hande
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-For GitHub repositories you can use the same shortcut syntax you use for `npm
-install`:
+For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
+shortcut syntax you use for `npm install`:
"repository": "npm/npm"
+ "repository": "gist:11081aaa281"
+
+ "repository": "bitbucket:example/repo"
+
+ "repository": "gitlab:another/repo"
+
## scripts
The "scripts" property is a dictionary containing script commands that are run
diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html
index 6e2c751..b140d4e 100644
--- a/deps/npm/html/doc/README.html
+++ b/deps/npm/html/doc/README.html
@@ -126,7 +126,7 @@ specific purpose, or lack of malice in any given npm package.
If you have a complaint about a package in the public npm registry,
and cannot resolve it with the package
owner, please email
-support@npmjs.com and explain the situation.
+support@npmjs.com and explain the situation.
Any data published to The npm Registry (including user account
information) may be removed or modified at the sole discretion of the
npm server administrators.
@@ -169,5 +169,5 @@ will no doubt tell you to put the output in a gist or email.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-bin.html b/deps/npm/html/doc/api/npm-bin.html
index c963dd4..2101fce 100644
--- a/deps/npm/html/doc/api/npm-bin.html
+++ b/deps/npm/html/doc/api/npm-bin.html
@@ -28,5 +28,5 @@ to the npm.bin
property.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-bugs.html b/deps/npm/html/doc/api/npm-bugs.html
index 4dd89c8..0b6eee8 100644
--- a/deps/npm/html/doc/api/npm-bugs.html
+++ b/deps/npm/html/doc/api/npm-bugs.html
@@ -33,5 +33,5 @@ friendly for programmatic use.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-cache.html b/deps/npm/html/doc/api/npm-cache.html
index 97fe3bb..08eb82b 100644
--- a/deps/npm/html/doc/api/npm-cache.html
+++ b/deps/npm/html/doc/api/npm-cache.html
@@ -42,5 +42,5 @@ incrementation.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-commands.html b/deps/npm/html/doc/api/npm-commands.html
index d74dba8..071bee9 100644
--- a/deps/npm/html/doc/api/npm-commands.html
+++ b/deps/npm/html/doc/api/npm-commands.html
@@ -36,5 +36,5 @@ usage, or man 3 npm-<command>
for programmatic usage.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-config.html b/deps/npm/html/doc/api/npm-config.html
index a7de004..6389aab 100644
--- a/deps/npm/html/doc/api/npm-config.html
+++ b/deps/npm/html/doc/api/npm-config.html
@@ -57,5 +57,5 @@ functions instead.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-deprecate.html b/deps/npm/html/doc/api/npm-deprecate.html
index 0115c60..0a21226 100644
--- a/deps/npm/html/doc/api/npm-deprecate.html
+++ b/deps/npm/html/doc/api/npm-deprecate.html
@@ -47,5 +47,5 @@ a deprecation warning to all who attempt to install it.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-docs.html b/deps/npm/html/doc/api/npm-docs.html
index 75f703a..9041a64 100644
--- a/deps/npm/html/doc/api/npm-docs.html
+++ b/deps/npm/html/doc/api/npm-docs.html
@@ -33,5 +33,5 @@ friendly for programmatic use.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-edit.html b/deps/npm/html/doc/api/npm-edit.html
index 91a5525..5cac138 100644
--- a/deps/npm/html/doc/api/npm-edit.html
+++ b/deps/npm/html/doc/api/npm-edit.html
@@ -36,5 +36,5 @@ and how this is used.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-explore.html b/deps/npm/html/doc/api/npm-explore.html
index 6d8d1bf..ff9fbb7 100644
--- a/deps/npm/html/doc/api/npm-explore.html
+++ b/deps/npm/html/doc/api/npm-explore.html
@@ -31,5 +31,5 @@ sure to use npm rebuild <pkg>
if you make any changes.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-help-search.html b/deps/npm/html/doc/api/npm-help-search.html
index 1a46408..badf0c4 100644
--- a/deps/npm/html/doc/api/npm-help-search.html
+++ b/deps/npm/html/doc/api/npm-help-search.html
@@ -44,5 +44,5 @@ Name of the file that matched
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-init.html b/deps/npm/html/doc/api/npm-init.html
index 4b8246d..38d4948 100644
--- a/deps/npm/html/doc/api/npm-init.html
+++ b/deps/npm/html/doc/api/npm-init.html
@@ -39,5 +39,5 @@ then go ahead and use this programmatically.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-install.html b/deps/npm/html/doc/api/npm-install.html
index 29f5f1c..8b73e8c 100644
--- a/deps/npm/html/doc/api/npm-install.html
+++ b/deps/npm/html/doc/api/npm-install.html
@@ -32,5 +32,5 @@ installed or when an error has been encountered.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-link.html b/deps/npm/html/doc/api/npm-link.html
index 6c7137e..3be2fd4 100644
--- a/deps/npm/html/doc/api/npm-link.html
+++ b/deps/npm/html/doc/api/npm-link.html
@@ -42,5 +42,5 @@ the package in the current working directory
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-load.html b/deps/npm/html/doc/api/npm-load.html
index 156eee7..b783445 100644
--- a/deps/npm/html/doc/api/npm-load.html
+++ b/deps/npm/html/doc/api/npm-load.html
@@ -37,5 +37,5 @@ config object.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-ls.html b/deps/npm/html/doc/api/npm-ls.html
index 2fa427c..b324aa3 100644
--- a/deps/npm/html/doc/api/npm-ls.html
+++ b/deps/npm/html/doc/api/npm-ls.html
@@ -63,5 +63,5 @@ dependency will only be output once.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-outdated.html b/deps/npm/html/doc/api/npm-outdated.html
index de3d5dd..7650730 100644
--- a/deps/npm/html/doc/api/npm-outdated.html
+++ b/deps/npm/html/doc/api/npm-outdated.html
@@ -28,5 +28,5 @@ currently outdated.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-owner.html b/deps/npm/html/doc/api/npm-owner.html
index 2967988..3f2216e 100644
--- a/deps/npm/html/doc/api/npm-owner.html
+++ b/deps/npm/html/doc/api/npm-owner.html
@@ -47,5 +47,5 @@ that is not implemented at this time.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-pack.html b/deps/npm/html/doc/api/npm-pack.html
index cff20ec..29dff9f 100644
--- a/deps/npm/html/doc/api/npm-pack.html
+++ b/deps/npm/html/doc/api/npm-pack.html
@@ -33,5 +33,5 @@ overwritten the second time.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-prefix.html b/deps/npm/html/doc/api/npm-prefix.html
index abafd8c..2d21125 100644
--- a/deps/npm/html/doc/api/npm-prefix.html
+++ b/deps/npm/html/doc/api/npm-prefix.html
@@ -29,5 +29,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-prune.html b/deps/npm/html/doc/api/npm-prune.html
index a3871a2..2783ed4 100644
--- a/deps/npm/html/doc/api/npm-prune.html
+++ b/deps/npm/html/doc/api/npm-prune.html
@@ -30,5 +30,5 @@ package's dependencies list.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-publish.html b/deps/npm/html/doc/api/npm-publish.html
index 6fa0da1..67e40da 100644
--- a/deps/npm/html/doc/api/npm-publish.html
+++ b/deps/npm/html/doc/api/npm-publish.html
@@ -46,5 +46,5 @@ the registry. Overwrites when the "force" environment variable is set
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-rebuild.html b/deps/npm/html/doc/api/npm-rebuild.html
index b5cb12c..9b0bb13 100644
--- a/deps/npm/html/doc/api/npm-rebuild.html
+++ b/deps/npm/html/doc/api/npm-rebuild.html
@@ -30,5 +30,5 @@ the new binary. If no 'packages' parameter is specify, every package wil
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-repo.html b/deps/npm/html/doc/api/npm-repo.html
index 9adc23c..96b1a50 100644
--- a/deps/npm/html/doc/api/npm-repo.html
+++ b/deps/npm/html/doc/api/npm-repo.html
@@ -33,5 +33,5 @@ friendly for programmatic use.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-restart.html b/deps/npm/html/doc/api/npm-restart.html
index ee15236..c08d18e 100644
--- a/deps/npm/html/doc/api/npm-restart.html
+++ b/deps/npm/html/doc/api/npm-restart.html
@@ -52,5 +52,5 @@ behavior will be accompanied by an increase in major version number
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-root.html b/deps/npm/html/doc/api/npm-root.html
index e3718d5..bb028b1 100644
--- a/deps/npm/html/doc/api/npm-root.html
+++ b/deps/npm/html/doc/api/npm-root.html
@@ -29,5 +29,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-run-script.html b/deps/npm/html/doc/api/npm-run-script.html
index a4458aa..aa9e220 100644
--- a/deps/npm/html/doc/api/npm-run-script.html
+++ b/deps/npm/html/doc/api/npm-run-script.html
@@ -41,5 +41,5 @@ assumed to be the command to run. All other elements are ignored.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-search.html b/deps/npm/html/doc/api/npm-search.html
index e493a96..9967c6d 100644
--- a/deps/npm/html/doc/api/npm-search.html
+++ b/deps/npm/html/doc/api/npm-search.html
@@ -53,5 +53,5 @@ like).
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-shrinkwrap.html b/deps/npm/html/doc/api/npm-shrinkwrap.html
index 304b1fe..45b5c34 100644
--- a/deps/npm/html/doc/api/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/api/npm-shrinkwrap.html
@@ -33,5 +33,5 @@ been saved.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-start.html b/deps/npm/html/doc/api/npm-start.html
index 37aa751..ae50d5d 100644
--- a/deps/npm/html/doc/api/npm-start.html
+++ b/deps/npm/html/doc/api/npm-start.html
@@ -28,5 +28,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-stop.html b/deps/npm/html/doc/api/npm-stop.html
index 329957b..5ad1a1b 100644
--- a/deps/npm/html/doc/api/npm-stop.html
+++ b/deps/npm/html/doc/api/npm-stop.html
@@ -28,5 +28,5 @@ in the packages
parameter.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-tag.html b/deps/npm/html/doc/api/npm-tag.html
index 261d627..e157bd1 100644
--- a/deps/npm/html/doc/api/npm-tag.html
+++ b/deps/npm/html/doc/api/npm-tag.html
@@ -36,5 +36,5 @@ used. For more information about how to set this config, check
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-test.html b/deps/npm/html/doc/api/npm-test.html
index e600f28..1f3bbe2 100644
--- a/deps/npm/html/doc/api/npm-test.html
+++ b/deps/npm/html/doc/api/npm-test.html
@@ -30,5 +30,5 @@ in the packages
parameter.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-uninstall.html b/deps/npm/html/doc/api/npm-uninstall.html
index 34beb1a..32d299a 100644
--- a/deps/npm/html/doc/api/npm-uninstall.html
+++ b/deps/npm/html/doc/api/npm-uninstall.html
@@ -30,5 +30,5 @@ uninstalled or when an error has been encountered.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-unpublish.html b/deps/npm/html/doc/api/npm-unpublish.html
index c66abbd..de7d77a 100644
--- a/deps/npm/html/doc/api/npm-unpublish.html
+++ b/deps/npm/html/doc/api/npm-unpublish.html
@@ -33,5 +33,5 @@ the root package entry is removed from the registry entirely.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-update.html b/deps/npm/html/doc/api/npm-update.html
index 63e8e5f..94826ee 100644
--- a/deps/npm/html/doc/api/npm-update.html
+++ b/deps/npm/html/doc/api/npm-update.html
@@ -33,5 +33,5 @@ parameter will be called when done or when an error occurs.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-version.html b/deps/npm/html/doc/api/npm-version.html
index bdd2bf1..a158e06 100644
--- a/deps/npm/html/doc/api/npm-version.html
+++ b/deps/npm/html/doc/api/npm-version.html
@@ -32,5 +32,5 @@ not have exactly one element. The only element should be a version number.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-view.html b/deps/npm/html/doc/api/npm-view.html
index 9e581d3..453ef17 100644
--- a/deps/npm/html/doc/api/npm-view.html
+++ b/deps/npm/html/doc/api/npm-view.html
@@ -81,5 +81,5 @@ the field name.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm-whoami.html b/deps/npm/html/doc/api/npm-whoami.html
index 2ef5996..5435332 100644
--- a/deps/npm/html/doc/api/npm-whoami.html
+++ b/deps/npm/html/doc/api/npm-whoami.html
@@ -29,5 +29,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/api/npm.html b/deps/npm/html/doc/api/npm.html
index e3a0942..2299227 100644
--- a/deps/npm/html/doc/api/npm.html
+++ b/deps/npm/html/doc/api/npm.html
@@ -23,7 +23,7 @@ npm.load([configObject, ]function (er, npm) {
npm.commands.install(["package"], cb)
})
VERSION
-2.7.6
+2.8.3
DESCRIPTION
This is the API documentation for npm.
To find documentation of the command line
@@ -109,5 +109,5 @@ method names. Use the npm.deref
method to find the real name.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html
index 2032934..43e6b26 100644
--- a/deps/npm/html/doc/cli/npm-access.html
+++ b/deps/npm/html/doc/cli/npm-access.html
@@ -75,5 +75,5 @@ with an HTTP 402 status code (logically enough), unless you use
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html
index 3604f4b..f75c35d 100644
--- a/deps/npm/html/doc/cli/npm-adduser.html
+++ b/deps/npm/html/doc/cli/npm-adduser.html
@@ -68,5 +68,5 @@ precedence over any global configuration.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-bin.html b/deps/npm/html/doc/cli/npm-bin.html
index 8340d1c..2f56202 100644
--- a/deps/npm/html/doc/cli/npm-bin.html
+++ b/deps/npm/html/doc/cli/npm-bin.html
@@ -35,5 +35,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-bugs.html b/deps/npm/html/doc/cli/npm-bugs.html
index d83464f..b2d72bc 100644
--- a/deps/npm/html/doc/cli/npm-bugs.html
+++ b/deps/npm/html/doc/cli/npm-bugs.html
@@ -54,5 +54,5 @@ a package.json
in the current folder and use the name
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-build.html b/deps/npm/html/doc/cli/npm-build.html
index 1dbdf78..aa75b01 100644
--- a/deps/npm/html/doc/cli/npm-build.html
+++ b/deps/npm/html/doc/cli/npm-build.html
@@ -38,5 +38,5 @@ A folder containing a package.json
file in its root.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-bundle.html b/deps/npm/html/doc/cli/npm-bundle.html
index 00e0218..6827557 100644
--- a/deps/npm/html/doc/cli/npm-bundle.html
+++ b/deps/npm/html/doc/cli/npm-bundle.html
@@ -31,5 +31,5 @@ install packages into the local space.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-cache.html b/deps/npm/html/doc/cli/npm-cache.html
index dbe50e5..92f09d7 100644
--- a/deps/npm/html/doc/cli/npm-cache.html
+++ b/deps/npm/html/doc/cli/npm-cache.html
@@ -81,5 +81,5 @@ they do not make an HTTP request to the registry.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-completion.html b/deps/npm/html/doc/cli/npm-completion.html
index 81b7fae..4e22ba9 100644
--- a/deps/npm/html/doc/cli/npm-completion.html
+++ b/deps/npm/html/doc/cli/npm-completion.html
@@ -42,5 +42,5 @@ completions based on the arguments.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-config.html b/deps/npm/html/doc/cli/npm-config.html
index 7a342d0..413c16a 100644
--- a/deps/npm/html/doc/cli/npm-config.html
+++ b/deps/npm/html/doc/cli/npm-config.html
@@ -66,5 +66,5 @@ global config.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-dedupe.html b/deps/npm/html/doc/cli/npm-dedupe.html
index ef67f07..4174f5e 100644
--- a/deps/npm/html/doc/cli/npm-dedupe.html
+++ b/deps/npm/html/doc/cli/npm-dedupe.html
@@ -63,5 +63,5 @@ versions.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-deprecate.html b/deps/npm/html/doc/cli/npm-deprecate.html
index 9161108..c96186d 100644
--- a/deps/npm/html/doc/cli/npm-deprecate.html
+++ b/deps/npm/html/doc/cli/npm-deprecate.html
@@ -38,5 +38,5 @@ something like this:
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-dist-tag.html b/deps/npm/html/doc/cli/npm-dist-tag.html
index a10066b..aebcb50 100644
--- a/deps/npm/html/doc/cli/npm-dist-tag.html
+++ b/deps/npm/html/doc/cli/npm-dist-tag.html
@@ -35,7 +35,8 @@ of using a specific version number:
When installing dependencies, a preferred tagged version may be specified:
npm install --tag <tag>
This also applies to npm dedupe
.
-Publishing a package always sets the "latest" tag to the published version.
+Publishing a package sets the "latest" tag to the published version unless the
+--tag
option is used. For example, npm publish --tag=beta
.
PURPOSE
Tags can be used to provide an alias instead of version numbers. For
example, npm
currently uses the tag "next" to identify the upcoming
@@ -76,5 +77,5 @@ begin with a number or the letter v
.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-docs.html b/deps/npm/html/doc/cli/npm-docs.html
index db41fec..b6feed8 100644
--- a/deps/npm/html/doc/cli/npm-docs.html
+++ b/deps/npm/html/doc/cli/npm-docs.html
@@ -56,5 +56,5 @@ the current folder and use the name
property.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-edit.html b/deps/npm/html/doc/cli/npm-edit.html
index 52a36f3..d0edf53 100644
--- a/deps/npm/html/doc/cli/npm-edit.html
+++ b/deps/npm/html/doc/cli/npm-edit.html
@@ -49,5 +49,5 @@ or "notepad"
on Windows.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-explore.html b/deps/npm/html/doc/cli/npm-explore.html
index c2c9acf..cb5d1dc 100644
--- a/deps/npm/html/doc/cli/npm-explore.html
+++ b/deps/npm/html/doc/cli/npm-explore.html
@@ -49,5 +49,5 @@ Windows
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-help-search.html b/deps/npm/html/doc/cli/npm-help-search.html
index c4134f6..ec48228 100644
--- a/deps/npm/html/doc/cli/npm-help-search.html
+++ b/deps/npm/html/doc/cli/npm-help-search.html
@@ -46,5 +46,5 @@ where the terms were found in the documentation.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-help.html b/deps/npm/html/doc/cli/npm-help.html
index d659294..c366952 100644
--- a/deps/npm/html/doc/cli/npm-help.html
+++ b/deps/npm/html/doc/cli/npm-help.html
@@ -52,5 +52,5 @@ matches are equivalent to specifying a topic name.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-init.html b/deps/npm/html/doc/cli/npm-init.html
index 7b7bbb1..65d1c4b 100644
--- a/deps/npm/html/doc/cli/npm-init.html
+++ b/deps/npm/html/doc/cli/npm-init.html
@@ -48,5 +48,5 @@ defaults and not prompt you for any options.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-install.html b/deps/npm/html/doc/cli/npm-install.html
index 4763e1e..371dd59 100644
--- a/deps/npm/html/doc/cli/npm-install.html
+++ b/deps/npm/html/doc/cli/npm-install.html
@@ -136,13 +136,37 @@ fetch the package by name if it is not valid.
attempting to clone it using git
.
Example:
npm install mygithubuser/myproject
-
To reference a package in a git repo that is not on GitHub, see git
- remote urls below.
+ To reference a package in a generic git repo (not on GitHub), see git remote
+ urls below.
+npm install github:<githubname>/<githubrepo>
:
+ The same as the above, but explicitly marked as a GitHub dependency.
+ Example:
+ npm install github:npm/npm
+
+npm install gist:[<githubname>/]<gistID>
:
+ Install the package at https://gist.github.com/gistID
by attempting to
+ clone it using git
. The GitHub username associated with the gist is
+ optional and will not be saved in package.json
if --save
is used.
+ Example:
+ npm install gist:101a11beef
+
+npm install bitbucket:<bitbucketname>/<bitbucketrepo>
:
+ Install the package at https://bitbucket.org/bitbucketname/bitbucketrepo
+ by attempting to clone it using git
.
+ Example:
+ npm install bitbucket:mybitbucketuser/myproject
+
+npm install gitlab:<gitlabname>/<gitlabrepo>
:
+ Install the package at https://gitlab.com/gitlabname/gitlabrepo
+ by attempting to clone it using git
.
+ Example:
+ npm install gitlab:mygitlabuser/myproject
+
npm install <git remote url>
:
Install a package by cloning a git remote url. The format of the git
url is:
- <protocol>://[<user>@]<hostname><separator><path>[#<commit-ish>]
+ <protocol>://[<user>[:<password>]@]<hostname><separator><path>[#<commit-ish>]
<protocol>
is one of git
, git+ssh
, git+http
, or
git+https
. If no <commit-ish>
is specified, then master
is
used.
@@ -240,5 +264,5 @@ affects a real use-case, it will be investigated.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-link.html b/deps/npm/html/doc/cli/npm-link.html
index 41af6a6..65f1bd9 100644
--- a/deps/npm/html/doc/cli/npm-link.html
+++ b/deps/npm/html/doc/cli/npm-link.html
@@ -72,5 +72,5 @@ include that scope, e.g.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-logout.html b/deps/npm/html/doc/cli/npm-logout.html
index d3fc5bc..2c45cfb 100644
--- a/deps/npm/html/doc/cli/npm-logout.html
+++ b/deps/npm/html/doc/cli/npm-logout.html
@@ -55,5 +55,5 @@ that registry at the same time.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-ls.html b/deps/npm/html/doc/cli/npm-ls.html
index a0690ed..42c3ae2 100644
--- a/deps/npm/html/doc/cli/npm-ls.html
+++ b/deps/npm/html/doc/cli/npm-ls.html
@@ -22,7 +22,7 @@ installed, as well as their dependencies, in a tree-structure.
limit the results to only the paths to the packages named. Note that
nested packages will also show the paths to the specified packages.
For example, running npm ls promzard
in npm's source tree will show:
-npm@2.7.6 /path/to/npm
+npm@2.8.3 /path/to/npm
ââ⬠init-package-json@0.0.4
âââ promzard@0.1.5
It will print out extraneous, missing, and invalid packages.
@@ -97,5 +97,5 @@ project.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html
index 76c4322..f6c2edd 100644
--- a/deps/npm/html/doc/cli/npm-outdated.html
+++ b/deps/npm/html/doc/cli/npm-outdated.html
@@ -67,5 +67,5 @@ project.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html
index 3a6d6df..984cd37 100644
--- a/deps/npm/html/doc/cli/npm-owner.html
+++ b/deps/npm/html/doc/cli/npm-owner.html
@@ -49,5 +49,5 @@ that is not implemented at this time.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-pack.html b/deps/npm/html/doc/cli/npm-pack.html
index 5d4e36a..e88bb4f 100644
--- a/deps/npm/html/doc/cli/npm-pack.html
+++ b/deps/npm/html/doc/cli/npm-pack.html
@@ -41,5 +41,5 @@ overwritten the second time.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html
index 609fe47..b497c36 100644
--- a/deps/npm/html/doc/cli/npm-prefix.html
+++ b/deps/npm/html/doc/cli/npm-prefix.html
@@ -38,5 +38,5 @@ to contain a package.json file unless -g
is also specified.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html
index dd0f707..24949bf 100644
--- a/deps/npm/html/doc/cli/npm-prune.html
+++ b/deps/npm/html/doc/cli/npm-prune.html
@@ -39,5 +39,5 @@ packages specified in your devDependencies
.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html
index e5f0de6..ffbda12 100644
--- a/deps/npm/html/doc/cli/npm-publish.html
+++ b/deps/npm/html/doc/cli/npm-publish.html
@@ -66,5 +66,5 @@ it is removed with |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html
index 1325650..1eb733d 100644
--- a/deps/npm/html/doc/cli/npm-rebuild.html
+++ b/deps/npm/html/doc/cli/npm-rebuild.html
@@ -38,5 +38,5 @@ the new binary.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-repo.html b/deps/npm/html/doc/cli/npm-repo.html
index a934353..e1bdcb9 100644
--- a/deps/npm/html/doc/cli/npm-repo.html
+++ b/deps/npm/html/doc/cli/npm-repo.html
@@ -42,5 +42,5 @@ a package.json
in the current folder and use the name
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-restart.html b/deps/npm/html/doc/cli/npm-restart.html
index 03199ea..18b064a 100644
--- a/deps/npm/html/doc/cli/npm-restart.html
+++ b/deps/npm/html/doc/cli/npm-restart.html
@@ -53,5 +53,5 @@ behavior will be accompanied by an increase in major version number
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-rm.html b/deps/npm/html/doc/cli/npm-rm.html
index d738f33..4bc35ba 100644
--- a/deps/npm/html/doc/cli/npm-rm.html
+++ b/deps/npm/html/doc/cli/npm-rm.html
@@ -39,5 +39,5 @@ on its behalf.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-root.html b/deps/npm/html/doc/cli/npm-root.html
index 1af5e71..5b94e96 100644
--- a/deps/npm/html/doc/cli/npm-root.html
+++ b/deps/npm/html/doc/cli/npm-root.html
@@ -35,5 +35,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html
index 07a4165..5d8f17a 100644
--- a/deps/npm/html/doc/cli/npm-run-script.html
+++ b/deps/npm/html/doc/cli/npm-run-script.html
@@ -56,5 +56,5 @@ you should write "scripts": {"test": "tap test/\*
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html
index a1e4781..e253efb 100644
--- a/deps/npm/html/doc/cli/npm-search.html
+++ b/deps/npm/html/doc/cli/npm-search.html
@@ -49,5 +49,5 @@ fall on multiple lines.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-shrinkwrap.html b/deps/npm/html/doc/cli/npm-shrinkwrap.html
index ff86a5f..7797311 100644
--- a/deps/npm/html/doc/cli/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html
@@ -164,5 +164,5 @@ contents rather than versions.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html
index f6b0203..cf97584 100644
--- a/deps/npm/html/doc/cli/npm-star.html
+++ b/deps/npm/html/doc/cli/npm-star.html
@@ -36,5 +36,5 @@ a vaguely positive way to show that you care.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-stars.html b/deps/npm/html/doc/cli/npm-stars.html
index 224fb19..7e1117b 100644
--- a/deps/npm/html/doc/cli/npm-stars.html
+++ b/deps/npm/html/doc/cli/npm-stars.html
@@ -37,5 +37,5 @@ you will most certainly enjoy this command.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-start.html b/deps/npm/html/doc/cli/npm-start.html
index 39be9a8..d9360e3 100644
--- a/deps/npm/html/doc/cli/npm-start.html
+++ b/deps/npm/html/doc/cli/npm-start.html
@@ -34,5 +34,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html
index 9cc6791..e9011be 100644
--- a/deps/npm/html/doc/cli/npm-stop.html
+++ b/deps/npm/html/doc/cli/npm-stop.html
@@ -34,5 +34,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html
index 72b28ac..51bb513 100644
--- a/deps/npm/html/doc/cli/npm-tag.html
+++ b/deps/npm/html/doc/cli/npm-tag.html
@@ -62,5 +62,5 @@ that do not begin with a number or the letter v
.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html
index 00a438f..1e4a64a 100644
--- a/deps/npm/html/doc/cli/npm-test.html
+++ b/deps/npm/html/doc/cli/npm-test.html
@@ -37,5 +37,5 @@ true.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-uninstall.html b/deps/npm/html/doc/cli/npm-uninstall.html
index d4c95b1..de7d6d6 100644
--- a/deps/npm/html/doc/cli/npm-uninstall.html
+++ b/deps/npm/html/doc/cli/npm-uninstall.html
@@ -57,5 +57,5 @@ npm uninstall dtrace-provider --save-optional
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html
index d4dfbb1..dd214ab 100644
--- a/deps/npm/html/doc/cli/npm-unpublish.html
+++ b/deps/npm/html/doc/cli/npm-unpublish.html
@@ -47,5 +47,5 @@ package again, a new version number must be used.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-update.html b/deps/npm/html/doc/cli/npm-update.html
index 763f33d..f3f7f9e 100644
--- a/deps/npm/html/doc/cli/npm-update.html
+++ b/deps/npm/html/doc/cli/npm-update.html
@@ -119,5 +119,5 @@ be downgraded.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html
index ee96cf7..b4c1a70 100644
--- a/deps/npm/html/doc/cli/npm-version.html
+++ b/deps/npm/html/doc/cli/npm-version.html
@@ -65,5 +65,5 @@ Enter passphrase:
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html
index 6865cf4..a9b76c3 100644
--- a/deps/npm/html/doc/cli/npm-view.html
+++ b/deps/npm/html/doc/cli/npm-view.html
@@ -82,5 +82,5 @@ the field name.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm-whoami.html b/deps/npm/html/doc/cli/npm-whoami.html
index 2539793..00112e8 100644
--- a/deps/npm/html/doc/cli/npm-whoami.html
+++ b/deps/npm/html/doc/cli/npm-whoami.html
@@ -33,5 +33,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/cli/npm.html b/deps/npm/html/doc/cli/npm.html
index 6bbd2bb..04bb47f 100644
--- a/deps/npm/html/doc/cli/npm.html
+++ b/deps/npm/html/doc/cli/npm.html
@@ -13,7 +13,7 @@
SYNOPSIS
npm <command> [args]
VERSION
-2.7.6
+2.8.3
DESCRIPTION
npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
@@ -110,7 +110,7 @@ easily by doing npm view npm contributors
.
the issues list or ask on the mailing list.
BUGS
When you find issues, please report them:
@@ -118,7 +118,7 @@ the issues list or ask on the mailing list.
web:
http://github.com/npm/npm/issues
email:
-npm-@googlegroups.com
+npm-@googlegroups.com
Be sure to include all of the output from the npm command that didn't work
as expected. The npm-debug.log
file is also helpful to provide.
@@ -128,7 +128,7 @@ will no doubt tell you to put the output in a gist or email.
Isaac Z. Schlueter ::
isaacs ::
@izs ::
-i@izs.me
+i@izs.me
SEE ALSO
- npm-help(1)
@@ -154,5 +154,5 @@ will no doubt tell you to put the output in a gist or email.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/files/npm-folders.html b/deps/npm/html/doc/files/npm-folders.html
index 5b435e4..c87b431 100644
--- a/deps/npm/html/doc/files/npm-folders.html
+++ b/deps/npm/html/doc/files/npm-folders.html
@@ -184,5 +184,5 @@ cannot be found elsewhere. See | |
| | |
-
+
diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html
index 5acdd2f..4ae4a0c 100644
--- a/deps/npm/html/doc/files/npm-global.html
+++ b/deps/npm/html/doc/files/npm-global.html
@@ -184,5 +184,5 @@ cannot be found elsewhere. See | |
| | |
-
+
diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html
index 7d5838a..67b5e2c 100644
--- a/deps/npm/html/doc/files/npm-json.html
+++ b/deps/npm/html/doc/files/npm-json.html
@@ -196,9 +196,15 @@ command will be able to find you.
The URL should be a publicly available (perhaps read-only) url that can be handed
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-For GitHub repositories you can use the same shortcut syntax you use for npm
-install
:
+For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
+shortcut syntax you use for npm install
:
"repository": "npm/npm"
+
+"repository": "gist:11081aaa281"
+
+"repository": "bitbucket:example/repo"
+
+"repository": "gitlab:another/repo"
scripts
The "scripts" property is a dictionary containing script commands that are run
at various times in the lifecycle of your package. The key is the lifecycle
@@ -496,5 +502,5 @@ ignored.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html
index d1df5af..2f494a1 100644
--- a/deps/npm/html/doc/files/npmrc.html
+++ b/deps/npm/html/doc/files/npmrc.html
@@ -77,5 +77,5 @@ manner.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html
index a7e071b..7cf774e 100644
--- a/deps/npm/html/doc/files/package.json.html
+++ b/deps/npm/html/doc/files/package.json.html
@@ -196,9 +196,15 @@ command will be able to find you.
The URL should be a publicly available (perhaps read-only) url that can be handed
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-For GitHub repositories you can use the same shortcut syntax you use for npm
-install
:
+For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
+shortcut syntax you use for npm install
:
"repository": "npm/npm"
+
+"repository": "gist:11081aaa281"
+
+"repository": "bitbucket:example/repo"
+
+"repository": "gitlab:another/repo"
scripts
The "scripts" property is a dictionary containing script commands that are run
at various times in the lifecycle of your package. The key is the lifecycle
@@ -496,5 +502,5 @@ ignored.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html
index 1e4ab12..f75545f 100644
--- a/deps/npm/html/doc/index.html
+++ b/deps/npm/html/doc/index.html
@@ -236,5 +236,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html
index ef32825..ddaa081 100644
--- a/deps/npm/html/doc/misc/npm-coding-style.html
+++ b/deps/npm/html/doc/misc/npm-coding-style.html
@@ -147,5 +147,5 @@ set to anything."
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html
index 057cb72..690e506 100644
--- a/deps/npm/html/doc/misc/npm-config.html
+++ b/deps/npm/html/doc/misc/npm-config.html
@@ -788,5 +788,5 @@ exit successfully.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-developers.html b/deps/npm/html/doc/misc/npm-developers.html
index c1d7cc4..9ab1a85 100644
--- a/deps/npm/html/doc/misc/npm-developers.html
+++ b/deps/npm/html/doc/misc/npm-developers.html
@@ -189,5 +189,5 @@ from a fresh checkout.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-disputes.html b/deps/npm/html/doc/misc/npm-disputes.html
index 089a8c7..1d64e13 100644
--- a/deps/npm/html/doc/misc/npm-disputes.html
+++ b/deps/npm/html/doc/misc/npm-disputes.html
@@ -13,7 +13,7 @@
SYNOPSIS
- Get the author email with
npm owner ls <pkgname>
-- Email the author, CC support@npmjs.com
+- Email the author, CC support@npmjs.com
- After a few weeks, if there's no resolution, we'll sort it out.
Don't squat on package names. Publish code or move out of the way.
@@ -51,12 +51,12 @@ Joe's appropriate course of action in each case is the same.
owner (Bob).
Joe emails Bob, explaining the situation as respectfully as
possible, and what he would like to do with the module name. He
-adds the npm support staff support@npmjs.com to the CC list of
+adds the npm support staff support@npmjs.com to the CC list of
the email. Mention in the email that Bob can run npm owner add
joe foo
to add Joe as an owner of the foo
package.
After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can't come to any sort of resolution, email support
-support@npmjs.com and we'll sort it out. ("Reasonable" is
+support@npmjs.com and we'll sort it out. ("Reasonable" is
usually at least 4 weeks, but extra time is allowed around common
holidays.)
@@ -112,5 +112,5 @@ things into it.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-faq.html b/deps/npm/html/doc/misc/npm-faq.html
index 2fb1f9d..2a9e3ad 100644
--- a/deps/npm/html/doc/misc/npm-faq.html
+++ b/deps/npm/html/doc/misc/npm-faq.html
@@ -236,7 +236,7 @@ that has a package.json in its root, or a git url.
To check if the registry is down, open up
https://registry.npmjs.org/ in a web browser. This will also tell
you if you are just unable to access the internet for some reason.
-If the registry IS down, let us know by emailing support@npmjs.com
+
If the registry IS down, let us know by emailing support@npmjs.com
or posting an issue at https://github.com/npm/npm/issues. If it's
down for the world (and not just on your local network) then we're
probably already being pinged about it.
@@ -307,5 +307,5 @@ good folks at npm, Inc.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-index.html b/deps/npm/html/doc/misc/npm-index.html
index bd0975e..6abdedb 100644
--- a/deps/npm/html/doc/misc/npm-index.html
+++ b/deps/npm/html/doc/misc/npm-index.html
@@ -236,5 +236,5 @@
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-registry.html b/deps/npm/html/doc/misc/npm-registry.html
index 8c10556..71f34b4 100644
--- a/deps/npm/html/doc/misc/npm-registry.html
+++ b/deps/npm/html/doc/misc/npm-registry.html
@@ -70,5 +70,5 @@ effectively implement the entire CouchDB API anyway.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-scope.html b/deps/npm/html/doc/misc/npm-scope.html
index 0871bc3..b9c84f8 100644
--- a/deps/npm/html/doc/misc/npm-scope.html
+++ b/deps/npm/html/doc/misc/npm-scope.html
@@ -78,5 +78,5 @@ that registry instead.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/npm-scripts.html b/deps/npm/html/doc/misc/npm-scripts.html
index 0997b4a..5ce0cbf 100644
--- a/deps/npm/html/doc/misc/npm-scripts.html
+++ b/deps/npm/html/doc/misc/npm-scripts.html
@@ -203,5 +203,5 @@ scripts is for compilation which must be done on the target architecture.
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html
index f1a7ac4..a8e35f1 100644
--- a/deps/npm/html/doc/misc/removing-npm.html
+++ b/deps/npm/html/doc/misc/removing-npm.html
@@ -57,5 +57,5 @@ modules. To track those down, you can do the following:
| |
| | |
-
+
diff --git a/deps/npm/html/doc/misc/semver.html b/deps/npm/html/doc/misc/semver.html
index 9411fdb..0bcd392 100644
--- a/deps/npm/html/doc/misc/semver.html
+++ b/deps/npm/html/doc/misc/semver.html
@@ -282,5 +282,5 @@ range, use the satisfies(version, range)
function.
| |
| | |
-
+
diff --git a/deps/npm/html/partial/doc/README.html b/deps/npm/html/partial/doc/README.html
index f2b5e29..0f6c86b 100644
--- a/deps/npm/html/partial/doc/README.html
+++ b/deps/npm/html/partial/doc/README.html
@@ -115,7 +115,7 @@ specific purpose, or lack of malice in any given npm package.
If you have a complaint about a package in the public npm registry,
and cannot resolve it with the package
owner, please email
-support@npmjs.com and explain the situation.
+support@npmjs.com and explain the situation.
Any data published to The npm Registry (including user account
information) may be removed or modified at the sole discretion of the
npm server administrators.
diff --git a/deps/npm/html/partial/doc/api/npm.html b/deps/npm/html/partial/doc/api/npm.html
index c3bb21e..50510e7 100644
--- a/deps/npm/html/partial/doc/api/npm.html
+++ b/deps/npm/html/partial/doc/api/npm.html
@@ -12,7 +12,7 @@ npm.load([configObject, ]function (er, npm) {
npm.commands.install(["package"], cb)
})
VERSION
-2.7.6
+2.8.3
DESCRIPTION
This is the API documentation for npm.
To find documentation of the command line
diff --git a/deps/npm/html/partial/doc/cli/npm-dist-tag.html b/deps/npm/html/partial/doc/cli/npm-dist-tag.html
index 8abcf22..e99e059 100644
--- a/deps/npm/html/partial/doc/cli/npm-dist-tag.html
+++ b/deps/npm/html/partial/doc/cli/npm-dist-tag.html
@@ -24,7 +24,8 @@ of using a specific version number:
When installing dependencies, a preferred tagged version may be specified:
npm install --tag <tag>
This also applies to npm dedupe
.
-Publishing a package always sets the "latest" tag to the published version.
+Publishing a package sets the "latest" tag to the published version unless the
+--tag
option is used. For example, npm publish --tag=beta
.
PURPOSE
Tags can be used to provide an alias instead of version numbers. For
example, npm
currently uses the tag "next" to identify the upcoming
diff --git a/deps/npm/html/partial/doc/cli/npm-install.html b/deps/npm/html/partial/doc/cli/npm-install.html
index dc60178..9dc8578 100644
--- a/deps/npm/html/partial/doc/cli/npm-install.html
+++ b/deps/npm/html/partial/doc/cli/npm-install.html
@@ -125,13 +125,37 @@ fetch the package by name if it is not valid.
attempting to clone it using git
.
Example:
npm install mygithubuser/myproject
-
To reference a package in a git repo that is not on GitHub, see git
- remote urls below.
+ To reference a package in a generic git repo (not on GitHub), see git remote
+ urls below.
+npm install github:<githubname>/<githubrepo>
:
+ The same as the above, but explicitly marked as a GitHub dependency.
+ Example:
+ npm install github:npm/npm
+
+npm install gist:[<githubname>/]<gistID>
:
+ Install the package at https://gist.github.com/gistID
by attempting to
+ clone it using git
. The GitHub username associated with the gist is
+ optional and will not be saved in package.json
if --save
is used.
+ Example:
+ npm install gist:101a11beef
+
+npm install bitbucket:<bitbucketname>/<bitbucketrepo>
:
+ Install the package at https://bitbucket.org/bitbucketname/bitbucketrepo
+ by attempting to clone it using git
.
+ Example:
+ npm install bitbucket:mybitbucketuser/myproject
+
+npm install gitlab:<gitlabname>/<gitlabrepo>
:
+ Install the package at https://gitlab.com/gitlabname/gitlabrepo
+ by attempting to clone it using git
.
+ Example:
+ npm install gitlab:mygitlabuser/myproject
+
npm install <git remote url>
:
Install a package by cloning a git remote url. The format of the git
url is:
- <protocol>://[<user>@]<hostname><separator><path>[#<commit-ish>]
+ <protocol>://[<user>[:<password>]@]<hostname><separator><path>[#<commit-ish>]
<protocol>
is one of git
, git+ssh
, git+http
, or
git+https
. If no <commit-ish>
is specified, then master
is
used.
diff --git a/deps/npm/html/partial/doc/cli/npm-ls.html b/deps/npm/html/partial/doc/cli/npm-ls.html
index 8bd3154..4971b97 100644
--- a/deps/npm/html/partial/doc/cli/npm-ls.html
+++ b/deps/npm/html/partial/doc/cli/npm-ls.html
@@ -11,7 +11,7 @@ installed, as well as their dependencies, in a tree-structure.
limit the results to only the paths to the packages named. Note that
nested packages will also show the paths to the specified packages.
For example, running npm ls promzard
in npm's source tree will show:
-npm@2.7.6 /path/to/npm
+npm@2.8.3 /path/to/npm
ââ⬠init-package-json@0.0.4
âââ promzard@0.1.5
It will print out extraneous, missing, and invalid packages.
diff --git a/deps/npm/html/partial/doc/cli/npm.html b/deps/npm/html/partial/doc/cli/npm.html
index 7fae82e..104e3cd 100644
--- a/deps/npm/html/partial/doc/cli/npm.html
+++ b/deps/npm/html/partial/doc/cli/npm.html
@@ -2,7 +2,7 @@
SYNOPSIS
npm <command> [args]
VERSION
-2.7.6
+2.8.3
DESCRIPTION
npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
@@ -99,7 +99,7 @@ easily by doing npm view npm contributors
.
the issues list or ask on the mailing list.
BUGS
When you find issues, please report them:
@@ -107,7 +107,7 @@ the issues list or ask on the mailing list.
web:
http://github.com/npm/npm/issues
email:
-npm-@googlegroups.com
+npm-@googlegroups.com
Be sure to include all of the output from the npm command that didn't work
as expected. The npm-debug.log
file is also helpful to provide.
@@ -117,7 +117,7 @@ will no doubt tell you to put the output in a gist or email.
Isaac Z. Schlueter ::
isaacs ::
@izs ::
-i@izs.me
+i@izs.me
SEE ALSO
- npm-help(1)
diff --git a/deps/npm/html/partial/doc/files/npm-json.html b/deps/npm/html/partial/doc/files/npm-json.html
index 4d5937d..ac4bfbc 100644
--- a/deps/npm/html/partial/doc/files/npm-json.html
+++ b/deps/npm/html/partial/doc/files/npm-json.html
@@ -185,9 +185,15 @@ command will be able to find you.
The URL should be a publicly available (perhaps read-only) url that can be handed
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-For GitHub repositories you can use the same shortcut syntax you use for npm
-install
:
+For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
+shortcut syntax you use for npm install
:
"repository": "npm/npm"
+
+"repository": "gist:11081aaa281"
+
+"repository": "bitbucket:example/repo"
+
+"repository": "gitlab:another/repo"
scripts
The "scripts" property is a dictionary containing script commands that are run
at various times in the lifecycle of your package. The key is the lifecycle
diff --git a/deps/npm/html/partial/doc/files/package.json.html b/deps/npm/html/partial/doc/files/package.json.html
index 4d5937d..ac4bfbc 100644
--- a/deps/npm/html/partial/doc/files/package.json.html
+++ b/deps/npm/html/partial/doc/files/package.json.html
@@ -185,9 +185,15 @@ command will be able to find you.
The URL should be a publicly available (perhaps read-only) url that can be handed
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-For GitHub repositories you can use the same shortcut syntax you use for npm
-install
:
+For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
+shortcut syntax you use for npm install
:
"repository": "npm/npm"
+
+"repository": "gist:11081aaa281"
+
+"repository": "bitbucket:example/repo"
+
+"repository": "gitlab:another/repo"
scripts
The "scripts" property is a dictionary containing script commands that are run
at various times in the lifecycle of your package. The key is the lifecycle
diff --git a/deps/npm/html/partial/doc/misc/npm-disputes.html b/deps/npm/html/partial/doc/misc/npm-disputes.html
index 2b417d6..cd8f2a9 100644
--- a/deps/npm/html/partial/doc/misc/npm-disputes.html
+++ b/deps/npm/html/partial/doc/misc/npm-disputes.html
@@ -2,7 +2,7 @@
SYNOPSIS
- Get the author email with
npm owner ls <pkgname>
-- Email the author, CC support@npmjs.com
+- Email the author, CC support@npmjs.com
- After a few weeks, if there's no resolution, we'll sort it out.
Don't squat on package names. Publish code or move out of the way.
@@ -40,12 +40,12 @@ Joe's appropriate course of action in each case is the same.
owner (Bob).
Joe emails Bob, explaining the situation as respectfully as
possible, and what he would like to do with the module name. He
-adds the npm support staff support@npmjs.com to the CC list of
+adds the npm support staff support@npmjs.com to the CC list of
the email. Mention in the email that Bob can run npm owner add
joe foo
to add Joe as an owner of the foo
package.
After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can't come to any sort of resolution, email support
-support@npmjs.com and we'll sort it out. ("Reasonable" is
+support@npmjs.com and we'll sort it out. ("Reasonable" is
usually at least 4 weeks, but extra time is allowed around common
holidays.)
diff --git a/deps/npm/html/partial/doc/misc/npm-faq.html b/deps/npm/html/partial/doc/misc/npm-faq.html
index 1a87c29..26beeea 100644
--- a/deps/npm/html/partial/doc/misc/npm-faq.html
+++ b/deps/npm/html/partial/doc/misc/npm-faq.html
@@ -225,7 +225,7 @@ that has a package.json in its root, or a git url.
To check if the registry is down, open up
https://registry.npmjs.org/ in a web browser. This will also tell
you if you are just unable to access the internet for some reason.
-If the registry IS down, let us know by emailing support@npmjs.com
+
If the registry IS down, let us know by emailing support@npmjs.com
or posting an issue at https://github.com/npm/npm/issues. If it's
down for the world (and not just on your local network) then we're
probably already being pinged about it.
diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js
index b3c2375..cae09b1 100644
--- a/deps/npm/lib/cache.js
+++ b/deps/npm/lib/cache.js
@@ -76,7 +76,6 @@ var npm = require("./npm.js")
, addLocal = require("./cache/add-local.js")
, addRemoteTarball = require("./cache/add-remote-tarball.js")
, addRemoteGit = require("./cache/add-remote-git.js")
- , maybeGithub = require("./cache/maybe-github.js")
, inflight = require("inflight")
, realizePackageSpecifier = require("realize-package-specifier")
, npa = require("npm-package-arg")
@@ -296,14 +295,8 @@ function add (args, where, cb) {
})
break
case "git":
- addRemoteGit(p.spec, false, cb)
- break
case "hosted":
- if (p.hosted.type === "github") {
- maybeGithub(p.rawSpec, cb)
- } else {
- addRemoteGit(p.spec, false, cb)
- }
+ addRemoteGit(p.rawSpec, cb)
break
default:
if (p.name) return addNamed(p.name, p.spec, null, cb)
diff --git a/deps/npm/lib/cache/add-remote-git.js b/deps/npm/lib/cache/add-remote-git.js
index 84d5207..3ec9c46 100644
--- a/deps/npm/lib/cache/add-remote-git.js
+++ b/deps/npm/lib/cache/add-remote-git.js
@@ -1,73 +1,137 @@
-var mkdir = require('mkdirp')
var assert = require('assert')
-var git = require('../utils/git.js')
+var crypto = require('crypto')
var fs = require('graceful-fs')
-var log = require('npmlog')
var path = require('path')
var url = require('url')
+
var chownr = require('chownr')
-var crypto = require('crypto')
-var npm = require('../npm.js')
-var rm = require('../utils/gently-rm.js')
+var dezalgo = require('dezalgo')
+var hostedFromURL = require('hosted-git-info').fromUrl
var inflight = require('inflight')
-var getCacheStat = require('./get-stat.js')
-var addLocal = require('./add-local.js')
-var realizePackageSpecifier = require('realize-package-specifier')
+var log = require('npmlog')
+var mkdir = require('mkdirp')
var normalizeGitUrl = require('normalize-git-url')
-var randomBytes = require('crypto').pseudoRandomBytes // only need uniqueness
+var npa = require('npm-package-arg')
+var realizePackageSpecifier = require('realize-package-specifier')
+
+var addLocal = require('./add-local.js')
+var getCacheStat = require('./get-stat.js')
+var git = require('../utils/git.js')
+var npm = require('../npm.js')
+var rm = require('../utils/gently-rm.js')
var remotes = path.resolve(npm.config.get('cache'), '_git-remotes')
var templates = path.join(remotes, '_templates')
var VALID_VARIABLES = [
- 'GIT_SSH',
- 'GIT_SSL_NO_VERIFY',
+ 'GIT_ASKPASS',
'GIT_PROXY_COMMAND',
- 'GIT_SSL_CAINFO'
+ 'GIT_SSH',
+ 'GIT_SSL_CAINFO',
+ 'GIT_SSL_NO_VERIFY'
]
-module.exports = function addRemoteGit (uri, silent, cb) {
+module.exports = addRemoteGit
+function addRemoteGit (uri, _cb) {
assert(typeof uri === 'string', 'must have git URL')
- assert(typeof cb === 'function', 'must have callback')
+ assert(typeof _cb === 'function', 'must have callback')
+ var cb = dezalgo(_cb)
+
+ log.verbose('addRemoteGit', 'caching', uri)
+
+ // the URL comes in exactly as it was passed on the command line, or as
+ // normalized by normalize-package-data / read-package-json / read-installed,
+ // so figure out what to do with it using hosted-git-info
+ var parsed = hostedFromURL(uri)
+ if (parsed) {
+ // normalize GitHub syntax to org/repo (for now)
+ var from
+ if (parsed.type === 'github' && parsed.default === 'shortcut') {
+ from = parsed.path()
+ } else {
+ from = parsed.toString()
+ }
- // reconstruct the URL as it was passed in â realizePackageSpecifier
- // strips off `git+` and `maybeGithub` doesn't include it.
- var originalURL
- if (!/^git[+:]/.test(uri)) {
- originalURL = 'git+' + uri
+ log.verbose('addRemoteGit', from, 'is a repository hosted by', parsed.type)
+
+ // prefer explicit URLs to pushing everything through shortcuts
+ if (parsed.default !== 'shortcut') {
+ return tryClone(from, parsed.toString(), false, cb)
+ }
+
+ // try git:, then git+ssh:, then git+https: before failing
+ tryGitProto(from, parsed, cb)
} else {
- originalURL = uri
+ // verify that this is a Git URL before continuing
+ parsed = npa(uri)
+ if (parsed.type !== 'git') {
+ return cb(new Error(uri + 'is not a Git or GitHub URL'))
+ }
+
+ tryClone(parsed.rawSpec, uri, false, cb)
}
+}
+
+function tryGitProto (from, hostedInfo, cb) {
+ var gitURL = hostedInfo.git()
+ if (!gitURL) return trySSH(from, hostedInfo, cb)
+
+ log.silly('tryGitProto', 'attempting to clone', gitURL)
+ tryClone(from, gitURL, true, function (er) {
+ if (er) return tryHTTPS(from, hostedInfo, cb)
+
+ cb.apply(this, arguments)
+ })
+}
+
+function tryHTTPS (from, hostedInfo, cb) {
+ var httpsURL = hostedInfo.https()
+ if (!httpsURL) {
+ return cb(new Error(from + ' can not be cloned via Git, SSH, or HTTPS'))
+ }
+
+ log.silly('tryHTTPS', 'attempting to clone', httpsURL)
+ tryClone(from, httpsURL, true, function (er) {
+ if (er) return trySSH(from, hostedInfo, cb)
- // break apart the origin URL and the branch / tag / commitish
- var normalized = normalizeGitUrl(uri)
- var gitURL = normalized.url
+ cb.apply(this, arguments)
+ })
+}
+
+function trySSH (from, hostedInfo, cb) {
+ var sshURL = hostedInfo.ssh()
+ if (!sshURL) return tryHTTPS(from, hostedInfo, cb)
+
+ log.silly('trySSH', 'attempting to clone', sshURL)
+ tryClone(from, sshURL, false, cb)
+}
+
+function tryClone (from, combinedURL, silent, cb) {
+ log.silly('tryClone', 'cloning', from, 'via', combinedURL)
+
+ var normalized = normalizeGitUrl(combinedURL)
+ var cloneURL = normalized.url
var treeish = normalized.branch
// ensure that similarly-named remotes don't collide
- var repoID = gitURL.replace(/[^a-zA-Z0-9]+/g, '-') + '-' +
- crypto.createHash('sha1').update(gitURL).digest('hex').slice(0, 8)
+ var repoID = cloneURL.replace(/[^a-zA-Z0-9]+/g, '-') + '-' +
+ crypto.createHash('sha1').update(cloneURL).digest('hex').slice(0, 8)
var cachedRemote = path.join(remotes, repoID)
- // set later, as the callback flow proceeds
- var resolvedURL
- var resolvedTreeish
- var tmpdir
-
cb = inflight(repoID, cb)
if (!cb) {
- return log.verbose('addRemoteGit', repoID, 'already in flight; waiting')
+ return log.verbose('tryClone', repoID, 'already in flight; waiting')
}
- log.verbose('addRemoteGit', repoID, 'not in flight; caching')
+ log.verbose('tryClone', repoID, 'not in flight; caching')
// initialize the remotes cache with the correct perms
getGitDir(function (er) {
if (er) return cb(er)
fs.stat(cachedRemote, function (er, s) {
- if (er) return mirrorRemote(finish)
- if (!s.isDirectory()) return resetRemote(finish)
+ if (er) return mirrorRemote(from, cloneURL, treeish, cachedRemote, silent, finish)
+ if (!s.isDirectory()) return resetRemote(from, cloneURL, treeish, cachedRemote, finish)
- validateExistingRemote(finish)
+ validateExistingRemote(from, cloneURL, treeish, cachedRemote, finish)
})
// always set permissions on the cached remote
@@ -78,235 +142,240 @@ module.exports = function addRemoteGit (uri, silent, cb) {
})
}
})
+}
- // don't try too hard to hold on to a remote
- function resetRemote (cb) {
- log.info('addRemoteGit', 'resetting', cachedRemote)
- rm(cachedRemote, function (er) {
- if (er) return cb(er)
- mirrorRemote(cb)
- })
- }
-
- // reuse a cached remote when possible, but nuke it if it's in an
- // inconsistent state
- function validateExistingRemote (cb) {
- git.whichAndExec(
- ['config', '--get', 'remote.origin.url'],
- { cwd: cachedRemote, env: gitEnv() },
- function (er, stdout, stderr) {
- var originURL
- if (stdout) {
- originURL = stdout.trim()
- log.verbose('addRemoteGit', 'remote.origin.url:', originURL)
- }
-
- if (stderr) stderr = stderr.trim()
- if (stderr || er) {
- log.warn('addRemoteGit', 'resetting remote', cachedRemote, 'because of error:', stderr || er)
- return resetRemote(cb)
- } else if (gitURL !== originURL) {
- log.warn(
- 'addRemoteGit',
- 'pre-existing cached repo', cachedRemote, 'points to', originURL, 'and not', gitURL
- )
- return resetRemote(cb)
- }
+// don't try too hard to hold on to a remote
+function resetRemote (from, cloneURL, treeish, cachedRemote, cb) {
+ log.info('resetRemote', 'resetting', cachedRemote, 'for', from)
+ rm(cachedRemote, function (er) {
+ if (er) return cb(er)
+ mirrorRemote(from, cloneURL, treeish, cachedRemote, false, cb)
+ })
+}
- log.verbose('addRemoteGit', 'updating existing cached remote', cachedRemote)
- updateRemote(cb)
+// reuse a cached remote when possible, but nuke it if it's in an
+// inconsistent state
+function validateExistingRemote (from, cloneURL, treeish, cachedRemote, cb) {
+ git.whichAndExec(
+ ['config', '--get', 'remote.origin.url'],
+ { cwd: cachedRemote, env: gitEnv() },
+ function (er, stdout, stderr) {
+ var originURL
+ if (stdout) {
+ originURL = stdout.trim()
+ log.silly('validateExistingRemote', from, 'remote.origin.url:', originURL)
}
- )
- }
-
- // make a complete bare mirror of the remote repo
- // NOTE: npm uses a blank template directory to prevent weird inconsistencies
- // https://github.com/npm/npm/issues/5867
- function mirrorRemote (cb) {
- mkdir(cachedRemote, function (er) {
- if (er) return cb(er)
-
- var args = [
- 'clone',
- '--template=' + templates,
- '--mirror',
- gitURL, cachedRemote
- ]
- git.whichAndExec(
- ['clone', '--template=' + templates, '--mirror', gitURL, cachedRemote],
- { cwd: cachedRemote, env: gitEnv() },
- function (er, stdout, stderr) {
- if (er) {
- var combined = (stdout + '\n' + stderr).trim()
- var command = 'git ' + args.join(' ') + ':'
- if (silent) {
- log.verbose(command, combined)
- } else {
- log.error(command, combined)
- }
- return cb(er)
- }
- log.verbose('addRemoteGit', 'git clone ' + gitURL, stdout.trim())
- setPermissions(cb)
- }
- )
- })
- }
- function setPermissions (cb) {
- if (process.platform === 'win32') {
- log.verbose('addRemoteGit', 'skipping chownr on Windows')
- resolveHead(cb)
- } else {
- getGitDir(function (er, cs) {
- if (er) {
- log.error('addRemoteGit', 'could not get cache stat')
- return cb(er)
- }
-
- chownr(cachedRemote, cs.uid, cs.gid, function (er) {
- if (er) {
- log.error(
- 'addRemoteGit',
- 'Failed to change folder ownership under npm cache for',
- cachedRemote
- )
- return cb(er)
- }
+ if (stderr) stderr = stderr.trim()
+ if (stderr || er) {
+ log.warn('addRemoteGit', from, 'resetting remote', cachedRemote, 'because of error:', stderr || er)
+ return resetRemote(from, cloneURL, treeish, cachedRemote, cb)
+ } else if (cloneURL !== originURL) {
+ log.warn(
+ 'addRemoteGit',
+ from,
+ 'pre-existing cached repo', cachedRemote, 'points to', originURL, 'and not', cloneURL
+ )
+ return resetRemote(from, cloneURL, treeish, cachedRemote, cb)
+ }
- log.verbose('addRemoteGit', 'set permissions on', cachedRemote)
- resolveHead(cb)
- })
- })
+ log.verbose('validateExistingRemote', from, 'is updating existing cached remote', cachedRemote)
+ updateRemote(from, cloneURL, treeish, cachedRemote, cb)
}
- }
+ )
+}
- // always fetch the origin, even right after mirroring, because this way
- // permissions will get set correctly
- function updateRemote (cb) {
+// make a complete bare mirror of the remote repo
+// NOTE: npm uses a blank template directory to prevent weird inconsistencies
+// https://github.com/npm/npm/issues/5867
+function mirrorRemote (from, cloneURL, treeish, cachedRemote, silent, cb) {
+ mkdir(cachedRemote, function (er) {
+ if (er) return cb(er)
+
+ var args = [
+ 'clone',
+ '--template=' + templates,
+ '--mirror',
+ cloneURL, cachedRemote
+ ]
git.whichAndExec(
- ['fetch', '-a', 'origin'],
+ ['clone', '--template=' + templates, '--mirror', cloneURL, cachedRemote],
{ cwd: cachedRemote, env: gitEnv() },
function (er, stdout, stderr) {
if (er) {
var combined = (stdout + '\n' + stderr).trim()
- log.error('git fetch -a origin (' + gitURL + ')', combined)
+ var command = 'git ' + args.join(' ') + ':'
+ if (silent) {
+ log.verbose(command, combined)
+ } else {
+ log.error(command, combined)
+ }
return cb(er)
}
- log.verbose('addRemoteGit', 'git fetch -a origin (' + gitURL + ')', stdout.trim())
-
- setPermissions(cb)
+ log.verbose('mirrorRemote', from, 'git clone ' + cloneURL, stdout.trim())
+ setPermissions(from, cloneURL, treeish, cachedRemote, cb)
}
)
- }
+ })
+}
- // branches and tags are both symbolic labels that can be attached to different
- // commits, so resolve the commitish to the current actual treeish the label
- // corresponds to
- //
- // important for shrinkwrap
- function resolveHead (cb) {
- log.verbose('addRemoteGit', 'original treeish:', treeish)
- var args = ['rev-list', '-n1', treeish]
- git.whichAndExec(
- args,
- { cwd: cachedRemote, env: gitEnv() },
- function (er, stdout, stderr) {
+function setPermissions (from, cloneURL, treeish, cachedRemote, cb) {
+ if (process.platform === 'win32') {
+ log.verbose('setPermissions', from, 'skipping chownr on Windows')
+ resolveHead(from, cloneURL, treeish, cachedRemote, cb)
+ } else {
+ getGitDir(function (er, cs) {
+ if (er) {
+ log.error('setPermissions', from, 'could not get cache stat')
+ return cb(er)
+ }
+
+ chownr(cachedRemote, cs.uid, cs.gid, function (er) {
if (er) {
- log.error('git ' + args.join(' ') + ':', stderr)
+ log.error(
+ 'setPermissions',
+ 'Failed to change git repository ownership under npm cache for',
+ cachedRemote
+ )
return cb(er)
}
- resolvedTreeish = stdout.trim()
- log.silly('addRemoteGit', 'resolved treeish:', resolvedTreeish)
+ log.verbose('setPermissions', from, 'set permissions on', cachedRemote)
+ resolveHead(from, cloneURL, treeish, cachedRemote, cb)
+ })
+ })
+ }
+}
+
+// always fetch the origin, even right after mirroring, because this way
+// permissions will get set correctly
+function updateRemote (from, cloneURL, treeish, cachedRemote, cb) {
+ git.whichAndExec(
+ ['fetch', '-a', 'origin'],
+ { cwd: cachedRemote, env: gitEnv() },
+ function (er, stdout, stderr) {
+ if (er) {
+ var combined = (stdout + '\n' + stderr).trim()
+ log.error('git fetch -a origin (' + cloneURL + ')', combined)
+ return cb(er)
+ }
+ log.verbose('updateRemote', 'git fetch -a origin (' + cloneURL + ')', stdout.trim())
- resolvedURL = getResolved(originalURL, resolvedTreeish)
- log.verbose('addRemoteGit', 'resolved Git URL:', resolvedURL)
+ setPermissions(from, cloneURL, treeish, cachedRemote, cb)
+ }
+ )
+}
- // generate a unique filename
- tmpdir = path.join(
- npm.tmp,
- 'git-cache-' + randomBytes(6).toString('hex'),
- resolvedTreeish
- )
- log.silly('addRemoteGit', 'Git working directory:', tmpdir)
+// branches and tags are both symbolic labels that can be attached to different
+// commits, so resolve the commitish to the current actual treeish the label
+// corresponds to
+//
+// important for shrinkwrap
+function resolveHead (from, cloneURL, treeish, cachedRemote, cb) {
+ log.verbose('resolveHead', from, 'original treeish:', treeish)
+ var args = ['rev-list', '-n1', treeish]
+ git.whichAndExec(
+ args,
+ { cwd: cachedRemote, env: gitEnv() },
+ function (er, stdout, stderr) {
+ if (er) {
+ log.error('git ' + args.join(' ') + ':', stderr)
+ return cb(er)
+ }
- mkdir(tmpdir, function (er) {
- if (er) return cb(er)
+ var resolvedTreeish = stdout.trim()
+ log.silly('resolveHead', from, 'resolved treeish:', resolvedTreeish)
- cloneResolved(cb)
- })
+ var resolvedURL = getResolved(cloneURL, resolvedTreeish)
+ if (!resolvedURL) {
+ return cb(new Error(
+ 'unable to clone ' + from + ' because git clone string ' +
+ cloneURL + ' is in a form npm can\'t handle'
+ ))
}
- )
- }
+ log.verbose('resolveHead', from, 'resolved Git URL:', resolvedURL)
- // make a clone from the mirrored cache so we have a temporary directory in
- // which we can check out the resolved treeish
- function cloneResolved (cb) {
- var args = ['clone', cachedRemote, tmpdir]
- git.whichAndExec(
- args,
- { cwd: cachedRemote, env: gitEnv() },
- function (er, stdout, stderr) {
- stdout = (stdout + '\n' + stderr).trim()
- if (er) {
- log.error('git ' + args.join(' ') + ':', stderr)
- return cb(er)
- }
- log.verbose('addRemoteGit', 'clone', stdout)
+ // generate a unique filename
+ var tmpdir = path.join(
+ npm.tmp,
+ 'git-cache-' + crypto.pseudoRandomBytes(6).toString('hex'),
+ resolvedTreeish
+ )
+ log.silly('resolveHead', 'Git working directory:', tmpdir)
- checkoutTreeish(cb)
+ mkdir(tmpdir, function (er) {
+ if (er) return cb(er)
+
+ cloneResolved(from, resolvedURL, resolvedTreeish, cachedRemote, tmpdir, cb)
+ })
+ }
+ )
+}
+
+// make a clone from the mirrored cache so we have a temporary directory in
+// which we can check out the resolved treeish
+function cloneResolved (from, resolvedURL, resolvedTreeish, cachedRemote, tmpdir, cb) {
+ var args = ['clone', cachedRemote, tmpdir]
+ git.whichAndExec(
+ args,
+ { cwd: cachedRemote, env: gitEnv() },
+ function (er, stdout, stderr) {
+ stdout = (stdout + '\n' + stderr).trim()
+ if (er) {
+ log.error('git ' + args.join(' ') + ':', stderr)
+ return cb(er)
}
- )
- }
+ log.verbose('cloneResolved', from, 'clone', stdout)
- // there is no safe way to do a one-step clone to a treeish that isn't
- // guaranteed to be a branch, so explicitly check out the treeish once it's
- // cloned
- function checkoutTreeish (cb) {
- var args = ['checkout', resolvedTreeish]
- git.whichAndExec(
- args,
- { cwd: tmpdir, env: gitEnv() },
- function (er, stdout, stderr) {
- stdout = (stdout + '\n' + stderr).trim()
+ checkoutTreeish(from, resolvedURL, resolvedTreeish, tmpdir, cb)
+ }
+ )
+}
+
+// there is no safe way to do a one-step clone to a treeish that isn't
+// guaranteed to be a branch, so explicitly check out the treeish once it's
+// cloned
+function checkoutTreeish (from, resolvedURL, resolvedTreeish, tmpdir, cb) {
+ var args = ['checkout', resolvedTreeish]
+ git.whichAndExec(
+ args,
+ { cwd: tmpdir, env: gitEnv() },
+ function (er, stdout, stderr) {
+ stdout = (stdout + '\n' + stderr).trim()
+ if (er) {
+ log.error('git ' + args.join(' ') + ':', stderr)
+ return cb(er)
+ }
+ log.verbose('checkoutTreeish', from, 'checkout', stdout)
+
+ // convince addLocal that the checkout is a local dependency
+ realizePackageSpecifier(tmpdir, function (er, spec) {
if (er) {
- log.error('git ' + args.join(' ') + ':', stderr)
+ log.error('addRemoteGit', 'Failed to map', tmpdir, 'to a package specifier')
return cb(er)
}
- log.verbose('addRemoteGit', 'checkout', stdout)
-
- // convince addLocal that the checkout is a local dependency
- realizePackageSpecifier(tmpdir, function (er, spec) {
- if (er) {
- log.error('addRemoteGit', 'Failed to map', tmpdir, 'to a package specifier')
- return cb(er)
- }
- // ensure pack logic is applied
- // https://github.com/npm/npm/issues/6400
- addLocal(spec, null, function (er, data) {
- if (data) {
- log.verbose('addRemoteGit', 'data._resolved:', resolvedURL)
- data._resolved = resolvedURL
-
- // the spec passed to addLocal is not what the user originally requested,
- // so remap
- // https://github.com/npm/npm/issues/7121
- if (!data._fromGitHub) {
- log.silly('addRemoteGit', 'data._from:', originalURL)
- data._from = originalURL
- } else {
- log.silly('addRemoteGit', 'data._from:', data._from, '(GitHub)')
- }
+ // ensure pack logic is applied
+ // https://github.com/npm/npm/issues/6400
+ addLocal(spec, null, function (er, data) {
+ if (data) {
+ if (npm.config.get('save-exact')) {
+ log.verbose('addRemoteGit', 'data._from:', resolvedURL, '(save-exact)')
+ data._from = resolvedURL
+ } else {
+ log.verbose('addRemoteGit', 'data._from:', from)
+ data._from = from
}
- cb(er, data)
- })
+ log.verbose('addRemoteGit', 'data._resolved:', resolvedURL)
+ data._resolved = resolvedURL
+ }
+
+ cb(er, data)
})
- }
- )
- }
+ })
+ }
+ )
}
function getGitDir (cb) {
@@ -336,7 +405,12 @@ function gitEnv () {
// git responds to env vars in some weird ways in post-receive hooks
// so don't carry those along.
if (gitEnv_) return gitEnv_
- gitEnv_ = {}
+
+ // allow users to override npm's insistence on not prompting for
+ // passphrases, but default to just failing when credentials
+ // aren't available
+ gitEnv_ = { GIT_ASKPASS: 'echo' }
+
for (var k in process.env) {
if (!~VALID_VARIABLES.indexOf(k) && k.match(/^GIT/)) continue
gitEnv_[k] = process.env[k]
@@ -344,19 +418,31 @@ function gitEnv () {
return gitEnv_
}
+addRemoteGit.getResolved = getResolved
function getResolved (uri, treeish) {
+ // normalize hosted-git-info clone URLs back into regular URLs
+ // this will only work on URLs that hosted-git-info recognizes
+ // https://github.com/npm/npm/issues/7961
+ var rehydrated = hostedFromURL(uri)
+ if (rehydrated) uri = rehydrated.toString()
+
var parsed = url.parse(uri)
+
+ // non-hosted SSH strings that are not URLs (git@whatever.com:foo.git) are
+ // no bueno
+ // https://github.com/npm/npm/issues/7961
+ if (!parsed.protocol) return
+
parsed.hash = treeish
if (!/^git[+:]/.test(parsed.protocol)) {
parsed.protocol = 'git+' + parsed.protocol
}
- var resolved = url.format(parsed)
// node incorrectly sticks a / at the start of the path We know that the host
// won't change, so split and detect this
// https://github.com/npm/npm/issues/3224
var spo = uri.split(parsed.host)
- var spr = resolved.split(parsed.host)
+ var spr = url.format(parsed).split(parsed.host)
if (spo[1] && spo[1].charAt(0) === ':' && spr[1] && spr[1].charAt(0) === '/') {
spr[1] = spr[1].slice(1)
}
diff --git a/deps/npm/lib/cache/maybe-github.js b/deps/npm/lib/cache/maybe-github.js
deleted file mode 100644
index 60c14a0..0000000
--- a/deps/npm/lib/cache/maybe-github.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var assert = require('assert')
-
-var hosted = require('hosted-git-info')
-var log = require('npmlog')
-
-var addRemoteGit = require('./add-remote-git.js')
-
-module.exports = function maybeGithub (p, cb) {
- assert(typeof p === 'string', 'must pass package name')
- assert(typeof cb === 'function', 'must pass callback')
-
- var parsed = hosted.fromUrl(p)
- log.info('maybeGithub', 'Attempting %s from %s', p, parsed.git())
-
- return addRemoteGit(parsed.git(), true, function (er, data) {
- if (er) {
- log.info('maybeGithub', "Couldn't clone %s", parsed.git())
- log.info('maybeGithub', 'Now attempting %s from %s', p, parsed.sshurl())
-
- return addRemoteGit(parsed.sshurl(), false, function (er, data) {
- if (er) return cb(er)
-
- success(parsed.sshurl(), data)
- })
- }
-
- success(parsed.git(), data)
- })
-
- function success (u, data) {
- data._from = u
- data._fromGithub = true
- return cb(null, data)
- }
-}
diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js
index 7d38406..799f0de 100644
--- a/deps/npm/lib/install.js
+++ b/deps/npm/lib/install.js
@@ -423,9 +423,9 @@ function save (where, installed, tree, pretty, hasArguments, cb) {
var saveTarget = path.resolve(where, "package.json")
asyncMap(Object.keys(tree), function (k, cb) {
- // if "what" was a url, then save that instead.
+ // if "from" is remote, git, or hosted, then save that instead.
var t = tree[k]
- , u = url.parse(t.from)
+ , f = npa(t.from)
, a = npa(t.what)
, w = [a.name, a.spec]
@@ -433,7 +433,7 @@ function save (where, installed, tree, pretty, hasArguments, cb) {
fs.stat(t.from, function (er){
if (!er) {
w[1] = "file:" + t.from
- } else if (u && u.protocol) {
+ } else if (['hosted', 'git', 'remote'].indexOf(f.type) !== -1) {
w[1] = t.from
}
cb(null, [w])
@@ -1128,7 +1128,16 @@ function write (target, targetFolder, context, cb_) {
"in npm 3+. Your application will need to depend on it explicitly."
], pd+","+data.name)
})
- var pdTargetFolder = path.resolve(targetFolder, "..", "..")
+
+ // Package scopes cause an addditional tree level which needs to be
+ // considered when resolving a peerDependency's target folder.
+ var pdTargetFolder
+ if (npa(target.name).scope) {
+ pdTargetFolder = path.resolve(targetFolder, '../../..')
+ } else {
+ pdTargetFolder = path.resolve(targetFolder, '../..')
+ }
+
var pdContext = context
if (peerDeps.length > 0) {
actions.push(
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index 459a3c3..a2756ed 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -11,9 +11,6 @@ if (typeof WScript !== "undefined") {
}
-// monkey-patch support for 0.6 child processes
-require('child-process-close')
-
var EventEmitter = require("events").EventEmitter
, npm = module.exports = new EventEmitter()
, npmconf = require("./config/core.js")
diff --git a/deps/npm/lib/utils/spawn.js b/deps/npm/lib/utils/spawn.js
index 9536718..7468452 100644
--- a/deps/npm/lib/utils/spawn.js
+++ b/deps/npm/lib/utils/spawn.js
@@ -11,7 +11,18 @@ function spawn (cmd, args, options) {
er.file = cmd
cooked.emit("error", er)
}).on("close", function (code, signal) {
- cooked.emit("close", code, signal)
+ // Create ENOENT error because Node.js v0.8 will not emit
+ // an `error` event if the command could not be found.
+ if (code === 127) {
+ var er = new Error('spawn ENOENT')
+ er.code = 'ENOENT'
+ er.errno = 'ENOENT'
+ er.syscall = 'spawn'
+ er.file = cmd
+ cooked.emit('error', er)
+ } else {
+ cooked.emit("close", code, signal)
+ }
})
cooked.stdin = raw.stdin
diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1
index 31d6e96..568b6ae 100644
--- a/deps/npm/man/man1/npm-dist-tag.1
+++ b/deps/npm/man/man1/npm-dist-tag.1
@@ -47,7 +47,8 @@ npm install \-\-tag
.P
This also applies to \fBnpm dedupe\fR\|\.
.P
-Publishing a package always sets the "latest" tag to the published version\.
+Publishing a package sets the "latest" tag to the published version unless the
+\fB\-\-tag\fR option is used\. For example, \fBnpm publish \-\-tag=beta\fR\|\.
.SH PURPOSE
.P
Tags can be used to provide an alias instead of version numbers\. For
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index d7b2c00..c27de4c 100644
--- a/deps/npm/man/man1/npm-install.1
+++ b/deps/npm/man/man1/npm-install.1
@@ -191,8 +191,52 @@ fetch the package by name if it is not valid\.
npm install mygithubuser/myproject
.fi
.RE
- To reference a package in a git repo that is not on GitHub, see git
- remote urls below\.
+ To reference a package in a generic git repo (not on GitHub), see git remote
+ urls below\.
+.IP \(bu 2
+\fBnpm install github:/\fR:
+ The same as the above, but explicitly marked as a GitHub dependency\.
+ Example:
+.P
+.RS 2
+.nf
+ npm install github:npm/npm
+.fi
+.RE
+.IP \(bu 2
+\fBnpm install gist:[/]\fR:
+ Install the package at \fBhttps://gist\.github\.com/gistID\fR by attempting to
+ clone it using \fBgit\fR\|\. The GitHub username associated with the gist is
+ optional and will not be saved in \fBpackage\.json\fR if \fB\-\-save\fR is used\.
+ Example:
+.P
+.RS 2
+.nf
+ npm install gist:101a11beef
+.fi
+.RE
+.IP \(bu 2
+\fBnpm install bitbucket:/\fR:
+ Install the package at \fBhttps://bitbucket\.org/bitbucketname/bitbucketrepo\fR
+ by attempting to clone it using \fBgit\fR\|\.
+ Example:
+.P
+.RS 2
+.nf
+ npm install bitbucket:mybitbucketuser/myproject
+.fi
+.RE
+.IP \(bu 2
+\fBnpm install gitlab:/\fR:
+ Install the package at \fBhttps://gitlab\.com/gitlabname/gitlabrepo\fR
+ by attempting to clone it using \fBgit\fR\|\.
+ Example:
+.P
+.RS 2
+.nf
+ npm install gitlab:mygitlabuser/myproject
+.fi
+.RE
.IP \(bu 2
\fBnpm install \fR:
Install a package by cloning a git remote url\. The format of the git
@@ -200,7 +244,7 @@ fetch the package by name if it is not valid\.
.P
.RS 2
.nf
- ://[@][#]
+ ://[[:]@][#]
.fi
.RE
\fB\fR is one of \fBgit\fR, \fBgit+ssh\fR, \fBgit+http\fR, or
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index b647bfd..35c5ae4 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -23,7 +23,7 @@ For example, running \fBnpm ls promzard\fR in npm's source tree will show:
.P
.RS 2
.nf
-npm@2.7.6 /path/to/npm
+npm@2.8.3 /path/to/npm
ââ⬠init\-package\-json@0\.0\.4
âââ promzard@0\.1\.5
.fi
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index c9aca06..e119732 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -10,7 +10,7 @@ npm [args]
.RE
.SH VERSION
.P
-2.7.6
+2.8.3
.SH DESCRIPTION
.P
npm is the package manager for the Node JavaScript platform\. It puts
diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3
index af4c999..2275101 100644
--- a/deps/npm/man/man3/npm.3
+++ b/deps/npm/man/man3/npm.3
@@ -20,7 +20,7 @@ npm\.load([configObject, ]function (er, npm) {
.RE
.SH VERSION
.P
-2.7.6
+2.8.3
.SH DESCRIPTION
.P
This is the API documentation for npm\.
diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5
index 62fce52..088e62b 100644
--- a/deps/npm/man/man5/npm-json.5
+++ b/deps/npm/man/man5/npm-json.5
@@ -302,12 +302,18 @@ The URL should be a publicly available (perhaps read\-only) url that can be hand
directly to a VCS program without any modification\. It should not be a url to an
html project page that you put in your browser\. It's for computers\.
.P
-For GitHub repositories you can use the same shortcut syntax you use for \fBnpm
-install\fR:
+For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
+shortcut syntax you use for \fBnpm install\fR:
.P
.RS 2
.nf
"repository": "npm/npm"
+
+"repository": "gist:11081aaa281"
+
+"repository": "bitbucket:example/repo"
+
+"repository": "gitlab:another/repo"
.fi
.RE
.SH scripts
diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5
index 62fce52..088e62b 100644
--- a/deps/npm/man/man5/package.json.5
+++ b/deps/npm/man/man5/package.json.5
@@ -302,12 +302,18 @@ The URL should be a publicly available (perhaps read\-only) url that can be hand
directly to a VCS program without any modification\. It should not be a url to an
html project page that you put in your browser\. It's for computers\.
.P
-For GitHub repositories you can use the same shortcut syntax you use for \fBnpm
-install\fR:
+For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
+shortcut syntax you use for \fBnpm install\fR:
.P
.RS 2
.nf
"repository": "npm/npm"
+
+"repository": "gist:11081aaa281"
+
+"repository": "bitbucket:example/repo"
+
+"repository": "gitlab:another/repo"
.fi
.RE
.SH scripts
diff --git a/deps/npm/node_modules/child-process-close/index.js b/deps/npm/node_modules/child-process-close/index.js
deleted file mode 100644
index 562516a..0000000
--- a/deps/npm/node_modules/child-process-close/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-
-var child_process = require('child_process');
-
-// Re-export the child_process module.
-module.exports = child_process;
-
-// Only node versions up to v0.7.6 need this hook.
-if (!/^v0\.([0-6]\.|7\.[0-6](\D|$))/.test(process.version))
- return;
-
-// Do not add the hook if already hooked.
-if (child_process.hasOwnProperty('_exit_hook'))
- return;
-
-// Version the hook in case there is ever the need to release a 0.2.0.
-child_process._exit_hook = 1;
-
-
-function hook(name) {
- var orig = child_process[name];
-
- // Older node versions may not have all functions, e.g. fork().
- if (!orig)
- return;
-
- // Store the unhooked version.
- child_process['_original_' + name] = orig;
-
- // Do the actual hooking.
- child_process[name] = function() {
- var child = orig.apply(this, arguments);
-
- child.once('exit', function(code, signal) {
- process.nextTick(function() {
- child.emit('close', code, signal);
- });
- });
-
- return child;
- }
-}
-
-hook('spawn');
-hook('fork');
-hook('execFile');
-
-// Don't hook 'exec': it calls `exports.execFile` internally, so hooking it
-// would trigger the close event twice.
diff --git a/deps/npm/node_modules/child-process-close/package.json b/deps/npm/node_modules/child-process-close/package.json
deleted file mode 100644
index 23b19e0..0000000
--- a/deps/npm/node_modules/child-process-close/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "child-process-close",
- "version": "0.1.1",
- "description": "Make child_process objects emit 'close' events in node v0.6 like they do in v0.8. This makes it easier to write code that works correctly on both version of node.",
- "main": "index.js",
- "scripts": {
- "test": "node test/test.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/piscisaureus/child-process-close.git"
- },
- "keywords": [
- "child_process",
- "spawn",
- "fork",
- "exec",
- "execFile",
- "close",
- "exit"
- ],
- "author": {
- "name": "Bert Belder"
- },
- "license": "MIT",
- "readme": "\n# child-process-close\n\nThis module makes child process objects, (created with `spawn`, `fork`, `exec`\nor `execFile`) emit the `close` event in node v0.6 like they do in node v0.8.\nThis makes it easier to write code that works correctly on both version of\nnode.\n\n\n## Usage\n\nJust make sure to `require('child-process-close')` anywhere. It will patch the `child_process` module.\n\n```js\nrequire('child-process-close');\nvar spawn = require('child_process').spawn;\n\nvar cp = spawn('foo');\ncp.on('close', function(exitCode, signal) {\n // This now works on all node versions.\n});\n```\n\n\n## License\n\nCopyright (C) 2012 Bert Belder\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/piscisaureus/child-process-close/issues"
- },
- "_id": "child-process-close@0.1.1",
- "dist": {
- "shasum": "c1909c6c3bbcea623e3bd74493ddb1c94c47c500"
- },
- "_from": "child-process-close@",
- "_resolved": "https://registry.npmjs.org/child-process-close/-/child-process-close-0.1.1.tgz"
-}
diff --git a/deps/npm/node_modules/child-process-close/test/test-exec.js b/deps/npm/node_modules/child-process-close/test/test-exec.js
deleted file mode 100644
index 5072d02..0000000
--- a/deps/npm/node_modules/child-process-close/test/test-exec.js
+++ /dev/null
@@ -1,50 +0,0 @@
-
-require('../index');
-
-var assert = require('assert'),
- exec = require('child_process').exec;
-
-var cp = exec('echo hello', function(err) {
- assert(!err);
-});
-
-var stdoutData = '',
- stdoutEnd = false,
- gotExit = false,
- gotClose = false;
-
-cp.stdout.setEncoding('ascii');
-
-cp.stdout.on('data', function(data) {
- assert(!stdoutEnd);
- stdoutData += data;
-});
-
-cp.stdout.on('end', function() {
- assert(!stdoutEnd);
- assert(/^hello/.test(stdoutData));
- stdoutEnd = true;
-});
-
-cp.on('exit', function(code, signal) {
- assert.strictEqual(code, 0);
- assert(!signal);
- assert(!gotExit);
- assert(!gotClose);
- gotExit = true;
-});
-
-cp.on('close', function(code, signal) {
- assert.strictEqual(code, 0);
- assert(!signal);
- assert(gotExit);
- assert(stdoutEnd);
- assert(!gotClose);
- gotClose = true;
-});
-
-process.on('exit', function() {
- assert(stdoutEnd);
- assert(gotExit);
- assert(gotClose);
-});
diff --git a/deps/npm/node_modules/child-process-close/test/test-fork.js b/deps/npm/node_modules/child-process-close/test/test-fork.js
deleted file mode 100644
index 9743c02..0000000
--- a/deps/npm/node_modules/child-process-close/test/test-fork.js
+++ /dev/null
@@ -1,41 +0,0 @@
-
-require('../index');
-
-var assert = require('assert'),
- fork = require('child_process').fork;
-
-var cp = fork('worker-fork');
-
-var gotMessage = false,
- gotExit = false,
- gotClose = false;
-
-cp.on('message', function(msg) {
- assert.strictEqual(msg, 'hello');
- assert(!gotMessage);
- assert(!gotClose);
- gotMessage = true;
-});
-
-cp.on('exit', function(code, signal) {
- assert.strictEqual(code, 0);
- assert(!signal);
- assert(!gotExit);
- assert(!gotClose);
- gotExit = true;
-});
-
-cp.on('close', function(code, signal) {
- assert.strictEqual(code, 0);
- assert(!signal);
- assert(gotExit);
- assert(gotMessage);
- assert(!gotClose);
- gotClose = true;
-});
-
-process.on('exit', function() {
- assert(gotMessage);
- assert(gotExit);
- assert(gotClose);
-});
diff --git a/deps/npm/node_modules/child-process-close/test/test-spawn-and-execfile.js b/deps/npm/node_modules/child-process-close/test/test-spawn-and-execfile.js
deleted file mode 100644
index 82f9fa9..0000000
--- a/deps/npm/node_modules/child-process-close/test/test-spawn-and-execfile.js
+++ /dev/null
@@ -1,73 +0,0 @@
-
-require('../index');
-
-var assert = require('assert'),
- spawn = require('child_process').spawn;
- execFile = require('child_process').execFile;
-
-
-var cp1 = spawn(process.execPath, ['worker-spawn']);
-check(cp1);
-
-var cp2 = execFile(process.execPath, ['worker-spawn'], function(err) {
- assert(!err);
-});
-check(cp2);
-
-
-function check(cp) {
- var gotExit = false,
- gotClose = false,
- stdoutData = '',
- stdoutEnd = false,
- stderrData = '',
- stderrEnd = false;
-
- cp.stdout.setEncoding('ascii');
-
- cp.stdout.on('data', function(data) {
- assert(!stdoutEnd);
- stdoutData += data;
- });
-
- cp.stdout.on('end', function(data) {
- assert(!stdoutEnd)
- assert.strictEqual(stdoutData.length, 100000);
- stdoutEnd = true;
- });
-
- cp.stderr.setEncoding('ascii');
-
- cp.stderr.on('data', function(data) {
- stderrData += data;
- });
-
- cp.stderr.on('end', function(data) {
- assert(!stderrEnd)
- assert.strictEqual(stderrData.length, 100000);
- stderrEnd = true;
- });
-
- cp.on('exit', function(code, signal) {
- assert.strictEqual(code, 0);
- assert(!signal);
- assert(!gotExit);
- assert(!gotClose);
- gotExit = true;
- });
-
- cp.on('close', function(code, signal) {
- assert.strictEqual(code, 0);
- assert(!signal);
- assert(!cp.stdout || stdoutEnd);
- assert(!cp.stderr || stderrEnd);
- assert(gotExit);
- assert(!gotClose);
- gotClose = true;
- });
-
- process.on('exit', function() {
- assert(gotExit);
- assert(gotClose);
- });
-}
diff --git a/deps/npm/node_modules/child-process-close/test/test.js b/deps/npm/node_modules/child-process-close/test/test.js
deleted file mode 100644
index 9904745..0000000
--- a/deps/npm/node_modules/child-process-close/test/test.js
+++ /dev/null
@@ -1,41 +0,0 @@
-
-var TESTS = [
- 'test-spawn-and-execfile',
- 'test-fork',
- 'test-exec',
-];
-
-var execFile = require('child_process').execFile;
-var passed = 0, failed = 0;
-
-function next() {
- var test = TESTS.shift();
- if (!test)
- done();
-
- console.log("Running test: %s", test);
- execFile(process.execPath, [test], { cwd: __dirname }, onExit);
-}
-
-function onExit(err, stdout, stderr) {
- if (err) {
- console.log("... failed:\n%s%s\n", stdout, stderr);
- failed++;
- } else {
- console.log("... pass");
- passed++;
- }
-
- next();
-}
-
-function done() {
- console.log("Tests run: %d. Passed: %d. Failed: %d",
- passed + failed,
- passed,
- failed);
-
- process.exit(+(failed > 0));
-}
-
-next();
diff --git a/deps/npm/node_modules/child-process-close/test/worker-fork.js b/deps/npm/node_modules/child-process-close/test/worker-fork.js
deleted file mode 100644
index 56e83ce..0000000
--- a/deps/npm/node_modules/child-process-close/test/worker-fork.js
+++ /dev/null
@@ -1,3 +0,0 @@
-
-process.send('hello');
-process.exit(0);
diff --git a/deps/npm/node_modules/child-process-close/test/worker-spawn.js b/deps/npm/node_modules/child-process-close/test/worker-spawn.js
deleted file mode 100644
index f45d898..0000000
--- a/deps/npm/node_modules/child-process-close/test/worker-spawn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-var out = new Array(100000).join('x');
-
-console.log(out);
-console.error(out);
diff --git a/deps/npm/node_modules/columnify/Makefile b/deps/npm/node_modules/columnify/Makefile
index 3ae543a..3a67c57 100644
--- a/deps/npm/node_modules/columnify/Makefile
+++ b/deps/npm/node_modules/columnify/Makefile
@@ -4,6 +4,6 @@ all: columnify.js
prepublish: all
columnify.js: index.js package.json
- 6to5 index.js > columnify.js
+ babel index.js > columnify.js
.PHONY: all prepublish
diff --git a/deps/npm/node_modules/columnify/Readme.md b/deps/npm/node_modules/columnify/Readme.md
index b2b846f..4a37928 100644
--- a/deps/npm/node_modules/columnify/Readme.md
+++ b/deps/npm/node_modules/columnify/Readme.md
@@ -1,6 +1,9 @@
# columnify
-[![Build Status](https://travis-ci.org/timoxley/columnify.png?branch=master)](https://travis-ci.org/timoxley/columnify)
+[![NPM](https://nodei.co/npm/columnify.png?downloads=true&downloadRank=true&stars=true&chrome)](https://nodei.co/npm-dl/columnify/)
+[![NPM](https://nodei.co/npm-dl/columnify.png?months=3&height=3&chrome)](https://nodei.co/npm/columnify/)
+
+[![Build Status](https://img.shields.io/travis/timoxley/columnify.svg?style=flat)](https://travis-ci.org/timoxley/columnify)
[![NPM Version](https://img.shields.io/npm/v/columnify.svg?style=flat)](https://npmjs.org/package/columnify)
[![License](http://img.shields.io/npm/l/columnify.svg?style=flat)](LICENSE)
[![Dependency Status](https://david-dm.org/timoxley/columnify.svg)](https://david-dm.org/timoxley/columnify)
@@ -366,6 +369,15 @@ var columns = columnify(data, {
})
```
+This also works well for hiding a single column header, like an `id` column:
+```javascript
+var columns = columnify(data, {
+ config: {
+ id: { showHeaders: false }
+ }
+})
+```
+
### Transforming Column Data and Headers
If you need to modify the presentation of column content or heading content there are two useful options for doing that: `dataTransform` and `headerTransform`. Both of these take a function and need to return a valid string.
diff --git a/deps/npm/node_modules/columnify/columnify.js b/deps/npm/node_modules/columnify/columnify.js
index 548efc6..db10a01 100644
--- a/deps/npm/node_modules/columnify/columnify.js
+++ b/deps/npm/node_modules/columnify/columnify.js
@@ -1,9 +1,10 @@
-"use strict";
+'use strict';
-var _toArray = function (arr) { return Array.isArray(arr) ? arr : Array.from(arr); };
+var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };
-var wcwidth = require("./width");
-var _require = require("./utils");
+var wcwidth = require('./width');
+
+var _require = require('./utils');
var padRight = _require.padRight;
var padCenter = _require.padCenter;
@@ -12,23 +13,22 @@ var splitIntoLines = _require.splitIntoLines;
var splitLongWords = _require.splitLongWords;
var truncateString = _require.truncateString;
-
-var DEFAULT_HEADING_TRANSFORM = function (key) {
+var DEFAULT_HEADING_TRANSFORM = function DEFAULT_HEADING_TRANSFORM(key) {
return key.toUpperCase();
};
-var DEFAULT_DATA_TRANSFORM = function (cell, column, index) {
+var DEFAULT_DATA_TRANSFORM = function DEFAULT_DATA_TRANSFORM(cell, column, index) {
return cell;
};
var DEFAULTS = Object.freeze({
maxWidth: Infinity,
minWidth: 0,
- columnSplitter: " ",
+ columnSplitter: ' ',
truncate: false,
- truncateMarker: "â¦",
+ truncateMarker: 'â¦',
preserveNewLines: false,
- paddingChr: " ",
+ paddingChr: ' ',
showHeaders: true,
headingTransform: DEFAULT_HEADING_TRANSFORM,
dataTransform: DEFAULT_DATA_TRANSFORM
@@ -37,12 +37,11 @@ var DEFAULTS = Object.freeze({
module.exports = function (items) {
var options = arguments[1] === undefined ? {} : arguments[1];
-
var columnConfigs = options.config || {};
delete options.config; // remove config so doesn't appear on every column.
var maxLineWidth = options.maxLineWidth || Infinity;
- if (maxLineWidth === "auto") maxLineWidth = process.stdout.columns || Infinity;
+ if (maxLineWidth === 'auto') maxLineWidth = process.stdout.columns || Infinity;
delete options.maxLineWidth; // this is a line control option, don't pass it to column
// Option defaults inheritance:
@@ -51,7 +50,7 @@ module.exports = function (items) {
options.config = options.config || Object.create(null);
- options.spacing = options.spacing || "\n"; // probably useless
+ options.spacing = options.spacing || '\n'; // probably useless
options.preserveNewLines = !!options.preserveNewLines;
options.showHeaders = !!options.showHeaders;
options.columns = options.columns || options.include; // alias include/columns, prefer columns if supplied
@@ -82,7 +81,7 @@ module.exports = function (items) {
column.maxWidth = Math.ceil(column.maxWidth);
column.minWidth = Math.ceil(column.minWidth);
column.truncate = !!column.truncate;
- column.align = column.align || "left";
+ column.align = column.align || 'left';
});
// sanitize data
@@ -90,15 +89,15 @@ module.exports = function (items) {
var result = Object.create(null);
columnNames.forEach(function (columnName) {
// null/undefined -> ''
- result[columnName] = item[columnName] != null ? item[columnName] : "";
+ result[columnName] = item[columnName] != null ? item[columnName] : '';
// toString everything
- result[columnName] = "" + result[columnName];
+ result[columnName] = '' + result[columnName];
if (columns[columnName].preserveNewLines) {
// merge non-newline whitespace chars
- result[columnName] = result[columnName].replace(/[^\S\n]/gmi, " ");
+ result[columnName] = result[columnName].replace(/[^\S\n]/gmi, ' ');
} else {
// merge all whitespace chars
- result[columnName] = result[columnName].replace(/\s/gmi, " ");
+ result[columnName] = result[columnName].replace(/\s/gmi, ' ');
}
});
return result;
@@ -113,7 +112,7 @@ module.exports = function (items) {
var changedKeys = Object.keys(col);
// disable default heading transform if we wrote to column.name
- if (changedKeys.indexOf("name") !== -1) {
+ if (changedKeys.indexOf('name') !== -1) {
if (column.headingTransform !== DEFAULT_HEADING_TRANSFORM) return;
column.headingTransform = function (heading) {
return heading;
@@ -131,6 +130,12 @@ module.exports = function (items) {
if (options.showHeaders) {
columnNames.forEach(function (columnName) {
var column = columns[columnName];
+
+ if (!column.showHeaders) {
+ headers[columnName] = '';
+ return;
+ }
+
headers[columnName] = column.headingTransform(column.name);
});
items.unshift(headers);
@@ -185,7 +190,6 @@ module.exports = function (items) {
}, 0);
});
-
var rows = createRows(items, columns, columnNames, options.paddingChr); // merge lines into rows
// conceive output
return rows.reduce(function (output, row) {
@@ -213,16 +217,19 @@ function createRows(items, columns, columnNames, paddingChr) {
columnNames.forEach(function (columnName) {
numLines = Math.max(numLines, item[columnName].length);
});
+
+ var _loop = function (i) {
+ row[i] = row[i] || [];
+ columnNames.forEach(function (columnName) {
+ var column = columns[columnName];
+ var val = item[columnName][i] || ''; // || '' ensures empty columns get padded
+ if (column.align === 'right') row[i].push(padLeft(val, column.width, paddingChr));else if (column.align === 'center' || column.align === 'centre') row[i].push(padCenter(val, column.width, paddingChr));else row[i].push(padRight(val, column.width, paddingChr));
+ });
+ };
+
// combine matching lines of each rows
for (var i = 0; i < numLines; i++) {
- (function (i) {
- row[i] = row[i] || [];
- columnNames.forEach(function (columnName) {
- var column = columns[columnName];
- var val = item[columnName][i] || ""; // || '' ensures empty columns get padded
- if (column.align === "right") row[i].push(padLeft(val, column.width, paddingChr));else if (column.align === "center" || column.align === "centre") row[i].push(padCenter(val, column.width, paddingChr));else row[i].push(padRight(val, column.width, paddingChr));
- });
- })(i);
+ _loop(i);
}
return row;
});
@@ -239,13 +246,14 @@ function mixin() {
args[_key] = arguments[_key];
}
- if (Object.assign) return Object.assign.apply(Object, _toArray(args));
- return ObjectAssign.apply(undefined, _toArray(args));
+ if (Object.assign) {
+ return Object.assign.apply(Object, _toConsumableArray(args));
+ }return ObjectAssign.apply(undefined, _toConsumableArray(args));
}
function ObjectAssign(target, firstSource) {
- "use strict";
- if (target === undefined || target === null) throw new TypeError("Cannot convert first argument to object");
+ 'use strict';
+ if (target === undefined || target === null) throw new TypeError('Cannot convert first argument to object');
var to = Object(target);
@@ -286,14 +294,14 @@ function endsWith(target, searchString, position) {
return lastIndex !== -1 && lastIndex === position;
}
-
function toArray(items, columnNames) {
- if (Array.isArray(items)) return items;
- var rows = [];
+ if (Array.isArray(items)) {
+ return items;
+ }var rows = [];
for (var key in items) {
var item = {};
- item[columnNames[0] || "key"] = key;
- item[columnNames[1] || "value"] = items[key];
+ item[columnNames[0] || 'key'] = key;
+ item[columnNames[1] || 'value'] = items[key];
rows.push(item);
}
return rows;
diff --git a/deps/npm/node_modules/columnify/index.js b/deps/npm/node_modules/columnify/index.js
index 781e683..227b41e 100644
--- a/deps/npm/node_modules/columnify/index.js
+++ b/deps/npm/node_modules/columnify/index.js
@@ -118,6 +118,12 @@ module.exports = function(items, options = {}) {
if(options.showHeaders) {
columnNames.forEach(columnName => {
let column = columns[columnName]
+
+ if(!column.showHeaders){
+ headers[columnName] = '';
+ return;
+ }
+
headers[columnName] = column.headingTransform(column.name)
})
items.unshift(headers)
diff --git a/deps/npm/node_modules/child-process-close/README.md b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/LICENSE
similarity index 62%
rename from deps/npm/node_modules/child-process-close/README.md
rename to deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/LICENSE
index ac6c184..d88b072 100644
--- a/deps/npm/node_modules/child-process-close/README.md
+++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/LICENSE
@@ -1,30 +1,6 @@
+The MIT License (MIT)
-# child-process-close
-
-This module makes child process objects, (created with `spawn`, `fork`, `exec`
-or `execFile`) emit the `close` event in node v0.6 like they do in node v0.8.
-This makes it easier to write code that works correctly on both version of
-node.
-
-
-## Usage
-
-Just make sure to `require('child-process-close')` anywhere. It will patch the `child_process` module.
-
-```js
-require('child-process-close');
-var spawn = require('child_process').spawn;
-
-var cp = spawn('foo');
-cp.on('close', function(exitCode, signal) {
- // This now works on all node versions.
-});
-```
-
-
-## License
-
-Copyright (C) 2012 Bert Belder
+Copyright (c) 2015 Elijah Insua
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/README.md b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/README.md
index a75e72e..1a4a2ea 100644
--- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/README.md
+++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/README.md
@@ -40,4 +40,4 @@ Sidecases: if called with a falsy `options` value, options will be initialized t
## license
-MIT
\ No newline at end of file
+[MIT](LICENSE)
diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json
index dc56f3f..bc8e878 100644
--- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json
+++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json
@@ -122,6 +122,5 @@
"tarball": "http://registry.npmjs.org/clone/-/clone-0.1.19.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz"
}
diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json
index e3ee621..fdd074d 100644
--- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json
+++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json
@@ -1,6 +1,6 @@
{
"name": "defaults",
- "version": "1.0.0",
+ "version": "1.0.2",
"description": "merge single level defaults over a config object",
"main": "index.js",
"scripts": {
@@ -19,20 +19,21 @@
"email": "tmpvar@gmail.com"
},
"license": "MIT",
- "readmeFilename": "README.md",
"dependencies": {
"clone": "~0.1.5"
},
"devDependencies": {
"tap": "~0.4.0"
},
- "readme": "# defaults\n\nA simple one level options merge utility\n\n## install\n\n`npm install defaults`\n\n## use\n\n```javascript\n\nvar defaults = require('defaults');\n\nvar handle = function(options, fn) {\n options = defaults(options, {\n timeout: 100\n });\n\n setTimeout(function() {\n fn(options);\n }, options.timeout);\n}\n\nhandle({ timeout: 1000 }, function() {\n // we're here 1000 ms later\n});\n\nhandle({ timeout: 10000 }, function() {\n // we're here 10s later\n});\n\n```\n\n## summary\n\nthis module exports a function that takes 2 arguments: `options` and `defaults`. When called, it overrides all of `undefined` properties in `options` with the clones of properties defined in `defaults`\n\nSidecases: if called with a falsy `options` value, options will be initialized to a new object before being merged onto.\n\n## license\n\nMIT",
- "_id": "defaults@1.0.0",
- "dist": {
- "shasum": "3ae25f44416c6c01f9809a25fcdd285912d2a6b1",
- "tarball": "http://registry.npmjs.org/defaults/-/defaults-1.0.0.tgz"
+ "gitHead": "22c57d1f87a2f03c1f9d21bd39c67db8553a0064",
+ "bugs": {
+ "url": "https://github.com/tmpvar/defaults/issues"
},
- "_npmVersion": "1.1.65",
+ "homepage": "https://github.com/tmpvar/defaults",
+ "_id": "defaults@1.0.2",
+ "_shasum": "6902e25aa047649a501e19ef9e98f3e8365c109a",
+ "_from": "defaults@>=1.0.0 <2.0.0",
+ "_npmVersion": "1.4.23",
"_npmUser": {
"name": "tmpvar",
"email": "tmpvar@gmail.com"
@@ -43,12 +44,10 @@
"email": "tmpvar@gmail.com"
}
],
- "directories": {},
- "_shasum": "3ae25f44416c6c01f9809a25fcdd285912d2a6b1",
- "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.0.tgz",
- "_from": "defaults@>=1.0.0 <2.0.0",
- "bugs": {
- "url": "https://github.com/tmpvar/defaults/issues"
+ "dist": {
+ "shasum": "6902e25aa047649a501e19ef9e98f3e8365c109a",
+ "tarball": "http://registry.npmjs.org/defaults/-/defaults-1.0.2.tgz"
},
- "homepage": "https://github.com/tmpvar/defaults"
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.2.tgz"
}
diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json
index 49fc6f0..4744d9d 100644
--- a/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json
+++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json
@@ -56,6 +56,5 @@
"shasum": "02d059ff7a8fc741e0f6b5da1e69b2b40daeca6f",
"tarball": "http://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz"
},
- "_resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz"
}
diff --git a/deps/npm/node_modules/columnify/package.json b/deps/npm/node_modules/columnify/package.json
index a275672..195a7f0 100644
--- a/deps/npm/node_modules/columnify/package.json
+++ b/deps/npm/node_modules/columnify/package.json
@@ -1,6 +1,6 @@
{
"name": "columnify",
- "version": "1.4.1",
+ "version": "1.5.1",
"description": "Render data in text columns. supports in-column text-wrap.",
"main": "columnify.js",
"scripts": {
@@ -14,10 +14,10 @@
},
"license": "MIT",
"devDependencies": {
- "6to5": "^3.0.9",
- "chalk": "^0.5.1",
- "tap-spec": "^2.1.1",
- "tape": "^3.0.3"
+ "babel": "^5.0.10",
+ "chalk": "^1.0.0",
+ "tap-spec": "^3.0.0",
+ "tape": "^4.0.0"
},
"repository": {
"type": "git",
@@ -37,18 +37,18 @@
},
"homepage": "https://github.com/timoxley/columnify",
"dependencies": {
- "strip-ansi": "^2.0.0",
+ "strip-ansi": "^2.0.1",
"wcwidth": "^1.0.0"
},
"directories": {
"test": "test"
},
- "gitHead": "24371e9c12287ce4d28f19d704a28059f3acd42b",
- "_id": "columnify@1.4.1",
- "_shasum": "30555796379865b016189c228cb0061764270ed0",
- "_from": "columnify@>=1.4.1 <1.5.0",
- "_npmVersion": "2.3.0",
- "_nodeVersion": "0.10.35",
+ "gitHead": "1e5f5ec9478d7dbd1e3d1d74343b552da7ae01ba",
+ "_id": "columnify@1.5.1",
+ "_shasum": "15fdda803a3875f87f9d302b3bc828932d664003",
+ "_from": "columnify@>=1.5.1 <1.6.0",
+ "_npmVersion": "2.7.6",
+ "_nodeVersion": "0.10.36",
"_npmUser": {
"name": "timoxley",
"email": "secoif@gmail.com"
@@ -60,8 +60,8 @@
}
],
"dist": {
- "shasum": "30555796379865b016189c228cb0061764270ed0",
- "tarball": "http://registry.npmjs.org/columnify/-/columnify-1.4.1.tgz"
+ "shasum": "15fdda803a3875f87f9d302b3bc828932d664003",
+ "tarball": "http://registry.npmjs.org/columnify/-/columnify-1.5.1.tgz"
},
- "_resolved": "https://registry.npmjs.org/columnify/-/columnify-1.4.1.tgz"
+ "_resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.1.tgz"
}
diff --git a/deps/npm/node_modules/glob/common.js b/deps/npm/node_modules/glob/common.js
index d638959..7bef9a2 100644
--- a/deps/npm/node_modules/glob/common.js
+++ b/deps/npm/node_modules/glob/common.js
@@ -1,6 +1,5 @@
exports.alphasort = alphasort
exports.alphasorti = alphasorti
-exports.isAbsolute = process.platform === "win32" ? absWin : absUnix
exports.setopts = setopts
exports.ownProp = ownProp
exports.makeAbs = makeAbs
@@ -15,26 +14,9 @@ function ownProp (obj, field) {
var path = require("path")
var minimatch = require("minimatch")
+var isAbsolute = require("path-is-absolute")
var Minimatch = minimatch.Minimatch
-function absWin (p) {
- if (absUnix(p)) return true
- // pull off the device/UNC bit from a windows path.
- // from node's lib/path.js
- var splitDeviceRe =
- /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/
- var result = splitDeviceRe.exec(p)
- var device = result[1] || ''
- var isUnc = device && device.charAt(1) !== ':'
- var isAbsolute = !!result[2] || isUnc // UNC paths are always absolute
-
- return isAbsolute
-}
-
-function absUnix (p) {
- return p.charAt(0) === "/" || p === ""
-}
-
function alphasorti (a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase())
}
@@ -230,7 +212,7 @@ function makeAbs (self, f) {
var abs = f
if (f.charAt(0) === '/') {
abs = path.join(self.root, f)
- } else if (exports.isAbsolute(f)) {
+ } else if (isAbsolute(f) || f === '') {
abs = f
} else if (self.changedCwd) {
abs = path.resolve(self.cwd, f)
diff --git a/deps/npm/node_modules/glob/glob.js b/deps/npm/node_modules/glob/glob.js
index eac0693..1bfed19 100644
--- a/deps/npm/node_modules/glob/glob.js
+++ b/deps/npm/node_modules/glob/glob.js
@@ -47,11 +47,11 @@ var inherits = require('inherits')
var EE = require('events').EventEmitter
var path = require('path')
var assert = require('assert')
+var isAbsolute = require('path-is-absolute')
var globSync = require('./sync.js')
var common = require('./common.js')
var alphasort = common.alphasort
var alphasorti = common.alphasorti
-var isAbsolute = common.isAbsolute
var setopts = common.setopts
var ownProp = common.ownProp
var inflight = require('inflight')
diff --git a/deps/npm/node_modules/glob/node_modules/path-is-absolute/index.js b/deps/npm/node_modules/glob/node_modules/path-is-absolute/index.js
new file mode 100644
index 0000000..19f103f
--- /dev/null
+++ b/deps/npm/node_modules/glob/node_modules/path-is-absolute/index.js
@@ -0,0 +1,20 @@
+'use strict';
+
+function posix(path) {
+ return path.charAt(0) === '/';
+};
+
+function win32(path) {
+ // https://github.com/joyent/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
+ var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
+ var result = splitDeviceRe.exec(path);
+ var device = result[1] || '';
+ var isUnc = !!device && device.charAt(1) !== ':';
+
+ // UNC paths are always absolute
+ return !!result[2] || isUnc;
+};
+
+module.exports = process.platform === 'win32' ? win32 : posix;
+module.exports.posix = posix;
+module.exports.win32 = win32;
diff --git a/deps/npm/node_modules/glob/node_modules/path-is-absolute/license b/deps/npm/node_modules/glob/node_modules/path-is-absolute/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/deps/npm/node_modules/glob/node_modules/path-is-absolute/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus (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/deps/npm/node_modules/glob/node_modules/path-is-absolute/package.json b/deps/npm/node_modules/glob/node_modules/path-is-absolute/package.json
new file mode 100644
index 0000000..fb42bcb
--- /dev/null
+++ b/deps/npm/node_modules/glob/node_modules/path-is-absolute/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "path-is-absolute",
+ "version": "1.0.0",
+ "description": "Node.js 0.12 path.isAbsolute() ponyfill",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/sindresorhus/path-is-absolute"
+ },
+ "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": [
+ "path",
+ "paths",
+ "file",
+ "dir",
+ "absolute",
+ "isabsolute",
+ "is-absolute",
+ "built-in",
+ "util",
+ "utils",
+ "core",
+ "ponyfill",
+ "polyfill",
+ "shim",
+ "is",
+ "detect",
+ "check"
+ ],
+ "gitHead": "7a76a0c9f2263192beedbe0a820e4d0baee5b7a1",
+ "bugs": {
+ "url": "https://github.com/sindresorhus/path-is-absolute/issues"
+ },
+ "homepage": "https://github.com/sindresorhus/path-is-absolute",
+ "_id": "path-is-absolute@1.0.0",
+ "_shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
+ "_from": "path-is-absolute@>=1.0.0 <2.0.0",
+ "_npmVersion": "2.5.1",
+ "_nodeVersion": "0.12.0",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
+ "tarball": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
+}
diff --git a/deps/npm/node_modules/glob/node_modules/path-is-absolute/readme.md b/deps/npm/node_modules/glob/node_modules/path-is-absolute/readme.md
new file mode 100644
index 0000000..cdf94f4
--- /dev/null
+++ b/deps/npm/node_modules/glob/node_modules/path-is-absolute/readme.md
@@ -0,0 +1,51 @@
+# path-is-absolute [![Build Status](https://travis-ci.org/sindresorhus/path-is-absolute.svg?branch=master)](https://travis-ci.org/sindresorhus/path-is-absolute)
+
+> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) ponyfill
+
+> Ponyfill: A polyfill that doesn't overwrite the native method
+
+
+## Install
+
+```
+$ npm install --save path-is-absolute
+```
+
+
+## Usage
+
+```js
+var pathIsAbsolute = require('path-is-absolute');
+
+// Linux
+pathIsAbsolute('/home/foo');
+//=> true
+
+// Windows
+pathIsAbsolute('C:/Users/');
+//=> true
+
+// Any OS
+pathIsAbsolute.posix('/home/foo');
+//=> true
+```
+
+
+## API
+
+See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path).
+
+### pathIsAbsolute(path)
+
+### pathIsAbsolute.posix(path)
+
+The Posix specific version.
+
+### pathIsAbsolute.win32(path)
+
+The Windows specific version.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json
index cf31a8d..e60f438 100644
--- a/deps/npm/node_modules/glob/package.json
+++ b/deps/npm/node_modules/glob/package.json
@@ -6,7 +6,7 @@
},
"name": "glob",
"description": "a little globber",
- "version": "5.0.3",
+ "version": "5.0.5",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-glob.git"
@@ -24,7 +24,8 @@
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^2.0.1",
- "once": "^1.3.0"
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
"devDependencies": {
"mkdirp": "0",
@@ -42,15 +43,15 @@
"benchclean": "bash benchclean.sh"
},
"license": "ISC",
- "gitHead": "2f63d487885fbb51ec8fcb21229bebd0e515c3fb",
+ "gitHead": "9db1a83b44da0c60f5fdd31b28b1f9917ee6316d",
"bugs": {
"url": "https://github.com/isaacs/node-glob/issues"
},
"homepage": "https://github.com/isaacs/node-glob",
- "_id": "glob@5.0.3",
- "_shasum": "15528c1c727e474a8e7731541c00b00ec802952d",
- "_from": "glob@>=5.0.3 <5.1.0",
- "_npmVersion": "2.7.1",
+ "_id": "glob@5.0.5",
+ "_shasum": "784431e4e29a900ae0d47fba6aa1c7f16a8e7df7",
+ "_from": "glob@>=5.0.5 <5.1.0",
+ "_npmVersion": "2.7.6",
"_nodeVersion": "1.4.2",
"_npmUser": {
"name": "isaacs",
@@ -63,10 +64,9 @@
}
],
"dist": {
- "shasum": "15528c1c727e474a8e7731541c00b00ec802952d",
- "tarball": "http://registry.npmjs.org/glob/-/glob-5.0.3.tgz"
+ "shasum": "784431e4e29a900ae0d47fba6aa1c7f16a8e7df7",
+ "tarball": "http://registry.npmjs.org/glob/-/glob-5.0.5.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.3.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.5.tgz"
}
diff --git a/deps/npm/node_modules/glob/sync.js b/deps/npm/node_modules/glob/sync.js
index f4f5e36..92fe110 100644
--- a/deps/npm/node_modules/glob/sync.js
+++ b/deps/npm/node_modules/glob/sync.js
@@ -8,10 +8,10 @@ var Glob = require('./glob.js').Glob
var util = require('util')
var path = require('path')
var assert = require('assert')
+var isAbsolute = require('path-is-absolute')
var common = require('./common.js')
var alphasort = common.alphasort
var alphasorti = common.alphasorti
-var isAbsolute = common.isAbsolute
var setopts = common.setopts
var ownProp = common.ownProp
var childrenIgnored = common.childrenIgnored
diff --git a/deps/npm/node_modules/hosted-git-info/README.md b/deps/npm/node_modules/hosted-git-info/README.md
index f1d799b..8647c75 100644
--- a/deps/npm/node_modules/hosted-git-info/README.md
+++ b/deps/npm/node_modules/hosted-git-info/README.md
@@ -61,7 +61,7 @@ eg, `https://github.com/npm/hosted-git-info/tree/v1.2.0#readme`
* info.https()
-eg, `https://github.com/npm/hosted-git-info.git`
+eg, `git+https://github.com/npm/hosted-git-info.git`
* info.sshurl()
@@ -75,6 +75,23 @@ eg, `git@github.com:npm/hosted-git-info.git`
eg, `npm/hosted-git-info`
+* info.getDefaultRepresentation()
+
+Returns the default output type. The default output type is based on the
+string you passed in to be parsed
+
+* info.toString()
+
+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
diff --git a/deps/npm/node_modules/hosted-git-info/git-host-info.js b/deps/npm/node_modules/hosted-git-info/git-host-info.js
new file mode 100644
index 0000000..354d9fc
--- /dev/null
+++ b/deps/npm/node_modules/hosted-git-info/git-host-info.js
@@ -0,0 +1,64 @@
+'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}/{comittish}/{path}',
+ 'bugstemplate': 'https://{domain}/{user}/{project}/issues',
+ 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#comittish}'
+ },
+ bitbucket: {
+ 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],
+ 'domain': 'bitbucket.org',
+ 'treepath': 'src'
+ },
+ gitlab: {
+ 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],
+ 'domain': 'gitlab.com',
+ 'treepath': 'tree',
+ 'docstemplate': 'https://{domain}/{user}/{project}{/tree/comittish}#README',
+ 'bugstemplate': 'https://{domain}/{user}/{project}/issues'
+ },
+ gist: {
+ 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],
+ 'domain': 'gist.github.com',
+ 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]+)(?:[.]git)?$/,
+ 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/comittish}/{path}',
+ 'bugstemplate': 'https://{domain}/{project}',
+ 'gittemplate': 'git://{domain}/{project}.git{#comittish}',
+ 'sshtemplate': 'git@{domain}:/{project}.git{#comittish}',
+ 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#comittish}',
+ 'browsetemplate': 'https://{domain}/{project}{/comittish}',
+ 'docstemplate': 'https://{domain}/{project}{/comittish}',
+ 'httpstemplate': 'git+https://{domain}/{project}.git{#comittish}',
+ 'shortcuttemplate': '{type}:{project}{#comittish}',
+ 'pathtemplate': '{project}{#comittish}'
+ }
+}
+
+var gitHostDefaults = {
+ 'sshtemplate': 'git@{domain}:{user}/{project}.git{#comittish}',
+ 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#comittish}',
+ 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/comittish}',
+ 'docstemplate': 'https://{domain}/{user}/{project}{/tree/comittish}#readme',
+ 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#comittish}',
+ 'filetemplate': 'https://{domain}/{user}/{project}/raw/{comittish}/{path}',
+ 'shortcuttemplate': '{type}:{user}/{project}{#comittish}',
+ 'pathtemplate': '{user}/{project}{#comittish}',
+ 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git)?$/
+}
+
+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('|') + '):$')
+})
diff --git a/deps/npm/node_modules/hosted-git-info/git-host.js b/deps/npm/node_modules/hosted-git-info/git-host.js
new file mode 100644
index 0000000..b69ad0f
--- /dev/null
+++ b/deps/npm/node_modules/hosted-git-info/git-host.js
@@ -0,0 +1,96 @@
+'use strict'
+var gitHosts = require('./git-host-info.js')
+
+var GitHost = module.exports = function (type, user, auth, project, comittish, defaultRepresentation) {
+ 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.comittish = comittish
+ gitHostInfo.default = defaultRepresentation
+}
+GitHost.prototype = {}
+
+GitHost.prototype.hash = function () {
+ return this.comittish ? '#' + this.comittish : ''
+}
+
+GitHost.prototype._fill = function (template, vars) {
+ if (!template) return
+ if (!vars) vars = {}
+ 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 rawComittish = vars.comittish
+ Object.keys(vars).forEach(function (key) {
+ vars[key] = encodeURIComponent(vars[key])
+ })
+ vars['auth@'] = rawAuth ? rawAuth + '@' : ''
+ vars['#comittish'] = rawComittish ? '#' + rawComittish : ''
+ vars['/tree/comittish'] = vars.comittish
+ ? '/' + vars.treepath + '/' + vars.comittish
+ : ''
+ vars['/comittish'] = vars.comittish ? '/' + vars.comittish : ''
+ vars.comittish = vars.comittish || 'master'
+ var res = template
+ Object.keys(vars).forEach(function (key) {
+ res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])
+ })
+ return res
+}
+
+GitHost.prototype.ssh = function () {
+ return this._fill(this.sshtemplate)
+}
+
+GitHost.prototype.sshurl = function () {
+ return this._fill(this.sshurltemplate)
+}
+
+GitHost.prototype.browse = function () {
+ return this._fill(this.browsetemplate)
+}
+
+GitHost.prototype.docs = function () {
+ return this._fill(this.docstemplate)
+}
+
+GitHost.prototype.bugs = function () {
+ return this._fill(this.bugstemplate)
+}
+
+GitHost.prototype.https = function () {
+ return this._fill(this.httpstemplate)
+}
+
+GitHost.prototype.git = function () {
+ return this._fill(this.gittemplate)
+}
+
+GitHost.prototype.shortcut = function () {
+ return this._fill(this.shortcuttemplate)
+}
+
+GitHost.prototype.path = function () {
+ return this._fill(this.pathtemplate)
+}
+
+GitHost.prototype.file = function (P) {
+ return this._fill(this.filetemplate, {
+ path: P.replace(/^[/]+/g, '')
+ })
+}
+
+GitHost.prototype.getDefaultRepresentation = function () {
+ return this.default
+}
+
+GitHost.prototype.toString = function () {
+ return (this[this.default] || this.sshurl).call(this)
+}
diff --git a/deps/npm/node_modules/hosted-git-info/index.js b/deps/npm/node_modules/hosted-git-info/index.js
index c2ad10a..b8c6e10 100644
--- a/deps/npm/node_modules/hosted-git-info/index.js
+++ b/deps/npm/node_modules/hosted-git-info/index.js
@@ -1,49 +1,65 @@
-"use strict"
-var url = require("url")
-
-var GitHost = exports = module.exports = function (type, user, project, comittish) {
- this.type = type
- this.domain = gitHosts[type].domain
- this.filetemplate = gitHosts[type].filetemplate
- this.sshtemplate = gitHosts[type].sshtemplate
- this.sshurltemplate = gitHosts[type].sshurltemplate
- this.browsetemplate = gitHosts[type].browsetemplate
- this.docstemplate = gitHosts[type].docstemplate
- this.bugstemplate = gitHosts[type].bugstemplate
- this.gittemplate = gitHosts[type].gittemplate
- this.httpstemplate = gitHosts[type].httpstemplate
- this.treepath = gitHosts[type].treepath
- this.user = user
- this.project = project
- this.comittish = comittish
-}
-GitHost.prototype = {}
-
-exports.fromUrl = function (giturl) {
- if (giturl == null || giturl == "") return
- var parsed = parseGitUrl(maybeGitHubShorthand(giturl) ? "github:" + giturl : giturl)
- var matches = Object.keys(gitHosts).map(function(V) {
- var gitHost = gitHosts[V]
+'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) {
+ if (protocol.substr(-1) === ':') protocol = protocol.slice(0, -1)
+ return protocolToRepresentationMap[protocol] || protocol
+}
+
+var authProtocols = {
+ 'git:': true,
+ 'https:': true,
+ 'git+https:': true,
+ 'http:': true,
+ 'git+http:': true
+}
+
+module.exports.fromUrl = function (giturl) {
+ if (giturl == null || giturl === '') return
+ var url = fixupUnqualifiedGist(
+ isGitHubShorthand(giturl) ? 'github:' + giturl : giturl
+ )
+ var parsed = parseGitUrl(url)
+ var matches = Object.keys(gitHosts).map(function (gitHostName) {
+ var gitHostInfo = gitHosts[gitHostName]
+ var auth = null
+ if (parsed.auth && authProtocols[parsed.protocol]) {
+ auth = decodeURIComponent(parsed.auth)
+ }
var comittish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null
- if (parsed.protocol == V + ":") {
- return new GitHost(V,
- decodeURIComponent(parsed.host), decodeURIComponent(parsed.path.replace(/^[/](.*?)(?:[.]git)?$/, "$1")), comittish)
+ var user = null
+ var project = null
+ var defaultRepresentation = null
+ if (parsed.protocol === gitHostName + ':') {
+ user = decodeURIComponent(parsed.host)
+ project = parsed.path && decodeURIComponent(parsed.path.replace(/^[/](.*?)(?:[.]git)?$/, '$1'))
+ defaultRepresentation = 'shortcut'
+ } else {
+ if (parsed.host !== gitHostInfo.domain) return
+ if (!gitHostInfo.protocols_re.test(parsed.protocol)) return
+ var pathmatch = gitHostInfo.pathmatch
+ var matched = parsed.path.match(pathmatch)
+ if (!matched) return
+ if (matched[1] != null) user = decodeURIComponent(matched[1])
+ if (matched[2] != null) project = decodeURIComponent(matched[2])
+ defaultRepresentation = protocolToRepresentation(parsed.protocol)
}
- if (parsed.host != gitHost.domain) return
- if (! gitHost.protocols_re.test(parsed.protocol)) return
- var matched = parsed.path.match(gitHost.pathmatch)
- if (! matched) return
- return new GitHost(
- V,
- matched[1]!=null && decodeURIComponent(matched[1]),
- matched[2]!=null && decodeURIComponent(matched[2]),
- comittish)
- }).filter(function(V){ return V })
- if (matches.length != 1) return
+ return new GitHost(gitHostName, user, auth, project, comittish, defaultRepresentation)
+ }).filter(function (gitHostInfo) { return gitHostInfo })
+ if (matches.length !== 1) return
return matches[0]
}
-function maybeGitHubShorthand(arg) {
+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
//
@@ -55,12 +71,22 @@ function maybeGitHubShorthand(arg) {
return /^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(arg)
}
-var parseGitUrl = function (giturl) {
- if (typeof giturl != "string") giturl = "" + giturl
+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) {
+ if (typeof giturl !== 'string') giturl = '' + giturl
var matched = giturl.match(/^([^@]+)@([^:]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)
- if (! matched) return url.parse(giturl)
+ if (!matched) return url.parse(giturl)
return {
- protocol: "git+ssh:",
+ protocol: 'git+ssh:',
slashes: true,
auth: matched[1],
host: matched[2],
@@ -69,140 +95,9 @@ var parseGitUrl = function (giturl) {
hash: matched[4],
search: null,
query: null,
- pathname: "/" + matched[3],
- path: "/" + matched[3],
- href: "git+ssh://" + matched[1] + "@" + matched[2] + "/" + matched[3] + (matched[4]||"")
+ pathname: '/' + matched[3],
+ path: '/' + matched[3],
+ href: 'git+ssh://' + matched[1] + '@' + matched[2] +
+ '/' + matched[3] + (matched[4] || '')
}
}
-
-var gitHostDefaults = {
- "sshtemplate": "git@{domain}:{user}/{project}.git{#comittish}",
- "sshurltemplate": "git+ssh://git@{domain}/{user}/{project}.git{#comittish}",
- "browsetemplate": "https://{domain}/{user}/{project}{/tree/comittish}",
- "docstemplate": "https://{domain}/{user}/{project}{/tree/comittish}#readme",
- "httpstemplate": "https://{domain}/{user}/{project}.git{#comittish}",
- "filetemplate": "https://{domain}/{user}/{project}/raw/{comittish}/{path}"
-}
-var gitHosts = {
- 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",
- "pathmatch": /^[/]([^/]+)[/]([^/]+?)(?:[.]git)?$/,
- "treepath": "tree",
- "filetemplate": "https://raw.githubusercontent.com/{user}/{project}/{comittish}/{path}",
- "bugstemplate": "https://{domain}/{user}/{project}/issues",
- "gittemplate": "git://{domain}/{user}/{project}.git{#comittish}"
- },
- bitbucket: {
- "protocols": [ "git+ssh", "git+https", "ssh", "https" ],
- "domain": "bitbucket.org",
- "pathmatch": /^[/]([^/]+)[/]([^/]+?)(?:[.]git)?$/,
- "treepath": "src"
- },
- gitlab: {
- "protocols": [ "git+ssh", "git+https", "ssh", "https" ],
- "domain": "gitlab.com",
- "pathmatch": /^[/]([^/]+)[/]([^/]+?)(?:[.]git)?$/,
- "treepath": "tree",
- "docstemplate": "https://{domain}/{user}/{project}{/tree/comittish}#README",
- "bugstemplate": "https://{domain}/{user}/{project}/issues"
- },
- gist: {
- "protocols": [ "git", "git+ssh", "git+https", "ssh", "https" ],
- "domain": "gist.github.com",
- "pathmatch": /^[/](?:([^/]+)[/])?([a-z0-9]+)(?:[.]git)?$/,
- "filetemplate": "https://gist.githubusercontent.com/{user}/{project}/raw{/comittish}/{path}",
- "bugstemplate": "https://{domain}/{project}",
- "gittemplate": "git://{domain}/{project}.git{#comittish}",
- "sshtemplate": "git@{domain}:/{project}.git{#comittish}",
- "sshurltemplate": "git+ssh://git@{domain}/{project}.git{#comittish}",
- "browsetemplate": "https://{domain}/{project}{/comittish}",
- "docstemplate": "https://{domain}/{project}{/comittish}",
- "httpstemplate": "https://{domain}/{project}.git{#comittish}",
- },
-}
-
-Object.keys(gitHosts).forEach(function(host) {
- gitHosts[host].protocols_re = RegExp("^(" +
- gitHosts[host].protocols.map(function(P){
- return P.replace(/([\\+*{}()\[\]$^|])/g, "\\$1")
- }).join("|") + "):$")
-})
-
-GitHost.prototype.shortcut = function () {
- return this.type + ":" + this.path()
-}
-
-GitHost.prototype.hash = function () {
- return this.comittish ? "#" + this.comittish : ""
-}
-
-GitHost.prototype.path = function () {
- return this.user + "/" + this.project + this.hash()
-}
-
-GitHost.prototype._fill = function (template, vars) {
- if (!template) throw new Error("Tried to fill without template")
- if (!vars) vars = {}
- var self = this
- Object.keys(this).forEach(function(K){ if (self[K]!=null && vars[K]==null) vars[K] = self[K] })
- var rawComittish = vars.comittish
- Object.keys(vars).forEach(function(K){ (K[0]!='#') && (vars[K] = encodeURIComponent(vars[K])) })
- vars["#comittish"] = rawComittish ? "#" + rawComittish : ""
- vars["/tree/comittish"] = vars.comittish ? "/"+vars.treepath+"/" + vars.comittish : "",
- vars["/comittish"] = vars.comittish ? "/" + vars.comittish : ""
- vars.comittish = vars.comittish || "master"
- var res = template
- Object.keys(vars).forEach(function(K){
- res = res.replace(new RegExp("[{]" + K + "[}]", "g"), vars[K])
- })
- return res
-}
-
-GitHost.prototype.ssh = function () {
- var sshtemplate = this.sshtemplate || gitHostDefaults.sshtemplate
- return this._fill(sshtemplate)
-}
-
-GitHost.prototype.sshurl = function () {
- var sshurltemplate = this.sshurltemplate || gitHostDefaults.sshurltemplate
- return this._fill(sshurltemplate)
-}
-
-GitHost.prototype.browse = function () {
- var browsetemplate = this.browsetemplate || gitHostDefaults.browsetemplate
- return this._fill(browsetemplate)
-}
-
-GitHost.prototype.docs = function () {
- var docstemplate = this.docstemplate || gitHostDefaults.docstemplate
- return this._fill(docstemplate)
-}
-
-GitHost.prototype.bugs = function() {
- if (! this.bugstemplate) return
- return this._fill(this.bugstemplate)
-}
-
-GitHost.prototype.https = function () {
- var httpstemplate = this.httpstemplate || gitHostDefaults.httpstemplate
- return this._fill(httpstemplate)
-}
-
-GitHost.prototype.git = function () {
- if (! this.gittemplate) return
- return this._fill(this.gittemplate)
-}
-
-GitHost.prototype.file = function (P) {
- var filetemplate = this.filetemplate || gitHostDefaults.filetemplate
- return this._fill(filetemplate, {
- path: P.replace(/^[/]+/g, "")
- })
-}
-
-GitHost.prototype.toString = function () {
- return this[this.default||"sshurl"]()
-}
diff --git a/deps/npm/node_modules/hosted-git-info/package.json b/deps/npm/node_modules/hosted-git-info/package.json
index 4e38cb4..81f477e 100644
--- a/deps/npm/node_modules/hosted-git-info/package.json
+++ b/deps/npm/node_modules/hosted-git-info/package.json
@@ -1,6 +1,6 @@
{
"name": "hosted-git-info",
- "version": "1.5.3",
+ "version": "2.1.2",
"description": "Provides metadata and conversions from repository urls for Github, Bitbucket and Gitlab",
"main": "index.js",
"repository": {
@@ -24,32 +24,16 @@
},
"homepage": "https://github.com/npm/hosted-git-info",
"scripts": {
- "test": "tap test/*.js"
+ "test": "standard && tap test/*.js"
},
"devDependencies": {
+ "standard": "^3.3.2",
"tap": "^0.4.13"
},
- "gitHead": "153325f997813ebf8a7ae07b322b4fa89aa25f7d",
- "_id": "hosted-git-info@1.5.3",
- "_shasum": "1f46e25e9c0e207852fb7a4b94422ed5f09a03f5",
- "_from": "hosted-git-info@>=1.5.3 <1.6.0",
- "_npmVersion": "2.4.0",
- "_nodeVersion": "0.10.33",
- "_npmUser": {
- "name": "iarna",
- "email": "me@re-becca.org"
- },
- "maintainers": [
- {
- "name": "iarna",
- "email": "me@re-becca.org"
- }
- ],
- "dist": {
- "shasum": "1f46e25e9c0e207852fb7a4b94422ed5f09a03f5",
- "tarball": "http://registry.npmjs.org/hosted-git-info/-/hosted-git-info-1.5.3.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-1.5.3.tgz",
- "readme": "ERROR: No README data found!"
+ "readme": "# hosted-git-info\n\nThis will let you identify and transform various git hosts URLs between\nprotocols. It also can tell you what the URL is for the raw path for\nparticular file for direct access without git.\n\n## Usage\n\n```javascript\nvar hostedGitInfo = require(\"hosted-git-info\")\nvar info = hostedGitInfo.fromUrl(\"git@github.com:npm/hosted-git-info.git\")\n/* info looks like:\n{\n type: \"github\",\n domain: \"github.com\",\n user: \"npm\",\n project: \"hosted-git-info\"\n}\n*/\n```\n\nIf the URL can't be matched with a git host, `null` will be returned. We\ncan match git, ssh and https urls. Additionally, we can match ssh connect\nstrings (`git@github.com:npm/hosted-git-info`) and shortcuts (eg,\n`github:npm/hosted-git-info`). Github specifically, is detected in the case\nof a third, unprefixed, form: `npm/hosted-git-info`.\n\nIf it does match, the returned object has properties of:\n\n* info.type -- The short name of the service\n* info.domain -- The domain for git protocol use\n* info.user -- The name of the user/org on the git host\n* info.project -- The name of the project on the git host\n\nAnd methods of:\n\n* info.file(path)\n\nGiven the path of a file relative to the repository, returns a URL for\ndirectly fetching it from the githost. If no comittish was set then\n`master` will be used as the default.\n\nFor example `hostedGitInfo.fromUrl(\"git@github.com:npm/hosted-git-info.git#v1.0.0\").file(\"package.json\")`\nwould return `https://raw.githubusercontent.com/npm/hosted-git-info/v1.0.0/package.json`\n\n* info.shortcut()\n\neg, `github:npm/hosted-git-info`\n\n* info.browse()\n\neg, `https://github.com/npm/hosted-git-info/tree/v1.2.0`\n\n* info.bugs()\n\neg, `https://github.com/npm/hosted-git-info/issues`\n\n* info.docs()\n\neg, `https://github.com/npm/hosted-git-info/tree/v1.2.0#readme`\n\n* info.https()\n\neg, `git+https://github.com/npm/hosted-git-info.git`\n\n* info.sshurl()\n\neg, `git+ssh://git@github.com/npm/hosted-git-info.git`\n\n* info.ssh()\n\neg, `git@github.com:npm/hosted-git-info.git`\n\n* info.path()\n\neg, `npm/hosted-git-info`\n\n* info.getDefaultRepresentation()\n\nReturns the default output type. The default output type is based on the\nstring you passed in to be parsed\n\n* info.toString()\n\nUses the getDefaultRepresentation to call one of the other methods to get a URL for\nthis resource. As such `hostedGitInfo.fromUrl(url).toString()` will give\nyou a normalized version of the URL that still uses the same protocol.\n\nShortcuts will still be returned as shortcuts, but the special case github\nform of `org/project` will be normalized to `github:org/project`.\n\nSSH connect strings will be normalized into `git+ssh` URLs.\n\n\n## Supported hosts\n\nCurrently this supports Github, Bitbucket and Gitlab. Pull requests for\nadditional hosts welcome.\n\n",
+ "readmeFilename": "README.md",
+ "gitHead": "9f24fee147bb76595e234b7556ecc9d0448215fa",
+ "_id": "hosted-git-info@2.1.2",
+ "_shasum": "f947976852931851c33644bbce80d1e499795246",
+ "_from": "hosted-git-info@>=2.1.2 <2.2.0"
}
diff --git a/deps/npm/node_modules/hosted-git-info/test/basic.js b/deps/npm/node_modules/hosted-git-info/test/basic.js
index e56ef9a..0b93f50 100644
--- a/deps/npm/node_modules/hosted-git-info/test/basic.js
+++ b/deps/npm/node_modules/hosted-git-info/test/basic.js
@@ -1,9 +1,15 @@
-"use strict"
-var HostedGit = require("../index")
-var test = require("tap").test
+'use strict'
+var HostedGit = require('../index')
+var test = require('tap').test
-test("basic", function (t) {
- t.is(HostedGit.fromUrl("https://google.com"), undefined, "null on failure")
-
- t.end()
+test('basic', function (t) {
+ t.is(HostedGit.fromUrl('https://google.com'), undefined, 'null on failure')
+ t.is(HostedGit.fromUrl('https://github.com/abc/def').getDefaultRepresentation(), 'https', 'match https urls')
+ t.is(HostedGit.fromUrl('ssh://git@github.com/abc/def').getDefaultRepresentation(), 'sshurl', 'match ssh urls')
+ t.is(HostedGit.fromUrl('git+ssh://git@github.com/abc/def').getDefaultRepresentation(), 'sshurl', 'match git+ssh urls')
+ t.is(HostedGit.fromUrl('git+https://github.com/abc/def').getDefaultRepresentation(), 'https', 'match git+https urls')
+ t.is(HostedGit.fromUrl('git@github.com:abc/def').getDefaultRepresentation(), 'sshurl', 'match ssh connect strings')
+ t.is(HostedGit.fromUrl('git://github.com/abc/def').getDefaultRepresentation(), 'git', 'match git urls')
+ t.is(HostedGit.fromUrl('github:abc/def').getDefaultRepresentation(), 'shortcut', 'match shortcuts')
+ t.end()
})
diff --git a/deps/npm/node_modules/hosted-git-info/test/bitbucket-https-with-embedded-auth.js b/deps/npm/node_modules/hosted-git-info/test/bitbucket-https-with-embedded-auth.js
new file mode 100644
index 0000000..a2feb2f
--- /dev/null
+++ b/deps/npm/node_modules/hosted-git-info/test/bitbucket-https-with-embedded-auth.js
@@ -0,0 +1,27 @@
+'use strict'
+var HostedGit = require('../index')
+var test = require('tap').test
+
+test('Bitbucket HTTPS URLs with embedded auth', function (t) {
+ t.is(
+ HostedGit.fromUrl('https://user:pass@bitbucket.org/user/repo.git').toString(),
+ 'git+https://user:pass@bitbucket.org/user/repo.git',
+ 'credentials were included in URL'
+ )
+ t.is(
+ HostedGit.fromUrl('https://user:pass@bitbucket.org/user/repo').toString(),
+ 'git+https://user:pass@bitbucket.org/user/repo.git',
+ 'credentials were included in URL'
+ )
+ t.is(
+ HostedGit.fromUrl('git+https://user:pass@bitbucket.org/user/repo.git').toString(),
+ 'git+https://user:pass@bitbucket.org/user/repo.git',
+ 'credentials were included in URL'
+ )
+ t.is(
+ HostedGit.fromUrl('git+https://user:pass@bitbucket.org/user/repo').toString(),
+ 'git+https://user:pass@bitbucket.org/user/repo.git',
+ 'credentials were included in URL'
+ )
+ t.end()
+})
diff --git a/deps/npm/node_modules/hosted-git-info/test/bitbucket.js b/deps/npm/node_modules/hosted-git-info/test/bitbucket.js
index 8712723..72e4ba1 100644
--- a/deps/npm/node_modules/hosted-git-info/test/bitbucket.js
+++ b/deps/npm/node_modules/hosted-git-info/test/bitbucket.js
@@ -1,23 +1,23 @@
-"use strict"
-var HostedGit = require("../index")
-var test = require("tap").test
+'use strict'
+var HostedGit = require('../index')
+var test = require('tap').test
-test("fromUrl(bitbucket url)", function (t) {
- function verify(host, label, branch) {
+test('fromUrl(bitbucket url)', function (t) {
+ function verify (host, label, branch) {
var hostinfo = HostedGit.fromUrl(host)
- var hash = branch ? "#" + branch : ""
+ var hash = branch ? '#' + branch : ''
t.ok(hostinfo, label)
- if (! hostinfo) return
- t.is( hostinfo.https(), "https://bitbucket.org/111/222.git" + hash, label + " -> https" )
- t.is( hostinfo.browse(), "https://bitbucket.org/111/222" + (branch ? "/src/" + branch : ""), label + " -> browse" )
- t.is( hostinfo.docs(), "https://bitbucket.org/111/222" + (branch ? "/src/" + branch : "") + "#readme", label + " -> docs" )
- t.is( hostinfo.ssh(), "git@bitbucket.org:111/222.git" + hash, label + " -> ssh" )
- t.is( hostinfo.sshurl(), "git+ssh://git@bitbucket.org/111/222.git" + hash, label + " -> sshurl" )
- t.is( (""+hostinfo), "git+ssh://git@bitbucket.org/111/222.git" + hash, label + " -> stringify" )
- t.is( hostinfo.file("C"), "https://bitbucket.org/111/222/raw/"+(branch||"master")+"/C", label + " -> file" )
+ if (!hostinfo) return
+ t.is(hostinfo.https(), 'git+https://bitbucket.org/111/222.git' + hash, label + ' -> https')
+ t.is(hostinfo.browse(), 'https://bitbucket.org/111/222' + (branch ? '/src/' + branch : ''), label + ' -> browse')
+ t.is(hostinfo.docs(), 'https://bitbucket.org/111/222' + (branch ? '/src/' + branch : '') + '#readme', label + ' -> docs')
+ t.is(hostinfo.ssh(), 'git@bitbucket.org:111/222.git' + hash, label + ' -> ssh')
+ t.is(hostinfo.sshurl(), 'git+ssh://git@bitbucket.org/111/222.git' + hash, label + ' -> sshurl')
+ t.is(hostinfo.shortcut(), 'bitbucket:111/222' + hash, label + ' -> shortcut')
+ t.is(hostinfo.file('C'), 'https://bitbucket.org/111/222/raw/' + (branch || 'master') + '/C', label + ' -> file')
}
- require('./lib/standard-tests')(verify, "bitbucket.org", "bitbucket")
+ require('./lib/standard-tests')(verify, 'bitbucket.org', 'bitbucket')
t.end()
})
diff --git a/deps/npm/node_modules/hosted-git-info/test/gist.js b/deps/npm/node_modules/hosted-git-info/test/gist.js
index 3081c3d..cf36d3c 100644
--- a/deps/npm/node_modules/hosted-git-info/test/gist.js
+++ b/deps/npm/node_modules/hosted-git-info/test/gist.js
@@ -1,39 +1,41 @@
-"use strict"
-var HostedGit = require("../index")
-var test = require("tap").test
+'use strict'
+var HostedGit = require('../index')
+var test = require('tap').test
-
-test("fromUrl(gist url)", function (t) {
- function verify(host, label, branch) {
+test('fromUrl(gist url)', function (t) {
+ function verify (host, label, branch) {
var hostinfo = HostedGit.fromUrl(host)
- var hash = branch ? "#" + branch : ""
+ var hash = branch ? '#' + branch : ''
t.ok(hostinfo, label)
- if (! hostinfo) return
- t.is( hostinfo.https(), "https://gist.github.com/222.git" + hash, label + " -> https" )
- t.is( hostinfo.git(), "git://gist.github.com/222.git" + hash, label + " -> git" )
- t.is( hostinfo.browse(), "https://gist.github.com/222" + (branch ? "/" + branch : ""), label + " -> browse" )
- t.is( hostinfo.bugs(), "https://gist.github.com/222", label + " -> bugs" )
- t.is( hostinfo.docs(), "https://gist.github.com/222" + (branch ? "/" + branch : ""), label + " -> docs" )
- t.is( hostinfo.ssh(), "git@gist.github.com:/222.git" + hash, label + " -> ssh" )
- t.is( hostinfo.sshurl(), "git+ssh://git@gist.github.com/222.git" + hash, label + " -> sshurl" )
- t.is( (""+hostinfo), "git+ssh://git@gist.github.com/222.git" + hash, label + " -> stringify" )
+ if (!hostinfo) return
+ t.is(hostinfo.https(), 'git+https://gist.github.com/222.git' + hash, label + ' -> https')
+ t.is(hostinfo.git(), 'git://gist.github.com/222.git' + hash, label + ' -> git')
+ t.is(hostinfo.browse(), 'https://gist.github.com/222' + (branch ? '/' + branch : ''), label + ' -> browse')
+ t.is(hostinfo.bugs(), 'https://gist.github.com/222', label + ' -> bugs')
+ t.is(hostinfo.docs(), 'https://gist.github.com/222' + (branch ? '/' + branch : ''), label + ' -> docs')
+ t.is(hostinfo.ssh(), 'git@gist.github.com:/222.git' + hash, label + ' -> ssh')
+ t.is(hostinfo.sshurl(), 'git+ssh://git@gist.github.com/222.git' + hash, label + ' -> sshurl')
+ t.is(hostinfo.shortcut(), 'gist:222' + hash, label + ' -> shortcut')
if (hostinfo.user) {
- t.is( hostinfo.file("C"), "https://gist.githubusercontent.com/111/222/raw/"+(branch?branch+"/":"")+"C", label + " -> file" )
+ t.is(hostinfo.file('C'), 'https://gist.githubusercontent.com/111/222/raw/' + (branch ? branch + '/' : '') + 'C', label + ' -> file')
}
}
- verify("git@gist.github.com:222.git", "git@")
- var hostinfo = HostedGit.fromUrl("git@gist.github.com:/ef860c7z5e0de3179341.git")
- if (t.ok(hostinfo, "git@hex")) {
- t.is( hostinfo.https(), "https://gist.github.com/ef860c7z5e0de3179341.git", "git@hex -> https" )
+ verify('git@gist.github.com:222.git', 'git@')
+ var hostinfo = HostedGit.fromUrl('git@gist.github.com:/ef860c7z5e0de3179341.git')
+ if (t.ok(hostinfo, 'git@hex')) {
+ t.is(hostinfo.https(), 'git+https://gist.github.com/ef860c7z5e0de3179341.git', 'git@hex -> https')
}
- verify("git@gist.github.com:/222.git", "git@/")
- verify("git://gist.github.com/222", "git")
- verify("git://gist.github.com/222.git", "git.git")
- verify("git://gist.github.com/222#branch", "git#branch", "branch")
- verify("git://gist.github.com/222.git#branch", "git.git#branch", "branch")
+ verify('git@gist.github.com:/222.git', 'git@/')
+ verify('git://gist.github.com/222', 'git')
+ verify('git://gist.github.com/222.git', 'git.git')
+ verify('git://gist.github.com/222#branch', 'git#branch', 'branch')
+ verify('git://gist.github.com/222.git#branch', 'git.git#branch', 'branch')
+
+ require('./lib/standard-tests')(verify, 'gist.github.com', 'gist')
- require('./lib/standard-tests')(verify, "gist.github.com", "gist")
+ verify(HostedGit.fromUrl('gist:111/222').toString(), 'round-tripped shortcut')
+ verify('gist:222', 'shortened shortcut')
t.end()
})
diff --git a/deps/npm/node_modules/hosted-git-info/test/github.js b/deps/npm/node_modules/hosted-git-info/test/github.js
index 1b945d2..56098a3 100644
--- a/deps/npm/node_modules/hosted-git-info/test/github.js
+++ b/deps/npm/node_modules/hosted-git-info/test/github.js
@@ -1,41 +1,40 @@
-"use strict"
-var HostedGit = require("../index")
-var test = require("tap").test
+'use strict'
+var HostedGit = require('../index')
+var test = require('tap').test
-
-test("fromUrl(github url)", function (t) {
- function verify(host, label, branch) {
+test('fromUrl(github url)', function (t) {
+ function verify (host, label, branch) {
var hostinfo = HostedGit.fromUrl(host)
- var hash = branch ? "#" + branch : ""
+ var hash = branch ? '#' + branch : ''
t.ok(hostinfo, label)
- if (! hostinfo) return
- t.is( hostinfo.https(), "https://github.com/111/222.git" + hash, label + " -> https" )
- t.is( hostinfo.git(), "git://github.com/111/222.git" + hash, label + " -> git" )
- t.is( hostinfo.browse(), "https://github.com/111/222" + (branch ? "/tree/" + branch : ""), label + " -> browse" )
- t.is( hostinfo.bugs(), "https://github.com/111/222/issues", label + " -> bugs" )
- t.is( hostinfo.docs(), "https://github.com/111/222" + (branch ? "/tree/" + branch : "") + "#readme", label + " -> docs" )
- t.is( hostinfo.ssh(), "git@github.com:111/222.git" + hash, label + " -> ssh" )
- t.is( hostinfo.sshurl(), "git+ssh://git@github.com/111/222.git" + hash, label + " -> sshurl" )
- t.is( (""+hostinfo), "git+ssh://git@github.com/111/222.git" + hash, label + " -> stringify" )
- t.is( hostinfo.file("C"), "https://raw.githubusercontent.com/111/222/"+(branch||"master")+"/C", label + " -> file" )
+ if (!hostinfo) return
+ t.is(hostinfo.https(), 'git+https://github.com/111/222.git' + hash, label + ' -> https')
+ t.is(hostinfo.git(), 'git://github.com/111/222.git' + hash, label + ' -> git')
+ t.is(hostinfo.browse(), 'https://github.com/111/222' + (branch ? '/tree/' + branch : ''), label + ' -> browse')
+ t.is(hostinfo.bugs(), 'https://github.com/111/222/issues', label + ' -> bugs')
+ t.is(hostinfo.docs(), 'https://github.com/111/222' + (branch ? '/tree/' + branch : '') + '#readme', label + ' -> docs')
+ t.is(hostinfo.ssh(), 'git@github.com:111/222.git' + hash, label + ' -> ssh')
+ t.is(hostinfo.sshurl(), 'git+ssh://git@github.com/111/222.git' + hash, label + ' -> sshurl')
+ t.is(hostinfo.shortcut(), 'github:111/222' + hash, label + ' -> shortcut')
+ t.is(hostinfo.file('C'), 'https://raw.githubusercontent.com/111/222/' + (branch || 'master') + '/C', label + ' -> file')
}
// github shorturls
- verify("111/222", "github-short")
- verify("111/222#branch", "github-short#branch", "branch")
+ verify('111/222', 'github-short')
+ verify('111/222#branch', 'github-short#branch', 'branch')
// insecure protocols
- verify("git://github.com/111/222", "git")
- verify("git://github.com/111/222.git", "git.git")
- verify("git://github.com/111/222#branch", "git#branch", "branch")
- verify("git://github.com/111/222.git#branch", "git.git#branch", "branch")
+ verify('git://github.com/111/222', 'git')
+ verify('git://github.com/111/222.git', 'git.git')
+ verify('git://github.com/111/222#branch', 'git#branch', 'branch')
+ verify('git://github.com/111/222.git#branch', 'git.git#branch', 'branch')
- verify("http://github.com/111/222", "http")
- verify("http://github.com/111/222.git", "http.git")
- verify("http://github.com/111/222#branch", "http#branch", "branch")
- verify("http://github.com/111/222.git#branch", "http.git#branch", "branch")
+ verify('http://github.com/111/222', 'http')
+ verify('http://github.com/111/222.git', 'http.git')
+ verify('http://github.com/111/222#branch', 'http#branch', 'branch')
+ verify('http://github.com/111/222.git#branch', 'http.git#branch', 'branch')
- require('./lib/standard-tests')(verify, "github.com", "github")
+ require('./lib/standard-tests')(verify, 'github.com', 'github')
t.end()
})
diff --git a/deps/npm/node_modules/hosted-git-info/test/gitlab.js b/deps/npm/node_modules/hosted-git-info/test/gitlab.js
index 1b25d60..315c908 100644
--- a/deps/npm/node_modules/hosted-git-info/test/gitlab.js
+++ b/deps/npm/node_modules/hosted-git-info/test/gitlab.js
@@ -1,24 +1,23 @@
-"use strict"
-var HostedGit = require("../index")
-var test = require("tap").test
+'use strict'
+var HostedGit = require('../index')
+var test = require('tap').test
-
-test("fromUrl(gitlab url)", function (t) {
- function verify(host, label, branch) {
+test('fromUrl(gitlab url)', function (t) {
+ function verify (host, label, branch) {
var hostinfo = HostedGit.fromUrl(host)
- var hash = branch ? "#" + branch : ""
+ var hash = branch ? '#' + branch : ''
t.ok(hostinfo, label)
- if (! hostinfo) return
- t.is( hostinfo.https(), "https://gitlab.com/111/222.git" + hash, label + " -> https" )
- t.is( hostinfo.browse(), "https://gitlab.com/111/222" + (branch ? "/tree/" + branch : ""), label + " -> browse" )
- t.is( hostinfo.docs(), "https://gitlab.com/111/222" + (branch ? "/tree/" + branch : "") + "#README", label + " -> docs" )
- t.is( hostinfo.ssh(), "git@gitlab.com:111/222.git" + hash, label + " -> ssh" )
- t.is( hostinfo.sshurl(), "git+ssh://git@gitlab.com/111/222.git" + hash, label + " -> sshurl" )
- t.is( (""+hostinfo), "git+ssh://git@gitlab.com/111/222.git" + hash, label + " -> stringify" )
- t.is( hostinfo.file("C"), "https://gitlab.com/111/222/raw/"+(branch||"master")+"/C", label + " -> file" )
+ if (!hostinfo) return
+ t.is(hostinfo.https(), 'git+https://gitlab.com/111/222.git' + hash, label + ' -> https')
+ t.is(hostinfo.browse(), 'https://gitlab.com/111/222' + (branch ? '/tree/' + branch : ''), label + ' -> browse')
+ t.is(hostinfo.docs(), 'https://gitlab.com/111/222' + (branch ? '/tree/' + branch : '') + '#README', label + ' -> docs')
+ t.is(hostinfo.ssh(), 'git@gitlab.com:111/222.git' + hash, label + ' -> ssh')
+ t.is(hostinfo.sshurl(), 'git+ssh://git@gitlab.com/111/222.git' + hash, label + ' -> sshurl')
+ t.is(hostinfo.shortcut(), 'gitlab:111/222' + hash, label + ' -> shortcut')
+ t.is(hostinfo.file('C'), 'https://gitlab.com/111/222/raw/' + (branch || 'master') + '/C', label + ' -> file')
}
- require('./lib/standard-tests')(verify, "gitlab.com", "gitlab")
+ require('./lib/standard-tests')(verify, 'gitlab.com', 'gitlab')
t.end()
})
diff --git a/deps/npm/node_modules/hosted-git-info/test/https-with-inline-auth.js b/deps/npm/node_modules/hosted-git-info/test/https-with-inline-auth.js
new file mode 100644
index 0000000..5e2f5b5
--- /dev/null
+++ b/deps/npm/node_modules/hosted-git-info/test/https-with-inline-auth.js
@@ -0,0 +1,39 @@
+'use strict'
+var HostedGit = require('../index')
+var test = require('tap').test
+
+test('HTTPS GitHub URL with embedded auth -- generally not a good idea', function (t) {
+ function verify (host, label, branch) {
+ var hostinfo = HostedGit.fromUrl(host)
+ var hash = branch ? '#' + branch : ''
+ t.ok(hostinfo, label)
+ if (!hostinfo) return
+ t.is(hostinfo.https(), 'git+https://user:pass@github.com/111/222.git' + hash, label + ' -> https')
+ t.is(hostinfo.git(), 'git://user:pass@github.com/111/222.git' + hash, label + ' -> git')
+ t.is(hostinfo.browse(), 'https://github.com/111/222' + (branch ? '/tree/' + branch : ''), label + ' -> browse')
+ t.is(hostinfo.bugs(), 'https://github.com/111/222/issues', label + ' -> bugs')
+ t.is(hostinfo.docs(), 'https://github.com/111/222' + (branch ? '/tree/' + branch : '') + '#readme', label + ' -> docs')
+ t.is(hostinfo.ssh(), 'git@github.com:111/222.git' + hash, label + ' -> ssh')
+ t.is(hostinfo.sshurl(), 'git+ssh://git@github.com/111/222.git' + hash, label + ' -> sshurl')
+ t.is(hostinfo.shortcut(), 'github:111/222' + hash, label + ' -> shortcut')
+ t.is(hostinfo.file('C'), 'https://user:pass@raw.githubusercontent.com/111/222/' + (branch || 'master') + '/C', label + ' -> file')
+ }
+
+ // insecure protocols
+ verify('git://user:pass@github.com/111/222', 'git')
+ verify('git://user:pass@github.com/111/222.git', 'git.git')
+ verify('git://user:pass@github.com/111/222#branch', 'git#branch', 'branch')
+ verify('git://user:pass@github.com/111/222.git#branch', 'git.git#branch', 'branch')
+
+ verify('https://user:pass@github.com/111/222', 'https')
+ verify('https://user:pass@github.com/111/222.git', 'https.git')
+ verify('https://user:pass@github.com/111/222#branch', 'https#branch', 'branch')
+ verify('https://user:pass@github.com/111/222.git#branch', 'https.git#branch', 'branch')
+
+ verify('http://user:pass@github.com/111/222', 'http')
+ verify('http://user:pass@github.com/111/222.git', 'http.git')
+ verify('http://user:pass@github.com/111/222#branch', 'http#branch', 'branch')
+ verify('http://user:pass@github.com/111/222.git#branch', 'http.git#branch', 'branch')
+
+ t.end()
+})
diff --git a/deps/npm/node_modules/hosted-git-info/test/lib/standard-tests.js b/deps/npm/node_modules/hosted-git-info/test/lib/standard-tests.js
index c505342..929fcca 100644
--- a/deps/npm/node_modules/hosted-git-info/test/lib/standard-tests.js
+++ b/deps/npm/node_modules/hosted-git-info/test/lib/standard-tests.js
@@ -1,28 +1,27 @@
-"use strict"
+'use strict'
module.exports = function (verify, domain, shortname) {
- verify("https://" + domain + "/111/222", "https")
- verify("https://" + domain + "/111/222.git", "https.git")
- verify("https://" + domain + "/111/222#branch", "https#branch", "branch")
- verify("https://" + domain + "/111/222.git#branch", "https.git#branch", "branch")
+ verify('https://' + domain + '/111/222', 'https')
+ verify('https://' + domain + '/111/222.git', 'https.git')
+ verify('https://' + domain + '/111/222#branch', 'https#branch', 'branch')
+ verify('https://' + domain + '/111/222.git#branch', 'https.git#branch', 'branch')
- verify("git+https://" + domain + "/111/222", "git+https")
- verify("git+https://" + domain + "/111/222.git", "git+https.git")
- verify("git+https://" + domain + "/111/222#branch", "git+https#branch", "branch")
- verify("git+https://" + domain + "/111/222.git#branch", "git+https.git#branch", "branch")
+ verify('git+https://' + domain + '/111/222', 'git+https')
+ verify('git+https://' + domain + '/111/222.git', 'git+https.git')
+ verify('git+https://' + domain + '/111/222#branch', 'git+https#branch', 'branch')
+ verify('git+https://' + domain + '/111/222.git#branch', 'git+https.git#branch', 'branch')
- verify("git@" + domain + ":111/222", "ssh")
- verify("git@" + domain + ":111/222.git", "ssh.git")
- verify("git@" + domain + ":111/222#branch", "ssh", "branch")
- verify("git@" + domain + ":111/222.git#branch", "ssh.git", "branch")
+ verify('git@' + domain + ':111/222', 'ssh')
+ verify('git@' + domain + ':111/222.git', 'ssh.git')
+ verify('git@' + domain + ':111/222#branch', 'ssh', 'branch')
+ verify('git@' + domain + ':111/222.git#branch', 'ssh.git', 'branch')
+ verify('git+ssh://git@' + domain + '/111/222', 'ssh url')
+ verify('git+ssh://git@' + domain + '/111/222.git', 'ssh url.git')
+ verify('git+ssh://git@' + domain + '/111/222#branch', 'ssh url#branch', 'branch')
+ verify('git+ssh://git@' + domain + '/111/222.git#branch', 'ssh url.git#branch', 'branch')
- verify("git+ssh://git@" + domain + "/111/222", "ssh url")
- verify("git+ssh://git@" + domain + "/111/222.git", "ssh url.git")
- verify("git+ssh://git@" + domain + "/111/222#branch", "ssh url#branch", "branch")
- verify("git+ssh://git@" + domain + "/111/222.git#branch", "ssh url.git#branch", "branch")
-
- verify(shortname + ":111/222", "shortcut")
- verify(shortname + ":111/222.git", "shortcut.git")
- verify(shortname + ":111/222#branch", "shortcut#branch", "branch")
- verify(shortname + ":111/222.git#branch", "shortcut.git#branch", "branch")
+ verify(shortname + ':111/222', 'shortcut')
+ verify(shortname + ':111/222.git', 'shortcut.git')
+ verify(shortname + ':111/222#branch', 'shortcut#branch', 'branch')
+ verify(shortname + ':111/222.git#branch', 'shortcut.git#branch', 'branch')
}
diff --git a/deps/npm/node_modules/init-package-json/package.json b/deps/npm/node_modules/init-package-json/package.json
index dd75114..6cd75e7 100644
--- a/deps/npm/node_modules/init-package-json/package.json
+++ b/deps/npm/node_modules/init-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "init-package-json",
- "version": "1.3.2",
+ "version": "1.4.0",
"main": "init-package-json.js",
"scripts": {
"test": "tap test/*.js"
@@ -20,7 +20,7 @@
"glob": "^5.0.3",
"promzard": "^0.3.0",
"read": "~1.0.1",
- "read-package-json": "1",
+ "read-package-json": "1 || 2",
"semver": "2.x || 3.x || 4",
"validate-npm-package-name": "^2.0.1"
},
@@ -39,14 +39,38 @@
"prompt",
"start"
],
- "readme": "# init-package-json\n\nA node module to get your node module started.\n\n## Usage\n\n```javascript\nvar init = require('init-package-json')\nvar path = require('path')\n\n// a path to a promzard module. In the event that this file is\n// not found, one will be provided for you.\nvar initFile = path.resolve(process.env.HOME, '.npm-init')\n\n// the dir where we're doin stuff.\nvar dir = process.cwd()\n\n// extra stuff that gets put into the PromZard module's context.\n// In npm, this is the resolved config object. Exposed as 'config'\n// Optional.\nvar configData = { some: 'extra stuff' }\n\n// Any existing stuff from the package.json file is also exposed in the\n// PromZard module as the `package` object. There will also be free\n// vars for:\n// * `filename` path to the package.json file\n// * `basename` the tip of the package dir\n// * `dirname` the parent of the package dir\n\ninit(dir, initFile, configData, function (er, data) {\n // the data's already been written to {dir}/package.json\n // now you can do stuff with it\n})\n```\n\nOr from the command line:\n\n```\n$ npm-init\n```\n\nSee [PromZard](https://github.com/isaacs/promzard) for details about\nwhat can go in the config file.\n",
- "readmeFilename": "README.md",
- "gitHead": "4aaccb745ecba65676ae4bf105039928e697d65c",
+ "gitHead": "c422f6b38ab02d0859d757ec381e473657d4d195",
"bugs": {
"url": "https://github.com/isaacs/init-package-json/issues"
},
"homepage": "https://github.com/isaacs/init-package-json",
- "_id": "init-package-json@1.3.2",
- "_shasum": "9ad3038b52e50838d78739f16b4dfb1418909d18",
- "_from": "init-package-json@>=1.3.2 <1.4.0"
+ "_id": "init-package-json@1.4.0",
+ "_shasum": "50b49cbe284cb7a48e037f36d03817af1022f070",
+ "_from": "init-package-json@1.4.0",
+ "_npmVersion": "2.7.5",
+ "_nodeVersion": "1.6.2",
+ "_npmUser": {
+ "name": "iarna",
+ "email": "me@re-becca.org"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ {
+ "name": "othiym23",
+ "email": "ogd@aoaioxxysz.net"
+ },
+ {
+ "name": "iarna",
+ "email": "me@re-becca.org"
+ }
+ ],
+ "dist": {
+ "shasum": "50b49cbe284cb7a48e037f36d03817af1022f070",
+ "tarball": "http://registry.npmjs.org/init-package-json/-/init-package-json-1.4.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.4.0.tgz"
}
diff --git a/deps/npm/node_modules/lru-cache/lib/lru-cache.js b/deps/npm/node_modules/lru-cache/lib/lru-cache.js
index d1d1381..7d3b04f 100644
--- a/deps/npm/node_modules/lru-cache/lib/lru-cache.js
+++ b/deps/npm/node_modules/lru-cache/lib/lru-cache.js
@@ -217,6 +217,7 @@ function get (self, key, doUse) {
function use (self, hit) {
shiftLU(self, hit)
hit.lu = self._mru ++
+ if (self._maxAge) hit.now = Date.now()
self._lruList[hit.lu] = hit
}
diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json
index d3fbddb..9e2d81f 100644
--- a/deps/npm/node_modules/lru-cache/package.json
+++ b/deps/npm/node_modules/lru-cache/package.json
@@ -1,7 +1,7 @@
{
"name": "lru-cache",
"description": "A cache object that deletes the least-recently-used items.",
- "version": "2.5.0",
+ "version": "2.5.2",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me"
@@ -15,19 +15,38 @@
"url": "git://github.com/isaacs/node-lru-cache.git"
},
"devDependencies": {
- "tap": "",
+ "tap": "^0.7.1",
"weak": ""
},
"license": {
"type": "MIT",
"url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE"
},
- "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum size of the cache, checked by applying the length\n function to all values in the cache. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think.\n\n* `peek(key)`\n\n Returns the key value (or `undefined` if not found) without\n updating the \"recently used\"-ness of the key.\n\n (If you find yourself using this a lot, you *might* be using the\n wrong sort of data structure, but there are some use cases where\n it's handy.)\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n",
- "readmeFilename": "README.md",
+ "gitHead": "ec01cc48ac06ee07b2b56a219d5aa931f899b21b",
"bugs": {
"url": "https://github.com/isaacs/node-lru-cache/issues"
},
"homepage": "https://github.com/isaacs/node-lru-cache",
- "_id": "lru-cache@2.5.0",
- "_from": "lru-cache@latest"
+ "_id": "lru-cache@2.5.2",
+ "_shasum": "1fddad938aae1263ce138680be1b3f591c0ab41c",
+ "_from": "lru-cache@>=2.5.2 <2.6.0",
+ "_npmVersion": "2.7.6",
+ "_nodeVersion": "1.4.2",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "dist": {
+ "shasum": "1fddad938aae1263ce138680be1b3f591c0ab41c",
+ "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.5.2.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.2.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/lru-cache/t.js b/deps/npm/node_modules/lru-cache/t.js
new file mode 100644
index 0000000..08e5180
--- /dev/null
+++ b/deps/npm/node_modules/lru-cache/t.js
@@ -0,0 +1,25 @@
+var LRU = require("./");
+
+var cache = LRU( {
+ max: 1,
+ maxAge: 1000
+} );
+
+cache.set( "1234", 1 );
+
+setTimeout( function() {
+ cache.set( "1234", 2 );
+ console.log( "testing after 5s: " + cache.get( "1234" ) );
+}, 500 );
+
+setTimeout( function() {
+ console.log( "testing after 9s: " + cache.get( "1234" ) );
+}, 900 );
+
+setTimeout( function() {
+ console.log( "testing after 11s: " + cache.get( "1234" ) );
+}, 1100 );
+
+setTimeout( function() {
+ console.log( "testing after 16s: " + cache.get( "1234" ) );
+}, 1600 );
diff --git a/deps/npm/node_modules/lru-cache/test/basic.js b/deps/npm/node_modules/lru-cache/test/basic.js
index f72697c..799e72d 100644
--- a/deps/npm/node_modules/lru-cache/test/basic.js
+++ b/deps/npm/node_modules/lru-cache/test/basic.js
@@ -215,7 +215,7 @@ test("drop the old items", function(t) {
cache.set("c", "C")
// timed out
t.notOk(cache.get("a"))
- }, 60)
+ }, 60 + 25)
setTimeout(function () {
t.notOk(cache.get("b"))
diff --git a/deps/npm/node_modules/lru-cache/test/timeout.js b/deps/npm/node_modules/lru-cache/test/timeout.js
new file mode 100644
index 0000000..5dce62a
--- /dev/null
+++ b/deps/npm/node_modules/lru-cache/test/timeout.js
@@ -0,0 +1,21 @@
+var test = require("tap").test
+var LRU = require("../")
+
+var cache = LRU( {
+ max: 1,
+ maxAge: 500
+} );
+
+test('set the key', function (t) {
+ cache.set( "1234", 1 );
+ t.end()
+})
+
+for (var i = 0; i < 10; i ++) {
+ test('get after ' + i + '00ms', function (t) {
+ setTimeout(function () {
+ t.equal(cache.get('1234'), 1)
+ t.end()
+ }, 100)
+ })
+}
diff --git a/deps/npm/node_modules/node-gyp/addon.gypi b/deps/npm/node_modules/node-gyp/addon.gypi
index 1604f24..0b81fab 100644
--- a/deps/npm/node_modules/node-gyp/addon.gypi
+++ b/deps/npm/node_modules/node-gyp/addon.gypi
@@ -1,9 +1,7 @@
{
'target_defaults': {
'type': 'loadable_module',
- 'win_delay_load_hook': 'false',
'product_prefix': '',
-
'include_dirs': [
'<(node_root_dir)/src',
'<(node_root_dir)/deps/uv/include',
@@ -15,34 +13,11 @@
'product_extension': 'node',
'defines': [ 'BUILDING_NODE_EXTENSION' ],
}],
-
['_type=="static_library"', {
# set to `1` to *disable* the -T thin archive 'ld' flag.
# older linkers don't support this flag.
'standalone_static_library': '<(standalone_static_library)'
}],
-
- ['_win_delay_load_hook=="true"', {
- # If the addon specifies `'win_delay_load_hook': 'true'` in its
- # binding.gyp, link a delay-load hook into the DLL. This hook ensures
- # that the addon will work regardless of whether the node/iojs binary
- # is named node.exe, iojs.exe, or something else.
- 'conditions': [
- [ 'OS=="win"', {
- 'sources': [
- 'src/win_delay_load_hook.c',
- ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'DelayLoadDLLs': [ 'iojs.exe', 'node.exe' ],
- # Don't print a linker warning when no imports from either .exe
- # are used.
- 'AdditionalOptions': [ '/ignore:4199' ],
- },
- },
- }],
- ],
- }],
],
'conditions': [
@@ -67,7 +42,7 @@
'-luuid.lib',
'-lodbc32.lib',
'-lDelayImp.lib',
- '-l"<(node_root_dir)/$(ConfigurationName)/iojs.lib"'
+ '-l"<(node_root_dir)/$(ConfigurationName)/node.lib"'
],
# warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent'
# needs to have dll-interface to be used by clients of class 'node::ObjectWrap'
diff --git a/deps/npm/node_modules/node-gyp/lib/build.js b/deps/npm/node_modules/node-gyp/lib/build.js
index f9722ae..df24aaf 100644
--- a/deps/npm/node_modules/node-gyp/lib/build.js
+++ b/deps/npm/node_modules/node-gyp/lib/build.js
@@ -173,7 +173,7 @@ function build (gyp, argv, callback) {
}
/**
- * Copies the iojs.lib file for the current target architecture into the
+ * Copies the node.lib file for the current target architecture into the
* current proper dev dir location.
*/
@@ -181,15 +181,15 @@ function build (gyp, argv, callback) {
if (!win || !copyDevLib) return doBuild()
var buildDir = path.resolve(nodeDir, buildType)
- , archNodeLibPath = path.resolve(nodeDir, arch, 'iojs.lib')
- , buildNodeLibPath = path.resolve(buildDir, 'iojs.lib')
+ , archNodeLibPath = path.resolve(nodeDir, arch, 'node.lib')
+ , buildNodeLibPath = path.resolve(buildDir, 'node.lib')
mkdirp(buildDir, function (err, isNew) {
if (err) return callback(err)
log.verbose('"' + buildType + '" dir needed to be created?', isNew)
var rs = fs.createReadStream(archNodeLibPath)
, ws = fs.createWriteStream(buildNodeLibPath)
- log.verbose('copying "iojs.lib" for ' + arch, buildNodeLibPath)
+ log.verbose('copying "node.lib" for ' + arch, buildNodeLibPath)
rs.pipe(ws)
rs.on('error', callback)
ws.on('error', callback)
diff --git a/deps/npm/node_modules/node-gyp/lib/install.js b/deps/npm/node_modules/node-gyp/lib/install.js
index f9176b3..6f72e6a 100644
--- a/deps/npm/node_modules/node-gyp/lib/install.js
+++ b/deps/npm/node_modules/node-gyp/lib/install.js
@@ -39,7 +39,7 @@ function install (gyp, argv, callback) {
}
}
- var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || 'https://iojs.org/dist'
+ var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || 'http://nodejs.org/dist'
// Determine which node dev files version we are installing
@@ -185,7 +185,7 @@ function install (gyp, argv, callback) {
// now download the node tarball
var tarPath = gyp.opts['tarball']
- var tarballUrl = tarPath ? tarPath : distUrl + '/v' + version + '/iojs-v' + version + '.tar.gz'
+ var tarballUrl = tarPath ? tarPath : distUrl + '/v' + version + '/node-v' + version + '.tar.gz'
, badDownload = false
, extractCount = 0
, gunzip = zlib.createGunzip()
@@ -267,7 +267,7 @@ function install (gyp, argv, callback) {
var async = 0
if (win) {
- // need to download iojs.lib
+ // need to download node.lib
async++
downloadNodeLib(deref)
}
@@ -343,36 +343,36 @@ function install (gyp, argv, callback) {
}
function downloadNodeLib (done) {
- log.verbose('on Windows; need to download `iojs.lib`...')
+ log.verbose('on Windows; need to download `node.lib`...')
var dir32 = path.resolve(devDir, 'ia32')
, dir64 = path.resolve(devDir, 'x64')
- , nodeLibPath32 = path.resolve(dir32, 'iojs.lib')
- , nodeLibPath64 = path.resolve(dir64, 'iojs.lib')
- , nodeLibUrl32 = distUrl + '/v' + version + '/win-x86/iojs.lib'
- , nodeLibUrl64 = distUrl + '/v' + version + '/win-x64/iojs.lib'
+ , nodeLibPath32 = path.resolve(dir32, 'node.lib')
+ , nodeLibPath64 = path.resolve(dir64, 'node.lib')
+ , nodeLibUrl32 = distUrl + '/v' + version + '/node.lib'
+ , nodeLibUrl64 = distUrl + '/v' + version + '/x64/node.lib'
- log.verbose('32-bit iojs.lib dir', dir32)
- log.verbose('64-bit iojs.lib dir', dir64)
- log.verbose('`iojs.lib` 32-bit url', nodeLibUrl32)
- log.verbose('`iojs.lib` 64-bit url', nodeLibUrl64)
+ log.verbose('32-bit node.lib dir', dir32)
+ log.verbose('64-bit node.lib dir', dir64)
+ log.verbose('`node.lib` 32-bit url', nodeLibUrl32)
+ log.verbose('`node.lib` 64-bit url', nodeLibUrl64)
var async = 2
mkdir(dir32, function (err) {
if (err) return done(err)
- log.verbose('streaming 32-bit iojs.lib to:', nodeLibPath32)
+ log.verbose('streaming 32-bit node.lib to:', nodeLibPath32)
var req = download(nodeLibUrl32)
if (!req) return
req.on('error', done)
req.on('response', function (res) {
if (res.statusCode !== 200) {
- done(new Error(res.statusCode + ' status code downloading 32-bit iojs.lib'))
+ done(new Error(res.statusCode + ' status code downloading 32-bit node.lib'))
return
}
getContentSha(res, function (_, checksum) {
- contentShasums['win-x86/iojs.lib'] = checksum
- log.verbose('content checksum', 'win-x86/iojs.lib', checksum)
+ contentShasums['node.lib'] = checksum
+ log.verbose('content checksum', 'node.lib', checksum)
})
var ws = fs.createWriteStream(nodeLibPath32)
@@ -385,20 +385,20 @@ function install (gyp, argv, callback) {
})
mkdir(dir64, function (err) {
if (err) return done(err)
- log.verbose('streaming 64-bit iojs.lib to:', nodeLibPath64)
+ log.verbose('streaming 64-bit node.lib to:', nodeLibPath64)
var req = download(nodeLibUrl64)
if (!req) return
req.on('error', done)
req.on('response', function (res) {
if (res.statusCode !== 200) {
- done(new Error(res.statusCode + ' status code downloading 64-bit iojs.lib'))
+ done(new Error(res.statusCode + ' status code downloading 64-bit node.lib'))
return
}
getContentSha(res, function (_, checksum) {
- contentShasums['win-x64/iojs.lib'] = checksum
- log.verbose('content checksum', 'win-x64/iojs.lib', checksum)
+ contentShasums['x64/node.lib'] = checksum
+ log.verbose('content checksum', 'x64/node.lib', checksum)
})
var ws = fs.createWriteStream(nodeLibPath64)
diff --git a/deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c b/deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c
deleted file mode 100644
index 05c4c39..0000000
--- a/deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * When this file is linked to a DLL, it sets up a delay-load hook that
- * intervenes when the DLL is trying to load 'node.exe' or 'iojs.exe'
- * dynamically. Instead of trying to locate the .exe file it'll just return
- * a handle to the process image.
- *
- * This allows compiled addons to work when node.exe or iojs.exe is renamed.
- */
-
-#ifdef _MSC_VER
-
-#define WIN32_LEAN_AND_MEAN
-#include
-
-#include
-#include
-
-static FARPROC WINAPI load_exe_hook(unsigned int event, DelayLoadInfo* info) {
- if (event != dliNotePreLoadLibrary)
- return NULL;
-
- if (_stricmp(info->szDll, "iojs.exe") != 0 &&
- _stricmp(info->szDll, "node.exe") != 0)
- return NULL;
-
- HMODULE m = GetModuleHandle(NULL);
- return (FARPROC) m;
-}
-
-PfnDliHook __pfnDliNotifyHook2 = load_exe_hook;
-
-#endif
diff --git a/deps/npm/node_modules/normalize-package-data/README.md b/deps/npm/node_modules/normalize-package-data/README.md
index 1429e40..4b15912 100644
--- a/deps/npm/node_modules/normalize-package-data/README.md
+++ b/deps/npm/node_modules/normalize-package-data/README.md
@@ -1,4 +1,4 @@
-# normalize-package-data [![Build Status](https://travis-ci.org/meryn/normalize-package-data.png?branch=master)](https://travis-ci.org/meryn/normalize-package-data)
+# normalize-package-data [![Build Status](https://travis-ci.org/npm/normalize-package-data.png?branch=master)](https://travis-ci.org/npm/normalize-package-data)
normalize-package data exports a function that normalizes package metadata. This data is typically found in a package.json file, but in principle could come from any source - for example the npm registry.
@@ -68,9 +68,11 @@ If the supplied data has an invalid name or version vield, `normalizeData` will
* If `bundledDependencies` field (a typo) exists and `bundleDependencies` field does not, `bundledDependencies` will get renamed to `bundleDependencies`.
* If the value of any of the dependencies fields (`dependencies`, `devDependencies`, `optionalDependencies`) is a string, it gets converted into an object with familiar `name=>value` pairs.
* The values in `optionalDependencies` get added to `dependencies`. The `optionalDependencies` array is left untouched.
+* As of v2: Dependencies that point at known hosted git providers (currently: github, bitbucket, gitlab) will have their URLs canonicalized, but protocols will be preserved.
+* As of v2: Dependencies that use shortcuts for hosted git providers (`org/proj`, `github:org/proj`, `bitbucket:org/proj`, `gitlab:org/proj`, `gist:docid`) will have the shortcut left in place. (In the case of github, the `org/proj` form will be expanded to `github:org/proj`.) THIS MARKS A BREAKING CHANGE FROM V1, where the shorcut was previously expanded to a URL.
* If `description` field does not exist, but `readme` field does, then (more or less) the first paragraph of text that's found in the readme is taken as value for `description`.
* If `repository` field is a string, it will become an object with `url` set to the original string value, and `type` set to `"git"`.
-* If `repository.url` is not a valid url, but in the style of "[owner-name]/[repo-name]", `repository.url` will be set to git://github.com/[owner-name]/[repo-name]
+* If `repository.url` is not a valid url, but in the style of "[owner-name]/[repo-name]", `repository.url` will be set to https://github.com/[owner-name]/[repo-name]
* If `bugs` field is a string, the value of `bugs` field is changed into an object with `url` set to the original string value.
* If `bugs` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `bugs` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/issues . If the repository field points to a GitHub Gist repo url, the associated http url is chosen.
* If `bugs` field is an object, the resulting value only has email and url properties. If email and url properties are not strings, they are ignored. If no valid values for either email or url is found, bugs field will be removed.
diff --git a/deps/npm/node_modules/normalize-package-data/lib/fixer.js b/deps/npm/node_modules/normalize-package-data/lib/fixer.js
index 14c0abc..59cd05f 100644
--- a/deps/npm/node_modules/normalize-package-data/lib/fixer.js
+++ b/deps/npm/node_modules/normalize-package-data/lib/fixer.js
@@ -1,11 +1,10 @@
var semver = require("semver")
-var parseGitHubURL = require("github-url-from-git")
+var hostedGitInfo = require("hosted-git-info")
var depTypes = ["dependencies","devDependencies","optionalDependencies"]
var extractDescription = require("./extract_description")
var url = require("url")
var typos = require("./typos")
var coreModuleNames = require("./core_module_names")
-var githubUserRepo = require("github-url-from-username-repo")
var fixer = module.exports = {
// default warning function
@@ -25,12 +24,10 @@ var fixer = module.exports = {
}
var r = data.repository.url || ""
if (r) {
- var ghurl = parseGitHubURL(r)
- if (ghurl) {
- r = ghurl.replace(/^https?:\/\//, 'git://')
- } else if (githubUserRepo(r)) {
- // repo has 'user/reponame' filled in as repo
- data.repository.url = githubUserRepo(r)
+ var hosted = hostedGitInfo.fromUrl(r)
+ if (hosted) {
+ r = data.repository.url
+ = hosted.getDefaultRepresentation() == "shortcut" ? hosted.https() : hosted.toString()
}
}
@@ -57,7 +54,7 @@ var fixer = module.exports = {
if (typeof data.scripts[k] !== "string") {
this.warn("nonStringScript")
delete data.scripts[k]
- } else if (typos.script[k]) {
+ } else if (typos.script[k] && !data.scripts[typos.script[k]]) {
this.warn("typo", k, typos.script[k], "scripts")
}
}, this)
@@ -143,11 +140,8 @@ var fixer = module.exports = {
this.warn("nonStringDependency", d, JSON.stringify(r))
delete data[deps][d]
}
- // "/" is not allowed as packagename for publishing, but for git-urls
- // normalize shorthand-urls
- if (githubUserRepo(data[deps][d])) {
- data[deps][d] = 'git+' + githubUserRepo(data[deps][d])
- }
+ var hosted = hostedGitInfo.fromUrl(data[deps][d])
+ if (hosted) data[deps][d] = hosted.toString()
}, this)
}, this)
}
@@ -234,12 +228,9 @@ var fixer = module.exports = {
, fixBugsField: function(data) {
if (!data.bugs && data.repository && data.repository.url) {
- var gh = parseGitHubURL(data.repository.url)
- if(gh) {
- if(gh.match(/^https:\/\/github.com\//))
- data.bugs = {url: gh + "/issues"}
- else // gist url
- data.bugs = {url: gh}
+ var hosted = hostedGitInfo.fromUrl(data.repository.url)
+ if(hosted && hosted.bugs()) {
+ data.bugs = {url: hosted.bugs()}
}
}
else if(data.bugs) {
@@ -278,13 +269,10 @@ var fixer = module.exports = {
, fixHomepageField: function(data) {
if (!data.homepage && data.repository && data.repository.url) {
- var gh = parseGitHubURL(data.repository.url)
- if (gh)
- data.homepage = gh
- else
- return true
- } else if (!data.homepage)
- return true
+ var hosted = hostedGitInfo.fromUrl(data.repository.url)
+ if (hosted && hosted.docs()) data.homepage = hosted.docs()
+ }
+ if (!data.homepage) return
if(typeof data.homepage !== "string") {
this.warn("nonUrlHomepage")
diff --git a/deps/npm/node_modules/normalize-package-data/package.json b/deps/npm/node_modules/normalize-package-data/package.json
index 6da5469..8f4aead 100644
--- a/deps/npm/node_modules/normalize-package-data/package.json
+++ b/deps/npm/node_modules/normalize-package-data/package.json
@@ -1,6 +1,6 @@
{
"name": "normalize-package-data",
- "version": "1.0.3",
+ "version": "2.0.0",
"author": {
"name": "Meryn Stol",
"email": "merynstol@gmail.com"
@@ -8,15 +8,14 @@
"description": "Normalizes data that can be found in package.json files.",
"repository": {
"type": "git",
- "url": "git://github.com/meryn/normalize-package-data.git"
+ "url": "git://github.com/npm/normalize-package-data.git"
},
"main": "lib/normalize.js",
"scripts": {
"test": "tap test/*.js"
},
"dependencies": {
- "github-url-from-git": "^1.3.0",
- "github-url-from-username-repo": "^1.0.0",
+ "hosted-git-info": "^2.0.2",
"semver": "2 || 3 || 4"
},
"devDependencies": {
@@ -38,19 +37,19 @@
"email": "rok@kowalski.gd"
}
],
- "gitHead": "8c30091c83b1a41e113757148c4543ef61ff863d",
+ "gitHead": "ea0b959633e4803685bae2283d3d79a0115e6f8a",
"bugs": {
- "url": "https://github.com/meryn/normalize-package-data/issues"
+ "url": "https://github.com/npm/normalize-package-data/issues"
},
- "homepage": "https://github.com/meryn/normalize-package-data",
- "_id": "normalize-package-data@1.0.3",
- "_shasum": "8be955b8907af975f1a4584ea8bb9b41492312f5",
- "_from": "normalize-package-data@>=1.0.3 <1.1.0",
- "_npmVersion": "2.1.0",
- "_nodeVersion": "0.10.31",
+ "homepage": "https://github.com/npm/normalize-package-data",
+ "_id": "normalize-package-data@2.0.0",
+ "_shasum": "8795d0d5c70c0e9ca36f419548aac0abf1f638bc",
+ "_from": "normalize-package-data@>=2.0.0 <2.1.0",
+ "_npmVersion": "2.7.5",
+ "_nodeVersion": "1.6.2",
"_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
+ "name": "iarna",
+ "email": "me@re-becca.org"
},
"maintainers": [
{
@@ -64,12 +63,17 @@
{
"name": "othiym23",
"email": "ogd@aoaioxxysz.net"
+ },
+ {
+ "name": "iarna",
+ "email": "me@re-becca.org"
}
],
"dist": {
- "shasum": "8be955b8907af975f1a4584ea8bb9b41492312f5",
- "tarball": "http://registry.npmjs.org/normalize-package-data/-/normalize-package-data-1.0.3.tgz"
+ "shasum": "8795d0d5c70c0e9ca36f419548aac0abf1f638bc",
+ "tarball": "http://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.0.0.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-1.0.3.tgz"
+ "_resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.0.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/normalize-package-data/test/normalize.js b/deps/npm/node_modules/normalize-package-data/test/normalize.js
index b35eed7..96b2544 100644
--- a/deps/npm/node_modules/normalize-package-data/test/normalize.js
+++ b/deps/npm/node_modules/normalize-package-data/test/normalize.js
@@ -9,6 +9,7 @@ var warningMessages = require("../lib/warning_messages.json")
var safeFormat = require("../lib/safe_format")
var rpjPath = path.resolve(__dirname,"./fixtures/read-package-json.json")
+
tap.test("normalize some package data", function(t) {
var packageData = require(rpjPath)
var warnings = []
@@ -143,7 +144,7 @@ tap.test("gist bugs url", function(t) {
repository: "git@gist.github.com:123456.git"
}
normalize(d)
- t.same(d.repository, { type: 'git', url: 'git@gist.github.com:123456.git' })
+ t.same(d.repository, { type: 'git', url: 'git+ssh://git@gist.github.com/123456.git' })
t.same(d.bugs, { url: 'https://gist.github.com/123456' })
t.end();
});
@@ -151,21 +152,21 @@ tap.test("gist bugs url", function(t) {
tap.test("singularize repositories", function(t) {
var d = {repositories:["git@gist.github.com:123456.git"]}
normalize(d)
- t.same(d.repository, { type: 'git', url: 'git@gist.github.com:123456.git' })
+ t.same(d.repository, { type: 'git', url: 'git+ssh://git@gist.github.com/123456.git' })
t.end()
});
tap.test("treat visionmedia/express as github repo", function(t) {
var d = {repository: {type: "git", url: "visionmedia/express"}}
normalize(d)
- t.same(d.repository, { type: "git", url: "https://github.com/visionmedia/express" })
+ t.same(d.repository, { type: "git", url: "https://github.com/visionmedia/express.git" })
t.end()
});
tap.test("treat isaacs/node-graceful-fs as github repo", function(t) {
var d = {repository: {type: "git", url: "isaacs/node-graceful-fs"}}
normalize(d)
- t.same(d.repository, { type: "git", url: "https://github.com/isaacs/node-graceful-fs" })
+ t.same(d.repository, { type: "git", url: "https://github.com/isaacs/node-graceful-fs.git" })
t.end()
});
@@ -174,7 +175,7 @@ tap.test("homepage field will set to github url if repository is a github repo",
normalize(a={
repository: { type: "git", url: "https://github.com/isaacs/node-graceful-fs" }
})
- t.same(a.homepage, 'https://github.com/isaacs/node-graceful-fs')
+ t.same(a.homepage, 'https://github.com/isaacs/node-graceful-fs#readme')
t.end()
})
@@ -192,14 +193,14 @@ tap.test("homepage field will set to github gist url if repository is a shorthan
normalize(a={
repository: { type: "git", url: "sindresorhus/chalk" }
})
- t.same(a.homepage, 'https://github.com/sindresorhus/chalk')
+ t.same(a.homepage, 'https://github.com/sindresorhus/chalk#readme')
t.end()
})
-tap.test("treat isaacs/node-graceful-fs as github repo in dependencies", function(t) {
+tap.test("don't mangle github shortcuts in dependencies", function(t) {
var d = {dependencies: {"node-graceful-fs": "isaacs/node-graceful-fs"}}
normalize(d)
- t.same(d.dependencies, {"node-graceful-fs": "git+https://github.com/isaacs/node-graceful-fs" })
+ t.same(d.dependencies, {"node-graceful-fs": "github:isaacs/node-graceful-fs" })
t.end()
});
diff --git a/deps/npm/node_modules/normalize-package-data/test/typo.js b/deps/npm/node_modules/normalize-package-data/test/typo.js
index eda7554..dfa2b90 100644
--- a/deps/npm/node_modules/normalize-package-data/test/typo.js
+++ b/deps/npm/node_modules/normalize-package-data/test/typo.js
@@ -102,6 +102,19 @@ test('typos', function(t) {
t.same(warnings, expect)
warnings.length = 0
+ expect =
+ [ warningMessages.missingDescription,
+ warningMessages.missingRepository,
+ warningMessages.missingReadme ]
+
+ normalize({name:"name"
+ ,version:"1.2.5"
+ ,scripts:{server:"start",tests:"test"
+ ,start:"start",test:"test"}}, warn)
+
+ t.same(warnings, expect)
+
+ warnings.length = 0
expect = []
normalize({private: true
diff --git a/deps/npm/node_modules/npm-package-arg/npa.js b/deps/npm/node_modules/npm-package-arg/npa.js
index 883c540..2cba4cf 100644
--- a/deps/npm/node_modules/npm-package-arg/npa.js
+++ b/deps/npm/node_modules/npm-package-arg/npa.js
@@ -134,6 +134,8 @@ function parseUrl (res, arg, urlparse) {
ssh: gitHost.ssh(),
sshUrl: gitHost.sshurl(),
httpsUrl: gitHost.https(),
+ gitUrl: gitHost.git(),
+ shortcut: gitHost.shortcut(),
directUrl: gitHost.file("package.json")
}
return res
diff --git a/deps/npm/node_modules/npm-package-arg/package.json b/deps/npm/node_modules/npm-package-arg/package.json
index b742b6f..5cf7675 100644
--- a/deps/npm/node_modules/npm-package-arg/package.json
+++ b/deps/npm/node_modules/npm-package-arg/package.json
@@ -1,13 +1,13 @@
{
"name": "npm-package-arg",
- "version": "3.1.1",
+ "version": "4.0.0",
"description": "Parse the things that can be arguments to `npm install`",
"main": "npa.js",
"directories": {
"test": "test"
},
"dependencies": {
- "hosted-git-info": "^1.5.3",
+ "hosted-git-info": "^2.0.2",
"semver": "4"
},
"devDependencies": {
@@ -30,34 +30,10 @@
"url": "https://github.com/npm/npm-package-arg/issues"
},
"homepage": "https://github.com/npm/npm-package-arg",
- "gitHead": "1dc802d4b449f1599c7275bb948c6ecd265c23a8",
- "_id": "npm-package-arg@3.1.1",
- "_shasum": "c9e5f7587f8484d1372a9b386fbf8b2443fc1bdb",
- "_from": "npm-package-arg@>=3.1.1 <3.2.0",
- "_npmVersion": "2.6.1",
- "_nodeVersion": "1.1.0",
- "_npmUser": {
- "name": "iarna",
- "email": "me@re-becca.org"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- },
- {
- "name": "iarna",
- "email": "me@re-becca.org"
- }
- ],
- "dist": {
- "shasum": "c9e5f7587f8484d1372a9b386fbf8b2443fc1bdb",
- "tarball": "http://registry.npmjs.org/npm-package-arg/-/npm-package-arg-3.1.1.tgz"
- },
- "_resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-3.1.1.tgz",
- "readme": "ERROR: No README data found!"
+ "gitHead": "25ac404d9f3b77b14be9b05a7dafd9cb99557fdc",
+ "readme": "# npm-package-arg\n\nParse package name and specifier passed to commands like `npm install` or\n`npm cache add`. This just parses the text given-- it's worth noting that\n`npm` has further logic it applies by looking at your disk to figure out\nwhat ambiguous specifiers are. If you want that logic, please see\n[realize-package-specifier].\n\n[realize-package-specifier]: https://www.npmjs.org/package/realize-package-specifier\n\nArguments look like: `foo@1.2`, `@bar/foo@1.2`, `foo@user/foo`, `http://x.com/foo.tgz`,\n`git+https://github.com/user/foo`, `bitbucket:user/foo`, `foo.tar.gz` or `bar`\n\n## EXAMPLES\n\n```javascript\nvar assert = require(\"assert\")\nvar npa = require(\"npm-package-arg\")\n\n// Pass in the descriptor, and it'll return an object\nvar parsed = npa(\"@bar/foo@1.2\")\n\n// Returns an object like:\n{\n raw: '@bar/foo@1.2', // what was passed in\n name: \"@bar/foo\", // the name of the package\n scope: \"@bar\", // the private scope of the package, or null\n type: \"range\", // the type of specifier this is\n spec: \">=1.2.0 <1.3.0\" // the expanded specifier\n rawSpec: \"1.2\" // the specifier as passed in\n }\n\n// Parsing urls pointing at hosted git services produces a variation:\nvar parsed = npa(\"git+https://github.com/user/foo\")\n\n// Returns an object like:\n{\n raw: 'git+https://github.com/user/foo',\n scope: null,\n name: null,\n rawSpec: 'git+https://github.com/user/foo',\n spec: 'user/foo',\n type: 'hosted',\n hosted: {\n type: 'github',\n ssh: 'git@github.com:user/foo.git',\n sshurl: 'git+ssh://git@github.com/user/foo.git',\n https: 'https://github.com/user/foo.git',\n directUrl: 'https://raw.githubusercontent.com/user/foo/master/package.json'\n }\n}\n\n// Completely unreasonable invalid garbage throws an error\n// Make sure you wrap this in a try/catch if you have not\n// already sanitized the inputs!\nassert.throws(function() {\n npa(\"this is not \\0 a valid package name or url\")\n})\n```\n\n## USING\n\n`var npa = require('npm-package-arg')`\n\n* var result = npa(*arg*)\n\nParses *arg* and returns a result object detailing what *arg* is.\n\n*arg* -- a package descriptor, like: `foo@1.2`, or `foo@user/foo`, or\n`http://x.com/foo.tgz`, or `git+https://github.com/user/foo`\n\n## RESULT OBJECT\n\nThe objects that are returned by npm-package-arg contain the following\nkeys:\n\n* `name` - If known, the `name` field expected in the resulting pkg.\n* `type` - One of the following strings:\n * `git` - A git repo\n * `hosted` - A hosted project, from github, bitbucket or gitlab. Originally\n either a full url pointing at one of these services or a shorthand like\n `user/project` or `github:user/project` for github or `bitbucket:user/project`\n for bitbucket.\n * `tag` - A tagged version, like `\"foo@latest\"`\n * `version` - A specific version number, like `\"foo@1.2.3\"`\n * `range` - A version range, like `\"foo@2.x\"`\n * `local` - A local file or folder path\n * `remote` - An http url (presumably to a tgz)\n* `spec` - The \"thing\". URL, the range, git repo, etc.\n* `hosted` - If type=hosted this will be an object with the following keys:\n * `type` - github, bitbucket or gitlab\n * `ssh` - The ssh path for this git repo\n * `sshUrl` - The ssh URL for this git repo\n * `httpsUrl` - The HTTPS URL for this git repo\n * `directUrl` - The URL for the package.json in this git repo\n* `raw` - The original un-modified string that was provided.\n* `rawSpec` - The part after the `name@...`, as it was originally\n provided.\n* `scope` - If a name is something like `@org/module` then the `scope`\n field will be set to `org`. If it doesn't have a scoped name, then\n scope is `null`.\n",
+ "readmeFilename": "README.md",
+ "_id": "npm-package-arg@4.0.0",
+ "_shasum": "04766dc98dbc19f6d627a5817075f4ce13d64a5d",
+ "_from": "npm-package-arg@>=4.0.0 <5.0.0"
}
diff --git a/deps/npm/node_modules/npm-package-arg/test/bitbucket.js b/deps/npm/node_modules/npm-package-arg/test/bitbucket.js
index 48bbdbc..83f99fc 100644
--- a/deps/npm/node_modules/npm-package-arg/test/bitbucket.js
+++ b/deps/npm/node_modules/npm-package-arg/test/bitbucket.js
@@ -9,7 +9,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "bitbucket" },
- spec: "git+ssh://git@bitbucket.org/user/foo-js.git",
+ spec: "bitbucket:user/foo-js",
raw: "bitbucket:user/foo-js"
},
@@ -17,7 +17,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "bitbucket" },
- spec: "git+ssh://git@bitbucket.org/user/foo-js.git#bar/baz",
+ spec: "bitbucket:user/foo-js#bar/baz",
raw: "bitbucket:user/foo-js#bar/baz"
},
@@ -25,7 +25,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "bitbucket" },
- spec: "git+ssh://git@bitbucket.org/user..blerg--/..foo-js.git# . . . . . some . tags / / /",
+ spec: "bitbucket:user..blerg--/..foo-js# . . . . . some . tags / / /",
raw: "bitbucket:user..blerg--/..foo-js# . . . . . some . tags / / /"
},
@@ -33,7 +33,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "bitbucket" },
- spec: "git+ssh://git@bitbucket.org/user/foo-js.git#bar/baz/bin",
+ spec: "bitbucket:user/foo-js#bar/baz/bin",
raw: "bitbucket:user/foo-js#bar/baz/bin"
},
@@ -41,7 +41,7 @@ require("tap").test("basic", function (t) {
name: "foo",
type: "hosted",
hosted: { type: "bitbucket" },
- spec: "git+ssh://git@bitbucket.org/user/foo-js.git",
+ spec: "bitbucket:user/foo-js",
raw: "foo@bitbucket:user/foo-js"
},
@@ -57,7 +57,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "bitbucket" },
- spec: "git+ssh://git@bitbucket.org/user/foo.git",
+ spec: "https://bitbucket.org/user/foo.git",
raw: "https://bitbucket.org/user/foo.git"
},
diff --git a/deps/npm/node_modules/npm-package-arg/test/github.js b/deps/npm/node_modules/npm-package-arg/test/github.js
index 63fd26c..a51cd08 100644
--- a/deps/npm/node_modules/npm-package-arg/test/github.js
+++ b/deps/npm/node_modules/npm-package-arg/test/github.js
@@ -9,7 +9,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "github" },
- spec: "git+ssh://git@github.com/user/foo-js.git",
+ spec: "github:user/foo-js",
raw: "user/foo-js"
},
@@ -17,7 +17,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "github" },
- spec: "git+ssh://git@github.com/user/foo-js.git#bar/baz",
+ spec: "github:user/foo-js#bar/baz",
raw: "user/foo-js#bar/baz"
},
@@ -25,7 +25,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "github" },
- spec: "git+ssh://git@github.com/user..blerg--/..foo-js.git# . . . . . some . tags / / /",
+ spec: "github:user..blerg--/..foo-js# . . . . . some . tags / / /",
raw: "user..blerg--/..foo-js# . . . . . some . tags / / /"
},
@@ -33,7 +33,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "github" },
- spec: "git+ssh://git@github.com/user/foo-js.git#bar/baz/bin",
+ raw: "github:user/foo-js#bar/baz/bin",
raw: "user/foo-js#bar/baz/bin"
},
@@ -41,7 +41,7 @@ require("tap").test("basic", function (t) {
name: "foo",
type: "hosted",
hosted: { type: "github" },
- spec: "git+ssh://git@github.com/user/foo-js.git",
+ spec: "github:user/foo-js",
raw: "foo@user/foo-js"
},
@@ -49,7 +49,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "github" },
- spec: "git+ssh://git@github.com/user/foo-js.git",
+ spec: "github:user/foo-js",
raw: "github:user/foo-js"
},
@@ -65,7 +65,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "github" },
- spec: "git+ssh://git@github.com/user/foo.git",
+ spec: "git://github.com/user/foo.git",
raw: "git://github.com/user/foo"
},
@@ -73,7 +73,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "github" },
- spec: "git+ssh://git@github.com/user/foo.git",
+ spec: "https://github.com/user/foo.git",
raw: "https://github.com/user/foo.git"
},
@@ -90,8 +90,8 @@ require("tap").test("basic", function (t) {
"foo@bar/foo": {
name: "foo",
type: "hosted",
- hosted: { type: "github" },
- spec: "git+ssh://git@github.com/bar/foo.git",
+ hosted: { type: "github" },
+ spec: "github:bar/foo",
raw: "foo@bar/foo"
}
}
diff --git a/deps/npm/node_modules/npm-package-arg/test/gitlab.js b/deps/npm/node_modules/npm-package-arg/test/gitlab.js
index 36ea016..94c9548 100644
--- a/deps/npm/node_modules/npm-package-arg/test/gitlab.js
+++ b/deps/npm/node_modules/npm-package-arg/test/gitlab.js
@@ -9,7 +9,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "gitlab" },
- spec: "git+ssh://git@gitlab.com/user/foo-js.git",
+ raw: "gitlab:user/foo-js",
raw: "gitlab:user/foo-js"
},
@@ -17,7 +17,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "gitlab" },
- spec: "git+ssh://git@gitlab.com/user/foo-js.git#bar/baz",
+ raw: "gitlab:user/foo-js#bar/baz",
raw: "gitlab:user/foo-js#bar/baz"
},
@@ -25,7 +25,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "gitlab" },
- spec: "git+ssh://git@gitlab.com/user..blerg--/..foo-js.git# . . . . . some . tags / / /",
+ spec: "gitlab:user..blerg--/..foo-js# . . . . . some . tags / / /",
raw: "gitlab:user..blerg--/..foo-js# . . . . . some . tags / / /"
},
@@ -33,7 +33,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "gitlab" },
- spec: "git+ssh://git@gitlab.com/user/foo-js.git#bar/baz/bin",
+ spec: "gitlab:user/foo-js#bar/baz/bin",
raw: "gitlab:user/foo-js#bar/baz/bin"
},
@@ -41,7 +41,7 @@ require("tap").test("basic", function (t) {
name: "foo",
type: "hosted",
hosted: { type: "gitlab" },
- spec: "git+ssh://git@gitlab.com/user/foo-js.git",
+ spec: "gitlab:user/foo-js",
raw: "foo@gitlab:user/foo-js"
},
@@ -57,7 +57,7 @@ require("tap").test("basic", function (t) {
name: null,
type: "hosted",
hosted: { type: "gitlab" },
- spec: "git+ssh://git@gitlab.com/user/foo.git",
+ spec: "https://gitlab.com/user/foo.git",
raw: "https://gitlab.com/user/foo.git"
},
diff --git a/deps/npm/node_modules/npm-registry-client/lib/adduser.js b/deps/npm/node_modules/npm-registry-client/lib/adduser.js
index bf0a048..a6a779d 100644
--- a/deps/npm/node_modules/npm-registry-client/lib/adduser.js
+++ b/deps/npm/node_modules/npm-registry-client/lib/adduser.js
@@ -76,7 +76,7 @@ function adduser (uri, params, cb) {
client.log.verbose('adduser', 'update existing user')
return client.request(
uri + '?write=true',
- { body: userobj, auth: auth },
+ { auth: auth },
function (er, data, json, response) {
if (er || data.error) {
return cb(er, data, json, response)
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/index.js b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/index.js
index 7511eed..b55ae7e 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/index.js
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/index.js
@@ -1,7 +1,11 @@
var Writable = require('readable-stream').Writable
var inherits = require('inherits')
-var TA = require('typedarray')
-var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array
+
+if (typeof Uint8Array === 'undefined') {
+ var U8 = require('typedarray').Uint8Array
+} else {
+ var U8 = Uint8Array
+}
function ConcatStream(opts, cb) {
if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb)
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
index 4eb9ce4..466dfdf 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
@@ -5,7 +5,7 @@
"main": "lib/util.js",
"repository": {
"type": "git",
- "url": "git://github.com/isaacs/core-util-is"
+ "url": "git://github.com/isaacs/core-util-is.git"
},
"keywords": [
"util",
@@ -49,6 +49,5 @@
],
"directories": {},
"_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538",
- "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
- "scripts": {}
+ "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/package.json
index 295adce..23e9759 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/package.json
@@ -17,7 +17,7 @@
},
"repository": {
"type": "git",
- "url": "git://github.com/isaacs/readable-stream"
+ "url": "git://github.com/isaacs/readable-stream.git"
},
"keywords": [
"readable",
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/package.json
index 0cdb841..0a56521 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/package.json
@@ -1,6 +1,6 @@
{
"name": "concat-stream",
- "version": "1.4.7",
+ "version": "1.4.8",
"description": "writable stream that concatenates strings or binary data and calls a callback with the result",
"tags": [
"stream",
@@ -14,7 +14,7 @@
},
"repository": {
"type": "git",
- "url": "http://github.com/maxogden/concat-stream.git"
+ "url": "git+ssh://git@github.com/maxogden/concat-stream.git"
},
"bugs": {
"url": "http://github.com/maxogden/concat-stream/issues"
@@ -51,13 +51,13 @@
"android-browser/4.2..latest"
]
},
- "gitHead": "41edc57536490dce9f015131c29a6470c9412b27",
+ "gitHead": "1f4ea1a7791b9366a133cab033eb0f3564cb0d92",
"homepage": "https://github.com/maxogden/concat-stream",
- "_id": "concat-stream@1.4.7",
- "_shasum": "0ceaa47b87a581d2a7a782b92b81d5020c3f9925",
+ "_id": "concat-stream@1.4.8",
+ "_shasum": "e8325bb89e55000e52b626d97466fde1a28cfe5d",
"_from": "concat-stream@>=1.4.6 <2.0.0",
- "_npmVersion": "2.1.8",
- "_nodeVersion": "0.10.28",
+ "_npmVersion": "2.7.0",
+ "_nodeVersion": "1.5.1",
"_npmUser": {
"name": "maxogden",
"email": "max@maxogden.com"
@@ -69,10 +69,10 @@
}
],
"dist": {
- "shasum": "0ceaa47b87a581d2a7a782b92b81d5020c3f9925",
- "tarball": "http://registry.npmjs.org/concat-stream/-/concat-stream-1.4.7.tgz"
+ "shasum": "e8325bb89e55000e52b626d97466fde1a28cfe5d",
+ "tarball": "http://registry.npmjs.org/concat-stream/-/concat-stream-1.4.8.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.7.tgz",
+ "_resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.8.tgz",
"readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/readme.md b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/readme.md
index e6dda4e..d028aec 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/readme.md
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/readme.md
@@ -73,7 +73,7 @@ By default `concat-stream` will give you back the same data type as the type of
* `uint8array`, `u8`, `uint8` - get back a Uint8Array
* `object`, get back an array of Objects
-If you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't int he list above), it will try to convert concat them into a `Buffer`.
+If you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't in the list above), it will try to convert concat them into a `Buffer`.
# error handling
diff --git a/deps/npm/node_modules/npm-registry-client/package.json b/deps/npm/node_modules/npm-registry-client/package.json
index 5643d79..c46ed80 100644
--- a/deps/npm/node_modules/npm-registry-client/package.json
+++ b/deps/npm/node_modules/npm-registry-client/package.json
@@ -6,9 +6,9 @@
},
"name": "npm-registry-client",
"description": "Client for the npm registry",
- "version": "6.1.2",
+ "version": "6.3.2",
"repository": {
- "url": "git://github.com/isaacs/npm-registry-client"
+ "url": "git://github.com/isaacs/npm-registry-client.git"
},
"main": "index.js",
"scripts": {
@@ -19,8 +19,8 @@
"concat-stream": "^1.4.6",
"graceful-fs": "^3.0.0",
"mkdirp": "^0.5.0",
- "normalize-package-data": "~1.0.1",
- "npm-package-arg": "^3.0.0",
+ "normalize-package-data": "~1.0.1 || ^2.0.0",
+ "npm-package-arg": "^3.0.0 || ^4.0.0",
"once": "^1.3.0",
"request": "^2.47.0",
"retry": "^0.6.1",
@@ -41,12 +41,12 @@
"license": "ISC",
"readme": "# npm-registry-client\n\nThe code that npm uses to talk to the registry.\n\nIt handles all the caching and HTTP calls.\n\n## Usage\n\n```javascript\nvar RegClient = require('npm-registry-client')\nvar client = new RegClient(config)\nvar uri = \"npm://registry.npmjs.org/npm\"\nvar params = {timeout: 1000}\n\nclient.get(uri, params, function (error, data, raw, res) {\n // error is an error if there was a problem.\n // data is the parsed data object\n // raw is the json string\n // res is the response from couch\n})\n```\n\n# Registry URLs\n\nThe registry calls take either a full URL pointing to a resource in the\nregistry, or a base URL for the registry as a whole (including the registry\npath â but be sure to terminate the path with `/`). `http` and `https` URLs are\nthe only ones supported.\n\n## Using the client\n\nEvery call to the client follows the same pattern:\n\n* `uri` {String} The *fully-qualified* URI of the registry API method being\n invoked.\n* `params` {Object} Per-request parameters.\n* `callback` {Function} Callback to be invoked when the call is complete.\n\n### Credentials\n\nMany requests to the registry can by authenticated, and require credentials\nfor authorization. These credentials always look the same:\n\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n**or**\n\n* `token` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n## API\n\n### client.access(uri, params, cb)\n\n* `uri` {String} Registry URL for the package's access API endpoint.\n Looks like `/-/package//access`.\n* `params` {Object} Object containing per-request properties.\n * `access` {String} New access level for the package. Can be either\n `public` or `restricted`. Registry will raise an error if trying\n to change the access level of an unscoped package.\n * `auth` {Credentials}\n\nSet the access level for scoped packages. For now, there are only two\naccess levels: \"public\" and \"restricted\".\n\n### client.adduser(uri, params, cb)\n\n* `uri` {String} Base registry URL.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nAdd a user account to the registry, or verify the credentials.\n\n### client.deprecate(uri, params, cb)\n\n* `uri` {String} Full registry URI for the deprecated package.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Semver version range.\n * `message` {String} The message to use as a deprecation warning.\n * `auth` {Credentials}\n* `cb` {Function}\n\nDeprecate a version of a package in the registry.\n\n### client.distTags.fetch(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `auth` {Credentials}\n* `cb` {Function}\n\nFetch all of the `dist-tags` for the named package.\n\n### client.distTags.add(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `version` {String} Exact version to be mapped to the `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nAdd (or replace) a single dist-tag onto the named package.\n\n### client.distTags.set(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSet all of the `dist-tags` for the named package at once, creating any\n`dist-tags` that do not already exit. Any `dist-tags` not included in the\n`distTags` map will be removed.\n\n### client.distTags.update(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nUpdate the values of multiple `dist-tags`, creating any `dist-tags` that do\nnot already exist. Any pre-existing `dist-tags` not included in the `distTags`\nmap will be left alone.\n\n### client.distTags.rm(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a single `dist-tag` from the named package.\n\n### client.get(uri, params, cb)\n\n* `uri` {String} The complete registry URI to fetch\n* `params` {Object} Object containing per-request properties.\n * `timeout` {Number} Duration before the request times out. Optional\n (default: never).\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `staleOk` {Boolean} If there's cached data available, then return that to\n the callback quickly, and update the cache the background. Optional\n (default: false).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetches data from the registry via a GET request, saving it in the cache folder\nwith the ETag or the \"Last Modified\" timestamp.\n\n### client.publish(uri, params, cb)\n\n* `uri` {String} The registry URI for the package to publish.\n* `params` {Object} Object containing per-request properties.\n * `metadata` {Object} Package metadata.\n * `access` {String} Access for the package. Can be `public` or `restricted` (no default).\n * `body` {Stream} Stream of the package body / tarball.\n * `auth` {Credentials}\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder.\n\n### client.star(uri, params, cb)\n\n* `uri` {String} The complete registry URI for the package to star.\n* `params` {Object} Object containing per-request properties.\n * `starred` {Boolean} True to star the package, false to unstar it. Optional\n (default: false).\n * `auth` {Credentials}\n* `cb` {Function}\n\nStar or unstar a package.\n\nNote that the user does not have to be the package owner to star or unstar a\npackage, though other writes do require that the user be the package owner.\n\n### client.stars(uri, params, cb)\n\n* `uri` {String} The base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `username` {String} Name of user to fetch starred packages for. Optional\n (default: user in `auth`).\n * `auth` {Credentials} Optional (required if `username` is omitted).\n* `cb` {Function}\n\nView your own or another user's starred packages.\n\n### client.tag(uri, params, cb)\n\n* `uri` {String} The complete registry URI to tag\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Version to tag.\n * `tag` {String} Tag name to apply.\n * `auth` {Credentials}\n* `cb` {Function}\n\nMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\nspecified version.\n\n### client.unpublish(uri, params, cb)\n\n* `uri` {String} The complete registry URI of the package to unpublish.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} version to unpublish. Optional â omit to unpublish all\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a version of a package (or all versions) from the registry. When the\nlast version us unpublished, the entire document is removed from the database.\n\n### client.whoami(uri, params, cb)\n\n* `uri` {String} The base registry for the URI.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSimple call to see who the registry thinks you are. Especially useful with\ntoken-based auth.\n\n\n## PLUMBING\n\nThe below are primarily intended for use by the rest of the API, or by the npm\ncaching logic directly.\n\n### client.request(uri, params, cb)\n\n* `uri` {String} URI pointing to the resource to request.\n* `params` {Object} Object containing per-request properties.\n * `method` {String} HTTP method. Optional (default: \"GET\").\n * `body` {Stream | Buffer | String | Object} The request body. Objects\n that are not Buffers or Streams are encoded as JSON. Optional â body\n only used for write operations.\n * `etag` {String} The cached ETag. Optional.\n * `lastModified` {String} The cached Last-Modified timestamp. Optional.\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nMake a generic request to the registry. All the other methods are wrappers\naround `client.request`.\n\n### client.fetch(uri, params, cb)\n\n* `uri` {String} The complete registry URI to upload to\n* `params` {Object} Object containing per-request properties.\n * `headers` {Stream} HTTP headers to be included with the request. Optional.\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetch a package from a URL, with auth set appropriately if included. Used to\ncache remote tarballs as well as request package tarballs from the registry.\n\n# Configuration\n\nThe client uses its own configuration, which is just passed in as a simple\nnested object. The following are the supported values (with their defaults, if\nany):\n\n* `proxy.http` {URL} The URL to proxy HTTP requests through.\n* `proxy.https` {URL} The URL to proxy HTTPS requests through. Defaults to be\n the same as `proxy.http` if unset.\n* `proxy.localAddress` {IP} The local address to use on multi-homed systems.\n* `ssl.ca` {String} Certificate signing authority certificates to trust.\n* `ssl.certificate` {String} Client certificate (PEM encoded). Enable access\n to servers that require client certificates.\n* `ssl.key` {String} Private key (PEM encoded) for client certificate.\n* `ssl.strict` {Boolean} Whether or not to be strict with SSL certificates.\n Default = `true`\n* `retry.count` {Number} Number of times to retry on GET failures. Default = 2.\n* `retry.factor` {Number} `factor` setting for `node-retry`. Default = 10.\n* `retry.minTimeout` {Number} `minTimeout` setting for `node-retry`.\n Default = 10000 (10 seconds)\n* `retry.maxTimeout` {Number} `maxTimeout` setting for `node-retry`.\n Default = 60000 (60 seconds)\n* `userAgent` {String} User agent header to send. Default =\n `\"node/{process.version}\"`\n* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\n that works, otherwise logs are disabled.\n* `defaultTag` {String} The default tag to use when publishing new packages.\n Default = `\"latest\"`\n* `couchToken` {Object} A token for use with\n [couch-login](https://npmjs.org/package/couch-login).\n* `sessionToken` {string} A random identifier for this set of client requests.\n Default = 8 random hexadecimal bytes.\n",
"readmeFilename": "README.md",
- "gitHead": "93606bb3d6c23971ff5d43763dfa10aada5775da",
+ "gitHead": "dd4029904febd6e0c30371b2addad5715526cd68",
"bugs": {
"url": "https://github.com/isaacs/npm-registry-client/issues"
},
- "homepage": "https://github.com/isaacs/npm-registry-client",
- "_id": "npm-registry-client@6.1.2",
- "_shasum": "b74ba7efa9bfbbce46a1bd15fa97dc7d784099cb",
- "_from": "npm-registry-client@>=6.1.2 <7.0.0"
+ "homepage": "https://github.com/isaacs/npm-registry-client#readme",
+ "_id": "npm-registry-client@6.3.2",
+ "_shasum": "a662a36c6eda56c184099631cf429ba69b73d65b",
+ "_from": "npm-registry-client@>=6.3.2 <6.4.0"
}
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json
new file mode 100644
index 0000000..4561db5
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json
@@ -0,0 +1 @@
+{"_id":"@npm%2fnpm-registry-client","_rev":"213-0a1049cf56172b7d9a1184742c6477b9","name":"@npm/npm-registry-client","description":"Client for the npm registry","dist-tags":{"latest":"2.0.4","v2.0":"2.0.3"},"versions":{"0.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"693a08f6d2faea22bbd2bf412508a63d3e6229a7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"b48c0ec5563c6a6fdc253454fc56d2c60c5a26f4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.3","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"ccc0254c2d59e3ea9b9050e2b16edef78df1a1e8","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.4","_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"faabd25ef477521c74ac21e0f4cf3a2f66d18fb3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.4.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.5","dist":{"shasum":"85219810c9d89ae8d28ea766e7cf74efbd9f1e52","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.5.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"The code that npm uses to talk to the registry","version":"0.0.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.6","dist":{"shasum":"cc6533b3b41df65e6e9db2601fbbf1a509a7e94c","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.6.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"The code that npm uses to talk to the registry","version":"0.0.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.7","dist":{"shasum":"0cee1d1c61f1c8e483774fe1f7bbb81c4f394a3a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.7.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.8","dist":{"shasum":"1b7411c3f7310ec2a96b055b00e7ca606e47bd07","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.8.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.9","dist":{"shasum":"6d5bfde431559ac9e2e52a7db85f5839b874f022","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.9.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.10","dist":{"shasum":"0c8b6a4615bce82aa6cc04a0d1f7dc89921f7a38","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.10.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.11","dist":{"shasum":"afab40be5bed1faa946d8e1827844698f2ec1db7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.11.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.0","dist":{"shasum":"1077d6bbb5e432450239dc6622a59474953ffbea","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.0.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.1","dist":{"shasum":"759765361d09b715270f59cf50f10908e4e9c5fc","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.2","dist":{"shasum":"541ce93abb3d35f5c325545c718dd3bbeaaa9ff0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.3","dist":{"shasum":"e9a40d7031e8f809af5fd85aa9aac979e17efc97","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.4","dist":{"shasum":"b211485b046191a1085362376530316f0cab0420","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.4.tgz"},"_npmVersion":"1.1.48","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.0","dist":{"shasum":"6508a4b4d96f31057d5200ca5779531bafd2b840","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.1","dist":{"shasum":"1bc8c4576c368cd88253d8a52daf40c55b89bb1a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.5","dist":{"shasum":"2f55d675dfb977403b1ad0d96874c1d30e8058d7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.5.tgz"},"_npmVersion":"1.1.51","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.6","dist":{"shasum":"f05df6695360360ad220e6e13a6a7bace7165fbe","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.6.tgz"},"_npmVersion":"1.1.56","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.7","dist":{"shasum":"867bad8854cae82ed89ee3b7f1d391af59491671","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.7.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.8","dist":{"shasum":"ef194cdb70f1ea03a576cff2c97392fa96e36563","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.8.tgz"},"_npmVersion":"1.1.62","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.9","dist":{"shasum":"3cec10431dfed1594adaf99c50f482ee56ecf9e4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.9.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.10","dist":{"shasum":"1e69726dae0944e78562fd77243f839c6a2ced1e","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.10.tgz"},"_npmVersion":"1.1.64","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.11","dist":{"shasum":"d92f33c297eb1bbd57fd597c3d8f5f7e9340a0b5","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.11.tgz"},"_npmVersion":"1.1.70","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.12":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.12","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.12","dist":{"shasum":"3bfb6fc0e4b131d665580cd1481c341fe521bfd3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.12.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.13":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.13","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.13","dist":{"shasum":"e03f2a4340065511b7184a3e2862cd5d459ef027","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.13.tgz"},"_from":".","_npmVersion":"1.2.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.14":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.14","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.14","dist":{"shasum":"186874a7790417a340d582b1cd4a7c338087ee12","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.14.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.15":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.15","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.15","dist":{"shasum":"f71f32b7185855f1f8b7a5ef49e49d2357c2c552","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.15.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.16":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.16","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.16","dist":{"shasum":"3331323b5050fc5afdf77c3a35913c16f3e43964","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.16.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.17":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.17","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.17","dist":{"shasum":"1df2bbecac6751f5d9600fb43722aef96d956773","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.17.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.18":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.18","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.18","dist":{"shasum":"198c8d15ed9b1ed546faf6e431eb63a6b18193ad","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.18.tgz"},"_from":".","_npmVersion":"1.2.13","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.19":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.19","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.19","dist":{"shasum":"106da826f0d2007f6e081f2b68fb6f26fa951b20","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.19.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.20":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.20","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.20","dist":{"shasum":"3fff194331e26660be2cf8ebf45ddf7d36add5f6","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.20.tgz"},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.21":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.21","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.21","dist":{"shasum":"d85dd32525f193925c46ff9eb0e0f529dfd1b254","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.21.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.22":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.22","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.22","dist":{"shasum":"caa22ff40a1ccd632a660b8b80c333c8f92d5a17","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.22.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.23":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.23","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.23","dist":{"shasum":"a320ab2b1d048b4f7b88e40bd86974ca322b4c24","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.23.tgz"},"_from":".","_npmVersion":"1.2.19","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.24":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.24","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.24","dist":{"shasum":"e12f644338619319ee7f233363a1714a87f3c72d","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.24.tgz"},"_from":".","_npmVersion":"1.2.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.25":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.25","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.25","dist":{"shasum":"c2caeb1dcf937d6fcc4a187765d401f5e2f54027","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.25.tgz"},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.26":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.26","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.26","dist":{"shasum":"4c5a2b3de946e383032f10fa497d0c15ee5f4c60","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.26.tgz"},"_from":".","_npmVersion":"1.3.1","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.27":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.27","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~2.0.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.27","dist":{"shasum":"8f338189d32769267886a07ad7b7fd2267446adf","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.27.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.28":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.28","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"~2.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.28","dist":{"shasum":"959141fc0180d7b1ad089e87015a8a2142a8bffc","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.28.tgz"},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.29":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.29","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.29","dist":{"shasum":"66ff2766f0c61d41e8a6139d3692d8833002c686","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.29.tgz"},"_from":".","_npmVersion":"1.3.12","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.30":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.30","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.30","dist":{"shasum":"f01cae5c51aa0a1c5dc2516cbad3ebde068d3eaa","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.30.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.31":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.31","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.31","dist":{"shasum":"24a23e24e43246677cb485f8391829e9536563d4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.31.tgz"},"_from":".","_npmVersion":"1.3.17","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.0","dist":{"shasum":"66eab02a69be67f232ac14023eddfb8308c2eccd","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.1","dist":{"shasum":"16dba07cc304442edcece378218672d0a1258ef8","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.1.tgz"},"_from":".","_npmVersion":"1.3.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.2","dist":{"shasum":"ea3060bd0a87fb1d97b87433b50f38f7272b1686","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.2.tgz"},"_from":".","_npmVersion":"1.3.20","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.3","dist":{"shasum":"da08bb681fb24aa5c988ca71f8c10f27f09daf4a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.4","dist":{"shasum":"25d771771590b1ca39277aea4506af234c5f4342","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.4.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.5","dist":{"shasum":"98ba1ac851a3939a3fb9917c28fa8da522dc635f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.5.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.6","dist":{"shasum":"c48a2a03643769acc49672860f7920ec6bffac6e","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.6.tgz"},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.0","dist":{"shasum":"30d0c178b7f2e54183a6a3fc9fe4071eb10290bf","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.1","dist":{"shasum":"9c49b3e44558e2072158fb085be8a083c5f83537","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.1.tgz"},"_from":".","_npmVersion":"1.4.0","_npmUser":{"name":"npm-www","email":"npm@npmjs.com"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.2","dist":{"shasum":"d9568a9413bee14951201ce73f3b3992ec6658c0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.2.tgz"},"_from":".","_npmVersion":"1.4.1","_npmUser":{"name":"npm-www","email":"npm@npmjs.com"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.3","dist":{"shasum":"aa188fc5067158e991a57f4697c54994108f5389","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.3.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.4","dist":{"shasum":"f9dbc383a49069d8c7f67755a3ff6e424aff584f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.4.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.5","dist":{"shasum":"7d6fdca46139470715f9477ddb5ad3e770d4de7b","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.5.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.6","_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"657f69a79543fc4cc264c3b2de958bd15f7140fe","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.6.tgz"},"directories":{}},"0.4.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.7","dist":{"shasum":"f4369b59890da7882527eb7c427dd95d43707afb","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.7.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.8","_shasum":"a6685a161033101be6064b7af887ab440e8695d0","_from":".","_npmVersion":"1.4.8","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"a6685a161033101be6064b7af887ab440e8695d0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.8.tgz"},"directories":{}},"0.4.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.9","_shasum":"304d3d4726a58e33d8cc965afdc9ed70b996580c","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"304d3d4726a58e33d8cc965afdc9ed70b996580c","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.9.tgz"},"directories":{}},"0.4.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.10","_shasum":"ab7bf1be3ba07d769eaf74dee3c9347e02283116","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"ab7bf1be3ba07d769eaf74dee3c9347e02283116","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.10.tgz"},"directories":{}},"0.4.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"2 >=2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.11","_shasum":"032e9b6b050ed052ee9441841a945a184ea6bc33","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"032e9b6b050ed052ee9441841a945a184ea6bc33","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.11.tgz"},"directories":{}},"0.4.12":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.12","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"2 >=2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.12","_shasum":"34303422f6a3da93ca3a387a2650d707c8595b99","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"34303422f6a3da93ca3a387a2650d707c8595b99","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.12.tgz"},"directories":{}},"1.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"1.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@1.0.0","_shasum":"2a6f9dfdce5f8ebf4b9af4dbfd738384d25014e5","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"2a6f9dfdce5f8ebf4b9af4dbfd738384d25014e5","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-1.0.0.tgz"},"directories":{}},"1.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"1.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"98b1278c230cf6c159f189e2f8c69daffa727ab8","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@1.0.1","_shasum":"c5f6a87d285f2005a35d3f67d9c724bce551b0f1","_from":".","_npmVersion":"1.4.13","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"c5f6a87d285f2005a35d3f67d9c724bce551b0f1","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-1.0.1.tgz"},"directories":{}},"2.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"47a98069b6a34e751cbd5b84ce92858cae5abe70","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.0","_shasum":"88810dac2d534c0df1d905c79e723392fcfc791a","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"88810dac2d534c0df1d905c79e723392fcfc791a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.0.tgz"},"directories":{}},"2.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"123e40131f83f7265f66ecd2a558cce44a3aea86","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.1","_shasum":"611c7cb7c8f7ff22be2ebc6398423b5de10db0e2","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"611c7cb7c8f7ff22be2ebc6398423b5de10db0e2","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.1.tgz"},"directories":{}},"2.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"6ecc311c9dd4890f2d9b6bae60447070a3321e12","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.2","_shasum":"a82b000354c7f830114fb18444764bc477d5740f","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"a82b000354c7f830114fb18444764bc477d5740f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.2.tgz"},"directories":{}},"3.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"6bb1aec1e85fa82ee075bd997d6fb9f2dbb7f643","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.0","_shasum":"4febc5cdb274e9fa06bc3008910e3fa1ec007994","_from":".","_npmVersion":"1.5.0-pre","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"4febc5cdb274e9fa06bc3008910e3fa1ec007994","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.0.tgz"},"directories":{}},"3.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"fe8382dde609ea1e3580fcdc5bc3d0bba119cfc6","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.1","_shasum":"5f3ee362ce5c237cfb798fce22c77875fc1a63c2","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"5f3ee362ce5c237cfb798fce22c77875fc1a63c2","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.1.tgz"},"directories":{}},"2.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"2578fb9a807d77417554ba235ba8fac39405e832","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.3","_shasum":"93dad3d9a162c99404badb71739c622c0f3b9a72","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"93dad3d9a162c99404badb71739c622c0f3b9a72","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.3.tgz"},"directories":{}},"3.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"15343019160ace0b9874cf0ec186b3425dbc7301","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.2","_shasum":"5dd0910157ce55f4286a1871d39f9a2128cd3c99","_from":".","_npmVersion":"1.5.0-alpha-2","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"5dd0910157ce55f4286a1871d39f9a2128cd3c99","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.2.tgz"},"directories":{}},"3.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1 || 3.x","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"b18a780d1185f27c06c27812147b83aba0d4a2f5","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.3","_shasum":"2377dc1cf69b4d374b3a95fb7feba8c804d8cb30","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"2377dc1cf69b4d374b3a95fb7feba8c804d8cb30","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.3.tgz"},"directories":{}},"3.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.5.0","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1 || 3.x","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"54900fe4b2eb5b99ee6dfe173f145732fdfae80e","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.4","_shasum":"d4a177d1f25615cfaef9b6844fa366ffbf5f578a","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"d4a177d1f25615cfaef9b6844fa366ffbf5f578a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.4.tgz"},"directories":{}},"3.0.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"0.5","normalize-package-data":"0.4","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"2","semver":"2 >=2.2.1 || 3.x","slide":"^1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"635db1654346bc86473df7b39626601425f46177","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.5","_shasum":"cdabaefa399b81ac8a86a48718aefd80e7b19ff3","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"cdabaefa399b81ac8a86a48718aefd80e7b19ff3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.5.tgz"},"directories":{}},"3.0.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"^0.5.0","normalize-package-data":"0.4","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"2","semver":"2 >=2.2.1 || 3.x","slide":"^1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"ISC","gitHead":"eba30fadd724ed5cad1aec95ac3ee907a59b7317","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.6","_shasum":"14a17d9a60ed2a80b04edcbc596dbce0d96540ee","_from":".","_npmVersion":"1.4.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"14a17d9a60ed2a80b04edcbc596dbce0d96540ee","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.6.tgz"},"directories":{}},"2.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"^0.5.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"ISC","gitHead":"a10f621d9cdc813b9d3092a14b661f65bfa6d40d","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.4","_shasum":"528e08900d7655c12096d1637d1c3a7a5b451019","_from":".","_npmVersion":"1.4.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"528e08900d7655c12096d1637d1c3a7a5b451019","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.4.tgz"},"directories":{}}},"readme":"# npm-registry-client\u000a\u000aThe code that npm uses to talk to the registry.\u000a\u000aIt handles all the caching and HTTP calls.\u000a\u000a## Usage\u000a\u000a```javascript\u000avar RegClient = require('npm-registry-client')\u000avar client = new RegClient(config)\u000avar uri = \"npm://registry.npmjs.org/npm\"\u000avar options = {timeout: 1000}\u000a\u000aclient.get(uri, options, function (error, data, raw, res) {\u000a // error is an error if there was a problem.\u000a // data is the parsed data object\u000a // raw is the json string\u000a // res is the response from couch\u000a})\u000a```\u000a\u000a# Registry URLs\u000a\u000aThe registry calls take either a full URL pointing to a resource in the\u000aregistry, or a base URL for the registry as a whole (for the base URL, any path\u000awill be ignored). In addition to `http` and `https`, `npm` URLs are allowed.\u000a`npm` URLs are `https` URLs with the additional restrictions that they will\u000aalways include authorization credentials, and the response is always registry\u000ametadata (and not tarballs or other attachments).\u000a\u000a# Configuration\u000a\u000aThis program is designed to work with\u000a[npmconf](https://npmjs.org/package/npmconf), but you can also pass in\u000aa plain-jane object with the appropriate configs, and it'll shim it\u000afor you. Any configuration thingie that has get/set/del methods will\u000aalso be accepted.\u000a\u000a* `cache` **Required** {String} Path to the cache folder\u000a* `always-auth` {Boolean} Auth even for GET requests.\u000a* `auth` {String} A base64-encoded `username:password`\u000a* `email` {String} User's email address\u000a* `tag` {String} The default tag to use when publishing new packages.\u000a Default = `\"latest\"`\u000a* `ca` {String} Cerficate signing authority certificates to trust.\u000a* `cert` {String} Client certificate (PEM encoded). Enable access\u000a to servers that require client certificates\u000a* `key` {String} Private key (PEM encoded) for client certificate 'cert'\u000a* `strict-ssl` {Boolean} Whether or not to be strict with SSL\u000a certificates. Default = `true`\u000a* `user-agent` {String} User agent header to send. Default =\u000a `\"node/{process.version} {process.platform} {process.arch}\"`\u000a* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\u000a that works, otherwise logs are disabled.\u000a* `fetch-retries` {Number} Number of times to retry on GET failures.\u000a Default=2\u000a* `fetch-retry-factor` {Number} `factor` setting for `node-retry`. Default=10\u000a* `fetch-retry-mintimeout` {Number} `minTimeout` setting for `node-retry`.\u000a Default=10000 (10 seconds)\u000a* `fetch-retry-maxtimeout` {Number} `maxTimeout` setting for `node-retry`.\u000a Default=60000 (60 seconds)\u000a* `proxy` {URL} The url to proxy requests through.\u000a* `https-proxy` {URL} The url to proxy https requests through.\u000a Defaults to be the same as `proxy` if unset.\u000a* `_auth` {String} The base64-encoded authorization header.\u000a* `username` `_password` {String} Username/password to use to generate\u000a `_auth` if not supplied.\u000a* `_token` {Object} A token for use with\u000a [couch-login](https://npmjs.org/package/couch-login)\u000a\u000a# client.request(method, uri, options, cb)\u000a\u000a* `method` {String} HTTP method\u000a* `uri` {String} URI pointing to the resource to request\u000a* `options` {Object} Object containing optional per-request properties.\u000a * `what` {Stream | Buffer | String | Object} The request body. Objects\u000a that are not Buffers or Streams are encoded as JSON.\u000a * `etag` {String} The cached ETag\u000a * `follow` {Boolean} Follow 302/301 responses (defaults to true)\u000a* `cb` {Function}\u000a * `error` {Error | null}\u000a * `data` {Object} the parsed data object\u000a * `raw` {String} the json\u000a * `res` {Response Object} response from couch\u000a\u000aMake a request to the registry. All the other methods are wrappers around\u000a`request`.\u000a\u000a# client.adduser(base, username, password, email, cb)\u000a\u000a* `base` {String} Base registry URL\u000a* `username` {String}\u000a* `password` {String}\u000a* `email` {String}\u000a* `cb` {Function}\u000a\u000aAdd a user account to the registry, or verify the credentials.\u000a\u000a# client.deprecate(uri, version, message, cb)\u000a\u000a* `uri` {String} Full registry URI for the deprecated package\u000a* `version` {String} Semver version range\u000a* `message` {String} The message to use as a deprecation warning\u000a* `cb` {Function}\u000a\u000aDeprecate a version of a package in the registry.\u000a\u000a# client.bugs(uri, cb)\u000a\u000a* `uri` {String} Full registry URI for the package\u000a* `cb` {Function}\u000a\u000aGet the url for bugs of a package\u000a\u000a# client.get(uri, options, cb)\u000a\u000a* `uri` {String} The complete registry URI to fetch\u000a* `options` {Object} Object containing optional per-request properties.\u000a * `timeout` {Number} Duration before the request times out.\u000a * `follow` {Boolean} Follow 302/301 responses (defaults to true)\u000a * `staleOk` {Boolean} If there's cached data available, then return that\u000a to the callback quickly, and update the cache the background.\u000a\u000aFetches data from the registry via a GET request, saving it in the cache folder\u000awith the ETag.\u000a\u000a# client.publish(uri, data, tarball, cb)\u000a\u000a* `uri` {String} The registry URI to publish to\u000a* `data` {Object} Package data\u000a* `tarball` {String | Stream} Filename or stream of the package tarball\u000a* `cb` {Function}\u000a\u000aPublish a package to the registry.\u000a\u000aNote that this does not create the tarball from a folder. However, it can\u000aaccept a gzipped tar stream or a filename to a tarball.\u000a\u000a# client.star(uri, starred, cb)\u000a\u000a* `uri` {String} The complete registry URI to star\u000a* `starred` {Boolean} True to star the package, false to unstar it.\u000a* `cb` {Function}\u000a\u000aStar or unstar a package.\u000a\u000aNote that the user does not have to be the package owner to star or unstar a\u000apackage, though other writes do require that the user be the package owner.\u000a\u000a# client.stars(base, username, cb)\u000a\u000a* `base` {String} The base URL for the registry\u000a* `username` {String} Name of user to fetch starred packages for.\u000a* `cb` {Function}\u000a\u000aView your own or another user's starred packages.\u000a\u000a# client.tag(uri, version, tag, cb)\u000a\u000a* `uri` {String} The complete registry URI to tag\u000a* `version` {String} Version to tag\u000a* `tag` {String} Tag name to apply\u000a* `cb` {Function}\u000a\u000aMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\u000aspecified version.\u000a\u000a# client.unpublish(uri, [ver], cb)\u000a\u000a* `uri` {String} The complete registry URI to unpublish\u000a* `ver` {String} version to unpublish. Leave blank to unpublish all\u000a versions.\u000a* `cb` {Function}\u000a\u000aRemove a version of a package (or all versions) from the registry. When the\u000alast version us unpublished, the entire document is removed from the database.\u000a\u000a# client.upload(uri, file, [etag], [nofollow], cb)\u000a\u000a* `uri` {String} The complete registry URI to upload to\u000a* `file` {String | Stream} Either the filename or a readable stream\u000a* `etag` {String} Cache ETag\u000a* `nofollow` {Boolean} Do not follow 301/302 responses\u000a* `cb` {Function}\u000a\u000aUpload an attachment. Mostly used by `client.publish()`.\u000a","maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"time":{"modified":"2014-07-31T21:59:52.896Z","created":"2012-06-07T04:43:36.581Z","0.0.1":"2012-06-07T04:43:38.123Z","0.0.2":"2012-06-07T05:35:05.937Z","0.0.3":"2012-06-09T00:55:25.861Z","0.0.4":"2012-06-11T03:53:26.548Z","0.0.5":"2012-06-11T23:48:11.235Z","0.0.6":"2012-06-17T06:23:27.320Z","0.0.7":"2012-06-18T19:19:38.315Z","0.0.8":"2012-06-28T20:40:20.563Z","0.0.9":"2012-07-10T03:28:04.651Z","0.0.10":"2012-07-11T17:03:45.151Z","0.0.11":"2012-07-17T14:06:37.489Z","0.1.0":"2012-07-23T18:17:38.007Z","0.1.1":"2012-07-23T21:21:28.196Z","0.1.2":"2012-07-24T06:14:12.831Z","0.1.3":"2012-08-07T02:02:20.564Z","0.1.4":"2012-08-15T03:04:52.822Z","0.1.5":"2012-08-17T21:59:33.310Z","0.2.0":"2012-08-17T22:00:18.081Z","0.2.1":"2012-08-17T22:07:28.827Z","0.2.2":"2012-08-17T22:37:24.352Z","0.2.3":"2012-08-19T19:16:44.808Z","0.2.4":"2012-08-19T19:18:51.792Z","0.2.5":"2012-08-20T16:54:50.794Z","0.2.6":"2012-08-22T00:25:04.766Z","0.2.7":"2012-08-27T19:07:34.829Z","0.2.8":"2012-10-02T19:53:50.661Z","0.2.9":"2012-10-03T22:09:50.766Z","0.2.10":"2012-10-25T14:55:54.216Z","0.2.11":"2012-12-21T16:26:38.094Z","0.2.12":"2013-01-18T22:22:41.668Z","0.2.13":"2013-02-06T00:16:35.939Z","0.2.14":"2013-02-10T02:44:02.764Z","0.2.15":"2013-02-11T19:18:55.678Z","0.2.16":"2013-02-15T17:09:03.249Z","0.2.17":"2013-02-16T03:47:13.898Z","0.2.18":"2013-03-06T22:09:23.536Z","0.2.19":"2013-03-20T06:27:39.128Z","0.2.20":"2013-03-28T00:43:07.558Z","0.2.21":"2013-04-29T15:46:54.094Z","0.2.22":"2013-04-29T15:51:02.178Z","0.2.23":"2013-05-11T00:28:14.198Z","0.2.24":"2013-05-24T21:27:50.693Z","0.2.25":"2013-06-20T15:36:46.277Z","0.2.26":"2013-07-06T17:12:54.670Z","0.2.27":"2013-07-11T07:14:45.740Z","0.2.28":"2013-08-02T20:27:41.732Z","0.2.29":"2013-10-28T18:23:24.477Z","0.2.30":"2013-11-18T23:12:00.540Z","0.2.31":"2013-12-16T08:36:43.044Z","0.3.0":"2013-12-17T07:03:10.699Z","0.3.1":"2013-12-17T16:53:27.867Z","0.3.2":"2013-12-17T22:25:14.882Z","0.3.3":"2013-12-21T16:07:06.773Z","0.3.4":"2014-01-29T15:24:05.163Z","0.3.5":"2014-01-31T01:53:19.656Z","0.3.6":"2014-02-07T00:17:21.362Z","0.4.0":"2014-02-13T01:17:18.973Z","0.4.1":"2014-02-13T23:47:37.892Z","0.4.2":"2014-02-14T00:29:13.086Z","0.4.3":"2014-02-16T03:40:54.640Z","0.4.4":"2014-02-16T03:41:48.856Z","0.4.5":"2014-03-12T05:09:17.474Z","0.4.6":"2014-03-29T19:44:15.041Z","0.4.7":"2014-04-02T19:41:07.149Z","0.4.8":"2014-05-01T22:24:54.980Z","0.4.9":"2014-05-12T21:52:55.127Z","0.4.10":"2014-05-13T16:44:29.801Z","0.4.11":"2014-05-13T20:33:04.738Z","0.4.12":"2014-05-14T06:14:22.842Z","1.0.0":"2014-05-14T23:04:37.188Z","1.0.1":"2014-06-03T00:55:54.448Z","2.0.0":"2014-06-06T04:23:46.579Z","2.0.1":"2014-06-06T06:25:14.419Z","2.0.2":"2014-06-14T00:33:10.205Z","3.0.0":"2014-07-02T00:30:29.154Z","3.0.1":"2014-07-14T23:29:05.057Z","2.0.3":"2014-07-15T00:09:36.043Z","3.0.2":"2014-07-17T06:30:02.659Z","3.0.3":"2014-07-23T21:20:42.406Z","3.0.4":"2014-07-25T00:27:26.007Z","3.0.5":"2014-07-25T00:28:48.007Z","3.0.6":"2014-07-31T21:57:49.043Z","2.0.4":"2014-07-31T21:59:52.896Z"},"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"repository":{"url":"git://github.com/isaacs/npm-registry-client"},"users":{"fgribreau":true,"fengmk2":true},"readmeFilename":"README.md","homepage":"https://github.com/isaacs/npm-registry-client","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"license":"ISC","_attachments":{}}
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json
new file mode 100644
index 0000000..01da300
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json
@@ -0,0 +1 @@
+{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"47ac53683daf832bfa952e1774417da47817ae42","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}}
\ No newline at end of file
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..19da9baa7fb191637b058d52d7f1c94a67e2196e
GIT binary patch
literal 58692
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Ã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 |