From 11e32581666267a2ca4b71ca1fe96af0aa0a0e79 Mon Sep 17 00:00:00 2001 From: isaacs Date: Wed, 26 Feb 2020 17:11:08 -0800 Subject: [PATCH 1/7] deps: upgrade npm to 6.14.1 PR-URL: https://github.com/nodejs/node/pull/31977 Reviewed-By: Ruben Bridgewater Reviewed-By: Colin Ihrig Reviewed-By: Shelley Vohr Reviewed-By: Beth Griggs Reviewed-By: Michael Dawson --- deps/npm/AUTHORS | 6 + deps/npm/CHANGELOG.md | 38 ++ .../npm/docs/content/cli-commands/npm-fund.md | 12 +- .../docs/content/cli-commands/npm-publish.md | 12 +- .../content/configuring-npm/package-json.md | 21 +- deps/npm/docs/content/using-npm/disputes.md | 2 +- deps/npm/docs/content/using-npm/scripts.md | 169 ++--- .../public/cli-commands/npm-access/index.html | 4 +- .../cli-commands/npm-adduser/index.html | 4 +- .../public/cli-commands/npm-audit/index.html | 4 +- .../public/cli-commands/npm-bin/index.html | 4 +- .../public/cli-commands/npm-bugs/index.html | 4 +- .../public/cli-commands/npm-build/index.html | 4 +- .../public/cli-commands/npm-bundle/index.html | 4 +- .../public/cli-commands/npm-cache/index.html | 4 +- .../public/cli-commands/npm-ci/index.html | 4 +- .../cli-commands/npm-completion/index.html | 4 +- .../public/cli-commands/npm-config/index.html | 4 +- .../public/cli-commands/npm-dedupe/index.html | 4 +- .../cli-commands/npm-deprecate/index.html | 4 +- .../cli-commands/npm-dist-tag/index.html | 4 +- .../public/cli-commands/npm-docs/index.html | 4 +- .../public/cli-commands/npm-doctor/index.html | 4 +- .../public/cli-commands/npm-edit/index.html | 4 +- .../cli-commands/npm-explore/index.html | 4 +- .../public/cli-commands/npm-fund/index.html | 15 +- .../cli-commands/npm-help-search/index.html | 4 +- .../public/cli-commands/npm-help/index.html | 4 +- .../public/cli-commands/npm-hook/index.html | 4 +- .../public/cli-commands/npm-init/index.html | 4 +- .../npm-install-ci-test/index.html | 4 +- .../cli-commands/npm-install-test/index.html | 4 +- .../cli-commands/npm-install/index.html | 4 +- .../public/cli-commands/npm-link/index.html | 4 +- .../public/cli-commands/npm-logout/index.html | 4 +- .../public/cli-commands/npm-ls/index.html | 6 +- .../public/cli-commands/npm-org/index.html | 4 +- .../cli-commands/npm-outdated/index.html | 4 +- .../public/cli-commands/npm-owner/index.html | 4 +- .../public/cli-commands/npm-pack/index.html | 4 +- .../public/cli-commands/npm-ping/index.html | 4 +- .../public/cli-commands/npm-prefix/index.html | 4 +- .../cli-commands/npm-profile/index.html | 4 +- .../public/cli-commands/npm-prune/index.html | 4 +- .../cli-commands/npm-publish/index.html | 16 +- .../cli-commands/npm-rebuild/index.html | 4 +- .../public/cli-commands/npm-repo/index.html | 4 +- .../cli-commands/npm-restart/index.html | 4 +- .../public/cli-commands/npm-root/index.html | 4 +- .../cli-commands/npm-run-script/index.html | 4 +- .../public/cli-commands/npm-search/index.html | 4 +- .../cli-commands/npm-shrinkwrap/index.html | 4 +- .../public/cli-commands/npm-star/index.html | 4 +- .../public/cli-commands/npm-stars/index.html | 4 +- .../public/cli-commands/npm-start/index.html | 4 +- .../public/cli-commands/npm-stop/index.html | 4 +- .../public/cli-commands/npm-team/index.html | 4 +- .../public/cli-commands/npm-test/index.html | 4 +- .../public/cli-commands/npm-token/index.html | 4 +- .../cli-commands/npm-uninstall/index.html | 4 +- .../cli-commands/npm-unpublish/index.html | 4 +- .../public/cli-commands/npm-update/index.html | 4 +- .../cli-commands/npm-version/index.html | 4 +- .../public/cli-commands/npm-view/index.html | 4 +- .../public/cli-commands/npm-whoami/index.html | 4 +- .../docs/public/cli-commands/npm/index.html | 6 +- .../public/configuring-npm/folders/index.html | 4 +- .../public/configuring-npm/install/index.html | 4 +- .../public/configuring-npm/npmrc/index.html | 4 +- .../configuring-npm/package-json/index.html | 26 +- .../package-lock-json/index.html | 4 +- .../configuring-npm/package-locks/index.html | 4 +- .../shrinkwrap-json/index.html | 4 +- deps/npm/docs/public/index.html | 2 +- deps/npm/docs/public/static/d/2215187023.json | 2 +- .../docs/public/using-npm/config/index.html | 4 +- .../public/using-npm/developers/index.html | 4 +- .../docs/public/using-npm/disputes/index.html | 6 +- .../npm/docs/public/using-npm/orgs/index.html | 4 +- .../docs/public/using-npm/registry/index.html | 4 +- .../docs/public/using-npm/removal/index.html | 4 +- .../docs/public/using-npm/scope/index.html | 4 +- .../docs/public/using-npm/scripts/index.html | 154 ++--- .../docs/public/using-npm/semver/index.html | 4 +- deps/npm/lib/access.js | 2 +- deps/npm/lib/fund.js | 128 ++-- deps/npm/lib/utils/error-handler.js | 8 +- deps/npm/lib/utils/error-message.js | 4 +- deps/npm/lib/utils/funding.js | 94 ++- deps/npm/lib/utils/unsupported.js | 31 +- deps/npm/man/man1/npm-README.1 | 2 +- deps/npm/man/man1/npm-access.1 | 2 +- deps/npm/man/man1/npm-adduser.1 | 2 +- deps/npm/man/man1/npm-audit.1 | 2 +- deps/npm/man/man1/npm-bin.1 | 2 +- deps/npm/man/man1/npm-bugs.1 | 2 +- deps/npm/man/man1/npm-build.1 | 2 +- deps/npm/man/man1/npm-bundle.1 | 2 +- deps/npm/man/man1/npm-cache.1 | 2 +- deps/npm/man/man1/npm-ci.1 | 2 +- deps/npm/man/man1/npm-completion.1 | 2 +- deps/npm/man/man1/npm-config.1 | 2 +- deps/npm/man/man1/npm-dedupe.1 | 2 +- deps/npm/man/man1/npm-deprecate.1 | 2 +- deps/npm/man/man1/npm-dist-tag.1 | 2 +- deps/npm/man/man1/npm-docs.1 | 2 +- deps/npm/man/man1/npm-doctor.1 | 2 +- deps/npm/man/man1/npm-edit.1 | 2 +- deps/npm/man/man1/npm-explore.1 | 2 +- deps/npm/man/man1/npm-fund.1 | 19 +- deps/npm/man/man1/npm-help-search.1 | 2 +- deps/npm/man/man1/npm-help.1 | 2 +- deps/npm/man/man1/npm-hook.1 | 2 +- deps/npm/man/man1/npm-init.1 | 2 +- deps/npm/man/man1/npm-install-ci-test.1 | 2 +- deps/npm/man/man1/npm-install-test.1 | 2 +- deps/npm/man/man1/npm-install.1 | 2 +- deps/npm/man/man1/npm-link.1 | 2 +- deps/npm/man/man1/npm-logout.1 | 2 +- deps/npm/man/man1/npm-ls.1 | 4 +- deps/npm/man/man1/npm-org.1 | 2 +- deps/npm/man/man1/npm-outdated.1 | 2 +- deps/npm/man/man1/npm-owner.1 | 2 +- deps/npm/man/man1/npm-pack.1 | 2 +- deps/npm/man/man1/npm-ping.1 | 2 +- deps/npm/man/man1/npm-prefix.1 | 2 +- deps/npm/man/man1/npm-profile.1 | 2 +- deps/npm/man/man1/npm-prune.1 | 2 +- deps/npm/man/man1/npm-publish.1 | 2 +- deps/npm/man/man1/npm-rebuild.1 | 2 +- deps/npm/man/man1/npm-repo.1 | 2 +- deps/npm/man/man1/npm-restart.1 | 2 +- deps/npm/man/man1/npm-root.1 | 2 +- deps/npm/man/man1/npm-run-script.1 | 2 +- deps/npm/man/man1/npm-search.1 | 2 +- deps/npm/man/man1/npm-shrinkwrap.1 | 2 +- deps/npm/man/man1/npm-star.1 | 2 +- deps/npm/man/man1/npm-stars.1 | 2 +- deps/npm/man/man1/npm-start.1 | 2 +- deps/npm/man/man1/npm-stop.1 | 2 +- deps/npm/man/man1/npm-team.1 | 2 +- deps/npm/man/man1/npm-test.1 | 2 +- deps/npm/man/man1/npm-token.1 | 2 +- deps/npm/man/man1/npm-uninstall.1 | 2 +- deps/npm/man/man1/npm-unpublish.1 | 2 +- deps/npm/man/man1/npm-update.1 | 2 +- deps/npm/man/man1/npm-version.1 | 2 +- deps/npm/man/man1/npm-view.1 | 2 +- deps/npm/man/man1/npm-whoami.1 | 2 +- deps/npm/man/man1/npm.1 | 4 +- deps/npm/man/man5/folders.5 | 2 +- deps/npm/man/man5/install.5 | 2 +- deps/npm/man/man5/npmrc.5 | 2 +- deps/npm/man/man5/package-json.5 | 22 +- deps/npm/man/man5/package-lock-json.5 | 2 +- deps/npm/man/man5/package-locks.5 | 2 +- deps/npm/man/man5/shrinkwrap-json.5 | 2 +- deps/npm/man/man7/config.7 | 2 +- deps/npm/man/man7/developers.7 | 2 +- deps/npm/man/man7/disputes.7 | 4 +- deps/npm/man/man7/orgs.7 | 2 +- deps/npm/man/man7/registry.7 | 2 +- deps/npm/man/man7/removal.7 | 2 +- deps/npm/man/man7/scope.7 | 2 +- deps/npm/man/man7/scripts.7 | 205 +++--- deps/npm/man/man7/semver.7 | 2 +- deps/npm/node_modules/chownr/chownr.js | 74 ++- deps/npm/node_modules/chownr/package.json | 33 +- .../node_modules/hosted-git-info/CHANGELOG.md | 16 + .../npm/node_modules/hosted-git-info/index.js | 27 +- .../node_modules/hosted-git-info/package.json | 22 +- .../node_modules/npm-packlist/package.json | 25 +- .../npm-registry-fetch/CHANGELOG.md | 11 + .../node_modules/npm-registry-fetch/README.md | 31 +- .../node_modules/npm-registry-fetch/config.js | 4 +- .../node_modules/npm-registry-fetch/index.js | 32 +- .../npm-registry-fetch/package.json | 25 +- .../node_modules/readable-stream/README.md | 11 +- .../readable-stream/lib/_stream_readable.js | 71 ++- .../readable-stream/lib/_stream_writable.js | 28 +- .../lib/internal/streams/buffer_list.js | 313 +++++----- .../lib/internal/streams/destroy.js | 32 +- .../lib/internal/streams/from-browser.js | 3 + .../lib/internal/streams/from.js | 64 ++ .../node_modules/readable-stream/package.json | 24 +- .../node_modules/safe-buffer/LICENSE | 21 + .../node_modules/safe-buffer/README.md | 586 ++++++++++++++++++ .../node_modules/safe-buffer/index.d.ts | 187 ++++++ .../node_modules/safe-buffer/index.js | 64 ++ .../node_modules/safe-buffer/package.json | 62 ++ .../node_modules/string_decoder/package.json | 14 +- deps/npm/package.json | 17 +- deps/npm/scripts/update-dist-tags.js | 123 ++++ .../test-tap-fund.js-TAP.test.js | 35 +- .../test/fixtures/config/userconfig-with-gc | 2 +- deps/npm/test/tap/access.js | 27 + deps/npm/test/tap/fund.js | 96 ++- deps/npm/test/tap/unsupported.js | 3 +- deps/npm/test/tap/utils.funding.js | 43 ++ 199 files changed, 2611 insertions(+), 945 deletions(-) create mode 100644 deps/npm/node_modules/readable-stream/lib/internal/streams/from-browser.js create mode 100644 deps/npm/node_modules/readable-stream/lib/internal/streams/from.js create mode 100644 deps/npm/node_modules/string_decoder/node_modules/safe-buffer/LICENSE create mode 100644 deps/npm/node_modules/string_decoder/node_modules/safe-buffer/README.md create mode 100644 deps/npm/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts create mode 100644 deps/npm/node_modules/string_decoder/node_modules/safe-buffer/index.js create mode 100644 deps/npm/node_modules/string_decoder/node_modules/safe-buffer/package.json create mode 100644 deps/npm/scripts/update-dist-tags.js diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS index 3e75785db4763a..89270e3c127b4f 100644 --- a/deps/npm/AUTHORS +++ b/deps/npm/AUTHORS @@ -682,3 +682,9 @@ Zhenya Vinogradov Rafael Hengles Jan-Philip Gehrcke Caleb Sacks <16855387+clabe45@users.noreply.github.com> +Kyle Getz +Sean Healy +Netanel Gilad +Dave Nicolson +Ajay Narain Mathur +Vitaliy Markitanov <9357021+vit100@users.noreply.github.com> diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md index 3abd37703a4d02..ff02d1dea0bcad 100644 --- a/deps/npm/CHANGELOG.md +++ b/deps/npm/CHANGELOG.md @@ -1,3 +1,41 @@ +## 6.14.1 (2020-02-26) + +* [`303e5c11e`](https://github.com/npm/cli/commit/303e5c11e7db34cf014107aecd2e81c821bfde8d) + `hosted-git-info@2.8.7` + Fixes a regression where scp-style git urls are passed to the WhatWG URL + parser, which does not handle them properly. + ([@isaacs](https://github.com/isaacs)) + +## 6.14.0 (2020-02-25) + +### FEATURES +* [`30f170877`](https://github.com/npm/cli/commit/30f170877954acd036cb234a581e4eb155049b82) [#731](https://github.com/npm/cli/pull/731) add support for multiple funding sources ([@ljharb](https://github.com/ljharb) & [@ruyadorno](hhttps://github.com/ruyadorno/)) + +### BUG FIXES +* [`55916b130`](https://github.com/npm/cli/commit/55916b130ef52984584678f2cc17c15c1f031cb5) [#508](https://github.com/npm/cli/pull/508) fix: check `npm.config` before accessing its members ([@kaiyoma](https://github.com/kaiyoma)) +* [`7d0cd65b2`](https://github.com/npm/cli/commit/7d0cd65b23c0986b631b9b54d87bbe74902cc023) [#733](https://github.com/npm/cli/pull/733) fix: access grant with unscoped packages ([@netanelgilad](https://github.com/netanelgilad)) +* [`28c3d40d6`](https://github.com/npm/cli/commit/28c3d40d65eef63f9d6ccb60b99ac57f5057a46e), [`0769c5b20`](https://github.com/npm/cli/commit/30f170877954acd036cb234a581e4eb155049b82) [#945](https://github.com/npm/cli/pull/945), [#697](https://github.com/npm/cli/pull/697) fix: allow new major versions of node to be automatically considered "supported" ([@isaacs](https://github.com/isaacs), [@ljharb](https://github.com/ljharb)) + +### DEPENDENCIES +* [`6f39e93`](https://github.com/npm/hosted-git-info/commit/6f39e93bae9162663af6f15a9d10bce675dd5de3) `hosted-git-info@2.8.6` ([@darcyclarke](https://github.com/darcyclarke)) + * fix: passwords & usernames are escaped properly in git deps ([@stevenhilder](https://github.com/stevenhilder)) +* [`f14b594ee`](https://github.com/npm/cli/commit/f14b594ee9dbfc98ed0b65c65d904782db4f31ad) `chownr@1.1.4` ([@isaacs](https://github.com/isaacs)) +* [`77044150b`](https://github.com/npm/cli/commit/77044150b763d67d997f9ff108219132ea922678) `npm-packlist@1.4.8` ([@isaacs](https://github.com/isaacs)) +* [`1d112461a`](https://github.com/npm/cli/commit/1d112461ad8dc99e5ff7fabb5177e8c2f89a9755) `npm-registry-fetch@4.0.3` ([@isaacs](https://github.com/isaacs)) + * [`ba8b4fe`](https://github.com/npm/npm-registry-fetch/commit/ba8b4fe60eb6cdf9b39012560aec596eda8ce924) fix: always bypass cache when ?write=true +* [`a47fed760`](https://github.com/npm/cli/commit/a47fed7603a6ed31dcc314c0c573805f05a96830) `readable-stream@3.6.0` + * [`3bbf2d6`](https://github.com/nodejs/readable-stream/commit/3bbf2d6feb45b03f4e46a2ae8251601ad2262121) fix: babel's "loose mode" class transform enbrittles BufferList ([@ljharb](https://github.com/ljharb)) + +### DOCUMENTATION +* [`284c1c055`](https://github.com/npm/cli/commit/284c1c055a28c4b334496101799acefe3c54ceb3), [`fbb5f0e50`](https://github.com/npm/cli/commit/fbb5f0e50e54425119fa3f03c5de93e4cb6bfda7) [#729](https://github.com/npm/cli/pull/729) update lifecycle hooks docs + ([@seanhealy](https://github.com/seanhealy), [@mikemimik](https://github.com/mikemimik)) +* [`1c272832d`](https://github.com/npm/cli/commit/1c272832d048300e409882313305c416dc6f21a2) [#787](https://github.com/npm/cli/pull/787) fix: trademarks typo ([@dnicolson](https://github.com/dnicolson)) +* [`f6ff41776`](https://github.com/npm/cli/commit/f6ff417767d52418cc8c9e7b9731ede2c3916d2e) [#936](https://github.com/npm/cli/pull/936) fix: postinstall example ([@ajaymathur](https://github.com/ajaymathur)) +* [`373224b16`](https://github.com/npm/cli/commit/373224b16e019b7b63d8f0b4c5d4adb7e5cb80dd) [#939](https://github.com/npm/cli/pull/939) fix: bad links in publish docs ([@vit100](https://github.com/vit100)) + +### MISCELLANEOUS +* [`85c79636d`](https://github.com/npm/cli/commit/85c79636df31bac586c0e380c4852ee155a7723c) [#736](https://github.com/npm/cli/pull/736) add script to update dist-tags ([@mikemimik](https://github.com/mikemimik)) + ## 6.13.7 (2020-01-28) ### BUG FIXES diff --git a/deps/npm/docs/content/cli-commands/npm-fund.md b/deps/npm/docs/content/cli-commands/npm-fund.md index 64894e291fc4f6..5a751eec466871 100644 --- a/deps/npm/docs/content/cli-commands/npm-fund.md +++ b/deps/npm/docs/content/cli-commands/npm-fund.md @@ -21,7 +21,8 @@ a given project. If no package name is provided, it will list all dependencies that are looking for funding in a tree-structure in which are listed the type of funding and the url to visit. If a package name is provided then it tries to open its funding url using the `--browser` -config param. +config param; if there are multiple funding sources for the package, the +user will be instructed to pass the `--which` command to disambiguate. The list will avoid duplicated entries and will stack all packages that share the same type/url as a single entry. Given this nature the @@ -38,8 +39,8 @@ The browser that is called by the `npm fund` command to open websites. #### json -* Default: false * Type: Boolean +* Default: false Show information in JSON format. @@ -51,6 +52,13 @@ Show information in JSON format. Whether to represent the tree structure using unicode characters. Set it to `false` in order to use all-ansi output. +#### which + +* Type: Number +* Default: undefined + +If there are multiple funding sources, which 1-indexed source URL to open. + ## See Also * [npm docs](/cli-commands/npm-docs) diff --git a/deps/npm/docs/content/cli-commands/npm-publish.md b/deps/npm/docs/content/cli-commands/npm-publish.md index b9d0cf1449e760..44c36e0b7ac6cc 100644 --- a/deps/npm/docs/content/cli-commands/npm-publish.md +++ b/deps/npm/docs/content/cli-commands/npm-publish.md @@ -73,9 +73,9 @@ included and packs them into a tarball to be uploaded to the registry. * [npm registry](/using-npm/registry) * [npm scope](/using-npm/scope) -* [npm adduser](/cli-commands/npm-adduser) -* [npm owner](/cli-commands/npm-owner) -* [npm deprecate](/cli-commands/npm-deprecate) -* [npm dist-tag](/cli-commands/npm-dist-tag) -* [npm pack](/cli-commands/npm-pack) -* [npm profile](/cli-commands/npm-profile) +* [npm adduser](/cli-commands/adduser) +* [npm owner](/cli-commands/owner) +* [npm deprecate](/cli-commands/deprecate) +* [npm dist-tag](/cli-commands/dist-tag) +* [npm pack](/cli-commands/pack) +* [npm profile](/cli-commands/profile) diff --git a/deps/npm/docs/content/configuring-npm/package-json.md b/deps/npm/docs/content/configuring-npm/package-json.md index ccdbe041fb063f..9af70ea0ab2ccc 100644 --- a/deps/npm/docs/content/configuring-npm/package-json.md +++ b/deps/npm/docs/content/configuring-npm/package-json.md @@ -197,7 +197,8 @@ npm also sets a top-level "maintainers" field with your npm user info. ### funding You can specify an object containing an URL that provides up-to-date -information about ways to help fund development of your package: +information about ways to help fund development of your package, or +a string URL, or an array of these: "funding": { "type" : "individual", @@ -209,10 +210,26 @@ information about ways to help fund development of your package: "url" : "https://www.patreon.com/my-account" } + "funding": "http://example.com/donate" + + "funding": [ + { + "type" : "individual", + "url" : "http://example.com/donate" + }, + "http://example.com/donateAlso", + { + "type" : "patreon", + "url" : "https://www.patreon.com/my-account" + } + ] + + Users can use the `npm fund` subcommand to list the `funding` URLs of all dependencies of their project, direct and indirect. A shortcut to visit each funding url is also available when providing the project name such as: -`npm fund `. +`npm fund ` (when there are multiple URLs, the first one will be +visited) ### files diff --git a/deps/npm/docs/content/using-npm/disputes.md b/deps/npm/docs/content/using-npm/disputes.md index 65751618cab8ae..bb2d25663cb26c 100644 --- a/deps/npm/docs/content/using-npm/disputes.md +++ b/deps/npm/docs/content/using-npm/disputes.md @@ -105,7 +105,7 @@ If you see bad behavior like this, please report it to right away. **You are never expected to resolve abusive behavior on your own. We are here to help.** -### Trademarkss +### Trademarks If you think another npm publisher is infringing your trademark, such as by using a confusingly similar package name, email with a link to diff --git a/deps/npm/docs/content/using-npm/scripts.md b/deps/npm/docs/content/using-npm/scripts.md index 6a2522fba43a77..a518e804727a51 100644 --- a/deps/npm/docs/content/using-npm/scripts.md +++ b/deps/npm/docs/content/using-npm/scripts.md @@ -10,90 +10,64 @@ description: How npm handles the "scripts" field ### Description -npm supports the "scripts" property of the package.json file, for the -following scripts: - -* **prepublish** (_as of npm@5, `prepublish` is deprecated. Use `prepare` for build steps and `prepublishOnly` for upload-only._): - Run BEFORE the package is packed and published, as well as on local `npm - install` without any arguments. (See below) -* **prepare**: - Run both BEFORE the package is packed and published, on local `npm - install` without any arguments, and when installing git dependencies (See - below). This is run AFTER `prepublish`, but BEFORE `prepublishOnly`. -* **prepublishOnly**: - Run BEFORE the package is prepared and packed, ONLY on `npm publish`. (See - below.) -* **prepack**: - run BEFORE a tarball is packed (on `npm pack`, `npm publish`, and when - installing git dependencies) -* **postpack**: - Run AFTER the tarball has been generated and moved to its final destination. -* **publish**, **postpublish**: - Run AFTER the package is published. -* **preinstall**: - Run BEFORE the package is installed -* **install**, **postinstall**: - Run AFTER the package is installed. -* **preuninstall**, **uninstall**: - Run BEFORE the package is uninstalled. -* **postuninstall**: - Run AFTER the package is uninstalled. -* **preversion**: - Run BEFORE bumping the package version. -* **version**: - Run AFTER bumping the package version, but BEFORE commit. -* **postversion**: - Run AFTER bumping the package version, and AFTER commit. -* **pretest**, **test**, **posttest**: - Run by the `npm test` command. -* **prestop**, **stop**, **poststop**: - Run by the `npm stop` command. -* **prestart**, **start**, **poststart**: - Run by the `npm start` command. -* **prerestart**, **restart**, **postrestart**: - Run by the `npm restart` command. Note: `npm restart` will run the - stop and start scripts if no `restart` script is provided. -* **preshrinkwrap**, **shrinkwrap**, **postshrinkwrap**: - Run by the `npm shrinkwrap` command. - -Additionally, arbitrary scripts can be executed by running `npm -run-script `. *Pre* and *post* commands with matching -names will be run for those as well (e.g. `premyscript`, `myscript`, -`postmyscript`). Scripts from dependencies can be run with -`npm explore -- npm run `. - -#### Prepublish and Prepare - -#### Deprecation Note - -Since `npm@1.1.71`, the npm CLI has run the `prepublish` script for both `npm -publish` and `npm install`, because it's a convenient way to prepare a package -for use (some common use cases are described in the section below). It has -also turned out to be, in practice, [very -confusing](https://github.com/npm/npm/issues/10074). As of `npm@4.0.0`, a new -event has been introduced, `prepare`, that preserves this existing behavior. A -_new_ event, `prepublishOnly` has been added as a transitional strategy to -allow users to avoid the confusing behavior of existing npm versions and only -run on `npm publish` (for instance, running the tests one last time to ensure -they're in good shape). - -See for a much lengthier -justification, with further reading, for this change. - -#### Use Cases - -If you need to perform operations on your package before it is used, in a way -that is not dependent on the operating system or architecture of the -target system, use a `prepublish` script. This includes -tasks such as: +The `"scripts"` property of of your `package.json` file supports a number of built-in scripts and their preset life cycle events as well as arbitrary scripts. These all can be executed by running `npm run-script ` or `npm run ` for short. *Pre* and *post* commands with matching names will be run for those as well (e.g. `premyscript`, `myscript`, `postmyscript`). Scripts from dependencies can be run with `npm explore -- npm run `. + +### Pre & Post Scripts + +To create "pre" or "post" scripts for any scripts defined in the `"scripts"` section of the `package.json`, simply create another script *with a matching name* and add "pre" or "post" to the beginning of them. + +```json +{ + "scripts": { + "precompress": "{{ executes BEFORE the `compress` script }}", + "compress": "{{ run command to compress files }}", + "postcompress": "{{ executes AFTER `compress` script }}" + } +} +``` + +### Life Cycle Scripts + +There are some special life cycle scripts that happen only in certain situations. These scripts happen in addtion to the "pre" and "post" script. +* `prepare`, `prepublish`, `prepublishOnly`, `prepack`, `postpack` + +**prepare** (since `npm@4.0.0`) +* Runs BEFORE the package is packed +* Runs BEFORE the package is published +* Runs on local `npm install` without any arguments +* Run AFTER `prepublish`, but BEFORE `prepublishOnly` +* NOTE: If a package being installed through git contains a `prepare` script, its `dependencies` and `devDependencies` will be installed, and the prepare script will be run, before the package is packaged and installed. + +**prepublish** (DEPRECATED) +* Same as `prepare` + +**prepublishOnly** +* Runs BEFORE the package is prepared and packed, ONLY on `npm publish`. + +**prepack** +* Runs BEFORE a tarball is packed (on "`npm pack`", "`npm publish`", and when installing a git dependencies). +* NOTE: "`npm run pack`" is NOT the same as "`npm pack`". "`npm run pack`" is an arbitrary user defined script name, where as, "`npm pack`" is a CLI defined command. + +**postpack** +* Runs AFTER the tarball has been generated and moved to its final destination. + +#### Prepare and Prepublish + +**Deprecation Note: prepublish** + +Since `npm@1.1.71`, the npm CLI has run the `prepublish` script for both `npm publish` and `npm install`, because it's a convenient way to prepare a package for use (some common use cases are described in the section below). It has also turned out to be, in practice, [very confusing](https://github.com/npm/npm/issues/10074). As of `npm@4.0.0`, a new event has been introduced, `prepare`, that preserves this existing behavior. A _new_ event, `prepublishOnly` has been added as a transitional strategy to allow users to avoid the confusing behavior of existing npm versions and only run on `npm publish` (for instance, running the tests one last time to ensure they're in good shape). + +See for a much lengthier justification, with further reading, for this change. + +**Use Cases** + +If you need to perform operations on your package before it is used, in a way that is not dependent on the operating system or architecture of the target system, use a `prepublish` script. This includes tasks such as: * Compiling CoffeeScript source code into JavaScript. * Creating minified versions of JavaScript source code. * Fetching remote resources that your package will use. -The advantage of doing these things at `prepublish` time is that they can be done once, in a -single place, thus reducing complexity and variability. -Additionally, this means that: +The advantage of doing these things at `prepublish` time is that they can be done once, in a single place, thus reducing complexity and variability. Additionally, this means that: * You can depend on `coffee-script` as a `devDependency`, and thus your users don't need to have it installed. @@ -102,8 +76,41 @@ Additionally, this means that: * You don't need to rely on your users having `curl` or `wget` or other system tools on the target machines. -### Default Values +### Life Cycle Operation Order + +#### [`npm publish`](/cli-commands/npm-publish) + +* `prepublishOnly` +* `prepare` +* `prepublish` +* `publish` +* `postpublish` + +#### [`npm pack`](/cli-commands/npm-pack) + +* `prepack` +* `postpack` +#### [`npm install`](/cli-commands/npm-install) + +* `preinstall` +* `install` +* `postinstall` + +Also triggers + +* `prepublish` (when on local) +* `prepare` (when on local) + +#### [`npm start`](/cli-commands/npm-start) + +`npm run start` has an `npm start` shorthand. + +* `prestart` +* `start` +* `poststart` + +### Default Values npm will default some script values based on package contents. * `"start": "node server.js"`: @@ -208,7 +215,7 @@ For example, if your package.json contains this: ```json { "scripts" : { "install" : "scripts/install.js" - , "postinstall" : "scripts/install.js" + , "postinstall" : "scripts/postinstall.js" , "uninstall" : "scripts/uninstall.js" } } diff --git a/deps/npm/docs/public/cli-commands/npm-access/index.html b/deps/npm/docs/public/cli-commands/npm-access/index.html index 33febc80177727..925113b9b8e9ec 100644 --- a/deps/npm/docs/public/cli-commands/npm-access/index.html +++ b/deps/npm/docs/public/cli-commands/npm-access/index.html @@ -74,7 +74,7 @@ } } }) -

npm access

+

npm access

Set access level on published packages

Synopsis

npm access public [<package>]
@@ -148,4 +148,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-adduser/index.html b/deps/npm/docs/public/cli-commands/npm-adduser/index.html index cf1efe2b9fa631..38de0b0d9a8bd4 100644 --- a/deps/npm/docs/public/cli-commands/npm-adduser/index.html +++ b/deps/npm/docs/public/cli-commands/npm-adduser/index.html @@ -74,7 +74,7 @@ } } }) -

+

section: cli-commands title: npm-adduser description: Set access level on published packages

@@ -143,4 +143,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-audit/index.html b/deps/npm/docs/public/cli-commands/npm-audit/index.html index 594d46ad9d3f38..38e49d8acfd59c 100644 --- a/deps/npm/docs/public/cli-commands/npm-audit/index.html +++ b/deps/npm/docs/public/cli-commands/npm-audit/index.html @@ -74,7 +74,7 @@ } } }) -

npm audit

+

npm audit

Run a security audit

Synopsis

npm audit [--json|--parseable|--audit-level=(low|moderate|high|critical)]
@@ -165,4 +165,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bin/index.html b/deps/npm/docs/public/cli-commands/npm-bin/index.html index c6ec5573855133..9ab0c902e28d7f 100644 --- a/deps/npm/docs/public/cli-commands/npm-bin/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bin/index.html @@ -74,7 +74,7 @@ } } }) -

npm bin

+

npm bin

Display npm bin folder

Synopsis

npm bin [-g|--global]
@@ -94,4 +94,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bugs/index.html b/deps/npm/docs/public/cli-commands/npm-bugs/index.html index c5992039ed42b4..2be442a22d2257 100644 --- a/deps/npm/docs/public/cli-commands/npm-bugs/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bugs/index.html @@ -74,7 +74,7 @@ } } }) -

npm bugs

+

npm bugs

Bugs for a package in a web browser maybe

Synopsis

npm bugs [<pkgname>]
@@ -114,4 +114,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-build/index.html b/deps/npm/docs/public/cli-commands/npm-build/index.html index bfaa096a04bf97..8e1a7d49e31256 100644 --- a/deps/npm/docs/public/cli-commands/npm-build/index.html +++ b/deps/npm/docs/public/cli-commands/npm-build/index.html @@ -74,7 +74,7 @@ } } }) -

npm build

+

npm build

Build a package

Synopsis

npm build [<package-folder>]
@@ -100,4 +100,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bundle/index.html b/deps/npm/docs/public/cli-commands/npm-bundle/index.html index 393c5b63358a23..4860ead9435ed1 100644 --- a/deps/npm/docs/public/cli-commands/npm-bundle/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bundle/index.html @@ -74,7 +74,7 @@ } } }) -

npm bundle

+

npm bundle

REMOVED

Description

The npm bundle command has been removed in 1.0, for the simple reason @@ -91,4 +91,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-cache/index.html b/deps/npm/docs/public/cli-commands/npm-cache/index.html index 01e2bee9191d07..ae8d90e7b63bc0 100644 --- a/deps/npm/docs/public/cli-commands/npm-cache/index.html +++ b/deps/npm/docs/public/cli-commands/npm-cache/index.html @@ -74,7 +74,7 @@ } } }) -

npm cache

+

npm cache

Manipulates packages cache

Synopsis

npm cache add <tarball file>
@@ -145,4 +145,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ci/index.html b/deps/npm/docs/public/cli-commands/npm-ci/index.html index c4312a4f8b252f..fd0561cfc04ed3 100644 --- a/deps/npm/docs/public/cli-commands/npm-ci/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ci/index.html @@ -74,7 +74,7 @@ } } }) -

npm ci

+

npm ci

Install a project with a clean slate

Synopsis

npm ci
@@ -122,4 +122,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-completion/index.html b/deps/npm/docs/public/cli-commands/npm-completion/index.html index 8011d6cc650021..a97a27f53f494f 100644 --- a/deps/npm/docs/public/cli-commands/npm-completion/index.html +++ b/deps/npm/docs/public/cli-commands/npm-completion/index.html @@ -74,7 +74,7 @@ } } }) -

npm completion

+

npm completion

Tab Completion for npm

Synopsis

source <(npm completion)
@@ -104,4 +104,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-config/index.html b/deps/npm/docs/public/cli-commands/npm-config/index.html index d20a4504b7bfc4..445ffb15f02d82 100644 --- a/deps/npm/docs/public/cli-commands/npm-config/index.html +++ b/deps/npm/docs/public/cli-commands/npm-config/index.html @@ -74,7 +74,7 @@ } } }) -

npm config

+

npm config

Manage the npm configuration files

Synopsis

npm config set <key> <value> [-g|--global]
@@ -128,4 +128,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-dedupe/index.html b/deps/npm/docs/public/cli-commands/npm-dedupe/index.html index 6ab29223b2b02f..617444b4bda9fb 100644 --- a/deps/npm/docs/public/cli-commands/npm-dedupe/index.html +++ b/deps/npm/docs/public/cli-commands/npm-dedupe/index.html @@ -74,7 +74,7 @@ } } }) -

npm dedupe

+

npm dedupe

Reduce duplication

Synopsis

npm dedupe
@@ -121,4 +121,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-deprecate/index.html b/deps/npm/docs/public/cli-commands/npm-deprecate/index.html index 1c451c1ea62d86..188fe3ecfe2d58 100644 --- a/deps/npm/docs/public/cli-commands/npm-deprecate/index.html +++ b/deps/npm/docs/public/cli-commands/npm-deprecate/index.html @@ -74,7 +74,7 @@ } } }) -

npm deprecate

+

npm deprecate

Deprecate a version of a package

Synopsis

npm deprecate <pkg>[@<version>] <message>
@@ -100,4 +100,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html b/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html index 4f358442d2f1b6..d5644af8ace98b 100644 --- a/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html +++ b/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html @@ -74,7 +74,7 @@ } } }) -

+

section: cli-commands title: npm-dist-tag description: Modify package distribution tags

@@ -149,4 +149,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-docs/index.html b/deps/npm/docs/public/cli-commands/npm-docs/index.html index 7d6c5dd7a3cf41..1ce1101b8f389c 100644 --- a/deps/npm/docs/public/cli-commands/npm-docs/index.html +++ b/deps/npm/docs/public/cli-commands/npm-docs/index.html @@ -74,7 +74,7 @@ } } }) -

npm docs

+

npm docs

Docs for a package in a web browser maybe

Synopsis

npm docs [<pkgname> [<pkgname> ...]]
@@ -115,4 +115,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-doctor/index.html b/deps/npm/docs/public/cli-commands/npm-doctor/index.html index 98941778502b08..8d7a375fd38362 100644 --- a/deps/npm/docs/public/cli-commands/npm-doctor/index.html +++ b/deps/npm/docs/public/cli-commands/npm-doctor/index.html @@ -74,7 +74,7 @@ } } }) -

npm doctor

+

npm doctor

Check your environments

Synopsis

npm doctor
@@ -163,4 +163,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-edit/index.html b/deps/npm/docs/public/cli-commands/npm-edit/index.html index d405195ef1582a..54e32d0a5dbb66 100644 --- a/deps/npm/docs/public/cli-commands/npm-edit/index.html +++ b/deps/npm/docs/public/cli-commands/npm-edit/index.html @@ -74,7 +74,7 @@ } } }) -

npm edit

+

npm edit

Edit an installed package

Synopsis

npm edit <pkg>[/<subpkg>...]
@@ -110,4 +110,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-explore/index.html b/deps/npm/docs/public/cli-commands/npm-explore/index.html index 0a087af7ad73bc..45fdf5557d58ef 100644 --- a/deps/npm/docs/public/cli-commands/npm-explore/index.html +++ b/deps/npm/docs/public/cli-commands/npm-explore/index.html @@ -74,7 +74,7 @@ } } }) -

+

section: cli-commands title: npm-explore description: Browse an installed package

@@ -114,4 +114,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-fund/index.html b/deps/npm/docs/public/cli-commands/npm-fund/index.html index bfe02b228d5bc2..a924adfadaed53 100644 --- a/deps/npm/docs/public/cli-commands/npm-fund/index.html +++ b/deps/npm/docs/public/cli-commands/npm-fund/index.html @@ -74,7 +74,7 @@ } } }) -

npm fund

+

npm fund

Retrieve funding information

Synopsis

    npm fund [<pkg>]
@@ -84,7 +84,8 @@

--browser -config param.

+config param; if there are multiple funding sources for the package, the +user will be instructed to pass the --which command to disambiguate.

The list will avoid duplicated entries and will stack all packages that share the same type/url as a single entry. Given this nature the list is not going to have the same shape of the output from npm ls.

@@ -97,8 +98,8 @@

npm fund command to open websites.

json

    -
  • Default: false
  • Type: Boolean
  • +
  • Default: false

Show information in JSON format.

unicode

@@ -108,6 +109,12 @@

false in order to use all-ansi output.

+

which

+
    +
  • Type: Number
  • +
  • Default: undefined
  • +
+

If there are multiple funding sources, which 1-indexed source URL to open.

See Also

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-help-search/index.html b/deps/npm/docs/public/cli-commands/npm-help-search/index.html index 1f6170daae7a97..ba2f9d323b1287 100644 --- a/deps/npm/docs/public/cli-commands/npm-help-search/index.html +++ b/deps/npm/docs/public/cli-commands/npm-help-search/index.html @@ -74,7 +74,7 @@ } } }) -

npm help-search

+

npm help-search

Search npm help documentation

Synopsis

npm help-search <text>
@@ -105,4 +105,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-help/index.html b/deps/npm/docs/public/cli-commands/npm-help/index.html index 7bb65bffd3ce55..f547a63b990dee 100644 --- a/deps/npm/docs/public/cli-commands/npm-help/index.html +++ b/deps/npm/docs/public/cli-commands/npm-help/index.html @@ -74,7 +74,7 @@ } } }) -

npm help

+

npm help

Get help on npm

Synopsis

npm help <term> [<terms..>]
@@ -107,4 +107,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-hook/index.html b/deps/npm/docs/public/cli-commands/npm-hook/index.html index 4474cc5565f703..de18367b6a74c0 100644 --- a/deps/npm/docs/public/cli-commands/npm-hook/index.html +++ b/deps/npm/docs/public/cli-commands/npm-hook/index.html @@ -74,7 +74,7 @@ } } }) -

npm hook

+

npm hook

Manage registry hooks

Synopsis

npm hook ls [pkg]
@@ -119,4 +119,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-init/index.html b/deps/npm/docs/public/cli-commands/npm-init/index.html index 8a585d1ae6d53c..436d4865354c9d 100644 --- a/deps/npm/docs/public/cli-commands/npm-init/index.html +++ b/deps/npm/docs/public/cli-commands/npm-init/index.html @@ -74,7 +74,7 @@ } } }) -

npm init

+

npm init

create a package.json file

Synopsis

npm init [--force|-f|--yes|-y|--scope]
@@ -126,4 +126,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html b/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html index e3ed77e9147b56..5e4f7b005d1e95 100644 --- a/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html @@ -74,7 +74,7 @@ } } }) -

npm install-ci-test

+

npm install-ci-test

Install a project with a clean slate and run tests

Synopsis

npm install-ci-test
@@ -93,4 +93,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install-test/index.html b/deps/npm/docs/public/cli-commands/npm-install-test/index.html index 7c264c56fb922b..3f2748ab4963c1 100644 --- a/deps/npm/docs/public/cli-commands/npm-install-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install-test/index.html @@ -74,7 +74,7 @@ } } }) -

npm install-test

+

npm install-test

Install package(s) and run tests

Synopsis

npm install-test (with no args, in package dir)
@@ -102,4 +102,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install/index.html b/deps/npm/docs/public/cli-commands/npm-install/index.html index c64ae4d529fd56..81db8d705a5725 100644 --- a/deps/npm/docs/public/cli-commands/npm-install/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install/index.html @@ -74,7 +74,7 @@ } } }) -

npm install

+

npm install

Install a package

Synopsis

npm install (with no args, in package dir)
@@ -468,4 +468,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-link/index.html b/deps/npm/docs/public/cli-commands/npm-link/index.html index f84406e8a8d3a0..a4f7fcee914700 100644 --- a/deps/npm/docs/public/cli-commands/npm-link/index.html +++ b/deps/npm/docs/public/cli-commands/npm-link/index.html @@ -74,7 +74,7 @@ } } }) -

npm link

+

npm link

Synopsis

npm link (in package dir)
@@ -134,4 +134,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-logout/index.html b/deps/npm/docs/public/cli-commands/npm-logout/index.html index a7512ee5af2430..3168c941901e4b 100644 --- a/deps/npm/docs/public/cli-commands/npm-logout/index.html +++ b/deps/npm/docs/public/cli-commands/npm-logout/index.html @@ -74,7 +74,7 @@ } } }) -

npm logout

+

npm logout

Log out of the registry

Synopsis

npm logout [--registry=<url>] [--scope=<@scope>]
@@ -109,4 +109,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ls/index.html b/deps/npm/docs/public/cli-commands/npm-ls/index.html index bfd746a74ef8de..60e60c921ad328 100644 --- a/deps/npm/docs/public/cli-commands/npm-ls/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ls/index.html @@ -74,7 +74,7 @@ } } }) -

npm ls

+
\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-org/index.html b/deps/npm/docs/public/cli-commands/npm-org/index.html index 57b897e9638f19..6ca3da7e31974b 100644 --- a/deps/npm/docs/public/cli-commands/npm-org/index.html +++ b/deps/npm/docs/public/cli-commands/npm-org/index.html @@ -74,7 +74,7 @@ } } }) -

npm org

+

npm org

Manage orgs

Synopsis

npm org set <orgname> <username> [developer | admin | owner]
@@ -107,4 +107,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-outdated/index.html b/deps/npm/docs/public/cli-commands/npm-outdated/index.html index e80c1cfe0cd137..a9764a487afdc2 100644 --- a/deps/npm/docs/public/cli-commands/npm-outdated/index.html +++ b/deps/npm/docs/public/cli-commands/npm-outdated/index.html @@ -74,7 +74,7 @@ } } }) -

npm outdated

+

npm outdated

Check for outdated packages

Synopsis

npm outdated [[<@scope>/]<pkg> ...]
@@ -178,4 +178,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-owner/index.html b/deps/npm/docs/public/cli-commands/npm-owner/index.html index f8439c79695da0..7eb600b8972ed9 100644 --- a/deps/npm/docs/public/cli-commands/npm-owner/index.html +++ b/deps/npm/docs/public/cli-commands/npm-owner/index.html @@ -74,7 +74,7 @@ } } }) -

npm owner

+

npm owner

Manage package owners

Synopsis

npm owner add <user> [<@scope>/]<pkg>
@@ -114,4 +114,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-pack/index.html b/deps/npm/docs/public/cli-commands/npm-pack/index.html index f3756959783413..f0920804fde85b 100644 --- a/deps/npm/docs/public/cli-commands/npm-pack/index.html +++ b/deps/npm/docs/public/cli-commands/npm-pack/index.html @@ -74,7 +74,7 @@ } } }) -

npm pack

+

npm pack

Create a tarball from a package

Synopsis

npm pack [[<@scope>/]<pkg>...] [--dry-run]
@@ -102,4 +102,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ping/index.html b/deps/npm/docs/public/cli-commands/npm-ping/index.html index 711d2b5a5ed372..a3c47f6d5cf5c4 100644 --- a/deps/npm/docs/public/cli-commands/npm-ping/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ping/index.html @@ -74,7 +74,7 @@ } } }) -

npm ping

+

npm ping

Ping npm registry

Synopsis

npm ping [--registry <registry>]
@@ -95,4 +95,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-prefix/index.html b/deps/npm/docs/public/cli-commands/npm-prefix/index.html index c14010a2d9cf66..bd592f89e1b8a5 100644 --- a/deps/npm/docs/public/cli-commands/npm-prefix/index.html +++ b/deps/npm/docs/public/cli-commands/npm-prefix/index.html @@ -74,7 +74,7 @@ } } }) -

npm prefix

+

npm prefix

Display prefix

Synopsis

npm prefix [-g]
@@ -98,4 +98,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-profile/index.html b/deps/npm/docs/public/cli-commands/npm-profile/index.html index 8cd34b5c300f20..ae212cc643e90c 100644 --- a/deps/npm/docs/public/cli-commands/npm-profile/index.html +++ b/deps/npm/docs/public/cli-commands/npm-profile/index.html @@ -74,7 +74,7 @@ } } }) -

npm profile

+

npm profile

Change settings on your registry profile

Synopsis

npm profile get [--json|--parseable] [<property>]
@@ -148,4 +148,4 @@ 

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-prune/index.html b/deps/npm/docs/public/cli-commands/npm-prune/index.html index 59c87eb763154b..aa9972bf58d0b0 100644 --- a/deps/npm/docs/public/cli-commands/npm-prune/index.html +++ b/deps/npm/docs/public/cli-commands/npm-prune/index.html @@ -74,7 +74,7 @@ } } }) -

npm prune

+

npm prune

Remove extraneous packages

Synopsis

npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
@@ -108,4 +108,4 @@

\ No newline at end of file +
\ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-publish/index.html b/deps/npm/docs/public/cli-commands/npm-publish/index.html index 5cac777b54ef80..9d163ecb6640a0 100644 --- a/deps/npm/docs/public/cli-commands/npm-publish/index.html +++ b/deps/npm/docs/public/cli-commands/npm-publish/index.html @@ -74,7 +74,7 @@ } } }) -

npm publish

+

npm publish

Publish a package

Synopsis

npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>] [--otp otpcode] [--dry-run]
@@ -127,12 +127,12 @@ 

npm registry
  • npm scope
  • -
  • npm adduser
  • -
  • npm owner
  • -
  • npm deprecate
  • -
  • npm dist-tag
  • -
  • npm pack
  • -
  • npm profile
  • +
  • npm adduser
  • +
  • npm owner
  • +
  • npm deprecate
  • +
  • npm dist-tag
  • +
  • npm pack
  • +
  • npm profile
  • πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-rebuild/index.html b/deps/npm/docs/public/cli-commands/npm-rebuild/index.html index d09ba09ab78cbf..a5252346e9eb21 100644 --- a/deps/npm/docs/public/cli-commands/npm-rebuild/index.html +++ b/deps/npm/docs/public/cli-commands/npm-rebuild/index.html @@ -74,7 +74,7 @@ } } }) -

    npm rebuild

    +

    npm rebuild

    Rebuild a package

    Synopsis

    npm rebuild [[<@scope>/<name>]...]
    @@ -93,4 +93,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-repo/index.html b/deps/npm/docs/public/cli-commands/npm-repo/index.html index 3b01aea44a5b9f..4eae022c2d1c01 100644 --- a/deps/npm/docs/public/cli-commands/npm-repo/index.html +++ b/deps/npm/docs/public/cli-commands/npm-repo/index.html @@ -74,7 +74,7 @@ } } }) -

    npm repo

    +

    npm repo

    Open package repository page in the browser

    Synopsis

    npm repo [<pkg>]
    @@ -101,4 +101,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-restart/index.html b/deps/npm/docs/public/cli-commands/npm-restart/index.html index a561fad81da43c..3c7836d0506365 100644 --- a/deps/npm/docs/public/cli-commands/npm-restart/index.html +++ b/deps/npm/docs/public/cli-commands/npm-restart/index.html @@ -74,7 +74,7 @@ } } }) -

    npm restart

    +

    npm restart

    Restart a package

    Synopsis

    npm restart [-- <args>]
    @@ -113,4 +113,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-root/index.html b/deps/npm/docs/public/cli-commands/npm-root/index.html index 81173f0f3e859e..a26538db7c89a2 100644 --- a/deps/npm/docs/public/cli-commands/npm-root/index.html +++ b/deps/npm/docs/public/cli-commands/npm-root/index.html @@ -74,7 +74,7 @@ } } }) -

    npm root

    +

    npm root

    Display npm root

    Synopsis

    npm root [-g]
    @@ -94,4 +94,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-run-script/index.html b/deps/npm/docs/public/cli-commands/npm-run-script/index.html index efb484e69d7906..4575220b541478 100644 --- a/deps/npm/docs/public/cli-commands/npm-run-script/index.html +++ b/deps/npm/docs/public/cli-commands/npm-run-script/index.html @@ -74,7 +74,7 @@ } } }) -

    npm run-script

    +

    npm run-script

    Run arbitrary package scripts

    Synopsis

    npm run-script <command> [--silent] [-- <args>...]
    @@ -143,4 +143,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-search/index.html b/deps/npm/docs/public/cli-commands/npm-search/index.html index d305edcce484ec..1c44fd0cbf4cbd 100644 --- a/deps/npm/docs/public/cli-commands/npm-search/index.html +++ b/deps/npm/docs/public/cli-commands/npm-search/index.html @@ -74,7 +74,7 @@ } } }) -

    npm search

    +

    npm search

    Search for packages

    Synopsis

    npm search [-l|--long] [--json] [--parseable] [--no-description] [search terms ...]
    @@ -168,4 +168,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html b/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html index 5bc73cbdc9d753..aeb9ab9a9d573c 100644 --- a/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html +++ b/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html @@ -74,7 +74,7 @@ } } }) -

    npm shrinkwrap

    +

    npm shrinkwrap

    Lock down dependency versions for publication

    Synopsis

    npm shrinkwrap
    @@ -101,4 +101,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-star/index.html b/deps/npm/docs/public/cli-commands/npm-star/index.html index 12babbf3f3ea12..641b39795e0a83 100644 --- a/deps/npm/docs/public/cli-commands/npm-star/index.html +++ b/deps/npm/docs/public/cli-commands/npm-star/index.html @@ -74,7 +74,7 @@ } } }) -

    npm star

    +

    npm star

    Mark your favorite packages

    Synopsis

    npm star [<pkg>...]
    @@ -96,4 +96,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-stars/index.html b/deps/npm/docs/public/cli-commands/npm-stars/index.html index 629267c0ebfae3..821469b4585e60 100644 --- a/deps/npm/docs/public/cli-commands/npm-stars/index.html +++ b/deps/npm/docs/public/cli-commands/npm-stars/index.html @@ -74,7 +74,7 @@ } } }) -

    npm stars

    +

    npm stars

    View packages marked as favorites

    Synopsis

    npm stars [<user>]
    @@ -96,4 +96,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-start/index.html b/deps/npm/docs/public/cli-commands/npm-start/index.html index 13ad0d84b30a48..3cc8120bd3b82b 100644 --- a/deps/npm/docs/public/cli-commands/npm-start/index.html +++ b/deps/npm/docs/public/cli-commands/npm-start/index.html @@ -74,7 +74,7 @@ } } }) -

    npm start

    +

    npm start

    Start a package

    Synopsis

    npm start [-- <args>]
    @@ -98,4 +98,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-stop/index.html b/deps/npm/docs/public/cli-commands/npm-stop/index.html index 65e34691c59c11..94c7b6861645d6 100644 --- a/deps/npm/docs/public/cli-commands/npm-stop/index.html +++ b/deps/npm/docs/public/cli-commands/npm-stop/index.html @@ -74,7 +74,7 @@ } } }) -

    npm stop

    +

    npm stop

    Stop a package

    Synopsis

    npm stop [-- <args>]
    @@ -94,4 +94,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-team/index.html b/deps/npm/docs/public/cli-commands/npm-team/index.html index ab494c39401d11..b8af3c5821bb93 100644 --- a/deps/npm/docs/public/cli-commands/npm-team/index.html +++ b/deps/npm/docs/public/cli-commands/npm-team/index.html @@ -74,7 +74,7 @@ } } }) -

    npm team

    +

    npm team

    Manage organization teams and team memberships

    Synopsis

    npm team create <scope:team>
    @@ -124,4 +124,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-test/index.html b/deps/npm/docs/public/cli-commands/npm-test/index.html index 05ab9ecca9d3cc..f65035e5b24501 100644 --- a/deps/npm/docs/public/cli-commands/npm-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-test/index.html @@ -74,7 +74,7 @@ } } }) -

    npm test

    +

    npm test

    Test a package

    Synopsis

    npm test [-- <args>]
    @@ -96,4 +96,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-token/index.html b/deps/npm/docs/public/cli-commands/npm-token/index.html index 38faa5edc32c28..f94d350e8dc925 100644 --- a/deps/npm/docs/public/cli-commands/npm-token/index.html +++ b/deps/npm/docs/public/cli-commands/npm-token/index.html @@ -74,7 +74,7 @@ } } }) -

    npm token

    +

    npm token

    Manage your authentication tokens

    Synopsis

      npm token list [--json|--parseable]
    @@ -133,4 +133,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-uninstall/index.html b/deps/npm/docs/public/cli-commands/npm-uninstall/index.html index 8abde62f8e6bff..80f165f90dd781 100644 --- a/deps/npm/docs/public/cli-commands/npm-uninstall/index.html +++ b/deps/npm/docs/public/cli-commands/npm-uninstall/index.html @@ -74,7 +74,7 @@ } } }) -

    npm uninstall

    +

    npm uninstall

    Remove a package

    Synopsis

    npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|-D|--save-dev|-O|--save-optional|--no-save]
    @@ -118,4 +118,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-unpublish/index.html b/deps/npm/docs/public/cli-commands/npm-unpublish/index.html index 89884913bcee15..7f42a97a7def07 100644 --- a/deps/npm/docs/public/cli-commands/npm-unpublish/index.html +++ b/deps/npm/docs/public/cli-commands/npm-unpublish/index.html @@ -74,7 +74,7 @@ } } }) -

    npm unpublish

    +

    npm unpublish

    Remove a package from the registry

    Synopsis

    npm unpublish [<@scope>/]<pkg>[@<version>]
    @@ -113,4 +113,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-update/index.html b/deps/npm/docs/public/cli-commands/npm-update/index.html index 0c10e200ca677a..2f81638b91dd3e 100644 --- a/deps/npm/docs/public/cli-commands/npm-update/index.html +++ b/deps/npm/docs/public/cli-commands/npm-update/index.html @@ -74,7 +74,7 @@ } } }) -

    npm update

    +

    npm update

    Update a package

    Synopsis

    npm update [-g] [<pkg>...]
    @@ -166,4 +166,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-version/index.html b/deps/npm/docs/public/cli-commands/npm-version/index.html index a9201194edf6e0..047c689cf3007e 100644 --- a/deps/npm/docs/public/cli-commands/npm-version/index.html +++ b/deps/npm/docs/public/cli-commands/npm-version/index.html @@ -74,7 +74,7 @@ } } }) -

    npm version

    +

    npm version

    Bump a package version

    Synopsis

    npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
    @@ -180,4 +180,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-view/index.html b/deps/npm/docs/public/cli-commands/npm-view/index.html index e6f88d50b36cb8..23115f84ff6163 100644 --- a/deps/npm/docs/public/cli-commands/npm-view/index.html +++ b/deps/npm/docs/public/cli-commands/npm-view/index.html @@ -74,7 +74,7 @@ } } }) -

    npm view

    +

    npm view

    View registry info

    Synopsis

    npm view [<@scope>/]<name>[@<version>] [<field>[.<subfield>]...]
    @@ -145,4 +145,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-whoami/index.html b/deps/npm/docs/public/cli-commands/npm-whoami/index.html index 79bbd7ba4d6a12..aca97476eb19bb 100644 --- a/deps/npm/docs/public/cli-commands/npm-whoami/index.html +++ b/deps/npm/docs/public/cli-commands/npm-whoami/index.html @@ -74,7 +74,7 @@ } } }) -

    npm whoami

    +

    npm whoami

    Display npm username

    Synopsis

    npm whoami [--registry <registry>]
    @@ -92,4 +92,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm/index.html b/deps/npm/docs/public/cli-commands/npm/index.html index bc67b74183ecc3..610982c2e0d8f0 100644 --- a/deps/npm/docs/public/cli-commands/npm/index.html +++ b/deps/npm/docs/public/cli-commands/npm/index.html @@ -74,12 +74,12 @@ } } }) -

    npm

    +

    npm

    javascript package manager

    Synopsis

    npm <command> [args]

    Version

    -

    6.13.7

    +

    6.14.1

    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 @@ -211,4 +211,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/folders/index.html b/deps/npm/docs/public/configuring-npm/folders/index.html index 4b6eadf7737714..3e94c99b2ce678 100644 --- a/deps/npm/docs/public/configuring-npm/folders/index.html +++ b/deps/npm/docs/public/configuring-npm/folders/index.html @@ -74,7 +74,7 @@ } } }) -

    folders

    +

    folders

    Folder Structures Used by npm

    Description

    npm puts various things on your computer. That's its job.

    @@ -240,4 +240,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/install/index.html b/deps/npm/docs/public/configuring-npm/install/index.html index 598a8534777e15..2b9dee47e6dc40 100644 --- a/deps/npm/docs/public/configuring-npm/install/index.html +++ b/deps/npm/docs/public/configuring-npm/install/index.html @@ -74,7 +74,7 @@ } } }) -

    install

    +

    install

    Download and Install npm

    Description

    To publish and install packages to and from the public npm registry, you must install Node.js and the npm command line interface using either a Node version manager or a Node installer. We strongly recommend using a Node version manager to install Node.js and npm. We do not recommend using a Node installer, since the Node installation process installs npm in a directory with local permissions and can cause permissions errors when you run npm packages globally.

    @@ -123,4 +123,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/npmrc/index.html b/deps/npm/docs/public/configuring-npm/npmrc/index.html index a5c8911f547b4e..b7fed53c905956 100644 --- a/deps/npm/docs/public/configuring-npm/npmrc/index.html +++ b/deps/npm/docs/public/configuring-npm/npmrc/index.html @@ -74,7 +74,7 @@ } } }) -

    npmrc

    +

    npmrc

    The npm config files

    Description

    npm gets its config settings from the command line, environment @@ -145,4 +145,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-json/index.html b/deps/npm/docs/public/configuring-npm/package-json/index.html index ad6300d846d7f6..ef1025e327d9a7 100644 --- a/deps/npm/docs/public/configuring-npm/package-json/index.html +++ b/deps/npm/docs/public/configuring-npm/package-json/index.html @@ -74,7 +74,7 @@ } } }) -

    package.json

    +

    package.json

    Specifics of npm's package.json handling

    Description

    This document is all you need to know about what's required in your package.json @@ -198,7 +198,8 @@

    funding

    You can specify an object containing an URL that provides up-to-date -information about ways to help fund development of your package:

    +information about ways to help fund development of your package, or +a string URL, or an array of these:

    "funding": {
       "type" : "individual",
       "url" : "http://example.com/donate"
    @@ -207,11 +208,26 @@ 

    npm fund subcommand to list the funding URLs of all dependencies of their project, direct and indirect. A shortcut to visit each funding url is also available when providing the project name such as: -npm fund <projectname>.

    +npm fund <projectname> (when there are multiple URLs, the first one will be +visited)

    files

    The optional files field is an array of file patterns that describes the entries to be included when your package is installed as a @@ -697,4 +713,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-lock-json/index.html b/deps/npm/docs/public/configuring-npm/package-lock-json/index.html index 07ea625f509782..7256154fe32d40 100644 --- a/deps/npm/docs/public/configuring-npm/package-lock-json/index.html +++ b/deps/npm/docs/public/configuring-npm/package-lock-json/index.html @@ -74,7 +74,7 @@ } } }) -

    package-lock.json

    +

    package-lock.json

    A manifestation of the manifest

    Description

    package-lock.json is automatically generated for any operations where npm @@ -186,4 +186,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-locks/index.html b/deps/npm/docs/public/configuring-npm/package-locks/index.html index f3846d3ad01565..16fdc3eeea2c58 100644 --- a/deps/npm/docs/public/configuring-npm/package-locks/index.html +++ b/deps/npm/docs/public/configuring-npm/package-locks/index.html @@ -74,7 +74,7 @@ } } }) -

    package-locks

    +

    package-locks

    An explanation of npm lockfiles

    Description

    Conceptually, the "input" to npm install is a package.json, while its @@ -214,4 +214,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html b/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html index 1eb28bd824fa1e..1f0ac45677ee5f 100644 --- a/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html +++ b/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html @@ -74,7 +74,7 @@ } } }) -

    npm shrinkwrap.json

    +

    npm shrinkwrap.json

    A publishable lockfile

    Description

    npm-shrinkwrap.json is a file created by npm shrinkwrap. It is identical to @@ -102,4 +102,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/index.html b/deps/npm/docs/public/index.html index da5b9e791b1708..8b66aab22a4504 100644 --- a/deps/npm/docs/public/index.html +++ b/deps/npm/docs/public/index.html @@ -128,4 +128,4 @@ } } }) -
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!

    The current stable version of npm is available on GitHub.

    To upgrade, run: npm install npm@latest -g

    \ No newline at end of file +
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!

    The current stable version of npm is available on GitHub.

    To upgrade, run: npm install npm@latest -g

    \ No newline at end of file diff --git a/deps/npm/docs/public/static/d/2215187023.json b/deps/npm/docs/public/static/d/2215187023.json index 328c36542ed0de..c26e85bd6966e2 100644 --- a/deps/npm/docs/public/static/d/2215187023.json +++ b/deps/npm/docs/public/static/d/2215187023.json @@ -1 +1 @@ -{"data":{"allMarkdownRemark":{"nodes":[{"fields":{"slug":"/cli-commands/npm-adduser"},"frontmatter":{"description":null,"section":null,"title":""}},{"fields":{"slug":"/cli-commands/npm-dist-tag"},"frontmatter":{"description":null,"section":null,"title":""}},{"fields":{"slug":"/cli-commands/npm-explore"},"frontmatter":{"description":null,"section":null,"title":""}},{"fields":{"slug":"/using-npm/semver"},"frontmatter":{"description":null,"section":null,"title":""}},{"fields":{"slug":"/using-npm/config"},"frontmatter":{"description":"More than you probably want to know about npm configuration","section":"using-npm","title":"config"}},{"fields":{"slug":"/using-npm/developers"},"frontmatter":{"description":"Developer Guide","section":"using-npm","title":"developers"}},{"fields":{"slug":"/using-npm/disputes"},"frontmatter":{"description":"Handling Module Name Disputes","section":"using-npm","title":"disputes"}},{"fields":{"slug":"/configuring-npm/folders"},"frontmatter":{"description":"Folder Structures Used by npm","section":"configuring-npm","title":"folders"}},{"fields":{"slug":"/configuring-npm/install"},"frontmatter":{"description":"Download and install node and npm","section":"configuring-npm","title":"install"}},{"fields":{"slug":"/cli-commands/npm"},"frontmatter":{"description":"javascript package manager","section":"cli-commands","title":"npm"}},{"fields":{"slug":"/cli-commands/npm-access"},"frontmatter":{"description":"Set access level on published packages","section":"cli-commands","title":"npm-access"}},{"fields":{"slug":"/cli-commands/npm-audit"},"frontmatter":{"description":"Run a security audit","section":"cli-commands","title":"npm-audit"}},{"fields":{"slug":"/cli-commands/npm-bin"},"frontmatter":{"description":"Display npm bin folder","section":"cli-commands","title":"npm-bin"}},{"fields":{"slug":"/cli-commands/npm-bugs"},"frontmatter":{"description":"Bugs for a package in a web browser maybe","section":"cli-commands","title":"npm-bugs"}},{"fields":{"slug":"/cli-commands/npm-build"},"frontmatter":{"description":"Build a package","section":"cli-commands","title":"npm-build"}},{"fields":{"slug":"/cli-commands/npm-bundle"},"frontmatter":{"description":"REMOVED","section":"cli-commands","title":"npm-bundle"}},{"fields":{"slug":"/cli-commands/npm-cache"},"frontmatter":{"description":"Manipulates packages cache","section":"cli-commands","title":"npm-cache"}},{"fields":{"slug":"/cli-commands/npm-ci"},"frontmatter":{"description":"Install a project with a clean slate","section":"cli-commands","title":"npm-ci"}},{"fields":{"slug":"/cli-commands/npm-completion"},"frontmatter":{"description":"Tab Completion for npm","section":"cli-commands","title":"npm-completion"}},{"fields":{"slug":"/cli-commands/npm-config"},"frontmatter":{"description":"Manage the npm configuration files","section":"cli-commands","title":"npm-config"}},{"fields":{"slug":"/cli-commands/npm-dedupe"},"frontmatter":{"description":"Reduce duplication","section":"cli-commands","title":"npm-dedupe"}},{"fields":{"slug":"/cli-commands/npm-deprecate"},"frontmatter":{"description":"Deprecate a version of a package","section":"cli-commands","title":"npm-deprecate"}},{"fields":{"slug":"/cli-commands/npm-docs"},"frontmatter":{"description":"Docs for a package in a web browser maybe","section":"cli-commands","title":"npm-docs"}},{"fields":{"slug":"/cli-commands/npm-doctor"},"frontmatter":{"description":"Check your environments","section":"cli-commands","title":"npm-doctor"}},{"fields":{"slug":"/cli-commands/npm-edit"},"frontmatter":{"description":"Edit an installed package","section":"cli-commands","title":"npm-edit"}},{"fields":{"slug":"/cli-commands/npm-fund"},"frontmatter":{"description":"Retrieve funding information","section":"cli-commands","title":"npm-fund"}},{"fields":{"slug":"/cli-commands/npm-help"},"frontmatter":{"description":"Get help on npm","section":"cli-commands","title":"npm-help"}},{"fields":{"slug":"/cli-commands/npm-help-search"},"frontmatter":{"description":"Search npm help documentation","section":"cli-commands","title":"npm-help-search"}},{"fields":{"slug":"/cli-commands/npm-hook"},"frontmatter":{"description":"Manage registry hooks","section":"cli-commands","title":"npm-hook"}},{"fields":{"slug":"/cli-commands/npm-init"},"frontmatter":{"description":"create a package.json file","section":"cli-commands","title":"npm-init"}},{"fields":{"slug":"/cli-commands/npm-install"},"frontmatter":{"description":"Install a package","section":"cli-commands","title":"npm-install"}},{"fields":{"slug":"/cli-commands/npm-install-ci-test"},"frontmatter":{"description":"Install a project with a clean slate and run tests","section":"cli-commands","title":"npm-install-ci-test"}},{"fields":{"slug":"/cli-commands/npm-install-test"},"frontmatter":{"description":"Install package(s) and run tests","section":"cli-commands","title":"npm-install-test"}},{"fields":{"slug":"/cli-commands/npm-link"},"frontmatter":{"description":"Symlink a package folder","section":"cli-commands","title":"npm-link"}},{"fields":{"slug":"/cli-commands/npm-logout"},"frontmatter":{"description":"Log out of the registry","section":"cli-commands","title":"npm-logout"}},{"fields":{"slug":"/cli-commands/npm-ls"},"frontmatter":{"description":"List installed packages","section":"cli-commands","title":"npm-ls"}},{"fields":{"slug":"/cli-commands/npm-org"},"frontmatter":{"description":"Manage orgs","section":"cli-commands","title":"npm-org"}},{"fields":{"slug":"/cli-commands/npm-outdated"},"frontmatter":{"description":"Check for outdated packages","section":"cli-commands","title":"npm-outdated"}},{"fields":{"slug":"/cli-commands/npm-owner"},"frontmatter":{"description":"Manage package owners","section":"cli-commands","title":"npm-owner"}},{"fields":{"slug":"/cli-commands/npm-pack"},"frontmatter":{"description":"Create a tarball from a package","section":"cli-commands","title":"npm-pack"}},{"fields":{"slug":"/cli-commands/npm-ping"},"frontmatter":{"description":"Ping npm registry","section":"cli-commands","title":"npm-ping"}},{"fields":{"slug":"/cli-commands/npm-prefix"},"frontmatter":{"description":"Display prefix","section":"cli-commands","title":"npm-prefix"}},{"fields":{"slug":"/cli-commands/npm-profile"},"frontmatter":{"description":"Change settings on your registry profile","section":"cli-commands","title":"npm-profile"}},{"fields":{"slug":"/cli-commands/npm-prune"},"frontmatter":{"description":"Remove extraneous packages","section":"cli-commands","title":"npm-prune"}},{"fields":{"slug":"/cli-commands/npm-publish"},"frontmatter":{"description":"Publish a package","section":"cli-commands","title":"npm-publish"}},{"fields":{"slug":"/cli-commands/npm-rebuild"},"frontmatter":{"description":"Rebuild a package","section":"cli-commands","title":"npm-rebuild"}},{"fields":{"slug":"/cli-commands/npm-repo"},"frontmatter":{"description":"Open package repository page in the browser","section":"cli-commands","title":"npm-repo"}},{"fields":{"slug":"/cli-commands/npm-restart"},"frontmatter":{"description":"Restart a package","section":"cli-commands","title":"npm-restart"}},{"fields":{"slug":"/cli-commands/npm-root"},"frontmatter":{"description":"Display npm root","section":"cli-commands","title":"npm-root"}},{"fields":{"slug":"/cli-commands/npm-run-script"},"frontmatter":{"description":"Run arbitrary package scripts","section":"cli-commands","title":"npm-run-script"}},{"fields":{"slug":"/cli-commands/npm-search"},"frontmatter":{"description":"Search for packages","section":"cli-commands","title":"npm-search"}},{"fields":{"slug":"/cli-commands/npm-shrinkwrap"},"frontmatter":{"description":"Lock down dependency versions for publication","section":"cli-commands","title":"npm-shrinkwrap"}},{"fields":{"slug":"/cli-commands/npm-star"},"frontmatter":{"description":"Mark your favorite packages","section":"cli-commands","title":"npm-star"}},{"fields":{"slug":"/cli-commands/npm-stars"},"frontmatter":{"description":"View packages marked as favorites","section":"cli-commands","title":"npm-stars"}},{"fields":{"slug":"/cli-commands/npm-start"},"frontmatter":{"description":"Start a package","section":"cli-commands","title":"npm-start"}},{"fields":{"slug":"/cli-commands/npm-stop"},"frontmatter":{"description":"Stop a package","section":"cli-commands","title":"npm-stop"}},{"fields":{"slug":"/cli-commands/npm-team"},"frontmatter":{"description":"Manage organization teams and team memberships","section":"cli-commands","title":"npm-team"}},{"fields":{"slug":"/cli-commands/npm-test"},"frontmatter":{"description":"Test a package","section":"cli-commands","title":"npm-test"}},{"fields":{"slug":"/cli-commands/npm-token"},"frontmatter":{"description":"Manage your authentication tokens","section":"cli-commands","title":"npm-token"}},{"fields":{"slug":"/cli-commands/npm-uninstall"},"frontmatter":{"description":"Remove a package","section":"cli-commands","title":"npm-uninstall"}},{"fields":{"slug":"/cli-commands/npm-unpublish"},"frontmatter":{"description":"Remove a package from the registry","section":"cli-commands","title":"npm-unpublish"}},{"fields":{"slug":"/cli-commands/npm-update"},"frontmatter":{"description":"Update a package","section":"cli-commands","title":"npm-update"}},{"fields":{"slug":"/cli-commands/npm-version"},"frontmatter":{"description":"Bump a package version","section":"cli-commands","title":"npm-version"}},{"fields":{"slug":"/cli-commands/npm-view"},"frontmatter":{"description":"View registry info","section":"cli-commands","title":"npm-view"}},{"fields":{"slug":"/cli-commands/npm-whoami"},"frontmatter":{"description":"Display npm username","section":"cli-commands","title":"npm-whoami"}},{"fields":{"slug":"/configuring-npm/npmrc"},"frontmatter":{"description":"The npm config files","section":"configuring-npm","title":"npmrc"}},{"fields":{"slug":"/using-npm/orgs"},"frontmatter":{"description":"Working with Teams & Orgs","section":"using-npm","title":"orgs"}},{"fields":{"slug":"/configuring-npm/package-lock-json"},"frontmatter":{"description":"A manifestation of the manifest","section":"configuring-npm","title":"package-lock.json"}},{"fields":{"slug":"/configuring-npm/package-locks"},"frontmatter":{"description":"An explanation of npm lockfiles","section":"configuring-npm","title":"package-locks"}},{"fields":{"slug":"/configuring-npm/package-json"},"frontmatter":{"description":"Specifics of npm's package.json handling","section":"configuring-npm","title":"package.json"}},{"fields":{"slug":"/using-npm/registry"},"frontmatter":{"description":"The JavaScript Package Registry","section":"using-npm","title":"registry"}},{"fields":{"slug":"/using-npm/removal"},"frontmatter":{"description":"Cleaning the Slate","section":"using-npm","title":"removal"}},{"fields":{"slug":"/using-npm/scope"},"frontmatter":{"description":"Scoped packages","section":"using-npm","title":"scope"}},{"fields":{"slug":"/using-npm/scripts"},"frontmatter":{"description":"How npm handles the \"scripts\" field","section":"using-npm","title":"scripts"}},{"fields":{"slug":"/configuring-npm/shrinkwrap-json"},"frontmatter":{"description":"A publishable lockfile","section":"configuring-npm","title":"shrinkwrap.json"}}]}}} \ No newline at end of file +{"data":{"allMarkdownRemark":{"nodes":[{"fields":{"slug":"/using-npm/semver"},"frontmatter":{"description":null,"section":null,"title":""}},{"fields":{"slug":"/cli-commands/npm-adduser"},"frontmatter":{"description":null,"section":null,"title":""}},{"fields":{"slug":"/cli-commands/npm-dist-tag"},"frontmatter":{"description":null,"section":null,"title":""}},{"fields":{"slug":"/cli-commands/npm-explore"},"frontmatter":{"description":null,"section":null,"title":""}},{"fields":{"slug":"/using-npm/config"},"frontmatter":{"description":"More than you probably want to know about npm configuration","section":"using-npm","title":"config"}},{"fields":{"slug":"/using-npm/developers"},"frontmatter":{"description":"Developer Guide","section":"using-npm","title":"developers"}},{"fields":{"slug":"/using-npm/disputes"},"frontmatter":{"description":"Handling Module Name Disputes","section":"using-npm","title":"disputes"}},{"fields":{"slug":"/configuring-npm/folders"},"frontmatter":{"description":"Folder Structures Used by npm","section":"configuring-npm","title":"folders"}},{"fields":{"slug":"/configuring-npm/install"},"frontmatter":{"description":"Download and install node and npm","section":"configuring-npm","title":"install"}},{"fields":{"slug":"/cli-commands/npm"},"frontmatter":{"description":"javascript package manager","section":"cli-commands","title":"npm"}},{"fields":{"slug":"/cli-commands/npm-access"},"frontmatter":{"description":"Set access level on published packages","section":"cli-commands","title":"npm-access"}},{"fields":{"slug":"/cli-commands/npm-audit"},"frontmatter":{"description":"Run a security audit","section":"cli-commands","title":"npm-audit"}},{"fields":{"slug":"/cli-commands/npm-bin"},"frontmatter":{"description":"Display npm bin folder","section":"cli-commands","title":"npm-bin"}},{"fields":{"slug":"/cli-commands/npm-bugs"},"frontmatter":{"description":"Bugs for a package in a web browser maybe","section":"cli-commands","title":"npm-bugs"}},{"fields":{"slug":"/cli-commands/npm-build"},"frontmatter":{"description":"Build a package","section":"cli-commands","title":"npm-build"}},{"fields":{"slug":"/cli-commands/npm-bundle"},"frontmatter":{"description":"REMOVED","section":"cli-commands","title":"npm-bundle"}},{"fields":{"slug":"/cli-commands/npm-cache"},"frontmatter":{"description":"Manipulates packages cache","section":"cli-commands","title":"npm-cache"}},{"fields":{"slug":"/cli-commands/npm-ci"},"frontmatter":{"description":"Install a project with a clean slate","section":"cli-commands","title":"npm-ci"}},{"fields":{"slug":"/cli-commands/npm-completion"},"frontmatter":{"description":"Tab Completion for npm","section":"cli-commands","title":"npm-completion"}},{"fields":{"slug":"/cli-commands/npm-config"},"frontmatter":{"description":"Manage the npm configuration files","section":"cli-commands","title":"npm-config"}},{"fields":{"slug":"/cli-commands/npm-dedupe"},"frontmatter":{"description":"Reduce duplication","section":"cli-commands","title":"npm-dedupe"}},{"fields":{"slug":"/cli-commands/npm-deprecate"},"frontmatter":{"description":"Deprecate a version of a package","section":"cli-commands","title":"npm-deprecate"}},{"fields":{"slug":"/cli-commands/npm-docs"},"frontmatter":{"description":"Docs for a package in a web browser maybe","section":"cli-commands","title":"npm-docs"}},{"fields":{"slug":"/cli-commands/npm-doctor"},"frontmatter":{"description":"Check your environments","section":"cli-commands","title":"npm-doctor"}},{"fields":{"slug":"/cli-commands/npm-edit"},"frontmatter":{"description":"Edit an installed package","section":"cli-commands","title":"npm-edit"}},{"fields":{"slug":"/cli-commands/npm-fund"},"frontmatter":{"description":"Retrieve funding information","section":"cli-commands","title":"npm-fund"}},{"fields":{"slug":"/cli-commands/npm-help"},"frontmatter":{"description":"Get help on npm","section":"cli-commands","title":"npm-help"}},{"fields":{"slug":"/cli-commands/npm-help-search"},"frontmatter":{"description":"Search npm help documentation","section":"cli-commands","title":"npm-help-search"}},{"fields":{"slug":"/cli-commands/npm-hook"},"frontmatter":{"description":"Manage registry hooks","section":"cli-commands","title":"npm-hook"}},{"fields":{"slug":"/cli-commands/npm-init"},"frontmatter":{"description":"create a package.json file","section":"cli-commands","title":"npm-init"}},{"fields":{"slug":"/cli-commands/npm-install"},"frontmatter":{"description":"Install a package","section":"cli-commands","title":"npm-install"}},{"fields":{"slug":"/cli-commands/npm-install-ci-test"},"frontmatter":{"description":"Install a project with a clean slate and run tests","section":"cli-commands","title":"npm-install-ci-test"}},{"fields":{"slug":"/cli-commands/npm-install-test"},"frontmatter":{"description":"Install package(s) and run tests","section":"cli-commands","title":"npm-install-test"}},{"fields":{"slug":"/cli-commands/npm-link"},"frontmatter":{"description":"Symlink a package folder","section":"cli-commands","title":"npm-link"}},{"fields":{"slug":"/cli-commands/npm-logout"},"frontmatter":{"description":"Log out of the registry","section":"cli-commands","title":"npm-logout"}},{"fields":{"slug":"/cli-commands/npm-ls"},"frontmatter":{"description":"List installed packages","section":"cli-commands","title":"npm-ls"}},{"fields":{"slug":"/cli-commands/npm-org"},"frontmatter":{"description":"Manage orgs","section":"cli-commands","title":"npm-org"}},{"fields":{"slug":"/cli-commands/npm-outdated"},"frontmatter":{"description":"Check for outdated packages","section":"cli-commands","title":"npm-outdated"}},{"fields":{"slug":"/cli-commands/npm-owner"},"frontmatter":{"description":"Manage package owners","section":"cli-commands","title":"npm-owner"}},{"fields":{"slug":"/cli-commands/npm-pack"},"frontmatter":{"description":"Create a tarball from a package","section":"cli-commands","title":"npm-pack"}},{"fields":{"slug":"/cli-commands/npm-ping"},"frontmatter":{"description":"Ping npm registry","section":"cli-commands","title":"npm-ping"}},{"fields":{"slug":"/cli-commands/npm-prefix"},"frontmatter":{"description":"Display prefix","section":"cli-commands","title":"npm-prefix"}},{"fields":{"slug":"/cli-commands/npm-profile"},"frontmatter":{"description":"Change settings on your registry profile","section":"cli-commands","title":"npm-profile"}},{"fields":{"slug":"/cli-commands/npm-prune"},"frontmatter":{"description":"Remove extraneous packages","section":"cli-commands","title":"npm-prune"}},{"fields":{"slug":"/cli-commands/npm-publish"},"frontmatter":{"description":"Publish a package","section":"cli-commands","title":"npm-publish"}},{"fields":{"slug":"/cli-commands/npm-rebuild"},"frontmatter":{"description":"Rebuild a package","section":"cli-commands","title":"npm-rebuild"}},{"fields":{"slug":"/cli-commands/npm-repo"},"frontmatter":{"description":"Open package repository page in the browser","section":"cli-commands","title":"npm-repo"}},{"fields":{"slug":"/cli-commands/npm-restart"},"frontmatter":{"description":"Restart a package","section":"cli-commands","title":"npm-restart"}},{"fields":{"slug":"/cli-commands/npm-root"},"frontmatter":{"description":"Display npm root","section":"cli-commands","title":"npm-root"}},{"fields":{"slug":"/cli-commands/npm-run-script"},"frontmatter":{"description":"Run arbitrary package scripts","section":"cli-commands","title":"npm-run-script"}},{"fields":{"slug":"/cli-commands/npm-search"},"frontmatter":{"description":"Search for packages","section":"cli-commands","title":"npm-search"}},{"fields":{"slug":"/cli-commands/npm-shrinkwrap"},"frontmatter":{"description":"Lock down dependency versions for publication","section":"cli-commands","title":"npm-shrinkwrap"}},{"fields":{"slug":"/cli-commands/npm-star"},"frontmatter":{"description":"Mark your favorite packages","section":"cli-commands","title":"npm-star"}},{"fields":{"slug":"/cli-commands/npm-stars"},"frontmatter":{"description":"View packages marked as favorites","section":"cli-commands","title":"npm-stars"}},{"fields":{"slug":"/cli-commands/npm-start"},"frontmatter":{"description":"Start a package","section":"cli-commands","title":"npm-start"}},{"fields":{"slug":"/cli-commands/npm-stop"},"frontmatter":{"description":"Stop a package","section":"cli-commands","title":"npm-stop"}},{"fields":{"slug":"/cli-commands/npm-team"},"frontmatter":{"description":"Manage organization teams and team memberships","section":"cli-commands","title":"npm-team"}},{"fields":{"slug":"/cli-commands/npm-test"},"frontmatter":{"description":"Test a package","section":"cli-commands","title":"npm-test"}},{"fields":{"slug":"/cli-commands/npm-token"},"frontmatter":{"description":"Manage your authentication tokens","section":"cli-commands","title":"npm-token"}},{"fields":{"slug":"/cli-commands/npm-uninstall"},"frontmatter":{"description":"Remove a package","section":"cli-commands","title":"npm-uninstall"}},{"fields":{"slug":"/cli-commands/npm-unpublish"},"frontmatter":{"description":"Remove a package from the registry","section":"cli-commands","title":"npm-unpublish"}},{"fields":{"slug":"/cli-commands/npm-update"},"frontmatter":{"description":"Update a package","section":"cli-commands","title":"npm-update"}},{"fields":{"slug":"/cli-commands/npm-version"},"frontmatter":{"description":"Bump a package version","section":"cli-commands","title":"npm-version"}},{"fields":{"slug":"/cli-commands/npm-view"},"frontmatter":{"description":"View registry info","section":"cli-commands","title":"npm-view"}},{"fields":{"slug":"/cli-commands/npm-whoami"},"frontmatter":{"description":"Display npm username","section":"cli-commands","title":"npm-whoami"}},{"fields":{"slug":"/configuring-npm/npmrc"},"frontmatter":{"description":"The npm config files","section":"configuring-npm","title":"npmrc"}},{"fields":{"slug":"/using-npm/orgs"},"frontmatter":{"description":"Working with Teams & Orgs","section":"using-npm","title":"orgs"}},{"fields":{"slug":"/configuring-npm/package-lock-json"},"frontmatter":{"description":"A manifestation of the manifest","section":"configuring-npm","title":"package-lock.json"}},{"fields":{"slug":"/configuring-npm/package-locks"},"frontmatter":{"description":"An explanation of npm lockfiles","section":"configuring-npm","title":"package-locks"}},{"fields":{"slug":"/configuring-npm/package-json"},"frontmatter":{"description":"Specifics of npm's package.json handling","section":"configuring-npm","title":"package.json"}},{"fields":{"slug":"/using-npm/registry"},"frontmatter":{"description":"The JavaScript Package Registry","section":"using-npm","title":"registry"}},{"fields":{"slug":"/using-npm/removal"},"frontmatter":{"description":"Cleaning the Slate","section":"using-npm","title":"removal"}},{"fields":{"slug":"/using-npm/scope"},"frontmatter":{"description":"Scoped packages","section":"using-npm","title":"scope"}},{"fields":{"slug":"/using-npm/scripts"},"frontmatter":{"description":"How npm handles the \"scripts\" field","section":"using-npm","title":"scripts"}},{"fields":{"slug":"/configuring-npm/shrinkwrap-json"},"frontmatter":{"description":"A publishable lockfile","section":"configuring-npm","title":"shrinkwrap.json"}}]}}} \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/config/index.html b/deps/npm/docs/public/using-npm/config/index.html index f84138225e4935..14b2f75498ec67 100644 --- a/deps/npm/docs/public/using-npm/config/index.html +++ b/deps/npm/docs/public/using-npm/config/index.html @@ -74,7 +74,7 @@ } } }) -

    config

    +

    config

    More than you probably want to know about npm configuration

    Description

    npm gets its configuration values from the following sources, sorted by priority:

    @@ -1161,4 +1161,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/developers/index.html b/deps/npm/docs/public/using-npm/developers/index.html index 5b091a729ac996..98b491cb57a762 100644 --- a/deps/npm/docs/public/using-npm/developers/index.html +++ b/deps/npm/docs/public/using-npm/developers/index.html @@ -74,7 +74,7 @@ } } }) -

    developers

    +

    developers

    Developer Guide

    Description

    So, you've decided to use npm to develop (and maybe publish/deploy) @@ -259,4 +259,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/disputes/index.html b/deps/npm/docs/public/using-npm/disputes/index.html index 8611bde28cae41..19011ba37b70dc 100644 --- a/deps/npm/docs/public/using-npm/disputes/index.html +++ b/deps/npm/docs/public/using-npm/disputes/index.html @@ -74,7 +74,7 @@ } } }) -

    disputes

    +

    disputes

    Handling Module Name Disputes

    This document describes the steps that you should take to resolve module name disputes with other npm publishers. It also describes special steps you should @@ -163,7 +163,7 @@

    If you see bad behavior like this, please report it to abuse@npmjs.com right away. You are never expected to resolve abusive behavior on your own. We are here to help.

    -

    Trademarkss

    +

    Trademarks

    If you think another npm publisher is infringing your trademark, such as by using a confusingly similar package name, email abuse@npmjs.com with a link to the package or user account on https://www.npmjs.com/. @@ -192,4 +192,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/orgs/index.html b/deps/npm/docs/public/using-npm/orgs/index.html index efd4f3c09848de..d3583790ce3568 100644 --- a/deps/npm/docs/public/using-npm/orgs/index.html +++ b/deps/npm/docs/public/using-npm/orgs/index.html @@ -74,7 +74,7 @@ } } }) -

    orgs

    +

    orgs

    Working with Teams & Orgs

    Description

    There are three levels of org users:

    @@ -144,4 +144,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/registry/index.html b/deps/npm/docs/public/using-npm/registry/index.html index 4fa0e05d14c7de..91e28bb9514e46 100644 --- a/deps/npm/docs/public/using-npm/registry/index.html +++ b/deps/npm/docs/public/using-npm/registry/index.html @@ -74,7 +74,7 @@ } } }) -

    registry

    +

    registry

    The JavaScript Package Registry

    Description

    To resolve packages by name and version, npm talks to a registry website @@ -156,4 +156,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/removal/index.html b/deps/npm/docs/public/using-npm/removal/index.html index 2c73f0c54d03c2..d537016410ea10 100644 --- a/deps/npm/docs/public/using-npm/removal/index.html +++ b/deps/npm/docs/public/using-npm/removal/index.html @@ -74,7 +74,7 @@ } } }) -

    removal

    +

    removal

    Cleaning the Slate

    Synopsis

    So sad to see you go.

    @@ -116,4 +116,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/scope/index.html b/deps/npm/docs/public/using-npm/scope/index.html index 8c7b6d75a3f49b..1fcfa14853a6e3 100644 --- a/deps/npm/docs/public/using-npm/scope/index.html +++ b/deps/npm/docs/public/using-npm/scope/index.html @@ -74,7 +74,7 @@ } } }) -

    scope

    +

    scope

    Scoped packages

    Description

    All npm packages have a name. Some package names also have a scope. A scope @@ -159,4 +159,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/scripts/index.html b/deps/npm/docs/public/using-npm/scripts/index.html index 954cc85258cfa4..8e10a99e532e68 100644 --- a/deps/npm/docs/public/using-npm/scripts/index.html +++ b/deps/npm/docs/public/using-npm/scripts/index.html @@ -74,87 +74,61 @@ } } }) -

    scripts

    +

    scripts

    How npm handles the "scripts" field

    Description

    -

    npm supports the "scripts" property of the package.json file, for the -following scripts:

    +

    The "scripts" property of of your package.json file supports a number of built-in scripts and their preset life cycle events as well as arbitrary scripts. These all can be executed by running npm run-script <stage> or npm run <stage> for short. Pre and post commands with matching names will be run for those as well (e.g. premyscript, myscript, postmyscript). Scripts from dependencies can be run with npm explore <pkg> -- npm run <stage>.

    +

    Pre & Post Scripts

    +

    To create "pre" or "post" scripts for any scripts defined in the "scripts" section of the package.json, simply create another script with a matching name and add "pre" or "post" to the beginning of them.

    +
    {
    +  "scripts": {
    +    "precompress": "{{ executes BEFORE the `compress` script }}",
    +    "compress": "{{ run command to compress files }}",
    +    "postcompress": "{{ executes AFTER `compress` script }}"
    +  }
    +}
    +

    Life Cycle Scripts

    +

    There are some special life cycle scripts that happen only in certain situations. These scripts happen in addtion to the "pre" and "post" script.

    +
      +
    • prepare, prepublish, prepublishOnly, prepack, postpack
    • +
    +

    prepare (since npm@4.0.0)

    +
      +
    • Runs BEFORE the package is packed
    • +
    • Runs BEFORE the package is published
    • +
    • Runs on local npm install without any arguments
    • +
    • Run AFTER prepublish, but BEFORE prepublishOnly
    • +
    • NOTE: If a package being installed through git contains a prepare script, its dependencies and devDependencies will be installed, and the prepare script will be run, before the package is packaged and installed.
    • +
    +

    prepublish (DEPRECATED)

    +
      +
    • Same as prepare
    • +
    +

    prepublishOnly

    +
      +
    • Runs BEFORE the package is prepared and packed, ONLY on npm publish.
    • +
    +

    prepack

    +
      +
    • Runs BEFORE a tarball is packed (on "npm pack", "npm publish", and when installing a git dependencies).
    • +
    • NOTE: "npm run pack" is NOT the same as "npm pack". "npm run pack" is an arbitrary user defined script name, where as, "npm pack" is a CLI defined command.
    • +
    +

    postpack

      -
    • prepublish (as of npm@5, prepublish is deprecated. Use prepare for build steps and prepublishOnly for upload-only.): -Run BEFORE the package is packed and published, as well as on local npm -install without any arguments. (See below)
    • -
    • prepare: -Run both BEFORE the package is packed and published, on local npm -install without any arguments, and when installing git dependencies (See -below). This is run AFTER prepublish, but BEFORE prepublishOnly.
    • -
    • prepublishOnly: -Run BEFORE the package is prepared and packed, ONLY on npm publish. (See -below.)
    • -
    • prepack: -run BEFORE a tarball is packed (on npm pack, npm publish, and when -installing git dependencies)
    • -
    • postpack: -Run AFTER the tarball has been generated and moved to its final destination.
    • -
    • publish, postpublish: -Run AFTER the package is published.
    • -
    • preinstall: -Run BEFORE the package is installed
    • -
    • install, postinstall: -Run AFTER the package is installed.
    • -
    • preuninstall, uninstall: -Run BEFORE the package is uninstalled.
    • -
    • postuninstall: -Run AFTER the package is uninstalled.
    • -
    • preversion: -Run BEFORE bumping the package version.
    • -
    • version: -Run AFTER bumping the package version, but BEFORE commit.
    • -
    • postversion: -Run AFTER bumping the package version, and AFTER commit.
    • -
    • pretest, test, posttest: -Run by the npm test command.
    • -
    • prestop, stop, poststop: -Run by the npm stop command.
    • -
    • prestart, start, poststart: -Run by the npm start command.
    • -
    • prerestart, restart, postrestart: -Run by the npm restart command. Note: npm restart will run the -stop and start scripts if no restart script is provided.
    • -
    • preshrinkwrap, shrinkwrap, postshrinkwrap: -Run by the npm shrinkwrap command.
    • +
    • Runs AFTER the tarball has been generated and moved to its final destination.
    -

    Additionally, arbitrary scripts can be executed by running npm -run-script <stage>. Pre and post commands with matching -names will be run for those as well (e.g. premyscript, myscript, -postmyscript). Scripts from dependencies can be run with -npm explore <pkg> -- npm run <stage>.

    -

    Prepublish and Prepare

    -

    Deprecation Note

    -

    Since npm@1.1.71, the npm CLI has run the prepublish script for both npm -publish and npm install, because it's a convenient way to prepare a package -for use (some common use cases are described in the section below). It has -also turned out to be, in practice, very -confusing. As of npm@4.0.0, a new -event has been introduced, prepare, that preserves this existing behavior. A -new event, prepublishOnly has been added as a transitional strategy to -allow users to avoid the confusing behavior of existing npm versions and only -run on npm publish (for instance, running the tests one last time to ensure -they're in good shape).

    -

    See https://github.com/npm/npm/issues/10074 for a much lengthier -justification, with further reading, for this change.

    -

    Use Cases

    -

    If you need to perform operations on your package before it is used, in a way -that is not dependent on the operating system or architecture of the -target system, use a prepublish script. This includes -tasks such as:

    +

    Prepare and Prepublish

    +

    Deprecation Note: prepublish

    +

    Since npm@1.1.71, the npm CLI has run the prepublish script for both npm publish and npm install, because it's a convenient way to prepare a package for use (some common use cases are described in the section below). It has also turned out to be, in practice, very confusing. As of npm@4.0.0, a new event has been introduced, prepare, that preserves this existing behavior. A new event, prepublishOnly has been added as a transitional strategy to allow users to avoid the confusing behavior of existing npm versions and only run on npm publish (for instance, running the tests one last time to ensure they're in good shape).

    +

    See https://github.com/npm/npm/issues/10074 for a much lengthier justification, with further reading, for this change.

    +

    Use Cases

    +

    If you need to perform operations on your package before it is used, in a way that is not dependent on the operating system or architecture of the target system, use a prepublish script. This includes tasks such as:

    • Compiling CoffeeScript source code into JavaScript.
    • Creating minified versions of JavaScript source code.
    • Fetching remote resources that your package will use.
    -

    The advantage of doing these things at prepublish time is that they can be done once, in a -single place, thus reducing complexity and variability. -Additionally, this means that:

    +

    The advantage of doing these things at prepublish time is that they can be done once, in a single place, thus reducing complexity and variability. Additionally, this means that:

    +

    Life Cycle Operation Order

    +

    npm publish

    +
      +
    • prepublishOnly
    • +
    • prepare
    • +
    • prepublish
    • +
    • publish
    • +
    • postpublish
    • +
    +

    npm pack

    +
      +
    • prepack
    • +
    • postpack
    • +
    +

    npm install

    +
      +
    • preinstall
    • +
    • install
    • +
    • postinstall
    • +
    +

    Also triggers

    +
      +
    • prepublish (when on local)
    • +
    • prepare (when on local)
    • +
    +

    npm start

    +

    npm run start has an npm start shorthand.

    +
      +
    • prestart
    • +
    • start
    • +
    • poststart
    • +

    Default Values

    npm will default some script values based on package contents.

    @@ -303,4 +309,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/semver/index.html b/deps/npm/docs/public/using-npm/semver/index.html index da4134247cdfa2..bd26f5f4d4ce09 100644 --- a/deps/npm/docs/public/using-npm/semver/index.html +++ b/deps/npm/docs/public/using-npm/semver/index.html @@ -74,7 +74,7 @@ } } }) -

    semver(7) -- The semantic versioner for npm

    +

    semver(7) -- The semantic versioner for npm

    Install

    npm install --save semver

    Usage

    @@ -435,4 +435,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/lib/access.js b/deps/npm/lib/access.js index 6657f4b0717a1f..e850c132eb24b2 100644 --- a/deps/npm/lib/access.js +++ b/deps/npm/lib/access.js @@ -112,7 +112,7 @@ access.grant = ([perms, scopeteam, pkg], opts) => { } return modifyPackage(pkg, opts, (pkgName, opts) => { return libaccess.grant(pkgName, scopeteam, perms, opts) - }) + }, false) }) } diff --git a/deps/npm/lib/fund.js b/deps/npm/lib/fund.js index 00954c844d7981..e605ea8c3fd039 100644 --- a/deps/npm/lib/fund.js +++ b/deps/npm/lib/fund.js @@ -14,13 +14,14 @@ const readShrinkwrap = require('./install/read-shrinkwrap.js') const mutateIntoLogicalTree = require('./install/mutate-into-logical-tree.js') const output = require('./utils/output.js') const openUrl = require('./utils/open-url.js') -const { getFundingInfo, retrieveFunding, validFundingUrl } = require('./utils/funding.js') +const { getFundingInfo, retrieveFunding, validFundingField, flatCacheSymbol } = require('./utils/funding.js') const FundConfig = figgyPudding({ browser: {}, // used by ./utils/open-url global: {}, json: {}, - unicode: {} + unicode: {}, + which: {} }) module.exports = fundCmd @@ -29,7 +30,7 @@ const usage = require('./utils/usage') fundCmd.usage = usage( 'fund', 'npm fund [--json]', - 'npm fund [--browser] [[<@scope>/]' + 'npm fund [--browser] [[<@scope>/] [--which=]' ) fundCmd.completion = function (opts, cb) { @@ -52,96 +53,52 @@ function printJSON (fundingInfo) { // level possible, in that process they also carry their dependencies along // with them, moving those up in the visual tree function printHuman (fundingInfo, opts) { - // mapping logic that keeps track of seen items in order to be able - // to push all other items from the same type/url in the same place - const seen = new Map() + const flatCache = fundingInfo[flatCacheSymbol] - function seenKey ({ type, url } = {}) { - return url ? String(type) + String(url) : null - } - - function setStackedItem (funding, result) { - const key = seenKey(funding) - if (key && !seen.has(key)) seen.set(key, result) - } + const { name, version } = fundingInfo + const printableVersion = version ? `@${version}` : '' - function retrieveStackedItem (funding) { - const key = seenKey(funding) - if (key && seen.has(key)) return seen.get(key) - } + const items = Object.keys(flatCache).map((url) => { + const deps = flatCache[url] - // --- - - const getFundingItems = (fundingItems) => - Object.keys(fundingItems || {}).map((fundingItemName) => { - // first-level loop, prepare the pretty-printed formatted data - const fundingItem = fundingItems[fundingItemName] - const { version, funding } = fundingItem - const { type, url } = funding || {} + const packages = deps.map((dep) => { + const { name, version } = dep const printableVersion = version ? `@${version}` : '' - const printableType = type && { label: `type: ${funding.type}` } - const printableUrl = url && { label: `url: ${funding.url}` } - const result = { - fundingItem, - label: fundingItemName + printableVersion, - nodes: [] - } - - if (printableType) { - result.nodes.push(printableType) - } - - if (printableUrl) { - result.nodes.push(printableUrl) - } - - setStackedItem(funding, result) - - return result - }).reduce((res, result) => { - // recurse and exclude nodes that are going to be stacked together - const { fundingItem } = result - const { dependencies, funding } = fundingItem - const items = getFundingItems(dependencies) - const stackedResult = retrieveStackedItem(funding) - items.forEach(i => result.nodes.push(i)) - - if (stackedResult && stackedResult !== result) { - stackedResult.label += `, ${result.label}` - items.forEach(i => stackedResult.nodes.push(i)) - return res - } - - res.push(result) - - return res - }, []) - - const [ result ] = getFundingItems({ - [fundingInfo.name]: { - dependencies: fundingInfo.dependencies, - funding: fundingInfo.funding, - version: fundingInfo.version + return `${name}${printableVersion}` + }) + + return { + label: url, + nodes: [packages.join(', ')] } }) - return archy(result, '', { unicode: opts.unicode }) + return archy({ label: `${name}${printableVersion}`, nodes: items }, '', { unicode: opts.unicode }) } -function openFundingUrl (packageName, cb) { +function openFundingUrl (packageName, fundingSourceNumber, cb) { function getUrlAndOpen (packageMetadata) { const { funding } = packageMetadata - const { type, url } = retrieveFunding(funding) || {} - const noFundingError = - new Error(`No funding method available for: ${packageName}`) - noFundingError.code = 'ENOFUND' - const typePrefix = type ? `${type} funding` : 'Funding' - const msg = `${typePrefix} available at the following URL` - - if (validFundingUrl(funding)) { + const validSources = [].concat(retrieveFunding(funding)).filter(validFundingField) + + if (validSources.length === 1 || (fundingSourceNumber > 0 && fundingSourceNumber <= validSources.length)) { + const { type, url } = validSources[fundingSourceNumber ? fundingSourceNumber - 1 : 0] + const typePrefix = type ? `${type} funding` : 'Funding' + const msg = `${typePrefix} available at the following URL` openUrl(url, msg, cb) + } else if (!(fundingSourceNumber >= 1)) { + validSources.forEach(({ type, url }, i) => { + const typePrefix = type ? `${type} funding` : 'Funding' + const msg = `${typePrefix} available at the following URL` + console.log(`${i + 1}: ${msg}: ${url}`) + }) + console.log('Run `npm fund [<@scope>/] --which=1`, for example, to open the first funding URL listed in that package') + cb() } else { + const noFundingError = new Error(`No valid funding method available for: ${packageName}`) + noFundingError.code = 'ENOFUND' + throw noFundingError } } @@ -161,15 +118,24 @@ function fundCmd (args, cb) { const opts = FundConfig(npmConfig()) const dir = path.resolve(npm.dir, '..') const packageName = args[0] + const numberArg = opts.which + + const fundingSourceNumber = numberArg && parseInt(numberArg, 10) + + if (numberArg !== undefined && (String(fundingSourceNumber) !== numberArg || fundingSourceNumber < 1)) { + const err = new Error('`npm fund [<@scope>/] [--which=fundingSourceNumber]` must be given a positive integer') + err.code = 'EFUNDNUMBER' + throw err + } if (opts.global) { - const err = new Error('`npm fund` does not support globals') + const err = new Error('`npm fund` does not support global packages') err.code = 'EFUNDGLOBAL' throw err } if (packageName) { - openFundingUrl(packageName, cb) + openFundingUrl(packageName, fundingSourceNumber, cb) return } diff --git a/deps/npm/lib/utils/error-handler.js b/deps/npm/lib/utils/error-handler.js index 39e0035c272881..3e6f176ef8206b 100644 --- a/deps/npm/lib/utils/error-handler.js +++ b/deps/npm/lib/utils/error-handler.js @@ -36,7 +36,7 @@ process.on('timing', function (name, value) { process.on('exit', function (code) { process.emit('timeEnd', 'npm') log.disableProgress() - if (npm.config.loaded && npm.config.get('timing')) { + if (npm.config && npm.config.loaded && npm.config.get('timing')) { try { timings.logfile = getLogFile() cacheFile.append('_timing.json', JSON.stringify(timings) + '\n') @@ -64,7 +64,7 @@ process.on('exit', function (code) { log.verbose('code', code) } } - if (npm.config.loaded && npm.config.get('timing') && !wroteLogFile) writeLogFile() + if (npm.config && npm.config.loaded && npm.config.get('timing') && !wroteLogFile) writeLogFile() if (wroteLogFile) { // just a line break if (log.levels[log.level] <= log.levels.error) console.error('') @@ -79,7 +79,7 @@ process.on('exit', function (code) { wroteLogFile = false } - var doExit = npm.config.loaded && npm.config.get('_exit') + var doExit = npm.config && npm.config.loaded && npm.config.get('_exit') if (doExit) { // actually exit. if (exitCode === 0 && !itWorked) { @@ -94,7 +94,7 @@ process.on('exit', function (code) { function exit (code, noLog) { exitCode = exitCode || process.exitCode || code - var doExit = npm.config.loaded ? npm.config.get('_exit') : true + var doExit = npm.config && npm.config.loaded ? npm.config.get('_exit') : true log.verbose('exit', [code, doExit]) if (log.level === 'silent') noLog = true diff --git a/deps/npm/lib/utils/error-message.js b/deps/npm/lib/utils/error-message.js index 12f304d1e894ac..3faa78f3089146 100644 --- a/deps/npm/lib/utils/error-message.js +++ b/deps/npm/lib/utils/error-message.js @@ -35,9 +35,9 @@ function errorMessage (er) { case 'EACCES': case 'EPERM': const isCachePath = typeof er.path === 'string' && - er.path.startsWith(npm.config.get('cache')) + npm.config && er.path.startsWith(npm.config.get('cache')) const isCacheDest = typeof er.dest === 'string' && - er.dest.startsWith(npm.config.get('cache')) + npm.config && er.dest.startsWith(npm.config.get('cache')) const isWindows = process.platform === 'win32' diff --git a/deps/npm/lib/utils/funding.js b/deps/npm/lib/utils/funding.js index c3d06b10899638..5375639109ee2a 100644 --- a/deps/npm/lib/utils/funding.js +++ b/deps/npm/lib/utils/funding.js @@ -4,22 +4,31 @@ const URL = require('url').URL exports.getFundingInfo = getFundingInfo exports.retrieveFunding = retrieveFunding -exports.validFundingUrl = validFundingUrl +exports.validFundingField = validFundingField -// supports both object funding and string shorthand +const flatCacheSymbol = Symbol('npm flat cache') +exports.flatCacheSymbol = flatCacheSymbol + +// supports object funding and string shorthand, or an array of these +// if original was an array, returns an array; else returns the lone item function retrieveFunding (funding) { - return typeof funding === 'string' - ? { - url: funding - } - : funding + const sources = [].concat(funding || []).map(item => ( + typeof item === 'string' + ? { url: item } + : item + )) + return Array.isArray(funding) ? sources : sources[0] } // Is the value of a `funding` property of a `package.json` // a valid type+url for `npm fund` to display? -function validFundingUrl (funding) { +function validFundingField (funding) { if (!funding) return false + if (Array.isArray(funding)) { + return funding.every(f => !Array.isArray(f) && validFundingField(f)) + } + try { var parsed = new URL(funding.url || funding) } catch (error) { @@ -34,11 +43,13 @@ function validFundingUrl (funding) { return Boolean(parsed.host) } +const empty = () => Object.create(null) + function getFundingInfo (idealTree, opts) { - let length = 0 + let packageWithFundingCount = 0 + const flat = empty() const seen = new Set() const { countOnly } = opts || {} - const empty = () => Object.create(null) const _trailingDependencies = Symbol('trailingDependencies') function tracked (name, version) { @@ -70,52 +81,70 @@ function getFundingInfo (idealTree, opts) { ) } + function addToFlatCache (funding, dep) { + [].concat(funding || []).forEach((f) => { + const key = f.url + if (!Array.isArray(flat[key])) { + flat[key] = [] + } + flat[key].push(dep) + }) + } + + function attachFundingInfo (target, funding, dep) { + if (funding && validFundingField(funding)) { + target.funding = retrieveFunding(funding) + if (!countOnly) { + addToFlatCache(target.funding, dep) + } + + packageWithFundingCount++ + } + } + function getFundingDependencies (tree) { const deps = tree && tree.dependencies if (!deps) return empty() - // broken into two steps to make sure items appearance - // within top levels takes precedence over nested ones - return (Object.keys(deps)).map((key) => { + const directDepsWithFunding = Object.keys(deps).map((key) => { const dep = deps[key] const { name, funding, version } = dep - const fundingItem = {} - // avoids duplicated items within the funding tree if (tracked(name, version)) return empty() + const fundingItem = {} + if (version) { fundingItem.version = version } - if (funding && validFundingUrl(funding)) { - fundingItem.funding = retrieveFunding(funding) - length++ - } + attachFundingInfo(fundingItem, funding, dep) return { dep, fundingItem } - }).reduce((res, { dep, fundingItem }, i) => { - if (!fundingItem) return res + }) + + return directDepsWithFunding.reduce((res, { dep: directDep, fundingItem }, i) => { + if (!fundingItem || fundingItem.length === 0) return res // recurse - const dependencies = dep.dependencies && - Object.keys(dep.dependencies).length > 0 && - getFundingDependencies(dep) + const transitiveDependencies = directDep.dependencies && + Object.keys(directDep.dependencies).length > 0 && + getFundingDependencies(directDep) // if we're only counting items there's no need // to add all the data to the resulting object if (countOnly) return null - if (hasDependencies(dependencies)) { - fundingItem.dependencies = retrieveDependencies(dependencies) + if (hasDependencies(transitiveDependencies)) { + fundingItem.dependencies = retrieveDependencies(transitiveDependencies) } - if (fundingItem.funding) { - res[dep.name] = fundingItem + if (fundingItem.funding && fundingItem.funding.length !== 0) { + res[directDep.name] = fundingItem } else if (fundingItem.dependencies) { res[_trailingDependencies] = Object.assign( @@ -126,12 +155,12 @@ function getFundingInfo (idealTree, opts) { } return res - }, empty()) + }, countOnly ? null : empty()) } const idealTreeDependencies = getFundingDependencies(idealTree) const result = { - length + length: packageWithFundingCount } if (!countOnly) { @@ -145,8 +174,9 @@ function getFundingInfo (idealTree, opts) { result.funding = retrieveFunding(idealTree.funding) } - result.dependencies = - retrieveDependencies(idealTreeDependencies) + result.dependencies = retrieveDependencies(idealTreeDependencies) + + result[flatCacheSymbol] = flat } return result diff --git a/deps/npm/lib/utils/unsupported.js b/deps/npm/lib/utils/unsupported.js index c34e17374e0405..c78cdcbc294940 100644 --- a/deps/npm/lib/utils/unsupported.js +++ b/deps/npm/lib/utils/unsupported.js @@ -1,23 +1,14 @@ 'use strict' var semver = require('semver') -var supportedNode = [ - {ver: '6', min: '6.0.0'}, - {ver: '8', min: '8.0.0'}, - {ver: '9', min: '9.0.0'}, - {ver: '10', min: '10.0.0'}, - {ver: '11', min: '11.0.0'}, - {ver: '12', min: '12.0.0'}, - {ver: '13', min: '13.0.0'}, - {ver: '14', min: '14.0.0'} -] -var knownBroken = '<6.2.0 || 9.0 - 9.2' +var supported = require('../../package.json').engines.node +var knownBroken = '<6.2.0 || 9 <9.3.0' var checkVersion = exports.checkVersion = function (version) { var versionNoPrerelease = version.replace(/-.*$/, '') return { version: versionNoPrerelease, broken: semver.satisfies(versionNoPrerelease, knownBroken), - unsupported: !semver.satisfies(versionNoPrerelease, supportedNode.map(function (n) { return '^' + n.min }).join('||')) + unsupported: !semver.satisfies(versionNoPrerelease, supported) } } @@ -25,18 +16,8 @@ exports.checkForBrokenNode = function () { var nodejs = checkVersion(process.version) if (nodejs.broken) { console.error('ERROR: npm is known not to run on Node.js ' + process.version) - supportedNode.forEach(function (rel) { - if (semver.satisfies(nodejs.version, rel.ver)) { - console.error('Node.js ' + rel.ver + " is supported but the specific version you're running has") - console.error('a bug known to break npm. Please update to at least ' + rel.min + ' to use this') - console.error('version of npm. You can find the latest release of Node.js at https://nodejs.org/') - process.exit(1) - } - }) - var supportedMajors = supportedNode.map(function (n) { return n.ver }).join(', ') - console.error("You'll need to upgrade to a newer version in order to use this") - console.error('version of npm. Supported versions are ' + supportedMajors + '. You can find the') - console.error('latest version at https://nodejs.org/') + console.error("You'll need to upgrade to a newer Node.js version in order to use this") + console.error('version of npm. You can find the latest version at https://nodejs.org/') process.exit(1) } } @@ -45,11 +26,9 @@ exports.checkForUnsupportedNode = function () { var nodejs = checkVersion(process.version) if (nodejs.unsupported) { var log = require('npmlog') - var supportedMajors = supportedNode.map(function (n) { return n.ver }).join(', ') log.warn('npm', 'npm does not support Node.js ' + process.version) log.warn('npm', 'You should probably upgrade to a newer version of node as we') log.warn('npm', "can't make any promises that npm will work with this version.") - log.warn('npm', 'Supported releases of Node.js are the latest release of ' + supportedMajors + '.') log.warn('npm', 'You can find the latest version at https://nodejs.org/') } } diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1 index a068aae1ffc1be..bc250bdaabc40c 100644 --- a/deps/npm/man/man1/npm-README.1 +++ b/deps/npm/man/man1/npm-README.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "January 2020" "" "" +.TH "NPM" "1" "February 2020" "" "" .SH "NAME" \fBnpm\fR \- a JavaScript package manager .P diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index d4a40015f243ed..5521fd45a5ea05 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ACCESS" "1" "January 2020" "" "" +.TH "NPM\-ACCESS" "1" "February 2020" "" "" .SH "NAME" \fBnpm-access\fR \- Set access level on published packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index 05166e52ec91df..9e2ed19a86b336 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -3,7 +3,7 @@ section: cli\-commands title: npm\-adduser .SH description: Set access level on published packages -.TH "NPM\-ADDUSER" "1" "January 2020" "" "" +.TH "NPM\-ADDUSER" "1" "February 2020" "" "" .SH "NAME" \fBnpm-adduser\fR \- Add a registry user account .SS Synopsis diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1 index 4ef6441cbee4ea..3665ef2f7b690a 100644 --- a/deps/npm/man/man1/npm-audit.1 +++ b/deps/npm/man/man1/npm-audit.1 @@ -1,4 +1,4 @@ -.TH "NPM\-AUDIT" "1" "January 2020" "" "" +.TH "NPM\-AUDIT" "1" "February 2020" "" "" .SH "NAME" \fBnpm-audit\fR \- Run a security audit .SS Synopsis diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1 index 78c581b58aa847..806e11757fb0e7 100644 --- a/deps/npm/man/man1/npm-bin.1 +++ b/deps/npm/man/man1/npm-bin.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BIN" "1" "January 2020" "" "" +.TH "NPM\-BIN" "1" "February 2020" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SS Synopsis diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 2292e9e17b168f..019763dd8c8c0e 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUGS" "1" "January 2020" "" "" +.TH "NPM\-BUGS" "1" "February 2020" "" "" .SH "NAME" \fBnpm-bugs\fR \- Bugs for a package in a web browser maybe .SS Synopsis diff --git a/deps/npm/man/man1/npm-build.1 b/deps/npm/man/man1/npm-build.1 index c081bfc04b36eb..f199a43ad95303 100644 --- a/deps/npm/man/man1/npm-build.1 +++ b/deps/npm/man/man1/npm-build.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUILD" "1" "January 2020" "" "" +.TH "NPM\-BUILD" "1" "February 2020" "" "" .SH "NAME" \fBnpm-build\fR \- Build a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-bundle.1 b/deps/npm/man/man1/npm-bundle.1 index effd87724844b1..7c927041da9d1d 100644 --- a/deps/npm/man/man1/npm-bundle.1 +++ b/deps/npm/man/man1/npm-bundle.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUNDLE" "1" "January 2020" "" "" +.TH "NPM\-BUNDLE" "1" "February 2020" "" "" .SH "NAME" \fBnpm-bundle\fR \- REMOVED .SS Description diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 44a66252bbd88b..330f127fed0cf3 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CACHE" "1" "January 2020" "" "" +.TH "NPM\-CACHE" "1" "February 2020" "" "" .SH "NAME" \fBnpm-cache\fR \- Manipulates packages cache .SS Synopsis diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1 index 42910229ccb2ba..ae835891432faa 100644 --- a/deps/npm/man/man1/npm-ci.1 +++ b/deps/npm/man/man1/npm-ci.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CI" "1" "January 2020" "" "" +.TH "NPM\-CI" "1" "February 2020" "" "" .SH "NAME" \fBnpm-ci\fR \- Install a project with a clean slate .SS Synopsis diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index 75c51c53cdb672..92d201f8c05539 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM\-COMPLETION" "1" "January 2020" "" "" +.TH "NPM\-COMPLETION" "1" "February 2020" "" "" .SH "NAME" \fBnpm-completion\fR \- Tab Completion for npm .SS Synopsis diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index c213beac47f0ca..278a7df70c65ef 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "1" "January 2020" "" "" +.TH "NPM\-CONFIG" "1" "February 2020" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SS Synopsis diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index 0dfb8dadb210ac..22653cc2729c4f 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEDUPE" "1" "January 2020" "" "" +.TH "NPM\-DEDUPE" "1" "February 2020" "" "" .SH "NAME" \fBnpm-dedupe\fR \- Reduce duplication .SS Synopsis diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index f76790723ae753..82a5c34b1b4302 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEPRECATE" "1" "January 2020" "" "" +.TH "NPM\-DEPRECATE" "1" "February 2020" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index 354438674bdfa0..9fe3f66a3b6b91 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -3,7 +3,7 @@ section: cli\-commands title: npm\-dist\-tag .SH description: Modify package distribution tags -.TH "NPM\-DIST\-TAG" "1" "January 2020" "" "" +.TH "NPM\-DIST\-TAG" "1" "February 2020" "" "" .SH "NAME" \fBnpm-dist-tag\fR \- Modify package distribution tags .SS Synopsis diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index 4cbdb3e2aefca8..24d9054c06839a 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCS" "1" "January 2020" "" "" +.TH "NPM\-DOCS" "1" "February 2020" "" "" .SH "NAME" \fBnpm-docs\fR \- Docs for a package in a web browser maybe .SS Synopsis diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1 index 8cbc40a0d07540..fb947f1b205a70 100644 --- a/deps/npm/man/man1/npm-doctor.1 +++ b/deps/npm/man/man1/npm-doctor.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCTOR" "1" "January 2020" "" "" +.TH "NPM\-DOCTOR" "1" "February 2020" "" "" .SH "NAME" \fBnpm-doctor\fR \- Check your environments .SS Synopsis diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index 5addfe7bb4c94a..2f8332a88813c0 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EDIT" "1" "January 2020" "" "" +.TH "NPM\-EDIT" "1" "February 2020" "" "" .SH "NAME" \fBnpm-edit\fR \- Edit an installed package .SS Synopsis diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 81597ca8809246..bce86b07718fd9 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -3,7 +3,7 @@ section: cli\-commands title: npm\-explore .SH description: Browse an installed package -.TH "NPM\-EXPLORE" "1" "January 2020" "" "" +.TH "NPM\-EXPLORE" "1" "February 2020" "" "" .SH "NAME" \fBnpm-explore\fR \- Browse an installed package .SS Synopsis diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1 index af46ce81099dd1..75e3eb5bc36ae3 100644 --- a/deps/npm/man/man1/npm-fund.1 +++ b/deps/npm/man/man1/npm-fund.1 @@ -1,4 +1,4 @@ -.TH "NPM\-FUND" "1" "January 2020" "" "" +.TH "NPM\-FUND" "1" "February 2020" "" "" .SH "NAME" \fBnpm-fund\fR \- Retrieve funding information .SS Synopsis @@ -15,7 +15,8 @@ a given project\. If no package name is provided, it will list all dependencies that are looking for funding in a tree\-structure in which are listed the type of funding and the url to visit\. If a package name is provided then it tries to open its funding url using the \fB\-\-browser\fP -config param\. +config param; if there are multiple funding sources for the package, the +user will be instructed to pass the \fB\-\-which\fP command to disambiguate\. .P The list will avoid duplicated entries and will stack all packages that share the same type/url as a single entry\. Given this nature the @@ -34,9 +35,9 @@ The browser that is called by the \fBnpm fund\fP command to open websites\. .SS json .RS 0 .IP \(bu 2 -Default: false -.IP \(bu 2 Type: Boolean +.IP \(bu 2 +Default: false .RE .P @@ -52,6 +53,16 @@ Default: true .P Whether to represent the tree structure using unicode characters\. Set it to \fBfalse\fP in order to use all\-ansi output\. +.SS which +.RS 0 +.IP \(bu 2 +Type: Number +.IP \(bu 2 +Default: undefined + +.RE +.P +If there are multiple funding sources, which 1\-indexed source URL to open\. .SH See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index c25ecaf9a4822a..35020590bcfc59 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP\-SEARCH" "1" "January 2020" "" "" +.TH "NPM\-HELP\-SEARCH" "1" "February 2020" "" "" .SH "NAME" \fBnpm-help-search\fR \- Search npm help documentation .SS Synopsis diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index 483193bbc0823e..3e1f7cf8cbd64c 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP" "1" "January 2020" "" "" +.TH "NPM\-HELP" "1" "February 2020" "" "" .SH "NAME" \fBnpm-help\fR \- Get help on npm .SS Synopsis diff --git a/deps/npm/man/man1/npm-hook.1 b/deps/npm/man/man1/npm-hook.1 index a71f6826a2a8cc..a7f11bbf11ae21 100644 --- a/deps/npm/man/man1/npm-hook.1 +++ b/deps/npm/man/man1/npm-hook.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HOOK" "1" "January 2020" "" "" +.TH "NPM\-HOOK" "1" "February 2020" "" "" .SH "NAME" \fBnpm-hook\fR \- Manage registry hooks .SS Synopsis diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 3d7cc749b1e248..50e1bfa21b01e0 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INIT" "1" "January 2020" "" "" +.TH "NPM\-INIT" "1" "February 2020" "" "" .SH "NAME" \fBnpm-init\fR \- create a package\.json file .SS Synopsis diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1 index 729c0aa2e23fe7..b9de2ba2a63c74 100644 --- a/deps/npm/man/man1/npm-install-ci-test.1 +++ b/deps/npm/man/man1/npm-install-ci-test.1 @@ -1,4 +1,4 @@ -.TH "NPM" "" "January 2020" "" "" +.TH "NPM" "" "February 2020" "" "" .SH "NAME" \fBnpm\fR .SS Synopsis diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index 52731cee7d3d25..d5fb253f77c1e8 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,4 +1,4 @@ -.TH "NPM" "" "January 2020" "" "" +.TH "NPM" "" "February 2020" "" "" .SH "NAME" \fBnpm\fR .SS Synopsis diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index 171d7a896cc6cb..099a1534e13cdd 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL" "1" "January 2020" "" "" +.TH "NPM\-INSTALL" "1" "February 2020" "" "" .SH "NAME" \fBnpm-install\fR \- Install a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index fbb7c1708dcfe6..f9f4ec3e37aea8 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LINK" "1" "January 2020" "" "" +.TH "NPM\-LINK" "1" "February 2020" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SS Synopsis diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 4a7463bb3003bd..7f53279a540c4a 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LOGOUT" "1" "January 2020" "" "" +.TH "NPM\-LOGOUT" "1" "February 2020" "" "" .SH "NAME" \fBnpm-logout\fR \- Log out of the registry .SS Synopsis diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index 78c2d9ee14cc57..a621cf829ecd91 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LS" "1" "January 2020" "" "" +.TH "NPM\-LS" "1" "February 2020" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SS Synopsis @@ -22,7 +22,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show: .P .RS 2 .nf - npm@6\.13\.7 /path/to/npm + npm@6\.14\.1 /path/to/npm └─┬ init\-package\-json@0\.0\.4 └── promzard@0\.1\.5 .fi diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1 index 9c3b722f7ce4d3..b8fde0ed95d641 100644 --- a/deps/npm/man/man1/npm-org.1 +++ b/deps/npm/man/man1/npm-org.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ORG" "1" "January 2020" "" "" +.TH "NPM\-ORG" "1" "February 2020" "" "" .SH "NAME" \fBnpm-org\fR \- Manage orgs .SS Synopsis diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index d0fa0d52d55a01..f547f08a1c3187 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OUTDATED" "1" "January 2020" "" "" +.TH "NPM\-OUTDATED" "1" "February 2020" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index dc2eb2d4f86cbf..1c15beef6cff14 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OWNER" "1" "January 2020" "" "" +.TH "NPM\-OWNER" "1" "February 2020" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SS Synopsis diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index d551d9add4e718..eca5f3c7b6dbb1 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PACK" "1" "January 2020" "" "" +.TH "NPM\-PACK" "1" "February 2020" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 672c8b752d6efe..0611ffe2e1186b 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PING" "1" "January 2020" "" "" +.TH "NPM\-PING" "1" "February 2020" "" "" .SH "NAME" \fBnpm-ping\fR \- Ping npm registry .SS Synopsis diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index e6e3c6dd82db86..d65e3b45ecc5f0 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PREFIX" "1" "January 2020" "" "" +.TH "NPM\-PREFIX" "1" "February 2020" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SS Synopsis diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1 index 45ec331f0bf935..ee5018341e54d3 100644 --- a/deps/npm/man/man1/npm-profile.1 +++ b/deps/npm/man/man1/npm-profile.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PROFILE" "1" "January 2020" "" "" +.TH "NPM\-PROFILE" "1" "February 2020" "" "" .SH "NAME" \fBnpm-profile\fR \- Change settings on your registry profile .SS Synopsis diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index 6b875c4524f325..81c474ccf08979 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PRUNE" "1" "January 2020" "" "" +.TH "NPM\-PRUNE" "1" "February 2020" "" "" .SH "NAME" \fBnpm-prune\fR \- Remove extraneous packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index 1ce1a94ae0d4f2..7bb65ff36bd82a 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PUBLISH" "1" "January 2020" "" "" +.TH "NPM\-PUBLISH" "1" "February 2020" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 8ef5729d104a2c..9666d94ab1408a 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REBUILD" "1" "January 2020" "" "" +.TH "NPM\-REBUILD" "1" "February 2020" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index eae4c2a45bfdf7..3da701d2e09417 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REPO" "1" "January 2020" "" "" +.TH "NPM\-REPO" "1" "February 2020" "" "" .SH "NAME" \fBnpm-repo\fR \- Open package repository page in the browser .SS Synopsis diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index a3627c8fcde82d..25d39529847e4b 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RESTART" "1" "January 2020" "" "" +.TH "NPM\-RESTART" "1" "February 2020" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index 801c5c9659e182..b87596ea23ed79 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ROOT" "1" "January 2020" "" "" +.TH "NPM\-ROOT" "1" "February 2020" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SS Synopsis diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index 84c956a464976e..e0ae4fe6a3bb8a 100644 --- a/deps/npm/man/man1/npm-run-script.1 +++ b/deps/npm/man/man1/npm-run-script.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RUN\-SCRIPT" "1" "January 2020" "" "" +.TH "NPM\-RUN\-SCRIPT" "1" "February 2020" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SS Synopsis diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index e2a3a6b8bbdf17..6ba914b01bc002 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SEARCH" "1" "January 2020" "" "" +.TH "NPM\-SEARCH" "1" "February 2020" "" "" .SH "NAME" \fBnpm-search\fR \- Search for packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index b051e6a233d8d0..07283a8a326360 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP" "1" "January 2020" "" "" +.TH "NPM\-SHRINKWRAP" "1" "February 2020" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR \- Lock down dependency versions for publication .SS Synopsis diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index 0843a7e923e400..e8384832905bd4 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STAR" "1" "January 2020" "" "" +.TH "NPM\-STAR" "1" "February 2020" "" "" .SH "NAME" \fBnpm-star\fR \- Mark your favorite packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 8049d0131229b0..5f666362a90058 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STARS" "1" "January 2020" "" "" +.TH "NPM\-STARS" "1" "February 2020" "" "" .SH "NAME" \fBnpm-stars\fR \- View packages marked as favorites .SS Synopsis diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index d07181ead7d9ca..b7d61384e4a3de 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM\-START" "1" "January 2020" "" "" +.TH "NPM\-START" "1" "February 2020" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 77b3b888c4dbfe..15b7fea95073f1 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STOP" "1" "January 2020" "" "" +.TH "NPM\-STOP" "1" "February 2020" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index 4d42d12872c11c..5b04f786639a04 100644 --- a/deps/npm/man/man1/npm-team.1 +++ b/deps/npm/man/man1/npm-team.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEAM" "1" "January 2020" "" "" +.TH "NPM\-TEAM" "1" "February 2020" "" "" .SH "NAME" \fBnpm-team\fR \- Manage organization teams and team memberships .SS Synopsis diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index 17b690dcc70f64..c5e017eaea2dca 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEST" "1" "January 2020" "" "" +.TH "NPM\-TEST" "1" "February 2020" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index 7fc5f2bffbf88f..7e2a93d2621959 100644 --- a/deps/npm/man/man1/npm-token.1 +++ b/deps/npm/man/man1/npm-token.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TOKEN" "1" "January 2020" "" "" +.TH "NPM\-TOKEN" "1" "February 2020" "" "" .SH "NAME" \fBnpm-token\fR \- Manage your authentication tokens .SS Synopsis diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index 290bf532ea5665..a46cc6b1e153cf 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNINSTALL" "1" "January 2020" "" "" +.TH "NPM\-UNINSTALL" "1" "February 2020" "" "" .SH "NAME" \fBnpm-uninstall\fR \- Remove a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index aeb37d6667482f..73c4c17b0d047b 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNPUBLISH" "1" "January 2020" "" "" +.TH "NPM\-UNPUBLISH" "1" "February 2020" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SS Synopsis diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index 1a6a63a9199c28..e91c4a0a09f236 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UPDATE" "1" "January 2020" "" "" +.TH "NPM\-UPDATE" "1" "February 2020" "" "" .SH "NAME" \fBnpm-update\fR \- Update a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 86bad64efd3931..83040d7709325f 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VERSION" "1" "January 2020" "" "" +.TH "NPM\-VERSION" "1" "February 2020" "" "" .SH "NAME" \fBnpm-version\fR \- Bump a package version .SS Synopsis diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index 0d522c82a3636d..7aec57fbc7c631 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VIEW" "1" "January 2020" "" "" +.TH "NPM\-VIEW" "1" "February 2020" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SS Synopsis diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index e5d72be0035f7e..1fe3c7a0327f46 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM\-WHOAMI" "1" "January 2020" "" "" +.TH "NPM\-WHOAMI" "1" "February 2020" "" "" .SH "NAME" \fBnpm-whoami\fR \- Display npm username .SS Synopsis diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index 7674110bf36d71..d2626ef19f1a35 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "January 2020" "" "" +.TH "NPM" "1" "February 2020" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SS Synopsis @@ -10,7 +10,7 @@ npm [args] .RE .SS Version .P -6\.13\.7 +6\.14\.1 .SS Description .P npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5 index 3148604e7f391b..95b668999f2aee 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "January 2020" "" "" +.TH "FOLDERS" "5" "February 2020" "" "" .SH "NAME" \fBfolders\fR \- Folder Structures Used by npm .SS Description diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index 5ab99d1513eecb..745eab3ed3f637 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "January 2020" "" "" +.TH "INSTALL" "5" "February 2020" "" "" .SH "NAME" \fBinstall\fR \- Download and Install npm .SS Description diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index 503e5725d6cf4b..f3f9057d883786 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "January 2020" "" "" +.TH "NPMRC" "5" "February 2020" "" "" .SH "NAME" \fBnpmrc\fR \- The npm config files .SS Description diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5 index 7c82b4e95573ff..f188a08e50a416 100644 --- a/deps/npm/man/man5/package-json.5 +++ b/deps/npm/man/man5/package-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\.JSON" "5" "January 2020" "" "" +.TH "PACKAGE\.JSON" "5" "February 2020" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SS Description @@ -216,7 +216,8 @@ npm also sets a top\-level "maintainers" field with your npm user info\. .SS funding .P You can specify an object containing an URL that provides up\-to\-date -information about ways to help fund development of your package: +information about ways to help fund development of your package, or +a string URL, or an array of these: .P .RS 2 .nf @@ -229,13 +230,28 @@ information about ways to help fund development of your package: "type" : "patreon", "url" : "https://www\.patreon\.com/my\-account" } + +"funding": "http://example\.com/donate" + +"funding": [ + { + "type" : "individual", + "url" : "http://example\.com/donate" + }, + "http://example\.com/donateAlso", + { + "type" : "patreon", + "url" : "https://www\.patreon\.com/my\-account" + } +] .fi .RE .P Users can use the \fBnpm fund\fP subcommand to list the \fBfunding\fP URLs of all dependencies of their project, direct and indirect\. A shortcut to visit each funding url is also available when providing the project name such as: -\fBnpm fund \fP\|\. +\fBnpm fund \fP (when there are multiple URLs, the first one will be +visited) .SS files .P The optional \fBfiles\fP field is an array of file patterns that describes diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5 index 9ddd9d275c5a2e..6a4dece03d0027 100644 --- a/deps/npm/man/man5/package-lock-json.5 +++ b/deps/npm/man/man5/package-lock-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\-LOCK\.JSON" "5" "January 2020" "" "" +.TH "PACKAGE\-LOCK\.JSON" "5" "February 2020" "" "" .SH "NAME" \fBpackage-lock.json\fR \- A manifestation of the manifest .SS Description diff --git a/deps/npm/man/man5/package-locks.5 b/deps/npm/man/man5/package-locks.5 index acbed3b397d640..0658ff24682af8 100644 --- a/deps/npm/man/man5/package-locks.5 +++ b/deps/npm/man/man5/package-locks.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\-LOCKS" "5" "January 2020" "" "" +.TH "PACKAGE\-LOCKS" "5" "February 2020" "" "" .SH "NAME" \fBpackage-locks\fR \- An explanation of npm lockfiles .SS Description diff --git a/deps/npm/man/man5/shrinkwrap-json.5 b/deps/npm/man/man5/shrinkwrap-json.5 index d6d5ff490f1204..11f24412a9c637 100644 --- a/deps/npm/man/man5/shrinkwrap-json.5 +++ b/deps/npm/man/man5/shrinkwrap-json.5 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP\.JSON" "5" "January 2020" "" "" +.TH "NPM\-SHRINKWRAP\.JSON" "5" "February 2020" "" "" .SH "NAME" \fBnpm-shrinkwrap.json\fR \- A publishable lockfile .SS Description diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7 index ad67a24a3bc43e..32612e44c55fd3 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "January 2020" "" "" +.TH "CONFIG" "7" "February 2020" "" "" .SH "NAME" \fBconfig\fR \- More than you probably want to know about npm configuration .SS Description diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index bbb122c0f023d1..da4a8a0af5c91c 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "January 2020" "" "" +.TH "DEVELOPERS" "7" "February 2020" "" "" .SH "NAME" \fBdevelopers\fR \- Developer Guide .SS Description diff --git a/deps/npm/man/man7/disputes.7 b/deps/npm/man/man7/disputes.7 index 0647464866d923..64088b488db647 100644 --- a/deps/npm/man/man7/disputes.7 +++ b/deps/npm/man/man7/disputes.7 @@ -1,4 +1,4 @@ -.TH "DISPUTES" "7" "January 2020" "" "" +.TH "DISPUTES" "7" "February 2020" "" "" .SH "NAME" \fBdisputes\fR \- Handling Module Name Disputes .P @@ -116,7 +116,7 @@ language, pornographic content, or harassment\. If you see bad behavior like this, please report it to abuse@npmjs\.com right away\. \fBYou are never expected to resolve abusive behavior on your own\. We are here to help\.\fR -.SS Trademarkss +.SS Trademarks .P If you think another npm publisher is infringing your trademark, such as by using a confusingly similar package name, email abuse@npmjs\.com with a link to diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index 5b1386a0ebf61f..9674c00d19b788 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGS" "7" "January 2020" "" "" +.TH "ORGS" "7" "February 2020" "" "" .SH "NAME" \fBorgs\fR \- Working with Teams & Orgs .SS Description diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index 518bc433292c8d..1bfb2dcf609e52 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "January 2020" "" "" +.TH "REGISTRY" "7" "February 2020" "" "" .SH "NAME" \fBregistry\fR \- The JavaScript Package Registry .SS Description diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7 index db25812c7c06bc..cfc7bce1ba978b 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "January 2020" "" "" +.TH "REMOVAL" "7" "February 2020" "" "" .SH "NAME" \fBremoval\fR \- Cleaning the Slate .SS Synopsis diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7 index 6694affc8f5421..6c6aae668bd97b 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "January 2020" "" "" +.TH "SCOPE" "7" "February 2020" "" "" .SH "NAME" \fBscope\fR \- Scoped packages .SS Description diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7 index c9ba92e8c111b2..b9103a3f2de47d 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,101 +1,88 @@ -.TH "SCRIPTS" "7" "January 2020" "" "" +.TH "SCRIPTS" "7" "February 2020" "" "" .SH "NAME" \fBscripts\fR \- How npm handles the "scripts" field .SS Description .P -npm supports the "scripts" property of the package\.json file, for the -following scripts: +The \fB"scripts"\fP property of of your \fBpackage\.json\fP file supports a number of built\-in scripts and their preset life cycle events as well as arbitrary scripts\. These all can be executed by running \fBnpm run\-script \fP or \fBnpm run \fP for short\. \fIPre\fR and \fIpost\fR commands with matching names will be run for those as well (e\.g\. \fBpremyscript\fP, \fBmyscript\fP, \fBpostmyscript\fP)\. Scripts from dependencies can be run with \fBnpm explore \-\- npm run \fP\|\. +.SS Pre & Post Scripts +.P +To create "pre" or "post" scripts for any scripts defined in the \fB"scripts"\fP section of the \fBpackage\.json\fP, simply create another script \fIwith a matching name\fR and add "pre" or "post" to the beginning of them\. +.P +.RS 2 +.nf +{ + "scripts": { + "precompress": "{{ executes BEFORE the `compress` script }}", + "compress": "{{ run command to compress files }}", + "postcompress": "{{ executes AFTER `compress` script }}" + } +} +.fi +.RE +.SS Life Cycle Scripts +.P +There are some special life cycle scripts that happen only in certain situations\. These scripts happen in addtion to the "pre" and "post" script\. .RS 0 .IP \(bu 2 -\fBprepublish\fR (\fIas of npm@5, \fBprepublish\fP is deprecated\. Use \fBprepare\fP for build steps and \fBprepublishOnly\fP for upload\-only\.\fR): -Run BEFORE the package is packed and published, as well as on local \fBnpm -install\fP without any arguments\. (See below) -.IP \(bu 2 -\fBprepare\fR: -Run both BEFORE the package is packed and published, on local \fBnpm -install\fP without any arguments, and when installing git dependencies (See -below)\. This is run AFTER \fBprepublish\fP, but BEFORE \fBprepublishOnly\fP\|\. -.IP \(bu 2 -\fBprepublishOnly\fR: -Run BEFORE the package is prepared and packed, ONLY on \fBnpm publish\fP\|\. (See -below\.) -.IP \(bu 2 -\fBprepack\fR: -run BEFORE a tarball is packed (on \fBnpm pack\fP, \fBnpm publish\fP, and when -installing git dependencies) -.IP \(bu 2 -\fBpostpack\fR: -Run AFTER the tarball has been generated and moved to its final destination\. -.IP \(bu 2 -\fBpublish\fR, \fBpostpublish\fR: -Run AFTER the package is published\. -.IP \(bu 2 -\fBpreinstall\fR: -Run BEFORE the package is installed -.IP \(bu 2 -\fBinstall\fR, \fBpostinstall\fR: -Run AFTER the package is installed\. +\fBprepare\fP, \fBprepublish\fP, \fBprepublishOnly\fP, \fBprepack\fP, \fBpostpack\fP + +.RE +.P +\fBprepare\fR (since \fBnpm@4\.0\.0\fP) +.RS 0 .IP \(bu 2 -\fBpreuninstall\fR, \fBuninstall\fR: -Run BEFORE the package is uninstalled\. +Runs BEFORE the package is packed .IP \(bu 2 -\fBpostuninstall\fR: -Run AFTER the package is uninstalled\. +Runs BEFORE the package is published .IP \(bu 2 -\fBpreversion\fR: -Run BEFORE bumping the package version\. +Runs on local \fBnpm install\fP without any arguments .IP \(bu 2 -\fBversion\fR: -Run AFTER bumping the package version, but BEFORE commit\. +Run AFTER \fBprepublish\fP, but BEFORE \fBprepublishOnly\fP .IP \(bu 2 -\fBpostversion\fR: -Run AFTER bumping the package version, and AFTER commit\. +NOTE: If a package being installed through git contains a \fBprepare\fP script, its \fBdependencies\fP and \fBdevDependencies\fP will be installed, and the prepare script will be run, before the package is packaged and installed\. + +.RE +.P +\fBprepublish\fR (DEPRECATED) +.RS 0 .IP \(bu 2 -\fBpretest\fR, \fBtest\fR, \fBposttest\fR: -Run by the \fBnpm test\fP command\. +Same as \fBprepare\fP + +.RE +.P +\fBprepublishOnly\fR +.RS 0 .IP \(bu 2 -\fBprestop\fR, \fBstop\fR, \fBpoststop\fR: -Run by the \fBnpm stop\fP command\. +Runs BEFORE the package is prepared and packed, ONLY on \fBnpm publish\fP\|\. + +.RE +.P +\fBprepack\fR +.RS 0 .IP \(bu 2 -\fBprestart\fR, \fBstart\fR, \fBpoststart\fR: -Run by the \fBnpm start\fP command\. +Runs BEFORE a tarball is packed (on "\fBnpm pack\fP", "\fBnpm publish\fP", and when installing a git dependencies)\. .IP \(bu 2 -\fBprerestart\fR, \fBrestart\fR, \fBpostrestart\fR: -Run by the \fBnpm restart\fP command\. Note: \fBnpm restart\fP will run the -stop and start scripts if no \fBrestart\fP script is provided\. +NOTE: "\fBnpm run pack\fP" is NOT the same as "\fBnpm pack\fP"\. "\fBnpm run pack\fP" is an arbitrary user defined script name, where as, "\fBnpm pack\fP" is a CLI defined command\. + +.RE +.P +\fBpostpack\fR +.RS 0 .IP \(bu 2 -\fBpreshrinkwrap\fR, \fBshrinkwrap\fR, \fBpostshrinkwrap\fR: -Run by the \fBnpm shrinkwrap\fP command\. +Runs AFTER the tarball has been generated and moved to its final destination\. .RE +.SS Prepare and Prepublish .P -Additionally, arbitrary scripts can be executed by running \fBnpm -run\-script \fP\|\. \fIPre\fR and \fIpost\fR commands with matching -names will be run for those as well (e\.g\. \fBpremyscript\fP, \fBmyscript\fP, -\fBpostmyscript\fP)\. Scripts from dependencies can be run with -\fBnpm explore \-\- npm run \fP\|\. -.SS Prepublish and Prepare -.SS Deprecation Note -.P -Since \fBnpm@1\.1\.71\fP, the npm CLI has run the \fBprepublish\fP script for both \fBnpm -publish\fP and \fBnpm install\fP, because it's a convenient way to prepare a package -for use (some common use cases are described in the section below)\. It has -also turned out to be, in practice, very -confusing \fIhttps://github\.com/npm/npm/issues/10074\fR\|\. As of \fBnpm@4\.0\.0\fP, a new -event has been introduced, \fBprepare\fP, that preserves this existing behavior\. A -\fInew\fR event, \fBprepublishOnly\fP has been added as a transitional strategy to -allow users to avoid the confusing behavior of existing npm versions and only -run on \fBnpm publish\fP (for instance, running the tests one last time to ensure -they're in good shape)\. -.P -See https://github\.com/npm/npm/issues/10074 for a much lengthier -justification, with further reading, for this change\. -.SS Use Cases -.P -If you need to perform operations on your package before it is used, in a way -that is not dependent on the operating system or architecture of the -target system, use a \fBprepublish\fP script\. This includes -tasks such as: +\fBDeprecation Note: prepublish\fR +.P +Since \fBnpm@1\.1\.71\fP, the npm CLI has run the \fBprepublish\fP script for both \fBnpm publish\fP and \fBnpm install\fP, because it's a convenient way to prepare a package for use (some common use cases are described in the section below)\. It has also turned out to be, in practice, very confusing \fIhttps://github\.com/npm/npm/issues/10074\fR\|\. As of \fBnpm@4\.0\.0\fP, a new event has been introduced, \fBprepare\fP, that preserves this existing behavior\. A \fInew\fR event, \fBprepublishOnly\fP has been added as a transitional strategy to allow users to avoid the confusing behavior of existing npm versions and only run on \fBnpm publish\fP (for instance, running the tests one last time to ensure they're in good shape)\. +.P +See https://github\.com/npm/npm/issues/10074 for a much lengthier justification, with further reading, for this change\. +.P +\fBUse Cases\fR +.P +If you need to perform operations on your package before it is used, in a way that is not dependent on the operating system or architecture of the target system, use a \fBprepublish\fP script\. This includes tasks such as: .RS 0 .IP \(bu 2 Compiling CoffeeScript source code into JavaScript\. @@ -106,9 +93,7 @@ Fetching remote resources that your package will use\. .RE .P -The advantage of doing these things at \fBprepublish\fP time is that they can be done once, in a -single place, thus reducing complexity and variability\. -Additionally, this means that: +The advantage of doing these things at \fBprepublish\fP time is that they can be done once, in a single place, thus reducing complexity and variability\. Additionally, this means that: .RS 0 .IP \(bu 2 You can depend on \fBcoffee\-script\fP as a \fBdevDependency\fP, and thus @@ -120,6 +105,60 @@ the size for your users\. You don't need to rely on your users having \fBcurl\fP or \fBwget\fP or other system tools on the target machines\. +.RE +.SS Life Cycle Operation Order +.SS npm help \fBpublish\fP +.RS 0 +.IP \(bu 2 +\fBprepublishOnly\fP +.IP \(bu 2 +\fBprepare\fP +.IP \(bu 2 +\fBprepublish\fP +.IP \(bu 2 +\fBpublish\fP +.IP \(bu 2 +\fBpostpublish\fP + +.RE +.SS npm help \fBpack\fP +.RS 0 +.IP \(bu 2 +\fBprepack\fP +.IP \(bu 2 +\fBpostpack\fP + +.RE +.SS npm help \fBinstall\fP +.RS 0 +.IP \(bu 2 +\fBpreinstall\fP +.IP \(bu 2 +\fBinstall\fP +.IP \(bu 2 +\fBpostinstall\fP + +.RE +.P +Also triggers +.RS 0 +.IP \(bu 2 +\fBprepublish\fP (when on local) +.IP \(bu 2 +\fBprepare\fP (when on local) + +.RE +.SS npm help \fBstart\fP +.P +\fBnpm run start\fP has an \fBnpm start\fP shorthand\. +.RS 0 +.IP \(bu 2 +\fBprestart\fP +.IP \(bu 2 +\fBstart\fP +.IP \(bu 2 +\fBpoststart\fP + .RE .SS Default Values .P @@ -230,7 +269,7 @@ For example, if your package\.json contains this: .nf { "scripts" : { "install" : "scripts/install\.js" - , "postinstall" : "scripts/install\.js" + , "postinstall" : "scripts/postinstall\.js" , "uninstall" : "scripts/uninstall\.js" } } diff --git a/deps/npm/man/man7/semver.7 b/deps/npm/man/man7/semver.7 index e168c10e473714..85623a5000adaa 100644 --- a/deps/npm/man/man7/semver.7 +++ b/deps/npm/man/man7/semver.7 @@ -1,4 +1,4 @@ -.TH "SEMVER" "7" "January 2020" "" "" +.TH "SEMVER" "7" "February 2020" "" "" .SH "NAME" \fBsemver\fR \- The semantic versioner for npm .SH Install diff --git a/deps/npm/node_modules/chownr/chownr.js b/deps/npm/node_modules/chownr/chownr.js index 9f04393b7f498a..0d409321696540 100644 --- a/deps/npm/node_modules/chownr/chownr.js +++ b/deps/npm/node_modules/chownr/chownr.js @@ -7,10 +7,30 @@ const LCHOWN = fs.lchown ? 'lchown' : 'chown' /* istanbul ignore next */ const LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync' +/* istanbul ignore next */ const needEISDIRHandled = fs.lchown && !process.version.match(/v1[1-9]+\./) && !process.version.match(/v10\.[6-9]/) +const lchownSync = (path, uid, gid) => { + try { + return fs[LCHOWNSYNC](path, uid, gid) + } catch (er) { + if (er.code !== 'ENOENT') + throw er + } +} + +/* istanbul ignore next */ +const chownSync = (path, uid, gid) => { + try { + return fs.chownSync(path, uid, gid) + } catch (er) { + if (er.code !== 'ENOENT') + throw er + } +} + /* istanbul ignore next */ const handleEISDIR = needEISDIRHandled ? (path, uid, gid, cb) => er => { @@ -28,14 +48,14 @@ const handleEISDIR = const handleEISDirSync = needEISDIRHandled ? (path, uid, gid) => { try { - return fs[LCHOWNSYNC](path, uid, gid) + return lchownSync(path, uid, gid) } catch (er) { if (er.code !== 'EISDIR') throw er - fs.chownSync(path, uid, gid) + chownSync(path, uid, gid) } } - : (path, uid, gid) => fs[LCHOWNSYNC](path, uid, gid) + : (path, uid, gid) => lchownSync(path, uid, gid) // fs.readdir could only accept an options object as of node v6 const nodeVersion = process.version @@ -45,11 +65,19 @@ let readdirSync = (path, options) => fs.readdirSync(path, options) if (/^v4\./.test(nodeVersion)) readdir = (path, options, cb) => fs.readdir(path, cb) +const chown = (cpath, uid, gid, cb) => { + fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => { + // Skip ENOENT error + cb(er && er.code !== 'ENOENT' ? er : null) + })) +} + const chownrKid = (p, child, uid, gid, cb) => { if (typeof child === 'string') return fs.lstat(path.resolve(p, child), (er, stats) => { + // Skip ENOENT error if (er) - return cb(er) + return cb(er.code !== 'ENOENT' ? er : null) stats.name = child chownrKid(p, stats, uid, gid, cb) }) @@ -59,11 +87,11 @@ const chownrKid = (p, child, uid, gid, cb) => { if (er) return cb(er) const cpath = path.resolve(p, child.name) - fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, cb)) + chown(cpath, uid, gid, cb) }) } else { const cpath = path.resolve(p, child.name) - fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, cb)) + chown(cpath, uid, gid, cb) } } @@ -72,10 +100,14 @@ const chownr = (p, uid, gid, cb) => { readdir(p, { withFileTypes: true }, (er, children) => { // any error other than ENOTDIR or ENOTSUP means it's not readable, // or doesn't exist. give up. - if (er && er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP') - return cb(er) + if (er) { + if (er.code === 'ENOENT') + return cb() + else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP') + return cb(er) + } if (er || !children.length) - return fs[LCHOWN](p, uid, gid, handleEISDIR(p, uid, gid, cb)) + return chown(p, uid, gid, cb) let len = children.length let errState = null @@ -85,7 +117,7 @@ const chownr = (p, uid, gid, cb) => { if (er) return cb(errState = er) if (-- len === 0) - return fs[LCHOWN](p, uid, gid, handleEISDIR(p, uid, gid, cb)) + return chown(p, uid, gid, cb) } children.forEach(child => chownrKid(p, child, uid, gid, then)) @@ -94,9 +126,16 @@ const chownr = (p, uid, gid, cb) => { const chownrKidSync = (p, child, uid, gid) => { if (typeof child === 'string') { - const stats = fs.lstatSync(path.resolve(p, child)) - stats.name = child - child = stats + try { + const stats = fs.lstatSync(path.resolve(p, child)) + stats.name = child + child = stats + } catch (er) { + if (er.code === 'ENOENT') + return + else + throw er + } } if (child.isDirectory()) @@ -110,12 +149,15 @@ const chownrSync = (p, uid, gid) => { try { children = readdirSync(p, { withFileTypes: true }) } catch (er) { - if (er && er.code === 'ENOTDIR' && er.code !== 'ENOTSUP') + if (er.code === 'ENOENT') + return + else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP') return handleEISDirSync(p, uid, gid) - throw er + else + throw er } - if (children.length) + if (children && children.length) children.forEach(child => chownrKidSync(p, child, uid, gid)) return handleEISDirSync(p, uid, gid) diff --git a/deps/npm/node_modules/chownr/package.json b/deps/npm/node_modules/chownr/package.json index cc48dc912cd7ec..5c125f8447b546 100644 --- a/deps/npm/node_modules/chownr/package.json +++ b/deps/npm/node_modules/chownr/package.json @@ -1,19 +1,19 @@ { - "_from": "chownr@1.1.3", - "_id": "chownr@1.1.3", + "_from": "chownr@1.1.4", + "_id": "chownr@1.1.4", "_inBundle": false, - "_integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "_integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "_location": "/chownr", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "chownr@1.1.3", + "raw": "chownr@1.1.4", "name": "chownr", "escapedName": "chownr", - "rawSpec": "1.1.3", + "rawSpec": "1.1.4", "saveSpec": null, - "fetchSpec": "1.1.3" + "fetchSpec": "1.1.4" }, "_requiredBy": [ "#USER", @@ -23,10 +23,10 @@ "/pacote", "/tar" ], - "_resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "_shasum": "42d837d5239688d55f303003a508230fa6727142", - "_spec": "chownr@1.1.3", - "_where": "/Users/mperrotte/npminc/cli", + "_resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "_shasum": "6fc9d7b42d32a583596337666e7d08084da2cc6b", + "_spec": "chownr@1.1.4", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me", @@ -40,8 +40,8 @@ "description": "like `chown -R`", "devDependencies": { "mkdirp": "0.3", - "rimraf": "", - "tap": "^12.0.1" + "rimraf": "^2.7.1", + "tap": "^14.10.6" }, "files": [ "chownr.js" @@ -55,10 +55,13 @@ "url": "git://github.com/isaacs/chownr.git" }, "scripts": { - "postpublish": "git push origin --follow-tags", "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags", "preversion": "npm test", - "test": "tap test/*.js --cov" + "test": "tap" }, - "version": "1.1.3" + "tap": { + "check-coverage": true + }, + "version": "1.1.4" } diff --git a/deps/npm/node_modules/hosted-git-info/CHANGELOG.md b/deps/npm/node_modules/hosted-git-info/CHANGELOG.md index 479f24b6414eb7..21fe13ca652fce 100644 --- a/deps/npm/node_modules/hosted-git-info/CHANGELOG.md +++ b/deps/npm/node_modules/hosted-git-info/CHANGELOG.md @@ -2,6 +2,22 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [2.8.7](https://github.com/npm/hosted-git-info/compare/v2.8.6...v2.8.7) (2020-02-26) + + +### Bug Fixes + +* Do not attempt to use url.URL when unavailable ([2d0bb66](https://github.com/npm/hosted-git-info/commit/2d0bb66)), closes [#61](https://github.com/npm/hosted-git-info/issues/61) [#62](https://github.com/npm/hosted-git-info/issues/62) +* Do not pass scp-style URLs to the WhatWG url.URL ([f2cdfcf](https://github.com/npm/hosted-git-info/commit/f2cdfcf)), closes [#60](https://github.com/npm/hosted-git-info/issues/60) + + + + +## [2.8.6](https://github.com/npm/hosted-git-info/compare/v2.8.5...v2.8.6) (2020-02-25) + + + ## [2.8.5](https://github.com/npm/hosted-git-info/compare/v2.8.4...v2.8.5) (2019-10-07) diff --git a/deps/npm/node_modules/hosted-git-info/index.js b/deps/npm/node_modules/hosted-git-info/index.js index fc959cb0434c82..08fa329760d8b4 100644 --- a/deps/npm/node_modules/hosted-git-info/index.js +++ b/deps/npm/node_modules/hosted-git-info/index.js @@ -47,7 +47,7 @@ function fromUrl (giturl, opts) { var gitHostInfo = gitHosts[gitHostName] var auth = null if (parsed.auth && authProtocols[parsed.protocol]) { - auth = decodeURIComponent(parsed.auth) + auth = parsed.auth } var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null var user = null @@ -106,7 +106,30 @@ function fixupUnqualifiedGist (giturl) { function parseGitUrl (giturl) { var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/) - if (!matched) return url.parse(giturl) + if (!matched) { + var legacy = url.parse(giturl) + // If we don't have url.URL, then sorry, this is just not fixable. + // This affects Node <= 6.12. + if (legacy.auth && typeof url.URL === 'function') { + // git urls can be in the form of scp-style/ssh-connect strings, like + // git+ssh://user@host.com:some/path, which the legacy url parser + // supports, but WhatWG url.URL class does not. However, the legacy + // parser de-urlencodes the username and password, so something like + // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes + // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong. + // Pull off just the auth and host, so we dont' get the confusing + // scp-style URL, then pass that to the WhatWG parser to get the + // auth properly escaped. + const authmatch = giturl.match(/[^@]+@[^:/]+/) + /* istanbul ignore else - this should be impossible */ + if (authmatch) { + var whatwg = new url.URL(authmatch[0]) + legacy.auth = whatwg.username || '' + if (whatwg.password) legacy.auth += ':' + whatwg.password + } + } + return legacy + } return { protocol: 'git+ssh:', slashes: true, diff --git a/deps/npm/node_modules/hosted-git-info/package.json b/deps/npm/node_modules/hosted-git-info/package.json index 458b323a405189..7ce00ce18c551b 100644 --- a/deps/npm/node_modules/hosted-git-info/package.json +++ b/deps/npm/node_modules/hosted-git-info/package.json @@ -1,19 +1,19 @@ { - "_from": "hosted-git-info@2.8.5", - "_id": "hosted-git-info@2.8.5", + "_from": "hosted-git-info@2.8.7", + "_id": "hosted-git-info@2.8.7", "_inBundle": false, - "_integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "_integrity": "sha512-ChkjQtKJ3GI6SsI4O5jwr8q8EPrWCnxuc4Tbx+vRI5x6mDOpjKKltNo1lRlszw3xwgTOSns1ZRBiMmmwpcvLxg==", "_location": "/hosted-git-info", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "hosted-git-info@2.8.5", + "raw": "hosted-git-info@2.8.7", "name": "hosted-git-info", "escapedName": "hosted-git-info", - "rawSpec": "2.8.5", + "rawSpec": "2.8.7", "saveSpec": null, - "fetchSpec": "2.8.5" + "fetchSpec": "2.8.7" }, "_requiredBy": [ "#USER", @@ -21,9 +21,9 @@ "/normalize-package-data", "/npm-package-arg" ], - "_resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "_shasum": "759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c", - "_spec": "hosted-git-info@2.8.5", + "_resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.7.tgz", + "_shasum": "4d2e0d5248e1cfabc984b0f6a6d75fe36e679511", + "_spec": "hosted-git-info@2.8.7", "_where": "/Users/isaacs/dev/npm/cli", "author": { "name": "Rebecca Turner", @@ -62,11 +62,11 @@ }, "scripts": { "postrelease": "npm publish --tag=ancient-legacy-fixes && git push --follow-tags", + "posttest": "standard", "prerelease": "npm t", - "pretest": "standard", "release": "standard-version -s", "test": "tap -J --100 --no-esm test/*.js", "test:coverage": "tap --coverage-report=html -J --100 --no-esm test/*.js" }, - "version": "2.8.5" + "version": "2.8.7" } diff --git a/deps/npm/node_modules/npm-packlist/package.json b/deps/npm/node_modules/npm-packlist/package.json index c022dcef65b515..693c51b96140da 100644 --- a/deps/npm/node_modules/npm-packlist/package.json +++ b/deps/npm/node_modules/npm-packlist/package.json @@ -1,29 +1,29 @@ { - "_from": "npm-packlist@1.4.7", - "_id": "npm-packlist@1.4.7", + "_from": "npm-packlist@1.4.8", + "_id": "npm-packlist@1.4.8", "_inBundle": false, - "_integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", + "_integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", "_location": "/npm-packlist", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "npm-packlist@1.4.7", + "raw": "npm-packlist@1.4.8", "name": "npm-packlist", "escapedName": "npm-packlist", - "rawSpec": "1.4.7", + "rawSpec": "1.4.8", "saveSpec": null, - "fetchSpec": "1.4.7" + "fetchSpec": "1.4.8" }, "_requiredBy": [ "#USER", "/", "/pacote" ], - "_resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.7.tgz", - "_shasum": "9e954365a06b80b18111ea900945af4f88ed4848", - "_spec": "npm-packlist@1.4.7", - "_where": "/Users/isaacs/dev/npm/cli", + "_resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "_shasum": "56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e", + "_spec": "npm-packlist@1.4.8", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me", @@ -35,7 +35,8 @@ "bundleDependencies": false, "dependencies": { "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" }, "deprecated": false, "description": "Get a list of the files to add from a folder into an npm package", @@ -71,5 +72,5 @@ "tap": { "jobs": 1 }, - "version": "1.4.7" + "version": "1.4.8" } diff --git a/deps/npm/node_modules/npm-registry-fetch/CHANGELOG.md b/deps/npm/node_modules/npm-registry-fetch/CHANGELOG.md index 8eee50a4790a3c..3599c6b2fcac1b 100644 --- a/deps/npm/node_modules/npm-registry-fetch/CHANGELOG.md +++ b/deps/npm/node_modules/npm-registry-fetch/CHANGELOG.md @@ -2,6 +2,17 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [4.0.3](https://github.com/npm/registry-fetch/compare/v4.0.2...v4.0.3) (2020-02-13) + + +### Bug Fixes + +* always bypass cache when ?write=true ([ba8b4fe](https://github.com/npm/registry-fetch/commit/ba8b4fe)) +* use 30s default for timeout as per README ([69c2977](https://github.com/npm/registry-fetch/commit/69c2977)), closes [#20](https://github.com/npm/registry-fetch/issues/20) + + + ## [4.0.2](https://github.com/npm/registry-fetch/compare/v4.0.0...v4.0.2) (2019-10-04) diff --git a/deps/npm/node_modules/npm-registry-fetch/README.md b/deps/npm/node_modules/npm-registry-fetch/README.md index 0c3f4f9469955b..80ce64cda78efe 100644 --- a/deps/npm/node_modules/npm-registry-fetch/README.md +++ b/deps/npm/node_modules/npm-registry-fetch/README.md @@ -50,6 +50,25 @@ Happy hacking! ### API +#### Caching and `write=true` query strings + +Before performing any PUT or DELETE operation, npm clients first make a +GET request to the registry resource being updated, which includes +the query string `?write=true`. + +The semantics of this are, effectively, "I intend to write to this thing, +and need to know the latest current value, so that my write can land +cleanly". + +The public npm registry handles these `?write=true` requests by ensuring +that the cache is re-validated before sending a response. In order to +maintain the same behavior on the client, and not get tripped up by an +overeager local cache when we intend to write data to the registry, any +request that comes through `npm-registry-fetch` that contains `write=true` +in the query string will forcibly set the `prefer-online` option to `true`, +and set both `prefer-offline` and `offline` to false, so that any local +cached value will be revalidated. + #### `> fetch(url, [opts]) -> Promise` Performs a request to a given URL. @@ -391,6 +410,9 @@ Force offline mode: no network requests will be done during install. To allow This option is only really useful if you're also using [`opts.cache`](#opts-cache). +This option is set to `true` when the request includes `write=true` in the +query string. + ##### `opts.otp` * Type: Number | String @@ -402,7 +424,7 @@ account. ##### `opts.password` -* Alias: _password +* Alias: `_password` * Type: String * Default: null @@ -432,6 +454,9 @@ will be requested from the server. To force full offline mode, use This option is generally only useful if you're also using [`opts.cache`](#opts-cache). +This option is set to `false` when the request includes `write=true` in the +query string. + ##### `opts.prefer-online` * Type: Boolean @@ -443,6 +468,8 @@ for updates immediately even for fresh package data. This option is generally only useful if you're also using [`opts.cache`](#opts-cache). +This option is set to `true` when the request includes `write=true` in the +query string. ##### `opts.project-scope` @@ -606,4 +633,4 @@ See also [`opts.password`](#opts-password) * Default: null ** DEPRECATED ** This is a legacy authentication token supported only for -*compatibility. Please use [`opts.token`](#opts-token) instead. +compatibility. Please use [`opts.token`](#opts-token) instead. diff --git a/deps/npm/node_modules/npm-registry-fetch/config.js b/deps/npm/node_modules/npm-registry-fetch/config.js index 1c43b26eadd4c4..d7be3f9b38a167 100644 --- a/deps/npm/node_modules/npm-registry-fetch/config.js +++ b/deps/npm/node_modules/npm-registry-fetch/config.js @@ -75,7 +75,9 @@ module.exports = figgyPudding({ 'scope': {}, 'spec': {}, 'strict-ssl': {}, - 'timeout': {}, + 'timeout': { + default: 30 * 1000 + }, 'user-agent': { default: `${ pkg.name diff --git a/deps/npm/node_modules/npm-registry-fetch/index.js b/deps/npm/node_modules/npm-registry-fetch/index.js index c18487388b269f..9bd0ad32d7c9e9 100644 --- a/deps/npm/node_modules/npm-registry-fetch/index.js +++ b/deps/npm/node_modules/npm-registry-fetch/index.js @@ -53,26 +53,38 @@ function regFetch (uri, opts) { }) } } - if (opts.query) { - let q = opts.query + + let q = opts.query + if (q) { if (typeof q === 'string') { q = qs.parse(q) + } else if (typeof q !== 'object') { + throw new TypeError('invalid query option, must be string or object') } Object.keys(q).forEach(key => { if (q[key] === undefined) { delete q[key] } }) - if (Object.keys(q).length) { - const parsed = url.parse(uri) - parsed.search = '?' + qs.stringify( - parsed.query - ? Object.assign(qs.parse(parsed.query), q) - : q - ) - uri = url.format(parsed) + } + const parsed = url.parse(uri) + + const query = parsed.query ? Object.assign(qs.parse(parsed.query), q || {}) + : Object.keys(q || {}).length ? q + : null + + if (query) { + if (String(query.write) === 'true' && opts.method === 'GET') { + opts = opts.concat({ + offline: false, + 'prefer-offline': false, + 'prefer-online': true + }) } + parsed.search = '?' + qs.stringify(query) + uri = url.format(parsed) } + return opts.Promise.resolve(body).then(body => fetch(uri, { agent: opts.agent, algorithms: opts.algorithms, diff --git a/deps/npm/node_modules/npm-registry-fetch/package.json b/deps/npm/node_modules/npm-registry-fetch/package.json index 78e3100daa47f9..ca6c5f90c63527 100644 --- a/deps/npm/node_modules/npm-registry-fetch/package.json +++ b/deps/npm/node_modules/npm-registry-fetch/package.json @@ -1,19 +1,19 @@ { - "_from": "npm-registry-fetch@4.0.2", - "_id": "npm-registry-fetch@4.0.2", + "_from": "npm-registry-fetch@4.0.3", + "_id": "npm-registry-fetch@4.0.3", "_inBundle": false, - "_integrity": "sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A==", + "_integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", "_location": "/npm-registry-fetch", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "npm-registry-fetch@4.0.2", + "raw": "npm-registry-fetch@4.0.3", "name": "npm-registry-fetch", "escapedName": "npm-registry-fetch", - "rawSpec": "4.0.2", + "rawSpec": "4.0.3", "saveSpec": null, - "fetchSpec": "4.0.2" + "fetchSpec": "4.0.3" }, "_requiredBy": [ "#USER", @@ -28,10 +28,10 @@ "/npm-profile", "/pacote" ], - "_resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz", - "_shasum": "2b1434f93ccbe6b6385f8e45f45db93e16921d7a", - "_spec": "npm-registry-fetch@4.0.2", - "_where": "/Users/mperrotte/npminc/cli", + "_resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", + "_shasum": "3c2179e39e04f9348b1c2979545951d36bee8766", + "_spec": "npm-registry-fetch@4.0.3", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli", "author": { "name": "Kat MarchΓ‘n", "email": "kzm@sykosomatic.org" @@ -86,6 +86,9 @@ "license": "ISC", "main": "index.js", "name": "npm-registry-fetch", + "publishConfig": { + "tag": "latest-v4" + }, "repository": { "type": "git", "url": "git+https://github.com/npm/registry-fetch.git" @@ -99,5 +102,5 @@ "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'", "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'" }, - "version": "4.0.2" + "version": "4.0.3" } diff --git a/deps/npm/node_modules/readable-stream/README.md b/deps/npm/node_modules/readable-stream/README.md index 28ccae16165828..6f035ab16f29dd 100644 --- a/deps/npm/node_modules/readable-stream/README.md +++ b/deps/npm/node_modules/readable-stream/README.md @@ -15,7 +15,7 @@ npm install --save readable-stream This package is a mirror of the streams implementations in Node.js. -Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v10.15.3/docs/api/stream.html). +Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v10.19.0/docs/api/stream.html). If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). @@ -24,10 +24,7 @@ As of version 2.0.0 **readable-stream** uses semantic versioning. ## Version 3.x.x -v3.x.x of `readable-stream` supports Node 6, 8, and 10, as well as -evergreen browsers, IE 11 and latest Safari. The breaking changes -introduced by v3 are composed by the combined breaking changes in [Node v9](https://nodejs.org/en/blog/release/v9.0.0/) -and [Node v10](https://nodejs.org/en/blog/release/v10.0.0/), as follows: +v3.x.x of `readable-stream` is a cut from Node 10. This version supports Node 6, 8, and 10, as well as evergreen browsers, IE 11 and latest Safari. The breaking changes introduced by v3 are composed by the combined breaking changes in [Node v9](https://nodejs.org/en/blog/release/v9.0.0/) and [Node v10](https://nodejs.org/en/blog/release/v10.0.0/), as follows: 1. Error codes: https://github.com/nodejs/node/pull/13310, https://github.com/nodejs/node/pull/13291, @@ -51,9 +48,7 @@ and [Node v10](https://nodejs.org/en/blog/release/v10.0.0/), as follows: https://github.com/nodejs/node/pull/17979 ## Version 2.x.x - -v2.x.x of `readable-stream` supports all Node.js version from 0.8, as well as -evergreen browsers and IE 10 & 11. +v2.x.x of `readable-stream` is a cut of the stream module from Node 8 (there have been no semver-major changes from Node 4 to 8). This version supports all Node.js versions from 0.8, as well as evergreen browsers and IE 10 & 11. ### Big Thanks diff --git a/deps/npm/node_modules/readable-stream/lib/_stream_readable.js b/deps/npm/node_modules/readable-stream/lib/_stream_readable.js index 33f478d7e8c25a..192d451488f208 100644 --- a/deps/npm/node_modules/readable-stream/lib/_stream_readable.js +++ b/deps/npm/node_modules/readable-stream/lib/_stream_readable.js @@ -80,17 +80,16 @@ var _require$codes = require('../errors').codes, ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; - -var _require2 = require('../experimentalWarning'), - emitExperimentalWarning = _require2.emitExperimentalWarning; // Lazy loaded to improve the startup performance. + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. var StringDecoder; var createReadableStreamAsyncIterator; +var from; require('inherits')(Readable, Stream); +var errorOrDestroy = destroyImpl.errorOrDestroy; var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; function prependListener(emitter, event, fn) { @@ -144,7 +143,9 @@ function ReadableState(options, stream, isDuplex) { this.resumeScheduled = false; this.paused = true; // Should close be emitted on destroy. Defaults to true. - this.emitClose = options.emitClose !== false; // has it been destroyed + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. @@ -257,16 +258,16 @@ function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { if (!skipChunkCheck) er = chunkInvalid(state, chunk); if (er) { - stream.emit('error', er); + errorOrDestroy(stream, er); } else if (state.objectMode || chunk && chunk.length > 0) { if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { chunk = _uint8ArrayToBuffer(chunk); } if (addToFront) { - if (state.endEmitted) stream.emit('error', new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); } else if (state.ended) { - stream.emit('error', new ERR_STREAM_PUSH_AFTER_EOF()); + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); } else if (state.destroyed) { return false; } else { @@ -322,17 +323,32 @@ Readable.prototype.isPaused = function () { Readable.prototype.setEncoding = function (enc) { if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); // if setEncoding(null), decoder.encoding equals utf8 + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); - this._readableState.encoding = this._readableState.decoder.encoding; + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; return this; -}; // Don't raise the hwm > 8MB +}; // Don't raise the hwm > 1GB -var MAX_HWM = 0x800000; +var MAX_HWM = 0x40000000; function computeNewHighWaterMark(n) { if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. n = MAX_HWM; } else { // Get the next highest power of 2 to prevent increasing hwm excessively in @@ -449,7 +465,7 @@ Readable.prototype.read = function (n) { if (n > 0) ret = fromList(n, state);else ret = null; if (ret === null) { - state.needReadable = true; + state.needReadable = state.length <= state.highWaterMark; n = 0; } else { state.length -= n; @@ -469,6 +485,7 @@ Readable.prototype.read = function (n) { }; function onEofChunk(stream, state) { + debug('onEofChunk'); if (state.ended) return; if (state.decoder) { @@ -503,6 +520,7 @@ function onEofChunk(stream, state) { function emitReadable(stream) { var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); state.needReadable = false; if (!state.emittedReadable) { @@ -518,6 +536,7 @@ function emitReadable_(stream) { if (!state.destroyed && (state.length || state.ended)) { stream.emit('readable'); + state.emittedReadable = false; } // The stream needs another readable event if // 1. It is not flowing, as the flow mechanism will take // care of it. @@ -583,7 +602,7 @@ function maybeReadMore_(stream, state) { Readable.prototype._read = function (n) { - this.emit('error', new ERR_METHOD_NOT_IMPLEMENTED('_read()')); + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); }; Readable.prototype.pipe = function (dest, pipeOpts) { @@ -682,7 +701,7 @@ Readable.prototype.pipe = function (dest, pipeOpts) { debug('onerror', er); unpipe(); dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); } // Make sure our error handler is attached before userland ones. @@ -986,8 +1005,6 @@ Readable.prototype.wrap = function (stream) { if (typeof Symbol === 'function') { Readable.prototype[Symbol.asyncIterator] = function () { - emitExperimentalWarning('Readable[Symbol.asyncIterator]'); - if (createReadableStreamAsyncIterator === undefined) { createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); } @@ -1075,9 +1092,29 @@ function endReadableNT(state, stream) { state.endEmitted = true; stream.readable = false; stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } } } +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = require('./internal/streams/from'); + } + + return from(Readable, iterable, opts); + }; +} + function indexOf(xs, x) { for (var i = 0, l = xs.length; i < l; i++) { if (xs[i] === x) return i; diff --git a/deps/npm/node_modules/readable-stream/lib/_stream_writable.js b/deps/npm/node_modules/readable-stream/lib/_stream_writable.js index b35447aedc3a95..a2634d7c24fd5e 100644 --- a/deps/npm/node_modules/readable-stream/lib/_stream_writable.js +++ b/deps/npm/node_modules/readable-stream/lib/_stream_writable.js @@ -94,6 +94,8 @@ var _require$codes = require('../errors').codes, ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; +var errorOrDestroy = destroyImpl.errorOrDestroy; + require('inherits')(Writable, Stream); function nop() {} @@ -173,7 +175,9 @@ function WritableState(options, stream, isDuplex) { this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. - this.emitClose = options.emitClose !== false; // count buffered requests + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always // one allocated and free to use, and we maintain at most two @@ -250,13 +254,13 @@ function Writable(options) { Writable.prototype.pipe = function () { - this.emit('error', new ERR_STREAM_CANNOT_PIPE()); + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); }; function writeAfterEnd(stream, cb) { var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); + errorOrDestroy(stream, er); process.nextTick(cb, er); } // Checks that a user-supplied chunk is valid, especially for the particular // mode the stream is in. Currently this means that `null` is never accepted @@ -273,7 +277,7 @@ function validChunk(stream, state, chunk, cb) { } if (er) { - stream.emit('error', er); + errorOrDestroy(stream, er); process.nextTick(cb, er); return false; } @@ -417,13 +421,13 @@ function onwriteError(stream, state, sync, er, cb) { process.nextTick(finishMaybe, stream, state); stream._writableState.errorEmitted = true; - stream.emit('error', er); + errorOrDestroy(stream, er); } else { // the caller expect this to happen before if // it is async cb(er); stream._writableState.errorEmitted = true; - stream.emit('error', er); // this can emit finish, but finish must + errorOrDestroy(stream, er); // this can emit finish, but finish must // always follow error finishMaybe(stream, state); @@ -587,7 +591,7 @@ function callFinal(stream, state) { state.pendingcb--; if (err) { - stream.emit('error', err); + errorOrDestroy(stream, err); } state.prefinished = true; @@ -618,6 +622,16 @@ function finishMaybe(stream, state) { if (state.pendingcb === 0) { state.finished = true; stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } } } diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/buffer_list.js index ebaf5c72aa7a61..cdea425f19dd96 100644 --- a/deps/npm/node_modules/readable-stream/lib/internal/streams/buffer_list.js +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/buffer_list.js @@ -1,9 +1,17 @@ 'use strict'; -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + var _require = require('buffer'), Buffer = _require.Buffer; @@ -20,170 +28,183 @@ module.exports = /*#__PURE__*/ function () { function BufferList() { + _classCallCheck(this, BufferList); + this.head = null; this.tail = null; this.length = 0; } - var _proto = BufferList.prototype; - - _proto.push = function push(v) { - var entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - }; - - _proto.unshift = function unshift(v) { - var entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - }; - - _proto.shift = function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - }; - - _proto.clear = function clear() { - this.head = this.tail = null; - this.length = 0; - }; - - _proto.join = function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - - while (p = p.next) { - ret += s + p.data; + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; } - - return ret; - }; - - _proto.concat = function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; } - - return ret; - } // Consumes a specified amount of bytes or characters from the buffered data. - ; - - _proto.consume = function consume(n, hasStrings) { - var ret; - - if (n < this.head.data.length) { - // `slice` is the same for buffers and strings. - ret = this.head.data.slice(0, n); - this.head.data = this.head.data.slice(n); - } else if (n === this.head.data.length) { - // First chunk is a perfect match. - ret = this.shift(); - } else { - // Result spans more than one buffer. - ret = hasStrings ? this._getString(n) : this._getBuffer(n); + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } - return ret; - }; - - _proto.first = function first() { - return this.head.data; - } // Consumes a specified amount of characters from the buffered data. - ; - - _proto._getString = function _getString(n) { - var p = this.head; - var c = 1; - var ret = p.data; - n -= ret.length; - - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = str.slice(nb); - } + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } - break; + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); } - ++c; + return ret; } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } - this.length -= c; - return ret; - } // Consumes a specified amount of bytes from the buffered data. - ; - - _proto._getBuffer = function _getBuffer(n) { - var ret = Buffer.allocUnsafe(n); - var p = this.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = buf.slice(nb); + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; } - break; + ++c; } - ++c; + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); } - - this.length -= c; - return ret; - } // Make sure the linked list only shows the minimal necessary information. - ; - - _proto[custom] = function (_, options) { - return inspect(this, _objectSpread({}, options, { - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - })); - }; + }]); return BufferList; }(); \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/destroy.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/destroy.js index 63ae49928dd95b..3268a16f3b6f23 100644 --- a/deps/npm/node_modules/readable-stream/lib/internal/streams/destroy.js +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -9,8 +9,13 @@ function destroy(err, cb) { if (readableDestroyed || writableDestroyed) { if (cb) { cb(err); - } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { - process.nextTick(emitErrorNT, this, err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } } return this; @@ -29,10 +34,13 @@ function destroy(err, cb) { this._destroy(err || null, function (err) { if (!cb && err) { - process.nextTick(emitErrorAndCloseNT, _this, err); - - if (_this._writableState) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); } } else if (cb) { process.nextTick(emitCloseNT, _this); @@ -79,7 +87,19 @@ function emitErrorNT(self, err) { self.emit('error', err); } +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + module.exports = { destroy: destroy, - undestroy: undestroy + undestroy: undestroy, + errorOrDestroy: errorOrDestroy }; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/from-browser.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/from-browser.js new file mode 100644 index 00000000000000..a4ce56f3c90f60 --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/from-browser.js @@ -0,0 +1,3 @@ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/from.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/from.js new file mode 100644 index 00000000000000..6c41284416799c --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/from.js @@ -0,0 +1,64 @@ +'use strict'; + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE; + +function from(Readable, iterable, opts) { + var iterator; + + if (iterable && typeof iterable.next === 'function') { + iterator = iterable; + } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable); + + var readable = new Readable(_objectSpread({ + objectMode: true + }, opts)); // Reading boolean to protect against _read + // being called before last iteration completion. + + var reading = false; + + readable._read = function () { + if (!reading) { + reading = true; + next(); + } + }; + + function next() { + return _next2.apply(this, arguments); + } + + function _next2() { + _next2 = _asyncToGenerator(function* () { + try { + var _ref = yield iterator.next(), + value = _ref.value, + done = _ref.done; + + if (done) { + readable.push(null); + } else if (readable.push((yield value))) { + next(); + } else { + reading = false; + } + } catch (err) { + readable.destroy(err); + } + }); + return _next2.apply(this, arguments); + } + + return readable; +} + +module.exports = from; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/package.json b/deps/npm/node_modules/readable-stream/package.json index 67c7e602f26275..9c29e095cbd6be 100644 --- a/deps/npm/node_modules/readable-stream/package.json +++ b/deps/npm/node_modules/readable-stream/package.json @@ -1,19 +1,19 @@ { - "_from": "readable-stream@3.4.0", - "_id": "readable-stream@3.4.0", + "_from": "readable-stream@3.6.0", + "_id": "readable-stream@3.6.0", "_inBundle": false, - "_integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "_integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "_location": "/readable-stream", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "readable-stream@3.4.0", + "raw": "readable-stream@3.6.0", "name": "readable-stream", "escapedName": "readable-stream", - "rawSpec": "3.4.0", + "rawSpec": "3.6.0", "saveSpec": null, - "fetchSpec": "3.4.0" + "fetchSpec": "3.6.0" }, "_requiredBy": [ "#USER", @@ -21,15 +21,16 @@ "/bl", "/tar-stream" ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "_shasum": "a51c26754658e0a3c21dbf59163bd45ba6f447fc", - "_spec": "readable-stream@3.4.0", - "_where": "/Users/isaacs/dev/npm/cli", + "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "_shasum": "337bbda3adc0706bd3e024426a286d4b4b2c9198", + "_spec": "readable-stream@3.6.0", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli", "browser": { "util": false, "worker_threads": false, "./errors": "./errors-browser.js", "./readable.js": "./readable-browser.js", + "./lib/internal/streams/from.js": "./lib/internal/streams/from-browser.js", "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js" }, "bugs": { @@ -52,6 +53,7 @@ "assert": "^1.4.0", "bl": "^2.0.0", "deep-strict-equal": "^0.2.0", + "events.once": "^2.0.2", "glob": "^7.1.2", "gunzip-maybe": "^1.4.1", "hyperquest": "^2.1.3", @@ -94,5 +96,5 @@ "test-browsers": "airtap --sauce-connect --loopback airtap.local -- test/browser.js", "update-browser-errors": "babel -o errors-browser.js errors.js" }, - "version": "3.4.0" + "version": "3.6.0" } diff --git a/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/LICENSE b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/LICENSE new file mode 100644 index 00000000000000..0c068ceecbd48f --- /dev/null +++ b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/README.md b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/README.md new file mode 100644 index 00000000000000..356e3519302cfa --- /dev/null +++ b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/README.md @@ -0,0 +1,586 @@ +# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg +[travis-url]: https://travis-ci.org/feross/safe-buffer +[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg +[npm-url]: https://npmjs.org/package/safe-buffer +[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg +[downloads-url]: https://npmjs.org/package/safe-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +#### Safer Node.js Buffer API + +**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, +`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** + +**Uses the built-in implementation when available.** + +## install + +``` +npm install safe-buffer +``` + +[Get supported safe-buffer with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-safe-buffer?utm_source=npm-safe-buffer&utm_medium=referral&utm_campaign=readme) + +## usage + +The goal of this package is to provide a safe replacement for the node.js `Buffer`. + +It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to +the top of your node.js modules: + +```js +var Buffer = require('safe-buffer').Buffer + +// Existing buffer code will continue to work without issues: + +new Buffer('hey', 'utf8') +new Buffer([1, 2, 3], 'utf8') +new Buffer(obj) +new Buffer(16) // create an uninitialized buffer (potentially unsafe) + +// But you can use these new explicit APIs to make clear what you want: + +Buffer.from('hey', 'utf8') // convert from many types to a Buffer +Buffer.alloc(16) // create a zero-filled buffer (safe) +Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) +``` + +## api + +### Class Method: Buffer.from(array) + + +* `array` {Array} + +Allocates a new `Buffer` using an `array` of octets. + +```js +const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); + // creates a new Buffer containing ASCII bytes + // ['b','u','f','f','e','r'] +``` + +A `TypeError` will be thrown if `array` is not an `Array`. + +### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) + + +* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or + a `new ArrayBuffer()` +* `byteOffset` {Number} Default: `0` +* `length` {Number} Default: `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a `TypedArray` instance, +the newly created `Buffer` will share the same allocated memory as the +TypedArray. + +```js +const arr = new Uint16Array(2); +arr[0] = 5000; +arr[1] = 4000; + +const buf = Buffer.from(arr.buffer); // shares the memory with arr; + +console.log(buf); + // Prints: + +// changing the TypedArray changes the Buffer also +arr[1] = 6000; + +console.log(buf); + // Prints: +``` + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +```js +const ab = new ArrayBuffer(10); +const buf = Buffer.from(ab, 0, 2); +console.log(buf.length); + // Prints: 2 +``` + +A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. + +### Class Method: Buffer.from(buffer) + + +* `buffer` {Buffer} + +Copies the passed `buffer` data onto a new `Buffer` instance. + +```js +const buf1 = Buffer.from('buffer'); +const buf2 = Buffer.from(buf1); + +buf1[0] = 0x61; +console.log(buf1.toString()); + // 'auffer' +console.log(buf2.toString()); + // 'buffer' (copy is not changed) +``` + +A `TypeError` will be thrown if `buffer` is not a `Buffer`. + +### Class Method: Buffer.from(str[, encoding]) + + +* `str` {String} String to encode. +* `encoding` {String} Encoding to use, Default: `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `str`. If +provided, the `encoding` parameter identifies the character encoding. +If not provided, `encoding` defaults to `'utf8'`. + +```js +const buf1 = Buffer.from('this is a tΓ©st'); +console.log(buf1.toString()); + // prints: this is a tΓ©st +console.log(buf1.toString('ascii')); + // prints: this is a tC)st + +const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); +console.log(buf2.toString()); + // prints: this is a tΓ©st +``` + +A `TypeError` will be thrown if `str` is not a string. + +### Class Method: Buffer.alloc(size[, fill[, encoding]]) + + +* `size` {Number} +* `fill` {Value} Default: `undefined` +* `encoding` {String} Default: `utf8` + +Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the +`Buffer` will be *zero-filled*. + +```js +const buf = Buffer.alloc(5); +console.log(buf); + // +``` + +The `size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +If `fill` is specified, the allocated `Buffer` will be initialized by calling +`buf.fill(fill)`. See [`buf.fill()`][] for more information. + +```js +const buf = Buffer.alloc(5, 'a'); +console.log(buf); + // +``` + +If both `fill` and `encoding` are specified, the allocated `Buffer` will be +initialized by calling `buf.fill(fill, encoding)`. For example: + +```js +const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); +console.log(buf); + // +``` + +Calling `Buffer.alloc(size)` can be significantly slower than the alternative +`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance +contents will *never contain sensitive data*. + +A `TypeError` will be thrown if `size` is not a number. + +### Class Method: Buffer.allocUnsafe(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must +be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit +architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is +thrown. A zero-length Buffer will be created if a `size` less than or equal to +0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +```js +const buf = Buffer.allocUnsafe(5); +console.log(buf); + // + // (octets will be different, every time) +buf.fill(0); +console.log(buf); + // +``` + +A `TypeError` will be thrown if `size` is not a number. + +Note that the `Buffer` module pre-allocates an internal `Buffer` instance of +size `Buffer.poolSize` that is used as a pool for the fast allocation of new +`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated +`new Buffer(size)` constructor) only when `size` is less than or equal to +`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default +value of `Buffer.poolSize` is `8192` but can be modified. + +Use of this pre-allocated internal memory pool is a key difference between +calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. +Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer +pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal +Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The +difference is subtle but can be important when an application requires the +additional performance that `Buffer.allocUnsafe(size)` provides. + +### Class Method: Buffer.allocUnsafeSlow(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The +`size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, +allocations under 4KB are, by default, sliced from a single pre-allocated +`Buffer`. This allows applications to avoid the garbage collection overhead of +creating many individually allocated Buffers. This approach improves both +performance and memory usage by eliminating the need to track and cleanup as +many `Persistent` objects. + +However, in the case where a developer may need to retain a small chunk of +memory from a pool for an indeterminate amount of time, it may be appropriate +to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then +copy out the relevant bits. + +```js +// need to keep around a few small chunks of memory +const store = []; + +socket.on('readable', () => { + const data = socket.read(); + // allocate for retained data + const sb = Buffer.allocUnsafeSlow(10); + // copy the data into the new allocation + data.copy(sb, 0, 0, 10); + store.push(sb); +}); +``` + +Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* +a developer has observed undue memory retention in their applications. + +A `TypeError` will be thrown if `size` is not a number. + +### All the Rest + +The rest of the `Buffer` API is exactly the same as in node.js. +[See the docs](https://nodejs.org/api/buffer.html). + + +## Related links + +- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) +- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) + +## Why is `Buffer` unsafe? + +Today, the node.js `Buffer` constructor is overloaded to handle many different argument +types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), +`ArrayBuffer`, and also `Number`. + +The API is optimized for convenience: you can throw any type at it, and it will try to do +what you want. + +Because the Buffer constructor is so powerful, you often see code like this: + +```js +// Convert UTF-8 strings to hex +function toHex (str) { + return new Buffer(str).toString('hex') +} +``` + +***But what happens if `toHex` is called with a `Number` argument?*** + +### Remote Memory Disclosure + +If an attacker can make your program call the `Buffer` constructor with a `Number` +argument, then they can make it allocate uninitialized memory from the node.js process. +This could potentially disclose TLS private keys, user data, or database passwords. + +When the `Buffer` constructor is passed a `Number` argument, it returns an +**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like +this, you **MUST** overwrite the contents before returning it to the user. + +From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): + +> `new Buffer(size)` +> +> - `size` Number +> +> The underlying memory for `Buffer` instances created in this way is not initialized. +> **The contents of a newly created `Buffer` are unknown and could contain sensitive +> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. + +(Emphasis our own.) + +Whenever the programmer intended to create an uninitialized `Buffer` you often see code +like this: + +```js +var buf = new Buffer(16) + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### Would this ever be a problem in real code? + +Yes. It's surprisingly common to forget to check the type of your variables in a +dynamically-typed language like JavaScript. + +Usually the consequences of assuming the wrong type is that your program crashes with an +uncaught exception. But the failure mode for forgetting to check the type of arguments to +the `Buffer` constructor is more catastrophic. + +Here's an example of a vulnerable service that takes a JSON payload and converts it to +hex: + +```js +// Take a JSON payload {str: "some string"} and convert it to hex +var server = http.createServer(function (req, res) { + var data = '' + req.setEncoding('utf8') + req.on('data', function (chunk) { + data += chunk + }) + req.on('end', function () { + var body = JSON.parse(data) + res.end(new Buffer(body.str).toString('hex')) + }) +}) + +server.listen(8080) +``` + +In this example, an http client just has to send: + +```json +{ + "str": 1000 +} +``` + +and it will get back 1,000 bytes of uninitialized memory from the server. + +This is a very serious bug. It's similar in severity to the +[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process +memory by remote attackers. + + +### Which real-world packages were vulnerable? + +#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) + +[Mathias Buus](https://github.com/mafintosh) and I +([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, +[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow +anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get +them to reveal 20 bytes at a time of uninitialized memory from the node.js process. + +Here's +[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) +that fixed it. We released a new fixed version, created a +[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all +vulnerable versions on npm so users will get a warning to upgrade to a newer version. + +#### [`ws`](https://www.npmjs.com/package/ws) + +That got us wondering if there were other vulnerable packages. Sure enough, within a short +period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the +most popular WebSocket implementation in node.js. + +If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as +expected, then uninitialized server memory would be disclosed to the remote peer. + +These were the vulnerable methods: + +```js +socket.send(number) +socket.ping(number) +socket.pong(number) +``` + +Here's a vulnerable socket server with some echo functionality: + +```js +server.on('connection', function (socket) { + socket.on('message', function (message) { + message = JSON.parse(message) + if (message.type === 'echo') { + socket.send(message.data) // send back the user's message + } + }) +}) +``` + +`socket.send(number)` called on the server, will disclose server memory. + +Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue +was fixed, with a more detailed explanation. Props to +[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the +[Node Security Project disclosure](https://nodesecurity.io/advisories/67). + + +### What's the solution? + +It's important that node.js offers a fast way to get memory otherwise performance-critical +applications would needlessly get a lot slower. + +But we need a better way to *signal our intent* as programmers. **When we want +uninitialized memory, we should request it explicitly.** + +Sensitive functionality should not be packed into a developer-friendly API that loosely +accepts many different types. This type of API encourages the lazy practice of passing +variables in without checking the type very carefully. + +#### A new API: `Buffer.allocUnsafe(number)` + +The functionality of creating buffers with uninitialized memory should be part of another +API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that +frequently gets user input of all sorts of different types passed into it. + +```js +var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### How do we fix node.js core? + +We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as +`semver-major`) which defends against one case: + +```js +var str = 16 +new Buffer(str, 'utf8') +``` + +In this situation, it's implied that the programmer intended the first argument to be a +string, since they passed an encoding as a second argument. Today, node.js will allocate +uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not +what the programmer intended. + +But this is only a partial solution, since if the programmer does `new Buffer(variable)` +(without an `encoding` parameter) there's no way to know what they intended. If `variable` +is sometimes a number, then uninitialized memory will sometimes be returned. + +### What's the real long-term fix? + +We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when +we need uninitialized memory. But that would break 1000s of packages. + +~~We believe the best solution is to:~~ + +~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ + +~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ + +#### Update + +We now support adding three new APIs: + +- `Buffer.from(value)` - convert from any type to a buffer +- `Buffer.alloc(size)` - create a zero-filled buffer +- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size + +This solves the core problem that affected `ws` and `bittorrent-dht` which is +`Buffer(variable)` getting tricked into taking a number argument. + +This way, existing code continues working and the impact on the npm ecosystem will be +minimal. Over time, npm maintainers can migrate performance-critical code to use +`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. + + +### Conclusion + +We think there's a serious design issue with the `Buffer` API as it exists today. It +promotes insecure software by putting high-risk functionality into a convenient API +with friendly "developer ergonomics". + +This wasn't merely a theoretical exercise because we found the issue in some of the +most popular npm packages. + +Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of +`buffer`. + +```js +var Buffer = require('safe-buffer').Buffer +``` + +Eventually, we hope that node.js core can switch to this new, safer behavior. We believe +the impact on the ecosystem would be minimal since it's not a breaking change. +Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while +older, insecure packages would magically become safe from this attack vector. + + +## links + +- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) +- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) +- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) + + +## credit + +The original issues in `bittorrent-dht` +([disclosure](https://nodesecurity.io/advisories/68)) and +`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by +[Mathias Buus](https://github.com/mafintosh) and +[Feross Aboukhadijeh](http://feross.org/). + +Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues +and for his work running the [Node Security Project](https://nodesecurity.io/). + +Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and +auditing the code. + + +## license + +MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts new file mode 100644 index 00000000000000..e9fed809a5ab51 --- /dev/null +++ b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts @@ -0,0 +1,187 @@ +declare module "safe-buffer" { + export class Buffer { + length: number + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + */ + constructor (str: string, encoding?: string); + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + */ + constructor (size: number); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: Uint8Array); + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}. + * + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + */ + constructor (arrayBuffer: ArrayBuffer); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: any[]); + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + */ + constructor (buffer: Buffer); + prototype: Buffer; + /** + * Allocates a new Buffer using an {array} of octets. + * + * @param array + */ + static from(array: any[]): Buffer; + /** + * When passed a reference to the .buffer property of a TypedArray instance, + * the newly created Buffer will share the same allocated memory as the TypedArray. + * The optional {byteOffset} and {length} arguments specify a memory range + * within the {arrayBuffer} that will be shared by the Buffer. + * + * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() + * @param byteOffset + * @param length + */ + static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + /** + * Copies the passed {buffer} data onto a new Buffer instance. + * + * @param buffer + */ + static from(buffer: Buffer): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + * + * @param str + */ + static from(str: string, encoding?: string): Buffer; + /** + * Returns true if {obj} is a Buffer + * + * @param obj object to test. + */ + static isBuffer(obj: any): obj is Buffer; + /** + * Returns true if {encoding} is a valid encoding argument. + * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' + * + * @param encoding string to test. + */ + static isEncoding(encoding: string): boolean; + /** + * Gives the actual byte length of a string. encoding defaults to 'utf8'. + * This is not the same as String.prototype.length since that returns the number of characters in a string. + * + * @param string string to test. + * @param encoding encoding used to evaluate (defaults to 'utf8') + */ + static byteLength(string: string, encoding?: string): number; + /** + * Returns a buffer which is the result of concatenating all the buffers in the list together. + * + * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. + * If the list has exactly one item, then the first item of the list is returned. + * If the list has more than one item, then a new Buffer is created. + * + * @param list An array of Buffer objects to concatenate + * @param totalLength Total length of the buffers when concatenated. + * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. + */ + static concat(list: Buffer[], totalLength?: number): Buffer; + /** + * The same as buf1.compare(buf2). + */ + static compare(buf1: Buffer, buf2: Buffer): number; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @param fill if specified, buffer will be initialized by calling buf.fill(fill). + * If parameter is omitted, buffer will be filled with zeros. + * @param encoding encoding used for call to buf.fill while initalizing + */ + static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + /** + * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafe(size: number): Buffer; + /** + * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafeSlow(size: number): Buffer; + } +} \ No newline at end of file diff --git a/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/index.js b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/index.js new file mode 100644 index 00000000000000..054c8d30ddafb4 --- /dev/null +++ b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/index.js @@ -0,0 +1,64 @@ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} diff --git a/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/package.json b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/package.json new file mode 100644 index 00000000000000..e7f13cb4b47ac4 --- /dev/null +++ b/deps/npm/node_modules/string_decoder/node_modules/safe-buffer/package.json @@ -0,0 +1,62 @@ +{ + "_from": "safe-buffer@~5.2.0", + "_id": "safe-buffer@5.2.0", + "_inBundle": false, + "_integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "_location": "/string_decoder/safe-buffer", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "safe-buffer@~5.2.0", + "name": "safe-buffer", + "escapedName": "safe-buffer", + "rawSpec": "~5.2.0", + "saveSpec": null, + "fetchSpec": "~5.2.0" + }, + "_requiredBy": [ + "/string_decoder" + ], + "_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "_shasum": "b74daec49b1148f88c64b68d49b1e815c1f2f519", + "_spec": "safe-buffer@~5.2.0", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli/node_modules/string_decoder", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "http://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/safe-buffer/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Safer Node.js Buffer API", + "devDependencies": { + "standard": "*", + "tape": "^4.0.0" + }, + "homepage": "https://github.com/feross/safe-buffer", + "keywords": [ + "buffer", + "buffer allocate", + "node security", + "safe", + "safe-buffer", + "security", + "uninitialized" + ], + "license": "MIT", + "main": "index.js", + "name": "safe-buffer", + "repository": { + "type": "git", + "url": "git://github.com/feross/safe-buffer.git" + }, + "scripts": { + "test": "standard && tape test/*.js" + }, + "types": "index.d.ts", + "version": "5.2.0" +} diff --git a/deps/npm/node_modules/string_decoder/package.json b/deps/npm/node_modules/string_decoder/package.json index 0b704d99a1bf50..cc843b66014507 100644 --- a/deps/npm/node_modules/string_decoder/package.json +++ b/deps/npm/node_modules/string_decoder/package.json @@ -1,8 +1,8 @@ { "_from": "string_decoder@^1.1.1", - "_id": "string_decoder@1.2.0", + "_id": "string_decoder@1.3.0", "_inBundle": false, - "_integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "_integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "_location": "/string_decoder", "_phantomChildren": {}, "_requested": { @@ -18,16 +18,16 @@ "_requiredBy": [ "/readable-stream" ], - "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "_shasum": "fe86e738b19544afe70469243b2a1ee9240eae8d", + "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "_shasum": "42f114594a46cf1a8e30b0a84f56c78c3edac21e", "_spec": "string_decoder@^1.1.1", - "_where": "/Users/aeschright/code/cli/node_modules/readable-stream", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli/node_modules/readable-stream", "bugs": { "url": "https://github.com/nodejs/string_decoder/issues" }, "bundleDependencies": false, "dependencies": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" }, "deprecated": false, "description": "The string_decoder module from Node core", @@ -58,5 +58,5 @@ "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js", "test": "tap test/parallel/*.js && node test/verify-dependencies" }, - "version": "1.2.0" + "version": "1.3.0" } diff --git a/deps/npm/package.json b/deps/npm/package.json index 3c37420f4c5ec2..8852d3efad18f1 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "6.13.7", + "version": "6.14.1", "name": "npm", "description": "a package manager for JavaScript", "keywords": [ @@ -44,7 +44,7 @@ "byte-size": "^5.0.1", "cacache": "^12.0.3", "call-limit": "^1.1.1", - "chownr": "^1.1.3", + "chownr": "^1.1.4", "ci-info": "^2.0.0", "cli-columns": "^3.1.2", "cli-table3": "^0.5.1", @@ -63,7 +63,7 @@ "glob": "^7.1.4", "graceful-fs": "^4.2.3", "has-unicode": "~2.0.1", - "hosted-git-info": "^2.8.5", + "hosted-git-info": "^2.8.7", "iferr": "^1.0.2", "infer-owner": "^1.0.4", "inflight": "~1.0.6", @@ -101,10 +101,10 @@ "npm-install-checks": "^3.0.2", "npm-lifecycle": "^3.1.4", "npm-package-arg": "^6.1.1", - "npm-packlist": "^1.4.7", + "npm-packlist": "^1.4.8", "npm-pick-manifest": "^3.0.2", "npm-profile": "^4.0.2", - "npm-registry-fetch": "^4.0.2", + "npm-registry-fetch": "^4.0.3", "npm-user-validate": "~1.0.0", "npmlog": "~4.1.2", "once": "~1.4.0", @@ -121,7 +121,7 @@ "read-installed": "~4.0.3", "read-package-json": "^2.1.1", "read-package-tree": "^5.3.1", - "readable-stream": "^3.4.0", + "readable-stream": "^3.6.0", "readdir-scoped-modules": "^1.1.0", "request": "^2.88.0", "retry": "^0.12.0", @@ -307,5 +307,8 @@ "test-tap": "npm run tap -- \"test/tap/*.js\" \"test/network/*.js\"", "test-node": "tap --timeout 240 \"test/tap/*.js\" \"test/network/*.js\"" }, - "license": "Artistic-2.0" + "license": "Artistic-2.0", + "engines": { + "node": "6 >=6.2.0 || 8 || >=9.3.0" + } } diff --git a/deps/npm/scripts/update-dist-tags.js b/deps/npm/scripts/update-dist-tags.js new file mode 100644 index 00000000000000..f28bfd0b917394 --- /dev/null +++ b/deps/npm/scripts/update-dist-tags.js @@ -0,0 +1,123 @@ +'use strict' + +/** + * Usage: + * + * node scripts/update-dist-tags.js --otp + * node scripts/update-dist-tags.js --otp= + * node scripts/update-dist-tags.js --otp + */ + +const usage = ` +Usage: + +node scripts/update-dist-tags.js --otp +node scripts/update-dist-tags.js --otp= +node scripts/update-dist-tags.js --otp +` + +const { execSync } = require('child_process') +const semver = require('semver') +const path = require('path') + +const getMajorVersion = (input) => semver.parse(input).major +const getMinorVersion = (input) => semver.parse(input).minor + +// INFO: String templates to generate the tags to update +const LATEST_TAG = (strings, major) => `latest-${major}` +const NEXT_TAG = (strings, major) => `next-${major}` +const TAG_LIST = ['lts', 'next', 'latest'] +const REMOVE_TAG = (strings, major, minor) => `v${major}.${minor}-next` + +// INFO: Finds `--otp` and subsequently otp value (if present) +const PARSE_OTP_FLAG = new RegExp(/(--otp)(=|\s)?([0-9]{6})?/, 'gm') +// INFO: Used to validate otp value (if not found by other regexp) +const PARSE_OTP_VALUE = new RegExp(/^[0-9]{6}$/, 'g') + +const args = process.argv.slice(2) +const versionPath = path.resolve(__dirname, '..', 'package.json') +const { version } = require(versionPath) + +// Run Script +main() + +function main () { + const otp = parseOTP(args) + if (version) { + const major = getMajorVersion(version) + const minor = getMinorVersion(version) + const latestTag = LATEST_TAG`${major}` + const nextTag = NEXT_TAG`${major}` + const removeTag = REMOVE_TAG`${major}${minor}` + const updateList = [].concat(TAG_LIST, latestTag, nextTag) + + updateList.forEach((tag) => { + setDistTag(tag, version, otp) + }) + removeDistTag(removeTag, version, otp) + } else { + console.error('Invalid semver.') + process.exit(1) + } +} + +function parseOTP (args) { + // NOTE: making assumption first _thing_ is a string with "--otp" in it + const parsedArgs = PARSE_OTP_FLAG.exec(args[0]) + if (!parsedArgs) { + console.error('Invalid arguments supplied. Must supply --otp flag.') + console.error(usage) + process.exit(1) + } + // INFO: From the regexp, third group is the OTP code + const otp = parsedArgs[3] + switch (args.length) { + case 0: { + console.error('No arguments supplied.') + console.error(usage) + process.exit(1) + } + case 1: { + // --otp=123456 or --otp123456 + if (otp) { + return otp + } + console.error('Invalid otp value supplied. [CASE 1]') + process.exit(1) + } + case 2: { + // --otp 123456 + // INFO: validating the second argument is an otp code + const isValidOtp = PARSE_OTP_VALUE.test(args[1]) + if (isValidOtp) { + return args[1] + } + console.error('Invalid otp value supplied. [CASE 2]') + process.exit(1) + } + default: { + console.error('Invalid arguments supplied.') + process.exit(1) + } + } +} + +function setDistTag (tag, version, otp) { + try { + const result = execSync(`npm dist-tag set npm@${version} ${tag} --otp=${otp}`, { encoding: 'utf-8' }) + console.log('Result:', result) + } catch (err) { + console.error('Bad dist-tag command.') + process.exit(1) + } +} + +function removeDistTag (tag, version, otp) { + try { + const result = execSync(`npm dist-tag rm npm ${tag} --otp=${otp}`, { encoding: 'utf-8' }) + console.log('Result:', result) + } catch (err) { + console.error('Bad dist-tag command.') + process.exit(1) + } +} diff --git a/deps/npm/tap-snapshots/test-tap-fund.js-TAP.test.js b/deps/npm/tap-snapshots/test-tap-fund.js-TAP.test.js index eb3183a27d7b41..963c59f3e12861 100644 --- a/deps/npm/tap-snapshots/test-tap-fund.js-TAP.test.js +++ b/deps/npm/tap-snapshots/test-tap-fund.js-TAP.test.js @@ -7,13 +7,12 @@ 'use strict' exports[`test/tap/fund.js TAP fund containing multi-level nested deps with no funding > should omit dependencies with no funding declared 1`] = ` nested-no-funding-packages@1.0.0 -+-- lorem@1.0.0 -| \`-- url: https://example.com/lorem -\`-- bar@1.0.0 - +-- type: individual - +-- url: http://example.com/donate ++-- https://example.com/lorem +| \`-- lorem@1.0.0 ++-- http://example.com/donate +| \`-- bar@1.0.0 +\`-- https://example.com/sponsor \`-- sub-bar@1.0.0 - \`-- url: https://example.com/sponsor ` @@ -24,20 +23,34 @@ exports[`test/tap/fund.js TAP fund does not support global > should throw EFUNDG exports[`test/tap/fund.js TAP fund does not support global > should write error msgs to stderr 1`] = ` npm ERR! code EFUNDGLOBAL -npm ERR! \`npm fund\` does not support globals +npm ERR! \`npm fund\` does not support global packages ` exports[`test/tap/fund.js TAP fund does not support global, using --json option > should write error msgs to stderr 1`] = ` npm ERR! code EFUNDGLOBAL -npm ERR! \`npm fund\` does not support globals +npm ERR! \`npm fund\` does not support global packages ` exports[`test/tap/fund.js TAP fund in which same maintainer owns all its deps > should print stack packages together 1`] = ` -maintainer-owns-all-deps@1.0.0, dep-bar@1.0.0, dep-sub-foo@1.0.0, dep-foo@1.0.0 -+-- type: individual -\`-- url: http://example.com/donate +maintainer-owns-all-deps@1.0.0 +\`-- http://example.com/donate + \`-- dep-bar@1.0.0, dep-foo@1.0.0, dep-sub-foo@1.0.0 +` + +exports[`test/tap/fund.js TAP fund using nested packages with multiple sources > should prompt with all available URLs 1`] = ` +1: Funding available at the following URL: https://one.example.com +2: Funding available at the following URL: https://two.example.com +Run \`npm fund [<@scope>/] --which=1\`, for example, to open the first funding URL listed in that package + +` + +exports[`test/tap/fund.js TAP fund using nested packages with multiple sources, with a source number > should open the numbered URL 1`] = ` +Funding available at the following URL: + +https://one.example.com + ` exports[`test/tap/fund.js TAP fund using package argument with no browser > should open funding url 1`] = ` diff --git a/deps/npm/test/fixtures/config/userconfig-with-gc b/deps/npm/test/fixtures/config/userconfig-with-gc index a3a837eb78dd47..cf774bb883d966 100644 --- a/deps/npm/test/fixtures/config/userconfig-with-gc +++ b/deps/npm/test/fixtures/config/userconfig-with-gc @@ -1,4 +1,4 @@ -globalconfig = /Users/mperrotte/npminc/cli/test/fixtures/config/globalconfig +globalconfig = /Users/isaacs/dev/npm/cli/test/fixtures/config/globalconfig email = i@izs.me env-thing = ${random_env_var} init.author.name = Isaac Z. Schlueter diff --git a/deps/npm/test/tap/access.js b/deps/npm/test/tap/access.js index 4183c46b538c0e..f537db2586409a 100644 --- a/deps/npm/test/tap/access.js +++ b/deps/npm/test/tap/access.js @@ -217,6 +217,33 @@ test('npm access grant read-write', function (t) { ) }) +test('npm access grant read-write on unscoped package', function (t) { + server.filteringRequestBody((body) => { + const data = JSON.parse(body) + t.deepEqual(data, { + permissions: 'read-write', + package: 'another' + }, 'got the right body') + return true + }) + server.put('/-/team/myorg/myteam/package', true).reply(201) + common.npm( + [ + 'access', + 'grant', 'read-write', + 'myorg:myteam', + 'another', + '--registry', common.registry + ], + { cwd: pkg }, + function (er, code, stdout, stderr) { + t.ifError(er, 'npm access grant') + t.equal(code, 0, 'exited with Error') + t.end() + } + ) +}) + test('npm access grant others', function (t) { common.npm( [ diff --git a/deps/npm/test/tap/fund.js b/deps/npm/test/tap/fund.js index 97b414bf6e0173..48d903f9897f6f 100644 --- a/deps/npm/test/tap/fund.js +++ b/deps/npm/test/tap/fund.js @@ -14,6 +14,7 @@ const base = common.pkg const noFunding = path.join(base, 'no-funding-package') const maintainerOwnsAllDeps = path.join(base, 'maintainer-owns-all-deps') const nestedNoFundingPackages = path.join(base, 'nested-no-funding-packages') +const nestedMultipleFundingPackages = path.join(base, 'nested-multiple-funding-packages') const fundingStringShorthand = path.join(base, 'funding-string-shorthand') function getFixturePackage ({ name, version, dependencies, funding }, extras) { @@ -113,6 +114,37 @@ const fixture = new Tacks(Dir({ } }) }) + }), + 'nested-multiple-funding-packages': getFixturePackage({ + name: 'nested-multiple-funding-packages', + funding: [ + 'https://one.example.com', + 'https://two.example.com' + ], + dependencies: { + foo: '*' + }, + devDependencies: { + bar: '*' + } + }, { + node_modules: Dir({ + foo: getFixturePackage({ + name: 'foo', + funding: [ + 'http://example.com', + { url: 'http://sponsors.example.com/me' }, + 'http://collective.example.com' + ] + }), + bar: getFixturePackage({ + name: 'bar', + funding: [ + 'http://collective.example.com', + { url: 'http://sponsors.example.com/you' } + ] + }) + }) }) })) @@ -224,6 +256,54 @@ testFundCmd({ } }) +testFundCmd({ + title: 'fund containing multi-level nested deps with multiple funding sources, using --json option', + assertionMsg: 'should omit dependencies with no funding declared', + args: ['--json'], + opts: { cwd: nestedMultipleFundingPackages }, + assertion: jsonTest, + expected: { + length: 2, + name: 'nested-multiple-funding-packages', + version: '1.0.0', + funding: [ + { + url: 'https://one.example.com' + }, + { + url: 'https://two.example.com' + } + ], + dependencies: { + bar: { + version: '1.0.0', + funding: [ + { + url: 'http://collective.example.com' + }, + { + url: 'http://sponsors.example.com/you' + } + ] + }, + foo: { + version: '1.0.0', + funding: [ + { + url: 'http://example.com' + }, + { + url: 'http://sponsors.example.com/me' + }, + { + url: 'http://collective.example.com' + } + ] + } + } + } +}) + testFundCmd({ title: 'fund does not support global', assertionMsg: 'should throw EFUNDGLOBAL error', @@ -248,7 +328,7 @@ testFundCmd({ expected: { error: { code: 'EFUNDGLOBAL', - summary: '`npm fund` does not support globals', + summary: '`npm fund` does not support global packages', detail: '' } } @@ -268,6 +348,20 @@ testFundCmd({ opts: { cwd: fundingStringShorthand } }) +testFundCmd({ + title: 'fund using nested packages with multiple sources', + assertionMsg: 'should prompt with all available URLs', + args: ['.'], + opts: { cwd: nestedMultipleFundingPackages } +}) + +testFundCmd({ + title: 'fund using nested packages with multiple sources, with a source number', + assertionMsg: 'should open the numbered URL', + args: ['.', '--which=1', '--no-browser'], + opts: { cwd: nestedMultipleFundingPackages } +}) + testFundCmd({ title: 'fund using package argument with no browser, using --json option', assertionMsg: 'should open funding url', diff --git a/deps/npm/test/tap/unsupported.js b/deps/npm/test/tap/unsupported.js index deae8d3c034c19..2ebbd2d6542e2b 100644 --- a/deps/npm/test/tap/unsupported.js +++ b/deps/npm/test/tap/unsupported.js @@ -30,7 +30,8 @@ var versions = [ ['v9.3.0', false, false], ['v10.0.0-0', false, false], ['v11.0.0-0', false, false], - ['v12.0.0-0', false, false] + ['v12.0.0-0', false, false], + ['v13.0.0-0', false, false] ] test('versions', function (t) { diff --git a/deps/npm/test/tap/utils.funding.js b/deps/npm/test/tap/utils.funding.js index 709762eacb7bb2..4276f3e43a5cfe 100644 --- a/deps/npm/test/tap/utils.funding.js +++ b/deps/npm/test/tap/utils.funding.js @@ -612,3 +612,46 @@ test('retrieve funding info string shorthand', (t) => { ) t.end() }) + +test('retrieve funding info from an array', (t) => { + t.deepEqual( + retrieveFunding([ + 'http://example.com', + { + url: 'http://two.example.com' + }, + 'http://three.example.com', + { + url: 'http://three.example.com', + type: 'dos' + }, + { + url: 'http://three.example.com', + type: 'third copy!', + extra: 'extra metadata!' + } + ]), + [ + { + url: 'http://example.com' + }, + { + url: 'http://two.example.com' + }, + { + url: 'http://three.example.com' + }, + { + url: 'http://three.example.com', + type: 'dos' + }, + { + url: 'http://three.example.com', + type: 'third copy!', + extra: 'extra metadata!' + } + ], + 'should accept and normalize multiple funding sources' + ) + t.end() +}) From 949a83c639b72f4afe4419f1ead41032a360442d Mon Sep 17 00:00:00 2001 From: Myles Borins Date: Thu, 19 Mar 2020 12:53:27 -0400 Subject: [PATCH 2/7] deps: update npm to 6.14.3 PR-URL: https://github.com/nodejs/node/pull/32368 Refs: https://github.com/nodejs/node/issues/32296 Reviewed-By: Bradley Farias Reviewed-By: Beth Griggs Reviewed-By: James M Snell Reviewed-By: Matteo Collina Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater --- deps/npm/AUTHORS | 3 + deps/npm/CHANGELOG.md | 31 +++ .../docs/content/cli-commands/npm-access.md | 6 +- .../docs/content/cli-commands/npm-adduser.md | 6 +- .../docs/content/cli-commands/npm-audit.md | 2 +- deps/npm/docs/content/cli-commands/npm-bin.md | 6 +- .../npm/docs/content/cli-commands/npm-bugs.md | 8 +- .../docs/content/cli-commands/npm-build.md | 4 +- .../docs/content/cli-commands/npm-bundle.md | 2 +- .../docs/content/cli-commands/npm-cache.md | 8 +- deps/npm/docs/content/cli-commands/npm-ci.md | 4 +- .../docs/content/cli-commands/npm-config.md | 2 +- .../docs/content/cli-commands/npm-dedupe.md | 6 +- .../content/cli-commands/npm-deprecate.md | 2 +- .../docs/content/cli-commands/npm-dist-tag.md | 8 +- .../npm/docs/content/cli-commands/npm-docs.md | 6 +- .../docs/content/cli-commands/npm-doctor.md | 6 +- .../npm/docs/content/cli-commands/npm-edit.md | 6 +- .../docs/content/cli-commands/npm-explore.md | 8 +- .../npm/docs/content/cli-commands/npm-fund.md | 8 +- .../content/cli-commands/npm-help-search.md | 2 +- .../npm/docs/content/cli-commands/npm-help.md | 4 +- .../npm/docs/content/cli-commands/npm-init.md | 2 +- .../cli-commands/npm-install-ci-test.md | 4 +- .../content/cli-commands/npm-install-test.md | 4 +- .../docs/content/cli-commands/npm-install.md | 24 +-- .../npm/docs/content/cli-commands/npm-link.md | 4 +- .../docs/content/cli-commands/npm-logout.md | 6 +- deps/npm/docs/content/cli-commands/npm-ls.md | 12 +- .../docs/content/cli-commands/npm-outdated.md | 4 +- .../docs/content/cli-commands/npm-owner.md | 4 +- .../npm/docs/content/cli-commands/npm-pack.md | 6 +- .../npm/docs/content/cli-commands/npm-ping.md | 2 +- .../docs/content/cli-commands/npm-prefix.md | 8 +- .../docs/content/cli-commands/npm-profile.md | 2 +- .../docs/content/cli-commands/npm-prune.md | 4 +- .../docs/content/cli-commands/npm-publish.md | 4 +- .../docs/content/cli-commands/npm-rebuild.md | 4 +- .../npm/docs/content/cli-commands/npm-repo.md | 4 +- .../docs/content/cli-commands/npm-restart.md | 10 +- .../npm/docs/content/cli-commands/npm-root.md | 6 +- .../content/cli-commands/npm-run-script.md | 10 +- .../docs/content/cli-commands/npm-search.md | 4 +- .../content/cli-commands/npm-shrinkwrap.md | 6 +- .../npm/docs/content/cli-commands/npm-star.md | 6 +- .../docs/content/cli-commands/npm-stars.md | 8 +- .../docs/content/cli-commands/npm-start.md | 10 +- .../npm/docs/content/cli-commands/npm-stop.md | 8 +- .../npm/docs/content/cli-commands/npm-team.md | 4 +- .../npm/docs/content/cli-commands/npm-test.md | 8 +- .../content/cli-commands/npm-uninstall.md | 6 +- .../content/cli-commands/npm-unpublish.md | 34 ++- .../docs/content/cli-commands/npm-update.md | 12 +- .../docs/content/cli-commands/npm-version.md | 4 +- .../npm/docs/content/cli-commands/npm-view.md | 6 +- .../docs/content/cli-commands/npm-whoami.md | 4 +- .../docs/content/configuring-npm/folders.md | 12 +- .../npm/docs/content/configuring-npm/npmrc.md | 2 +- .../content/configuring-npm/package-json.md | 16 +- .../configuring-npm/package-lock-json.md | 4 +- .../content/configuring-npm/package-locks.md | 4 +- .../configuring-npm/shrinkwrap-json.md | 6 +- deps/npm/docs/content/using-npm/config.md | 12 +- deps/npm/docs/content/using-npm/disputes.md | 2 +- deps/npm/docs/content/using-npm/orgs.md | 8 +- deps/npm/docs/content/using-npm/registry.md | 4 +- deps/npm/docs/content/using-npm/removal.md | 4 +- deps/npm/docs/content/using-npm/scope.md | 8 +- deps/npm/docs/content/using-npm/scripts.md | 12 +- .../public/cli-commands/npm-access/index.html | 10 +- .../cli-commands/npm-adduser/index.html | 10 +- .../public/cli-commands/npm-audit/index.html | 6 +- .../public/cli-commands/npm-bin/index.html | 10 +- .../public/cli-commands/npm-bugs/index.html | 12 +- .../public/cli-commands/npm-build/index.html | 8 +- .../public/cli-commands/npm-bundle/index.html | 6 +- .../public/cli-commands/npm-cache/index.html | 12 +- .../public/cli-commands/npm-ci/index.html | 8 +- .../cli-commands/npm-completion/index.html | 4 +- .../public/cli-commands/npm-config/index.html | 6 +- .../public/cli-commands/npm-dedupe/index.html | 10 +- .../cli-commands/npm-deprecate/index.html | 6 +- .../cli-commands/npm-dist-tag/index.html | 12 +- .../public/cli-commands/npm-docs/index.html | 10 +- .../public/cli-commands/npm-doctor/index.html | 10 +- .../public/cli-commands/npm-edit/index.html | 10 +- .../cli-commands/npm-explore/index.html | 12 +- .../public/cli-commands/npm-fund/index.html | 12 +- .../cli-commands/npm-help-search/index.html | 6 +- .../public/cli-commands/npm-help/index.html | 8 +- .../public/cli-commands/npm-hook/index.html | 4 +- .../public/cli-commands/npm-init/index.html | 6 +- .../npm-install-ci-test/index.html | 8 +- .../cli-commands/npm-install-test/index.html | 8 +- .../cli-commands/npm-install/index.html | 28 +-- .../public/cli-commands/npm-link/index.html | 8 +- .../public/cli-commands/npm-logout/index.html | 10 +- .../public/cli-commands/npm-ls/index.html | 18 +- .../public/cli-commands/npm-org/index.html | 4 +- .../cli-commands/npm-outdated/index.html | 8 +- .../public/cli-commands/npm-owner/index.html | 8 +- .../public/cli-commands/npm-pack/index.html | 10 +- .../public/cli-commands/npm-ping/index.html | 6 +- .../public/cli-commands/npm-prefix/index.html | 12 +- .../cli-commands/npm-profile/index.html | 6 +- .../public/cli-commands/npm-prune/index.html | 8 +- .../cli-commands/npm-publish/index.html | 8 +- .../cli-commands/npm-rebuild/index.html | 8 +- .../public/cli-commands/npm-repo/index.html | 8 +- .../cli-commands/npm-restart/index.html | 14 +- .../public/cli-commands/npm-root/index.html | 10 +- .../cli-commands/npm-run-script/index.html | 14 +- .../public/cli-commands/npm-search/index.html | 8 +- .../cli-commands/npm-shrinkwrap/index.html | 10 +- .../public/cli-commands/npm-star/index.html | 10 +- .../public/cli-commands/npm-stars/index.html | 12 +- .../public/cli-commands/npm-start/index.html | 14 +- .../public/cli-commands/npm-stop/index.html | 12 +- .../public/cli-commands/npm-team/index.html | 7 +- .../public/cli-commands/npm-test/index.html | 12 +- .../public/cli-commands/npm-token/index.html | 4 +- .../cli-commands/npm-uninstall/index.html | 10 +- .../cli-commands/npm-unpublish/index.html | 33 ++- .../public/cli-commands/npm-update/index.html | 15 +- .../cli-commands/npm-version/index.html | 8 +- .../public/cli-commands/npm-view/index.html | 10 +- .../public/cli-commands/npm-whoami/index.html | 8 +- .../docs/public/cli-commands/npm/index.html | 6 +- .../public/configuring-npm/folders/index.html | 16 +- .../public/configuring-npm/install/index.html | 4 +- .../public/configuring-npm/npmrc/index.html | 6 +- .../configuring-npm/package-json/index.html | 20 +- .../package-lock-json/index.html | 8 +- .../configuring-npm/package-locks/index.html | 8 +- .../shrinkwrap-json/index.html | 10 +- deps/npm/docs/public/index.html | 2 +- .../docs/public/using-npm/config/index.html | 16 +- .../public/using-npm/developers/index.html | 4 +- .../docs/public/using-npm/disputes/index.html | 6 +- .../npm/docs/public/using-npm/orgs/index.html | 12 +- .../docs/public/using-npm/registry/index.html | 8 +- .../docs/public/using-npm/removal/index.html | 8 +- .../docs/public/using-npm/scope/index.html | 12 +- .../docs/public/using-npm/scripts/index.html | 16 +- .../docs/public/using-npm/semver/index.html | 4 +- deps/npm/lib/team.js | 8 +- deps/npm/lib/unpublish.js | 8 +- deps/npm/man/man1/npm-README.1 | 2 +- deps/npm/man/man1/npm-access.1 | 2 +- deps/npm/man/man1/npm-adduser.1 | 2 +- deps/npm/man/man1/npm-audit.1 | 2 +- deps/npm/man/man1/npm-bin.1 | 2 +- deps/npm/man/man1/npm-bugs.1 | 2 +- deps/npm/man/man1/npm-build.1 | 2 +- deps/npm/man/man1/npm-bundle.1 | 2 +- deps/npm/man/man1/npm-cache.1 | 2 +- deps/npm/man/man1/npm-ci.1 | 2 +- deps/npm/man/man1/npm-completion.1 | 2 +- deps/npm/man/man1/npm-config.1 | 2 +- deps/npm/man/man1/npm-dedupe.1 | 2 +- deps/npm/man/man1/npm-deprecate.1 | 2 +- deps/npm/man/man1/npm-dist-tag.1 | 2 +- deps/npm/man/man1/npm-docs.1 | 2 +- deps/npm/man/man1/npm-doctor.1 | 2 +- deps/npm/man/man1/npm-edit.1 | 2 +- deps/npm/man/man1/npm-explore.1 | 2 +- deps/npm/man/man1/npm-fund.1 | 2 +- deps/npm/man/man1/npm-help-search.1 | 2 +- deps/npm/man/man1/npm-help.1 | 2 +- deps/npm/man/man1/npm-hook.1 | 2 +- deps/npm/man/man1/npm-init.1 | 2 +- deps/npm/man/man1/npm-install-ci-test.1 | 2 +- deps/npm/man/man1/npm-install-test.1 | 2 +- deps/npm/man/man1/npm-install.1 | 2 +- deps/npm/man/man1/npm-link.1 | 2 +- deps/npm/man/man1/npm-logout.1 | 2 +- deps/npm/man/man1/npm-ls.1 | 4 +- deps/npm/man/man1/npm-org.1 | 2 +- deps/npm/man/man1/npm-outdated.1 | 2 +- deps/npm/man/man1/npm-owner.1 | 2 +- deps/npm/man/man1/npm-pack.1 | 2 +- deps/npm/man/man1/npm-ping.1 | 2 +- deps/npm/man/man1/npm-prefix.1 | 2 +- deps/npm/man/man1/npm-profile.1 | 2 +- deps/npm/man/man1/npm-prune.1 | 2 +- deps/npm/man/man1/npm-publish.1 | 2 +- deps/npm/man/man1/npm-rebuild.1 | 2 +- deps/npm/man/man1/npm-repo.1 | 2 +- deps/npm/man/man1/npm-restart.1 | 2 +- deps/npm/man/man1/npm-root.1 | 2 +- deps/npm/man/man1/npm-run-script.1 | 2 +- deps/npm/man/man1/npm-search.1 | 2 +- deps/npm/man/man1/npm-shrinkwrap.1 | 2 +- deps/npm/man/man1/npm-star.1 | 2 +- deps/npm/man/man1/npm-stars.1 | 2 +- deps/npm/man/man1/npm-start.1 | 2 +- deps/npm/man/man1/npm-stop.1 | 2 +- deps/npm/man/man1/npm-team.1 | 4 +- deps/npm/man/man1/npm-test.1 | 2 +- deps/npm/man/man1/npm-token.1 | 2 +- deps/npm/man/man1/npm-uninstall.1 | 2 +- deps/npm/man/man1/npm-unpublish.1 | 31 ++- deps/npm/man/man1/npm-update.1 | 6 +- deps/npm/man/man1/npm-version.1 | 2 +- deps/npm/man/man1/npm-view.1 | 2 +- deps/npm/man/man1/npm-whoami.1 | 2 +- deps/npm/man/man1/npm.1 | 4 +- deps/npm/man/man5/folders.5 | 2 +- deps/npm/man/man5/install.5 | 2 +- deps/npm/man/man5/npmrc.5 | 2 +- deps/npm/man/man5/package-json.5 | 2 +- deps/npm/man/man5/package-lock-json.5 | 2 +- deps/npm/man/man5/package-locks.5 | 2 +- deps/npm/man/man5/shrinkwrap-json.5 | 2 +- deps/npm/man/man7/config.7 | 2 +- deps/npm/man/man7/developers.7 | 2 +- deps/npm/man/man7/disputes.7 | 2 +- deps/npm/man/man7/orgs.7 | 2 +- deps/npm/man/man7/registry.7 | 2 +- deps/npm/man/man7/removal.7 | 2 +- deps/npm/man/man7/scope.7 | 2 +- deps/npm/man/man7/scripts.7 | 2 +- deps/npm/man/man7/semver.7 | 2 +- deps/npm/node_modules/glob/README.md | 2 + deps/npm/node_modules/glob/package.json | 26 ++- .../node_modules/hosted-git-info/CHANGELOG.md | 10 + .../npm/node_modules/hosted-git-info/index.js | 2 +- .../node_modules/hosted-git-info/package.json | 26 +-- deps/npm/node_modules/minimist/.travis.yml | 4 - deps/npm/node_modules/mkdirp/examples/pow.js | 6 - .../{ => node_modules/minimist}/.travis.yml | 0 .../node_modules}/minimist/LICENSE | 0 .../node_modules}/minimist/example/parse.js | 2 +- .../node_modules}/minimist/index.js | 197 +++++++++++------- .../node_modules}/minimist/package.json | 30 +-- .../node_modules}/minimist/readme.markdown | 34 ++- .../node_modules/minimist/test/all_bool.js | 32 +++ .../mkdirp/node_modules/minimist/test/bool.js | 178 ++++++++++++++++ .../node_modules}/minimist/test/dash.js | 7 + .../minimist/test/default_bool.js | 15 ++ .../node_modules}/minimist/test/dotted.js | 6 + .../node_modules/minimist/test/kv_short.js | 16 ++ .../node_modules}/minimist/test/long.js | 0 .../mkdirp/node_modules/minimist/test/num.js | 36 ++++ .../node_modules}/minimist/test/parse.js | 177 +++------------- .../minimist/test/parse_modified.js | 4 +- .../node_modules/minimist/test/proto.js | 44 ++++ .../node_modules}/minimist/test/short.js | 4 +- .../node_modules/minimist/test/stop_early.js | 15 ++ .../node_modules/minimist/test/unknown.js | 102 +++++++++ .../node_modules}/minimist/test/whitespace.js | 0 deps/npm/node_modules/mkdirp/package.json | 49 +++-- deps/npm/node_modules/mkdirp/test/chmod.js | 41 ---- deps/npm/node_modules/mkdirp/test/clobber.js | 38 ---- deps/npm/node_modules/mkdirp/test/mkdirp.js | 28 --- deps/npm/node_modules/mkdirp/test/opts_fs.js | 29 --- .../node_modules/mkdirp/test/opts_fs_sync.js | 27 --- deps/npm/node_modules/mkdirp/test/perm.js | 32 --- .../npm/node_modules/mkdirp/test/perm_sync.js | 36 ---- deps/npm/node_modules/mkdirp/test/race.js | 37 ---- deps/npm/node_modules/mkdirp/test/rel.js | 32 --- deps/npm/node_modules/mkdirp/test/return.js | 25 --- .../node_modules/mkdirp/test/return_sync.js | 24 --- deps/npm/node_modules/mkdirp/test/root.js | 19 -- deps/npm/node_modules/mkdirp/test/sync.js | 32 --- deps/npm/node_modules/mkdirp/test/umask.js | 28 --- .../node_modules/mkdirp/test/umask_sync.js | 32 --- .../.github/workflows/Python_tests.yml | 40 ++++ deps/npm/node_modules/node-gyp/.travis.yml | 71 ++++--- deps/npm/node_modules/node-gyp/CHANGELOG.md | 18 ++ deps/npm/node_modules/node-gyp/README.md | 8 +- .../node-gyp/gyp/pylib/gyp/MSVSUtil.pyc | Bin 0 -> 7654 bytes .../node-gyp/gyp/pylib/gyp/MSVSVersion.pyc | Bin 0 -> 14398 bytes .../node-gyp/gyp/pylib/gyp/__init__.pyc | Bin 0 -> 16426 bytes .../node-gyp/gyp/pylib/gyp/common.pyc | Bin 0 -> 19552 bytes .../gyp/pylib/gyp/generator/__init__.pyc | Bin 0 -> 168 bytes .../node-gyp/gyp/pylib/gyp/generator/make.pyc | Bin 0 -> 71261 bytes .../gyp/pylib/gyp/generator/ninja.pyc | Bin 0 -> 68498 bytes .../gyp/pylib/gyp/generator/xcode.pyc | Bin 0 -> 26219 bytes .../node-gyp/gyp/pylib/gyp/input.py | 2 +- .../node-gyp/gyp/pylib/gyp/input.pyc | Bin 0 -> 63378 bytes .../node-gyp/gyp/pylib/gyp/msvs_emulation.pyc | Bin 0 -> 48168 bytes .../node-gyp/gyp/pylib/gyp/ninja_syntax.pyc | Bin 0 -> 6457 bytes .../node-gyp/gyp/pylib/gyp/simple_copy.pyc | Bin 0 -> 2222 bytes .../gyp/pylib/gyp/xcode_emulation.pyc | Bin 0 -> 61720 bytes .../node-gyp/gyp/pylib/gyp/xcode_ninja.pyc | Bin 0 -> 7555 bytes .../node-gyp/gyp/pylib/gyp/xcodeproj_file.pyc | Bin 0 -> 93565 bytes .../node-gyp/lib/Find-VisualStudio.cs | 9 +- .../node_modules/node-gyp/lib/find-python.js | 2 +- deps/npm/node_modules/node-gyp/lib/install.js | 6 +- .../npm/node_modules/node-gyp/lib/node-gyp.js | 1 + deps/npm/node_modules/node-gyp/lib/proxy.js | 92 ++++++++ .../node_modules/node-gyp/macOS_Catalina.md | 49 +++-- deps/npm/node_modules/node-gyp/package.json | 22 +- deps/npm/node_modules/node-gyp/test/docker.sh | 112 ---------- .../node-gyp/test/test-download.js | 97 ++++++++- deps/npm/node_modules/npm-profile/index.js | 27 ++- .../npm/node_modules/npm-profile/package.json | 28 +-- deps/npm/node_modules/rimraf/package.json | 29 +-- deps/npm/node_modules/rimraf/rimraf.js | 10 +- deps/npm/package.json | 18 +- .../test/fixtures/config/userconfig-with-gc | 23 -- 302 files changed, 1859 insertions(+), 1713 deletions(-) delete mode 100644 deps/npm/node_modules/minimist/.travis.yml delete mode 100644 deps/npm/node_modules/mkdirp/examples/pow.js rename deps/npm/node_modules/mkdirp/{ => node_modules/minimist}/.travis.yml (100%) rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/LICENSE (100%) rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/example/parse.js (72%) rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/index.js (50%) rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/package.json (63%) rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/readme.markdown (53%) create mode 100644 deps/npm/node_modules/mkdirp/node_modules/minimist/test/all_bool.js create mode 100644 deps/npm/node_modules/mkdirp/node_modules/minimist/test/bool.js rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/test/dash.js (74%) rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/test/default_bool.js (58%) rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/test/dotted.js (75%) create mode 100644 deps/npm/node_modules/mkdirp/node_modules/minimist/test/kv_short.js rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/test/long.js (100%) create mode 100644 deps/npm/node_modules/mkdirp/node_modules/minimist/test/num.js rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/test/parse.js (54%) rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/test/parse_modified.js (77%) create mode 100644 deps/npm/node_modules/mkdirp/node_modules/minimist/test/proto.js rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/test/short.js (99%) create mode 100644 deps/npm/node_modules/mkdirp/node_modules/minimist/test/stop_early.js create mode 100644 deps/npm/node_modules/mkdirp/node_modules/minimist/test/unknown.js rename deps/npm/node_modules/{ => mkdirp/node_modules}/minimist/test/whitespace.js (100%) delete mode 100644 deps/npm/node_modules/mkdirp/test/chmod.js delete mode 100644 deps/npm/node_modules/mkdirp/test/clobber.js delete mode 100644 deps/npm/node_modules/mkdirp/test/mkdirp.js delete mode 100644 deps/npm/node_modules/mkdirp/test/opts_fs.js delete mode 100644 deps/npm/node_modules/mkdirp/test/opts_fs_sync.js delete mode 100644 deps/npm/node_modules/mkdirp/test/perm.js delete mode 100644 deps/npm/node_modules/mkdirp/test/perm_sync.js delete mode 100644 deps/npm/node_modules/mkdirp/test/race.js delete mode 100644 deps/npm/node_modules/mkdirp/test/rel.js delete mode 100644 deps/npm/node_modules/mkdirp/test/return.js delete mode 100644 deps/npm/node_modules/mkdirp/test/return_sync.js delete mode 100644 deps/npm/node_modules/mkdirp/test/root.js delete mode 100644 deps/npm/node_modules/mkdirp/test/sync.js delete mode 100644 deps/npm/node_modules/mkdirp/test/umask.js delete mode 100644 deps/npm/node_modules/mkdirp/test/umask_sync.js create mode 100644 deps/npm/node_modules/node-gyp/.github/workflows/Python_tests.yml create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/common.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.pyc create mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.pyc create mode 100644 deps/npm/node_modules/node-gyp/lib/proxy.js delete mode 100755 deps/npm/node_modules/node-gyp/test/docker.sh delete mode 100644 deps/npm/test/fixtures/config/userconfig-with-gc diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS index 89270e3c127b4f..c2a38c02d53f97 100644 --- a/deps/npm/AUTHORS +++ b/deps/npm/AUTHORS @@ -688,3 +688,6 @@ Netanel Gilad Dave Nicolson Ajay Narain Mathur Vitaliy Markitanov <9357021+vit100@users.noreply.github.com> +simon_s +John Kennedy +Bernard Kitchens diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md index ff02d1dea0bcad..1c0779eb25e5d7 100644 --- a/deps/npm/CHANGELOG.md +++ b/deps/npm/CHANGELOG.md @@ -1,3 +1,34 @@ +## 6.14.3 (2020-03-19) + +### DOCUMENTATION + +* [`4ad221487`](https://github.com/npm/cli/commit4ad2214873cddfd4a0eff1bd188516b08fae9f9e) [#1020](https://github.com/npm/cli/pull/1020) docs(teams): updated team docs to reflect MFA workflow ([@blkdm0n](https://github.com/blkdm0n)) +* [`4a31a4ba2`](https://github.com/npm/cli/commit/4a31a4ba2db0a5db2d1d0890ee934ba1babb73a6) [#1034](https://github.com/npm/cli/pull/1034) docs: cleanup ([@ruyadorno](https://github.com/ruyadorno)) +* [`0eac801cd`](https://github.com/npm/cli/commit/0eac801cdef344e9fbda6270145e062211255b0e) [#1013](https://github.com/npm/cli/pull/1013) docs: fix links to cli commands ([@alenros](https://github.com/alenros)) +* [`7d8e5b99c`](https://github.com/npm/cli/commit/7d8e5b99c4ef8c394cffa7fc845f54a25ff37e3a) [#755](https://github.com/npm/cli/pull/755) docs: correction to `npm update -g` behaviour ([@johnkennedy9147](https://github.com/johnkennedy9147)) + +### DEPENDENCIES + +* [`e11167646`](https://github.com/npm/cli/commit/e111676467f090f73802b97e8da7ece481b18f99) `mkdirp@0.5.3` + * [`c5b97d17d`](https://github.com/isaacs/node-mkdirp/commit/c5b97d17d45a22bcf4c815645cbb989dab57ddd8) fix: bump `minimist` dep to resolve security issue ([@isaacs](https://github.com/isaacs)) +* [`c50d679c6`](https://github.com/npm/cli/commit/c50d679c68b39dd03ad127d34f540ddcb1b1e804) `rimraf@2.7.1` +* [`a2de99ff9`](https://github.com/npm/cli/commit/a2de99ff9e02425a3ccc25280f390178be755a36) `npm-registry-mock@1.3.1` +* [`217debeb9`](https://github.com/npm/cli/commit/217debeb9812e037a6686cbf6ec67a0cd47fa68a) `npm-registry-couchapp@2.7.4` + +## 6.14.2 (2020-03-03) + +### DOCUMENTATION +* [`f9248c0be`](https://github.com/npm/cli/commit/f9248c0be63fba37a30098dc9215c752474380e3) [#730](https://github.com/npm/cli/pull/730) chore(docs): update unpublish docs & policy reference ([@nomadtechie](https://github.com/nomadtechie), [@mikemimik](https://github.com/mikemimik)) + +### DEPENDENCIES + +* [`909cc3918`](https://github.com/npm/cli/commit/909cc39180a352f206898481add5772206c8b65f) `hosted-git-info@2.8.8` ([@darcyclarke](https://github.com/darcyclarke)) + * [`5038b1891`](https://github.com/npm/hosted-git-info/commit/5038b1891a61ca3cd7453acbf85d7011fe0086bb) fix: regression in old node versions w/ respect to url.URL implmentation +* [`9204ffa58`](https://github.com/npm/cli/commit/9204ffa584c140c5e22b1ee37f6df2c98f5dc70b) `npm-profile@4.0.4` ([@isaacs](https://github.com/isaacs)) + * [`6bcf0860a`](https://github.com/npm/npm-profile/commit/6bcf0860a3841865099d0115dbcbde8b78109bd9) fix: treat non-http/https login urls as invalid +* [`0365d39bd`](https://github.com/npm/cli/commit/0365d39bdc74960a18caac674f51d0e2a98b31e6) `glob@7.1.6` ([@isaacs](https://github.com/isaacs)) +* [`dab030536`](https://github.com/nodejs/node-gyp/commit/dab030536b6a70ecae37debc74c581db9e5280fd) `node-gyp@5.1.0` ([@rvagg](https://github.com/rvagg)) + ## 6.14.1 (2020-02-26) * [`303e5c11e`](https://github.com/npm/cli/commit/303e5c11e7db34cf014107aecd2e81c821bfde8d) diff --git a/deps/npm/docs/content/cli-commands/npm-access.md b/deps/npm/docs/content/cli-commands/npm-access.md index 0fbce9c0759d12..f4088fe8855139 100644 --- a/deps/npm/docs/content/cli-commands/npm-access.md +++ b/deps/npm/docs/content/cli-commands/npm-access.md @@ -87,7 +87,7 @@ Management of teams and team memberships is done with the `npm team` command. ### See Also * [`libnpmaccess`](https://npm.im/libnpmaccess) -* [npm team](/cli-commands/npm-team) -* [npm publish](/cli-commands/npm-publish) -* [npm config](/cli-commands/npm-config) +* [npm team](/cli-commands/team) +* [npm publish](/cli-commands/publish) +* [npm config](/cli-commands/config) * [npm registry](/using-npm/registry) diff --git a/deps/npm/docs/content/cli-commands/npm-adduser.md b/deps/npm/docs/content/cli-commands/npm-adduser.md index 2df35e45fc550e..ec61cdd39acbad 100644 --- a/deps/npm/docs/content/cli-commands/npm-adduser.md +++ b/deps/npm/docs/content/cli-commands/npm-adduser.md @@ -89,7 +89,7 @@ username/password entry in legacy npm. ### See Also * [npm registry](/using-npm/registry) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) -* [npm owner](/cli-commands/npm-owner) -* [npm whoami](/cli-commands/npm-whoami) +* [npm owner](/cli-commands/owner) +* [npm whoami](/cli-commands/whoami) diff --git a/deps/npm/docs/content/cli-commands/npm-audit.md b/deps/npm/docs/content/cli-commands/npm-audit.md index 0aba874f96df8d..8b944e94cc12e2 100644 --- a/deps/npm/docs/content/cli-commands/npm-audit.md +++ b/deps/npm/docs/content/cli-commands/npm-audit.md @@ -131,6 +131,6 @@ configuration setting. ### See Also -* [npm install](/cli-commands/npm-install) +* [npm install](/cli-commands/install) * [package-locks](/configuring-npm/package-locks) * [config](/using-npm/config) diff --git a/deps/npm/docs/content/cli-commands/npm-bin.md b/deps/npm/docs/content/cli-commands/npm-bin.md index 6c7ce0eee54e21..eb0912ae48a92a 100644 --- a/deps/npm/docs/content/cli-commands/npm-bin.md +++ b/deps/npm/docs/content/cli-commands/npm-bin.md @@ -19,8 +19,8 @@ Print the folder where npm will install executables. ### See Also -* [npm prefix](/cli-commands/npm-prefix) -* [npm root](/cli-commands/npm-root) +* [npm prefix](/cli-commands/prefix) +* [npm root](/cli-commands/root) * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-bugs.md b/deps/npm/docs/content/cli-commands/npm-bugs.md index dcc9c358df14d8..6e59f2bd1a05e0 100644 --- a/deps/npm/docs/content/cli-commands/npm-bugs.md +++ b/deps/npm/docs/content/cli-commands/npm-bugs.md @@ -41,10 +41,10 @@ The base URL of the npm package registry. ### See Also -* [npm docs](/cli-commands/npm-docs) -* [npm view](/cli-commands/npm-view) -* [npm publish](/cli-commands/npm-publish) +* [npm docs](/cli-commands/docs) +* [npm view](/cli-commands/view) +* [npm publish](/cli-commands/publish) * [npm registry](/using-npm/registry) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) * [package.json](/configuring-npm/package-json) diff --git a/deps/npm/docs/content/cli-commands/npm-build.md b/deps/npm/docs/content/cli-commands/npm-build.md index b657129787663d..eca5397d9c77d5 100644 --- a/deps/npm/docs/content/cli-commands/npm-build.md +++ b/deps/npm/docs/content/cli-commands/npm-build.md @@ -28,7 +28,7 @@ directly, run: ### See Also -* [npm install](/cli-commands/npm-install) -* [npm link](/cli-commands/npm-link) +* [npm install](/cli-commands/install) +* [npm link](/cli-commands/link) * [npm scripts](/using-npm/scripts) * [package.json](/configuring-npm/package-json) diff --git a/deps/npm/docs/content/cli-commands/npm-bundle.md b/deps/npm/docs/content/cli-commands/npm-bundle.md index 76417ac8b0b0c7..c4fdc5e6bb0e64 100644 --- a/deps/npm/docs/content/cli-commands/npm-bundle.md +++ b/deps/npm/docs/content/cli-commands/npm-bundle.md @@ -18,4 +18,4 @@ Just use `npm install` now to do what `npm bundle` used to do. ### See Also -* [npm install](/cli-commands/npm-install) +* [npm install](/cli-commands/install) diff --git a/deps/npm/docs/content/cli-commands/npm-cache.md b/deps/npm/docs/content/cli-commands/npm-cache.md index ed31a320421b0c..4d19749b80f2d9 100644 --- a/deps/npm/docs/content/cli-commands/npm-cache.md +++ b/deps/npm/docs/content/cli-commands/npm-cache.md @@ -82,10 +82,10 @@ The root cache folder. ### See Also * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) -* [npm install](/cli-commands/npm-install) -* [npm publish](/cli-commands/npm-publish) -* [npm pack](/cli-commands/npm-pack) +* [npm install](/cli-commands/install) +* [npm publish](/cli-commands/publish) +* [npm pack](/cli-commands/pack) * https://npm.im/cacache * https://npm.im/pacote diff --git a/deps/npm/docs/content/cli-commands/npm-ci.md b/deps/npm/docs/content/cli-commands/npm-ci.md index 357ba16cf6ade1..b5b6447a485f8f 100644 --- a/deps/npm/docs/content/cli-commands/npm-ci.md +++ b/deps/npm/docs/content/cli-commands/npm-ci.md @@ -45,7 +45,7 @@ cache: ### Description -This command is similar to [`npm install`](/cli-commands/npm-install), except it's meant to be used in +This command is similar to [`npm install`](/cli-commands/install), except it's meant to be used in automated environments such as test platforms, continuous integration, and deployment -- or any situation where you want to make sure you're doing a clean install of your dependencies. It can be significantly faster than a regular npm @@ -63,5 +63,5 @@ In short, the main differences between using `npm install` and `npm ci` are: ### See Also -* [npm install](/cli-commands/npm-install) +* [npm install](/cli-commands/install) * [package-locks](/configuring-npm/package-locks) diff --git a/deps/npm/docs/content/cli-commands/npm-config.md b/deps/npm/docs/content/cli-commands/npm-config.md index c2f2033b066d29..68d403746fc103 100644 --- a/deps/npm/docs/content/cli-commands/npm-config.md +++ b/deps/npm/docs/content/cli-commands/npm-config.md @@ -79,7 +79,7 @@ global config. ### See Also * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [package.json](/configuring-npm/package-json) * [npmrc](/configuring-npm/npmrc) * [npm](/cli-commands/npm) diff --git a/deps/npm/docs/content/cli-commands/npm-dedupe.md b/deps/npm/docs/content/cli-commands/npm-dedupe.md index e15a12ba7c18a3..a146885a044086 100644 --- a/deps/npm/docs/content/cli-commands/npm-dedupe.md +++ b/deps/npm/docs/content/cli-commands/npm-dedupe.md @@ -62,6 +62,6 @@ result in new modules being installed. ### See Also -* [npm ls](/cli-commands/npm-ls) -* [npm update](/cli-commands/npm-update) -* [npm install](/cli-commands/npm-install) +* [npm ls](/cli-commands/ls) +* [npm update](/cli-commands/update) +* [npm install](/cli-commands/install) diff --git a/deps/npm/docs/content/cli-commands/npm-deprecate.md b/deps/npm/docs/content/cli-commands/npm-deprecate.md index d2d9613f653c6c..252c0e70370791 100644 --- a/deps/npm/docs/content/cli-commands/npm-deprecate.md +++ b/deps/npm/docs/content/cli-commands/npm-deprecate.md @@ -32,5 +32,5 @@ format an empty string. ### See Also -* [npm publish](/cli-commands/npm-publish) +* [npm publish](/cli-commands/publish) * [npm registry](/using-npm/registry) diff --git a/deps/npm/docs/content/cli-commands/npm-dist-tag.md b/deps/npm/docs/content/cli-commands/npm-dist-tag.md index c7921c7f739d72..4f7fcb9f58f1ba 100644 --- a/deps/npm/docs/content/cli-commands/npm-dist-tag.md +++ b/deps/npm/docs/content/cli-commands/npm-dist-tag.md @@ -92,9 +92,9 @@ begin with a number or the letter `v`. ### See Also -* [npm publish](/cli-commands/npm-publish) -* [npm install](/cli-commands/npm-install) -* [npm dedupe](/cli-commands/npm-dedupe) +* [npm publish](/cli-commands/publish) +* [npm install](/cli-commands/install) +* [npm dedupe](/cli-commands/dedupe) * [npm registry](/using-npm/registry) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-docs.md b/deps/npm/docs/content/cli-commands/npm-docs.md index 46f5cd0d900a47..f157e200dc514f 100644 --- a/deps/npm/docs/content/cli-commands/npm-docs.md +++ b/deps/npm/docs/content/cli-commands/npm-docs.md @@ -44,9 +44,9 @@ The base URL of the npm package registry. ### See Also -* [npm view](/cli-commands/npm-view) -* [npm publish](/cli-commands/npm-publish) +* [npm view](/cli-commands/view) +* [npm publish](/cli-commands/publish) * [npm registry](/using-npm/registry) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) * [package.json](/configuring-npm/package-json) diff --git a/deps/npm/docs/content/cli-commands/npm-doctor.md b/deps/npm/docs/content/cli-commands/npm-doctor.md index 7cec349e5a8145..60a57ea4765a26 100644 --- a/deps/npm/docs/content/cli-commands/npm-doctor.md +++ b/deps/npm/docs/content/cli-commands/npm-doctor.md @@ -106,6 +106,6 @@ cache, you should probably run `npm cache clean` and reset the cache. ### See Also -* [npm bugs](/cli-commands/npm-bugs) -* [npm help](/cli-commands/npm-help) -* [npm ping](/cli-commands/npm-ping) +* [npm bugs](/cli-commands/bugs) +* [npm help](/cli-commands/help) +* [npm ping](/cli-commands/ping) diff --git a/deps/npm/docs/content/cli-commands/npm-edit.md b/deps/npm/docs/content/cli-commands/npm-edit.md index 94b6a087fa102f..d4b9bbb819b94f 100644 --- a/deps/npm/docs/content/cli-commands/npm-edit.md +++ b/deps/npm/docs/content/cli-commands/npm-edit.md @@ -41,7 +41,7 @@ The command to run for `npm edit` or `npm config edit`. ### See Also * [npm folders](/configuring-npm/folders) -* [npm explore](/cli-commands/npm-explore) -* [npm install](/cli-commands/npm-install) -* [npm config](/cli-commands/npm-config) +* [npm explore](/cli-commands/explore) +* [npm install](/cli-commands/install) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-explore.md b/deps/npm/docs/content/cli-commands/npm-explore.md index 8ded96d40984fe..dfa4d9c0737412 100644 --- a/deps/npm/docs/content/cli-commands/npm-explore.md +++ b/deps/npm/docs/content/cli-commands/npm-explore.md @@ -44,7 +44,7 @@ The shell to run for the `npm explore` command. ### See Also * [npm folders](/configuring-npm/folders) -* [npm edit](/cli-commands/npm-edit) -* [npm rebuild](/cli-commands/npm-rebuild) -* [npm build](/cli-commands/npm-build) -* [npm install](/cli-commands/npm-install) +* [npm edit](/cli-commands/edit) +* [npm rebuild](/cli-commands/rebuild) +* [npm build](/cli-commands/build) +* [npm install](/cli-commands/install) diff --git a/deps/npm/docs/content/cli-commands/npm-fund.md b/deps/npm/docs/content/cli-commands/npm-fund.md index 5a751eec466871..73910ff7c07bde 100644 --- a/deps/npm/docs/content/cli-commands/npm-fund.md +++ b/deps/npm/docs/content/cli-commands/npm-fund.md @@ -61,8 +61,8 @@ If there are multiple funding sources, which 1-indexed source URL to open. ## See Also -* [npm docs](/cli-commands/npm-docs) -* [npm config](/cli-commands/npm-config) -* [npm install](/cli-commands/npm-install) -* [npm ls](/cli-commands/npm-ls) +* [npm docs](/cli-commands/docs) +* [npm config](/cli-commands/config) +* [npm install](/cli-commands/install) +* [npm ls](/cli-commands/ls) diff --git a/deps/npm/docs/content/cli-commands/npm-help-search.md b/deps/npm/docs/content/cli-commands/npm-help-search.md index 69d005cb160ed7..96781856551383 100644 --- a/deps/npm/docs/content/cli-commands/npm-help-search.md +++ b/deps/npm/docs/content/cli-commands/npm-help-search.md @@ -40,4 +40,4 @@ If false, then help-search will just list out the help topics found. ### See Also * [npm](/cli-commands/npm) -* [npm help](/cli-commands/npm-help) +* [npm help](/cli-commands/help) diff --git a/deps/npm/docs/content/cli-commands/npm-help.md b/deps/npm/docs/content/cli-commands/npm-help.md index c47676ffcac1d3..358010c05ece33 100644 --- a/deps/npm/docs/content/cli-commands/npm-help.md +++ b/deps/npm/docs/content/cli-commands/npm-help.md @@ -38,7 +38,7 @@ Set to `"browser"` to view html help content in the default web browser. * [npm](/cli-commands/npm) * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) * [package.json](/configuring-npm/package-json) -* [npm help-search](/cli-commands/npm-help-search) +* [npm help-search](/cli-commands/help-search) diff --git a/deps/npm/docs/content/cli-commands/npm-init.md b/deps/npm/docs/content/cli-commands/npm-init.md index 73ad74b23ea998..32b7f823019910 100644 --- a/deps/npm/docs/content/cli-commands/npm-init.md +++ b/deps/npm/docs/content/cli-commands/npm-init.md @@ -70,5 +70,5 @@ will create a scoped package. * * [package.json](/configuring-npm/package-json) -* [npm version](/cli-commands/npm-version) +* [npm version](/cli-commands/version) * [npm scope](/using-npm/scope) diff --git a/deps/npm/docs/content/cli-commands/npm-install-ci-test.md b/deps/npm/docs/content/cli-commands/npm-install-ci-test.md index 98e40f4b27a77d..09d738c79fbed5 100644 --- a/deps/npm/docs/content/cli-commands/npm-install-ci-test.md +++ b/deps/npm/docs/content/cli-commands/npm-install-ci-test.md @@ -22,5 +22,5 @@ This command runs an `npm ci` followed immediately by an `npm test`. ### See Also -* [npm ci](/cli-commands/npm-ci) -* [npm test](/cli-commands/npm-test) +* [npm ci](/cli-commands/ci) +* [npm test](/cli-commands/test) diff --git a/deps/npm/docs/content/cli-commands/npm-install-test.md b/deps/npm/docs/content/cli-commands/npm-install-test.md index b86a5199117c4a..58b8844b4fcfff 100644 --- a/deps/npm/docs/content/cli-commands/npm-install-test.md +++ b/deps/npm/docs/content/cli-commands/npm-install-test.md @@ -31,5 +31,5 @@ takes exactly the same arguments as `npm install`. ### See Also -* [npm install](/cli-commands/npm-install) -* [npm test](/cli-commands/npm-test) +* [npm install](/cli-commands/install) +* [npm test](/cli-commands/test) diff --git a/deps/npm/docs/content/cli-commands/npm-install.md b/deps/npm/docs/content/cli-commands/npm-install.md index 8e661bf643f394..be196fa825546b 100644 --- a/deps/npm/docs/content/cli-commands/npm-install.md +++ b/deps/npm/docs/content/cli-commands/npm-install.md @@ -32,7 +32,7 @@ common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exa This command installs a package, and any packages that it depends on. If the package has a package-lock or shrinkwrap file, the installation of dependencies will be driven by that, with an `npm-shrinkwrap.json` taking precedence if both -files exist. See [package-lock.json](/configuring-npm/package-lock-json) and [`npm shrinkwrap`](/cli-commands/npm-shrinkwrap). +files exist. See [package-lock.json](/configuring-npm/package-lock-json) and [`npm shrinkwrap`](/cli-commands/shrinkwrap). A `package` is: @@ -40,7 +40,7 @@ A `package` is: * b) a gzipped tarball containing (a) * c) a url that resolves to (b) * d) a `@` that is published on the registry (see [`registry`](/using-npm/registry)) with (c) -* e) a `@` (see [`npm dist-tag`](/cli-commands/npm-dist-tag)) that points to (d) +* e) a `@` (see [`npm dist-tag`](/cli-commands/dist-tag)) that points to (d) * f) a `` that has a "latest" tag satisfying (e) * g) a `` that resolves to (a) @@ -503,17 +503,17 @@ affects a real use-case, it will be investigated. ### See Also * [npm folders](/configuring-npm/folders) -* [npm update](/cli-commands/npm-update) -* [npm audit](/cli-commands/npm-audit) -* [npm fund](/cli-commands/npm-fund) -* [npm link](/cli-commands/npm-link) -* [npm rebuild](/cli-commands/npm-rebuild) +* [npm update](/cli-commands/update) +* [npm audit](/cli-commands/audit) +* [npm fund](/cli-commands/fund) +* [npm link](/cli-commands/link) +* [npm rebuild](/cli-commands/rebuild) * [npm scripts](/using-npm/scripts) -* [npm build](/cli-commands/npm-build) -* [npm config](/cli-commands/npm-config) +* [npm build](/cli-commands/build) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) * [npm registry](/using-npm/registry) -* [npm dist-tag](/cli-commands/npm-dist-tag) -* [npm uninstall](/cli-commands/npm-uninstall) -* [npm shrinkwrap](/cli-commands/npm-shrinkwrap) +* [npm dist-tag](/cli-commands/dist-tag) +* [npm uninstall](/cli-commands/uninstall) +* [npm shrinkwrap](/cli-commands/shrinkwrap) * [package.json](/configuring-npm/package-json) diff --git a/deps/npm/docs/content/cli-commands/npm-link.md b/deps/npm/docs/content/cli-commands/npm-link.md index a6d2908c4a32ab..3f513868dfebd6 100644 --- a/deps/npm/docs/content/cli-commands/npm-link.md +++ b/deps/npm/docs/content/cli-commands/npm-link.md @@ -86,7 +86,7 @@ npm link @myorg/privatepackage * [npm developers](/using-npm/developers) * [package.json](/configuring-npm/package-json) -* [npm- nstall](/cli-commands/npm-install) +* [npm- nstall](/cli-commands/install) * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-logout.md b/deps/npm/docs/content/cli-commands/npm-logout.md index ca7d86f2d1960e..5fb7100e8ef7d0 100644 --- a/deps/npm/docs/content/cli-commands/npm-logout.md +++ b/deps/npm/docs/content/cli-commands/npm-logout.md @@ -48,7 +48,7 @@ npm logout --scope=@myco ### See Also -* [npm adduser](/cli-commands/npm-adduser) +* [npm adduser](/cli-commands/adduser) * [npm registry](/using-npm/registry) -* [npm config](/cli-commands/npm-config) -* [npm whoami](/cli-commands/npm-whoami) +* [npm config](/cli-commands/config) +* [npm whoami](/cli-commands/whoami) diff --git a/deps/npm/docs/content/cli-commands/npm-ls.md b/deps/npm/docs/content/cli-commands/npm-ls.md index 64a399155ff601..797f15a50d8494 100644 --- a/deps/npm/docs/content/cli-commands/npm-ls.md +++ b/deps/npm/docs/content/cli-commands/npm-ls.md @@ -119,11 +119,11 @@ Set it to false in order to use all-ansi output. ### See Also -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) * [npm folders](/configuring-npm/folders) -* [npm install](/cli-commands/npm-install) -* [npm link](/cli-commands/npm-link) -* [npm prune](/cli-commands/npm-prune) -* [npm outdated](/cli-commands/npm-outdated) -* [npm update](/cli-commands/npm-update) +* [npm install](/cli-commands/install) +* [npm link](/cli-commands/link) +* [npm prune](/cli-commands/prune) +* [npm outdated](/cli-commands/outdated) +* [npm update](/cli-commands/update) diff --git a/deps/npm/docs/content/cli-commands/npm-outdated.md b/deps/npm/docs/content/cli-commands/npm-outdated.md index c7934109dca370..3dae28c465f4e6 100644 --- a/deps/npm/docs/content/cli-commands/npm-outdated.md +++ b/deps/npm/docs/content/cli-commands/npm-outdated.md @@ -118,7 +118,7 @@ Max depth for checking dependency tree. ### See Also -* [npm update](/cli-commands/npm-update) -* [npm dist-tag](/cli-commands/npm-dist-tag) +* [npm update](/cli-commands/update) +* [npm dist-tag](/cli-commands/dist-tag) * [npm registry](/using-npm/registry) * [npm folders](/configuring-npm/folders) diff --git a/deps/npm/docs/content/cli-commands/npm-owner.md b/deps/npm/docs/content/cli-commands/npm-owner.md index bc2fbc82fb280e..7088cdaf5cb396 100644 --- a/deps/npm/docs/content/cli-commands/npm-owner.md +++ b/deps/npm/docs/content/cli-commands/npm-owner.md @@ -41,7 +41,7 @@ with `--otp`. ### See Also -* [npm publish](/cli-commands/npm-publish) +* [npm publish](/cli-commands/publish) * [npm registry](/using-npm/registry) -* [npm adduser](/cli-commands/npm-adduser) +* [npm adduser](/cli-commands/adduser) * [npm disputes](/using-npm/disputes) diff --git a/deps/npm/docs/content/cli-commands/npm-pack.md b/deps/npm/docs/content/cli-commands/npm-pack.md index acf18559c14e00..d4774ff3716710 100644 --- a/deps/npm/docs/content/cli-commands/npm-pack.md +++ b/deps/npm/docs/content/cli-commands/npm-pack.md @@ -32,7 +32,7 @@ actually packing anything. Reports on what would have gone into the tarball. ### See Also -* [npm cache](/cli-commands/npm-cache) -* [npm publish](/cli-commands/npm-publish) -* [npm config](/cli-commands/npm-config) +* [npm cache](/cli-commands/cache) +* [npm publish](/cli-commands/publish) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-ping.md b/deps/npm/docs/content/cli-commands/npm-ping.md index 93d18b57f840b0..8f765501ac9f33 100644 --- a/deps/npm/docs/content/cli-commands/npm-ping.md +++ b/deps/npm/docs/content/cli-commands/npm-ping.md @@ -29,5 +29,5 @@ Ping error: {*Detail about error} ### See Also -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-prefix.md b/deps/npm/docs/content/cli-commands/npm-prefix.md index b82fec663a147d..c6b1f7441bcd65 100644 --- a/deps/npm/docs/content/cli-commands/npm-prefix.md +++ b/deps/npm/docs/content/cli-commands/npm-prefix.md @@ -21,12 +21,12 @@ to contain a `package.json` file or `node_modules` directory, unless `-g` is also specified. If `-g` is specified, this will be the value of the global prefix. See -[`npm config`](/cli-commands/npm-config) for more detail. +[`npm config`](/cli-commands/config) for more detail. ### See Also -* [npm root](/cli-commands/npm-root) -* [npm bin](/cli-commands/npm-bin) +* [npm root](/cli-commands/root) +* [npm bin](/cli-commands/bin) * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-profile.md b/deps/npm/docs/content/cli-commands/npm-profile.md index 9fe82cd2d3a952..7cc38e2c9c3fe3 100644 --- a/deps/npm/docs/content/cli-commands/npm-profile.md +++ b/deps/npm/docs/content/cli-commands/npm-profile.md @@ -79,4 +79,4 @@ available on non npmjs.com registries. ### See Also -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) diff --git a/deps/npm/docs/content/cli-commands/npm-prune.md b/deps/npm/docs/content/cli-commands/npm-prune.md index c6b61e62f828a2..586c2e7024642b 100644 --- a/deps/npm/docs/content/cli-commands/npm-prune.md +++ b/deps/npm/docs/content/cli-commands/npm-prune.md @@ -41,6 +41,6 @@ and it's up to you to run `npm prune` from time-to-time to remove them. ### See Also -* [npm uninstall](/cli-commands/npm-uninstall) +* [npm uninstall](/cli-commands/uninstall) * [npm folders](/configuring-npm/folders) -* [npm ls](/cli-commands/npm-ls) +* [npm ls](/cli-commands/ls) diff --git a/deps/npm/docs/content/cli-commands/npm-publish.md b/deps/npm/docs/content/cli-commands/npm-publish.md index 44c36e0b7ac6cc..199377fa0df32d 100644 --- a/deps/npm/docs/content/cli-commands/npm-publish.md +++ b/deps/npm/docs/content/cli-commands/npm-publish.md @@ -60,13 +60,13 @@ the specified registry. Once a package is published with a given name and version, that specific name and version combination can never be used again, even if -it is removed with [`npm unpublish`](/cli-commands/npm-unpublish). +it is removed with [`npm unpublish`](/cli-commands/unpublish). As of `npm@5`, both a sha1sum and an integrity field with a sha512sum of the tarball will be submitted to the registry during publication. Subsequent installs will use the strongest supported algorithm to verify downloads. -Similar to `--dry-run` see [`npm pack`](/cli-commands/npm-pack), which figures out the files to be +Similar to `--dry-run` see [`npm pack`](/cli-commands/pack), which figures out the files to be included and packs them into a tarball to be uploaded to the registry. ### See Also diff --git a/deps/npm/docs/content/cli-commands/npm-rebuild.md b/deps/npm/docs/content/cli-commands/npm-rebuild.md index 414b9ca55a1932..9503d6aae84263 100644 --- a/deps/npm/docs/content/cli-commands/npm-rebuild.md +++ b/deps/npm/docs/content/cli-commands/npm-rebuild.md @@ -22,5 +22,5 @@ This command runs the `npm build` command on the matched folders. This is usefu ### See Also -* [npm build](/cli-commands/npm-build) -* [npm install](/cli-commands/npm-install) +* [npm build](/cli-commands/build) +* [npm install](/cli-commands/install) diff --git a/deps/npm/docs/content/cli-commands/npm-repo.md b/deps/npm/docs/content/cli-commands/npm-repo.md index ad41ea571253fd..48021d9af5d912 100644 --- a/deps/npm/docs/content/cli-commands/npm-repo.md +++ b/deps/npm/docs/content/cli-commands/npm-repo.md @@ -32,5 +32,5 @@ The browser that is called by the `npm repo` command to open websites. ### See Also -* [npm docs](/cli-commands/npm-docs) -* [npm config](/cli-commands/npm-config) +* [npm docs](/cli-commands/docs) +* [npm config](/cli-commands/config) diff --git a/deps/npm/docs/content/cli-commands/npm-restart.md b/deps/npm/docs/content/cli-commands/npm-restart.md index d6d388b224ab1f..663b8f45066084 100644 --- a/deps/npm/docs/content/cli-commands/npm-restart.md +++ b/deps/npm/docs/content/cli-commands/npm-restart.md @@ -41,9 +41,9 @@ behavior will be accompanied by an increase in major version number ### See Also -* [npm run-script](/cli-commands/npm-run-script) +* [npm run-script](/cli-commands/run-script) * [npm scripts](/using-npm/scripts) -* [npm test](/cli-commands/npm-test) -* [npm start](/cli-commands/npm-start) -* [npm stop](/cli-commands/npm-stop) -* [npm restart](/cli-commands/npm-restart) \ No newline at end of file +* [npm test](/cli-commands/test) +* [npm start](/cli-commands/start) +* [npm stop](/cli-commands/stop) +* [npm restart](/cli-commands/restart) \ No newline at end of file diff --git a/deps/npm/docs/content/cli-commands/npm-root.md b/deps/npm/docs/content/cli-commands/npm-root.md index 2b27878af4c6dc..fce4490de78eac 100644 --- a/deps/npm/docs/content/cli-commands/npm-root.md +++ b/deps/npm/docs/content/cli-commands/npm-root.md @@ -19,8 +19,8 @@ Print the effective `node_modules` folder to standard out. ### See Also -* [npm prefix](/cli-commands/npm-prefix) -* [npm bin](/cli-commands/npm-bin) +* [npm prefix](/cli-commands/prefix) +* [npm bin](/cli-commands/bin) * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-run-script.md b/deps/npm/docs/content/cli-commands/npm-run-script.md index 51def74c3c4c33..1ee381e00f2f1e 100644 --- a/deps/npm/docs/content/cli-commands/npm-run-script.md +++ b/deps/npm/docs/content/cli-commands/npm-run-script.md @@ -90,8 +90,8 @@ without breaking the execution chain. ### See Also * [npm scripts](/using-npm/scripts) -* [npm test](/cli-commands/npm-test) -* [npm start](/cli-commands/npm-start) -* [npm restart](/cli-commands/npm-restart) -* [npm stop](/cli-commands/npm-stop) -* [npm config](/cli-commands/npm-config) +* [npm test](/cli-commands/test) +* [npm start](/cli-commands/start) +* [npm restart](/cli-commands/restart) +* [npm stop](/cli-commands/stop) +* [npm config](/cli-commands/config) diff --git a/deps/npm/docs/content/cli-commands/npm-search.md b/deps/npm/docs/content/cli-commands/npm-search.md index e066106faf71f4..c65e489cba27c8 100644 --- a/deps/npm/docs/content/cli-commands/npm-search.md +++ b/deps/npm/docs/content/cli-commands/npm-search.md @@ -109,6 +109,6 @@ setting. ### See Also * [npm registry](/using-npm/registry) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) -* [npm view](/cli-commands/npm-view) +* [npm view](/cli-commands/view) diff --git a/deps/npm/docs/content/cli-commands/npm-shrinkwrap.md b/deps/npm/docs/content/cli-commands/npm-shrinkwrap.md index 342fb001675ab3..a22aed88e125fe 100644 --- a/deps/npm/docs/content/cli-commands/npm-shrinkwrap.md +++ b/deps/npm/docs/content/cli-commands/npm-shrinkwrap.md @@ -24,11 +24,11 @@ of package locks in npm, see [package-locks](/configuring-npm/package-locks). ### See Also -* [npm install](/cli-commands/npm-install) -* [npm run-script](/cli-commands/npm-run-script) +* [npm install](/cli-commands/install) +* [npm run-script](/cli-commands/run-script) * [npm scripts](/using-npm/scripts) * [package.js](/configuring-npm/package-json) * [package-locks](/configuring-npm/package-locks) * [package-lock.json](/configuring-npm/package-lock-json) * [shrinkwrap.json](/configuring-npm/shrinkwrap-json) -* [npm ls](/cli-commands/npm-ls) +* [npm ls](/cli-commands/ls) diff --git a/deps/npm/docs/content/cli-commands/npm-star.md b/deps/npm/docs/content/cli-commands/npm-star.md index 1912e9c654bc28..440d15d05c652e 100644 --- a/deps/npm/docs/content/cli-commands/npm-star.md +++ b/deps/npm/docs/content/cli-commands/npm-star.md @@ -26,6 +26,6 @@ It's a boolean thing. Starring repeatedly has no additional effect. ### See Also -* [npm view](/cli-commands/npm-view) -* [npm whoami](/cli-commands/npm-whoami) -* [npm adduser](/cli-commands/npm-adduser) +* [npm view](/cli-commands/view) +* [npm whoami](/cli-commands/whoami) +* [npm adduser](/cli-commands/adduser) diff --git a/deps/npm/docs/content/cli-commands/npm-stars.md b/deps/npm/docs/content/cli-commands/npm-stars.md index 475547bb4b7f2f..87b1664ef8595d 100644 --- a/deps/npm/docs/content/cli-commands/npm-stars.md +++ b/deps/npm/docs/content/cli-commands/npm-stars.md @@ -23,7 +23,7 @@ you will most certainly enjoy this command. ### See Also -* [npm star](/cli-commands/npm-star) -* [npm view](/cli-commands/npm-view) -* [npm whoami](/cli-commands/npm-whoami) -* [npm adduser](/cli-commands/npm-adduser) +* [npm star](/cli-commands/star) +* [npm view](/cli-commands/view) +* [npm whoami](/cli-commands/whoami) +* [npm adduser](/cli-commands/adduser) diff --git a/deps/npm/docs/content/cli-commands/npm-start.md b/deps/npm/docs/content/cli-commands/npm-start.md index 839528257b6d95..70221c9926a5d8 100644 --- a/deps/npm/docs/content/cli-commands/npm-start.md +++ b/deps/npm/docs/content/cli-commands/npm-start.md @@ -21,12 +21,12 @@ its `"scripts"` object. If no `"start"` property is specified on the `"scripts"` object, it will run `node server.js`. As of [`npm@2.0.0`](https://blog.npmjs.org/post/98131109725/npm-2-0-0), you can -use custom arguments when executing scripts. Refer to [`npm run-script`](/cli-commands/npm-run-script) for more details. +use custom arguments when executing scripts. Refer to [`npm run-script`](/cli-commands/run-script) for more details. ### See Also -* [npm run-script](/cli-commands/npm-run-script) +* [npm run-script](/cli-commands/run-script) * [npm scripts](/using-npm/scripts) -* [npm test](/cli-commands/npm-test) -* [npm restart](/cli-commands/npm-restart) -* [npm stop](/cli-commands/npm-stop) +* [npm test](/cli-commands/test) +* [npm restart](/cli-commands/restart) +* [npm stop](/cli-commands/stop) diff --git a/deps/npm/docs/content/cli-commands/npm-stop.md b/deps/npm/docs/content/cli-commands/npm-stop.md index da759047cb19a5..889f04ec41e3e2 100644 --- a/deps/npm/docs/content/cli-commands/npm-stop.md +++ b/deps/npm/docs/content/cli-commands/npm-stop.md @@ -20,8 +20,8 @@ This runs a package's "stop" script, if one was provided. ### See Also -* [npm run-script](/cli-commands/npm-run-script) +* [npm run-script](/cli-commands/run-script) * [npm scripts](/using-npm/scripts) -* [npm test](/cli-commands/npm-test) -* [npm start](/cli-commands/npm-start) -* [npm restart](/cli-commands/npm-restart) +* [npm test](/cli-commands/test) +* [npm start](/cli-commands/start) +* [npm restart](/cli-commands/restart) diff --git a/deps/npm/docs/content/cli-commands/npm-team.md b/deps/npm/docs/content/cli-commands/npm-team.md index 9a63b10c26f325..53e084d47d14a3 100644 --- a/deps/npm/docs/content/cli-commands/npm-team.md +++ b/deps/npm/docs/content/cli-commands/npm-team.md @@ -30,6 +30,8 @@ handle permissions for packages. Teams must always be fully qualified with the organization/scope they belong to when operating on them, separated by a colon (`:`). That is, if you have a `wombats` team in a `wisdom` organization, you must always refer to that team as `wisdom:wombats` in these commands. +If you have two-factor authentication enabled in `auth-and-writes` mode, then you can provide a code from your authenticator with `[--otp ]`. If you don't include this then you will be prompted. + * create / destroy: Create a new team, or destroy an existing one. Note: You cannot remove the `developers` team, learn more. * add / rm: @@ -60,5 +62,5 @@ use the `npm access` command to grant or revoke the appropriate permissions. ### See Also -* [npm access](/cli-commands/npm-access) +* [npm access](/cli-commands/access) * [npm registry](/using-npm/registry) diff --git a/deps/npm/docs/content/cli-commands/npm-test.md b/deps/npm/docs/content/cli-commands/npm-test.md index 99c027e3e057af..11900fd2fbf5e1 100644 --- a/deps/npm/docs/content/cli-commands/npm-test.md +++ b/deps/npm/docs/content/cli-commands/npm-test.md @@ -22,8 +22,8 @@ This runs a package's "test" script, if one was provided. ### See Also -* [npm run-script](/cli-commands/npm-run-script) +* [npm run-script](/cli-commands/run-script) * [npm scripts](/using-npm/scripts) -* [npm start](/cli-commands/npm-start) -* [npm restart](/cli-commands/npm-restart) -* [npm stop](/cli-commands/npm-stop) +* [npm start](/cli-commands/start) +* [npm restart](/cli-commands/restart) +* [npm stop](/cli-commands/stop) diff --git a/deps/npm/docs/content/cli-commands/npm-uninstall.md b/deps/npm/docs/content/cli-commands/npm-uninstall.md index 96fdc4ebe05ba9..2b994ba6180b65 100644 --- a/deps/npm/docs/content/cli-commands/npm-uninstall.md +++ b/deps/npm/docs/content/cli-commands/npm-uninstall.md @@ -57,8 +57,8 @@ npm uninstall lodash --no-save ### See Also -* [npm prune](/cli-commands/npm-prune) -* [npm install](/cli-commands/npm-install) +* [npm prune](/cli-commands/prune) +* [npm install](/cli-commands/install) * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/cli-commands/npm-unpublish.md b/deps/npm/docs/content/cli-commands/npm-unpublish.md index 5348023d9a8400..9b918ed432c306 100644 --- a/deps/npm/docs/content/cli-commands/npm-unpublish.md +++ b/deps/npm/docs/content/cli-commands/npm-unpublish.md @@ -10,19 +10,21 @@ description: Remove a package from the registry ### Synopsis +#### Unpublishing a single version of a package + ```bash -npm unpublish [<@scope>/][@] +npm unpublish [<@scope>/]@ ``` -### Warning +#### Unpublishing an entire package -**It is generally considered bad behavior to remove versions of a library -that others are depending on!** +```bash +npm unpublish [<@scope>/] --force +``` -Consider using the `deprecate` command -instead, if your intent is to encourage users to upgrade. +### Warning -There is plenty of room on the registry. +Consider using the `deprecate` command instead, if your intent is to encourage users to upgrade, or if you no longer want to maintain a package. ### Description @@ -34,21 +36,15 @@ the root package entry is removed from the registry entirely. Even if a package version is unpublished, that specific name and version combination can never be reused. In order to publish the -package again, a new version number must be used. Additionally, -new versions of packages with every version unpublished may not -be republished until 24 hours have passed. +package again, a new version number must be used. If you unpublish the entire package, you may not publish any new versions of that package until 24 hours have passed. -With the default registry (`registry.npmjs.org`), unpublish is -only allowed with versions published in the last 72 hours. If you -are trying to unpublish a version published longer ago than that, -contact support@npmjs.com. +To learn more about how unpublish is treated on the npm registry, see our unpublish policies. -The scope is optional and follows the usual rules for [`scope`](/using-npm/scope). ### See Also -* [npm deprecate](/cli-commands/npm-deprecate) -* [npm publish](/cli-commands/npm-publish) +* [npm deprecate](/cli-commands/deprecate) +* [npm publish](/cli-commands/publish) * [npm registry](/using-npm/registry) -* [npm adduser](/cli-commands/npm-adduser) -* [npm owner](/cli-commands/npm-owner) +* [npm adduser](/cli-commands/adduser) +* [npm owner](/cli-commands/owner) diff --git a/deps/npm/docs/content/cli-commands/npm-update.md b/deps/npm/docs/content/cli-commands/npm-update.md index f2e93b6dc33df1..706d8acf208f91 100644 --- a/deps/npm/docs/content/cli-commands/npm-update.md +++ b/deps/npm/docs/content/cli-commands/npm-update.md @@ -122,7 +122,9 @@ version that satisfies `^0.4.0` (`>= 0.4.0 <0.5.0`) `npm update -g` will apply the `update` action to each globally installed package that is `outdated` -- that is, has a version that is different from -`latest`. +`wanted`. + +Note: Globally installed packages are treated as if they are installed with a caret semver range specified. So if you require to update to `latest` you may need to run `npm install -g [...]` NOTE: If a package has been upgraded to a version newer than `latest`, it will be _downgraded_. @@ -130,9 +132,9 @@ be _downgraded_. ### See Also -* [npm install](/cli-commands/npm-install) -* [npm outdated](/cli-commands/npm-outdated) -* [npm shrinkwrap](/cli-commands/npm-shrinkwrap) +* [npm install](/cli-commands/install) +* [npm outdated](/cli-commands/outdated) +* [npm shrinkwrap](/cli-commands/shrinkwrap) * [npm registry](/using-npm/registry) * [npm folders](/configuring-npm/folders) -* [npm ls](/cli-commands/npm-ls) +* [npm ls](/cli-commands/ls) diff --git a/deps/npm/docs/content/cli-commands/npm-version.md b/deps/npm/docs/content/cli-commands/npm-version.md index a47e9e33326acf..05a2ea4c8d8097 100644 --- a/deps/npm/docs/content/cli-commands/npm-version.md +++ b/deps/npm/docs/content/cli-commands/npm-version.md @@ -126,8 +126,8 @@ Note that you must have a default GPG key set up in your git config for this to ### See Also -* [npm init](/cli-commands/npm-init) -* [npm run-script](/cli-commands/npm-run-script) +* [npm init](/cli-commands/init) +* [npm run-script](/cli-commands/run-script) * [npm scripts](/using-npm/scripts) * [package.json](/configuring-npm/package-json) * [semver](/using-npm/semver) diff --git a/deps/npm/docs/content/cli-commands/npm-view.md b/deps/npm/docs/content/cli-commands/npm-view.md index 0c108e6f566154..b4c68471f5a7dc 100644 --- a/deps/npm/docs/content/cli-commands/npm-view.md +++ b/deps/npm/docs/content/cli-commands/npm-view.md @@ -117,8 +117,8 @@ the field name. ### See Also -* [npm search](/cli-commands/npm-search) +* [npm search](/cli-commands/search) * [npm registry](/using-npm/registry) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) -* [npm docs](/cli-commands/npm-docs) +* [npm docs](/cli-commands/docs) diff --git a/deps/npm/docs/content/cli-commands/npm-whoami.md b/deps/npm/docs/content/cli-commands/npm-whoami.md index b0eda4e46aa61b..d82f1f89732def 100644 --- a/deps/npm/docs/content/cli-commands/npm-whoami.md +++ b/deps/npm/docs/content/cli-commands/npm-whoami.md @@ -19,6 +19,6 @@ Print the `username` config to standard output. ### See Also -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) -* [npm adduser](/cli-commands/npm-adduser) +* [npm adduser](/cli-commands/adduser) diff --git a/deps/npm/docs/content/configuring-npm/folders.md b/deps/npm/docs/content/configuring-npm/folders.md index 96a8f4783d719b..abb6133fd1702f 100644 --- a/deps/npm/docs/content/configuring-npm/folders.md +++ b/deps/npm/docs/content/configuring-npm/folders.md @@ -73,7 +73,7 @@ Man pages are not installed on Windows systems. #### Cache -See [`npm cache`](/cli-commands/npm-cache). Cache files are stored in `~/.npm` on Posix, or +See [`npm cache`](/cli-commands/cache). Cache files are stored in `~/.npm` on Posix, or `%AppData%/npm-cache` on Windows. This is controlled by the `cache` configuration param. @@ -214,10 +214,10 @@ cannot be found elsewhere. See [`package.json`](/configuring-npm/package.json) ### See also * [package.json](/configuring-npm/package-json) -* [npm install](/cli-commands/npm-install) -* [npm pack](/cli-commands/npm-pack) -* [npm cache](/cli-commands/npm-cache) -* [npm config](/cli-commands/npm-config) +* [npm install](/cli-commands/install) +* [npm pack](/cli-commands/pack) +* [npm cache](/cli-commands/cache) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) * [config](/using-npm/config) -* [npm publish](/cli-commands/npm-publish) +* [npm publish](/cli-commands/publish) diff --git a/deps/npm/docs/content/configuring-npm/npmrc.md b/deps/npm/docs/content/configuring-npm/npmrc.md index 090ed5944fcce5..3439c0a8bfcf8b 100644 --- a/deps/npm/docs/content/configuring-npm/npmrc.md +++ b/deps/npm/docs/content/configuring-npm/npmrc.md @@ -97,7 +97,7 @@ manner. ### See also * [npm folders](/configuring-npm/folders) -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [config](/using-npm/config) * [package.json](/configuring-npm/package-json) * [npm](/cli-commands/npm) diff --git a/deps/npm/docs/content/configuring-npm/package-json.md b/deps/npm/docs/content/configuring-npm/package-json.md index 9af70ea0ab2ccc..6d9cae346b1944 100644 --- a/deps/npm/docs/content/configuring-npm/package-json.md +++ b/deps/npm/docs/content/configuring-npm/package-json.md @@ -533,7 +533,7 @@ See [semver](/using-npm/semver) for more details about specifying version ranges * `range1 || range2` Passes if either range1 or range2 are satisfied. * `git...` See 'Git URLs as Dependencies' below * `user/repo` See 'GitHub URLs' below -* `tag` A specific version tagged and published as `tag` See [`npm dist-tag`](/cli-commands/npm-dist-tag) +* `tag` A specific version tagged and published as `tag` See [`npm dist-tag`](/cli-commands/dist-tag) * `path/path/path` See [Local Paths](#local-paths) below For example, these are all valid: @@ -910,10 +910,10 @@ npm will default some values based on package contents. ### SEE ALSO * [semver](/using-npm/semver) -* [npm init](/cli-commands/npm-init) -* [npm version](/cli-commands/npm-version) -* [npm config](/cli-commands/npm-config) -* [npm help](/cli-commands/npm-help) -* [npm install](/cli-commands/npm-install) -* [npm publish](/cli-commands/npm-publish) -* [npm uninstall](/cli-commands/npm-uninstall) +* [npm init](/cli-commands/init) +* [npm version](/cli-commands/version) +* [npm config](/cli-commands/config) +* [npm help](/cli-commands/help) +* [npm install](/cli-commands/install) +* [npm publish](/cli-commands/publish) +* [npm uninstall](/cli-commands/uninstall) diff --git a/deps/npm/docs/content/configuring-npm/package-lock-json.md b/deps/npm/docs/content/configuring-npm/package-lock-json.md index 9f3ca4683defe7..0ab0aaa4ce247e 100644 --- a/deps/npm/docs/content/configuring-npm/package-lock-json.md +++ b/deps/npm/docs/content/configuring-npm/package-lock-json.md @@ -142,8 +142,8 @@ The dependencies of this dependency, exactly as at the top level. ### See also -* [npm shrinkwrap](/cli-commands/npm-shrinkwrap) +* [npm shrinkwrap](/cli-commands/shrinkwrap) * [shrinkwrap.json](/configuring-npm/shrinkwrap-json) * [package-locks](/configuring-npm/package-locks) * [package.json](/configuring-npm/package-json) -* [npm install](/cli-commands/npm-install) +* [npm install](/cli-commands/install) diff --git a/deps/npm/docs/content/configuring-npm/package-locks.md b/deps/npm/docs/content/configuring-npm/package-locks.md index de65e3c634f077..81d21298ae84dd 100644 --- a/deps/npm/docs/content/configuring-npm/package-locks.md +++ b/deps/npm/docs/content/configuring-npm/package-locks.md @@ -10,7 +10,7 @@ description: An explanation of npm lockfiles ### Description -Conceptually, the "input" to [`npm install`](/cli-commands/npm-install) is a [package.json](/configuring-npm/package-json), while its +Conceptually, the "input" to [`npm install`](/cli-commands/install) is a [package.json](/configuring-npm/package-json), while its "output" is a fully-formed `node_modules` tree: a representation of the dependencies you declared. In an ideal world, npm would work like a pure function: the same `package.json` should produce the exact same `node_modules` @@ -179,4 +179,4 @@ pre-`npm@5.7.0` versions of npm 5, albeit a bit more noisily. Note that if * [package.json](/configuring-npm/package-json) * [package-lock.json](/configuring-npm/package-lock-json) * [shrinkwrap.json](/configuring-npm/shrinkwrap-json) -* [npm shrinkwrap](/cli-commands/npm-shrinkwrap) +* [npm shrinkwrap](/cli-commands/shrinkwrap) diff --git a/deps/npm/docs/content/configuring-npm/shrinkwrap-json.md b/deps/npm/docs/content/configuring-npm/shrinkwrap-json.md index bc5e061d55b095..fcb32952f93776 100644 --- a/deps/npm/docs/content/configuring-npm/shrinkwrap-json.md +++ b/deps/npm/docs/content/configuring-npm/shrinkwrap-json.md @@ -10,7 +10,7 @@ description: A publishable lockfile ### Description -`npm-shrinkwrap.json` is a file created by [`npm shrinkwrap`](/cli-commands/npm-shrinkwrap). It is identical to +`npm-shrinkwrap.json` is a file created by [`npm shrinkwrap`](/cli-commands/shrinkwrap). It is identical to `package-lock.json`, with one major caveat: Unlike `package-lock.json`, `npm-shrinkwrap.json` may be included when publishing a package. @@ -28,7 +28,7 @@ to the manual page for [package-lock.json](/configuring-npm/package-lock-json). ### See also -* [npm shrinkwrap](/cli-commands/npm-shrinkwrap) +* [npm shrinkwrap](/cli-commands/shrinkwrap) * [package-lock.json](/configuring-npm/package-lock-json) * [package.json](/configuring-npm/package-json) -* [npm install](/cli-commands/npm-install) +* [npm install](/cli-commands/install) diff --git a/deps/npm/docs/content/using-npm/config.md b/deps/npm/docs/content/using-npm/config.md index a6947b17d58d15..fcf116d7f1ff66 100644 --- a/deps/npm/docs/content/using-npm/config.md +++ b/deps/npm/docs/content/using-npm/config.md @@ -179,7 +179,7 @@ When "dev" or "development" and running local `npm shrinkwrap`, When "true" submit audit reports alongside `npm install` runs to the default registry and all registries configured for scopes. See the documentation -for [`npm audit`](/cli-commands/npm-audit) for details on what is submitted. +for [`npm audit`](/cli-commands/audit) for details on what is submitted. #### audit-level @@ -270,7 +270,7 @@ well as for the CA information to be stored in a file on disk. * Default: Windows: `%AppData%\npm-cache`, Posix: `~/.npm` * Type: path -The location of npm's cache directory. See [`npm cache`](/cli-commands/npm-cache) +The location of npm's cache directory. See [`npm cache`](/cli-commands/cache) #### cache-lock-stale @@ -456,7 +456,7 @@ packages. When "true" displays the message at the end of each `npm install` aknowledging the number of dependencies looking for funding. -See [`npm fund`](/cli-commands/npm-fund) for details. +See [`npm fund`](/cli-commands/fund) for details. #### git @@ -571,7 +571,7 @@ If true, npm does not run scripts specified in package.json files. A module that will be loaded by the `npm init` command. See the documentation for the [init-package-json](https://github.com/isaacs/init-package-json) module -for more information, or [npm init](/cli-commands/npm-init). +for more information, or [npm init](/cli-commands/init). #### init-author-name @@ -1228,7 +1228,7 @@ version of npm than the latest. * Type: Boolean Set to show short usage output (like the -H output) -instead of complete help when doing [`npm help`](/cli-commands/npm-help). +instead of complete help when doing [`npm help`](/cli-commands/help). #### user @@ -1293,7 +1293,7 @@ Set to `"browser"` to view html help content in the default web browser. ### See also -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [npmrc](/configuring-npm/npmrc) * [npm scripts](/using-npm/scripts) * [npm folders](/configuring-npm/folders) diff --git a/deps/npm/docs/content/using-npm/disputes.md b/deps/npm/docs/content/using-npm/disputes.md index bb2d25663cb26c..37a724e6b0f1c2 100644 --- a/deps/npm/docs/content/using-npm/disputes.md +++ b/deps/npm/docs/content/using-npm/disputes.md @@ -134,4 +134,4 @@ License. ### See also * [npm registry](/using-npm/registry) -* [npm owner](/cli-commands/npm-owner) +* [npm owner](/cli-commands/owner) diff --git a/deps/npm/docs/content/using-npm/orgs.md b/deps/npm/docs/content/using-npm/orgs.md index 9709a12d726752..107bac7a9454bd 100644 --- a/deps/npm/docs/content/using-npm/orgs.md +++ b/deps/npm/docs/content/using-npm/orgs.md @@ -24,8 +24,8 @@ The developer will be able to access packages based on the teams they are on. Ac There are two main commands: -1. `npm team` see [npm team](/cli-commands/npm-team) for more details -2. `npm access` see [npm access](/cli-commands/npm-access) for more details +1. `npm team` see [npm team](/cli-commands/team) for more details +2. `npm access` see [npm access](/cli-commands/access) for more details ### Team Admins create teams @@ -92,6 +92,6 @@ npm access ls-collaborators ### See also -* [npm team](/cli-commands/npm-team) -* [npm access](/cli-commands/npm-access) +* [npm team](/cli-commands/team) +* [npm access](/cli-commands/access) * [npm scope](/using-npm/scope) diff --git a/deps/npm/docs/content/using-npm/registry.md b/deps/npm/docs/content/using-npm/registry.md index cd6a2e4d71eebc..44d0594132929f 100644 --- a/deps/npm/docs/content/using-npm/registry.md +++ b/deps/npm/docs/content/using-npm/registry.md @@ -33,7 +33,7 @@ available at . The registry URL used is determined by the scope of the package (see [`scope`](/using-npm/scope). If no scope is specified, the default registry is used, which is -supplied by the `registry` config parameter. See [`npm config`](/cli-commands/npm-config), +supplied by the `registry` config parameter. See [`npm config`](/cli-commands/config), [`npmrc`](/configuring-npm/npmrc), and [`config`](/using-npm/config) for more on managing npm's configuration. ### Does npm send any information about me back to the registry? @@ -100,7 +100,7 @@ Yes, head over to ### See also -* [npm config](/cli-commands/npm-config) +* [npm config](/cli-commands/config) * [config](/using-npm/config) * [npmrc](/configuring-npm/npmrc) * [npm developers](/using-npm/developers) diff --git a/deps/npm/docs/content/using-npm/removal.md b/deps/npm/docs/content/using-npm/removal.md index 7c836846732403..20f353dc3475d8 100644 --- a/deps/npm/docs/content/using-npm/removal.md +++ b/deps/npm/docs/content/using-npm/removal.md @@ -66,5 +66,5 @@ find /usr/local/{lib/node,bin} -exec grep -l npm \{\} \; ; ### See also -* [npm uninstall](/cli-commands/npm-uninstall) -* [npm prune](/cli-commands/npm-prune) +* [npm uninstall](/cli-commands/uninstall) +* [npm prune](/cli-commands/prune) diff --git a/deps/npm/docs/content/using-npm/scope.md b/deps/npm/docs/content/using-npm/scope.md index 2cbc108f0db92c..81c55060ff601e 100644 --- a/deps/npm/docs/content/using-npm/scope.md +++ b/deps/npm/docs/content/using-npm/scope.md @@ -55,7 +55,7 @@ Or in `package.json`: ``` Note that if the `@` symbol is omitted, in either case, npm will instead attempt to -install from GitHub; see [`npm install`](/cli-commands/npm-install). +install from GitHub; see [`npm install`](/cli-commands/install). ### Requiring scoped packages @@ -125,7 +125,7 @@ that registry instead. ### See also -* [npm install](/cli-commands/npm-install) -* [npm publish](/cli-commands/npm-publish) -* [npm access](/cli-commands/npm-access) +* [npm install](/cli-commands/install) +* [npm publish](/cli-commands/publish) +* [npm access](/cli-commands/access) * [npm registry](/using-npm/registry) diff --git a/deps/npm/docs/content/using-npm/scripts.md b/deps/npm/docs/content/using-npm/scripts.md index a518e804727a51..a9ca433fdea08c 100644 --- a/deps/npm/docs/content/using-npm/scripts.md +++ b/deps/npm/docs/content/using-npm/scripts.md @@ -78,7 +78,7 @@ The advantage of doing these things at `prepublish` time is that they can be don ### Life Cycle Operation Order -#### [`npm publish`](/cli-commands/npm-publish) +#### [`npm publish`](/cli-commands/publish) * `prepublishOnly` * `prepare` @@ -86,12 +86,12 @@ The advantage of doing these things at `prepublish` time is that they can be don * `publish` * `postpublish` -#### [`npm pack`](/cli-commands/npm-pack) +#### [`npm pack`](/cli-commands/pack) * `prepack` * `postpack` -#### [`npm install`](/cli-commands/npm-install) +#### [`npm install`](/cli-commands/install) * `preinstall` * `install` @@ -102,7 +102,7 @@ Also triggers * `prepublish` (when on local) * `prepare` (when on local) -#### [`npm start`](/cli-commands/npm-start) +#### [`npm start`](/cli-commands/start) `npm run start` has an `npm start` shorthand. @@ -290,7 +290,7 @@ above. ### See Also -* [npm run-script](/cli-commands/npm-run-script) +* [npm run-script](/cli-commands/run-script) * [package.json](/configuring-npm/package-json) * [npm developers](/using-npm/developers) -* [npm install](/cli-commands/npm-install) +* [npm install](/cli-commands/install) diff --git a/deps/npm/docs/public/cli-commands/npm-access/index.html b/deps/npm/docs/public/cli-commands/npm-access/index.html index 925113b9b8e9ec..42d6d5374f2655 100644 --- a/deps/npm/docs/public/cli-commands/npm-access/index.html +++ b/deps/npm/docs/public/cli-commands/npm-access/index.html @@ -74,7 +74,7 @@ } } }) -

    npm access

    +

    npm access

    Set access level on published packages

    Synopsis

    npm access public [<package>]
    @@ -137,9 +137,9 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-adduser/index.html b/deps/npm/docs/public/cli-commands/npm-adduser/index.html index 38de0b0d9a8bd4..755c36040bf4c5 100644 --- a/deps/npm/docs/public/cli-commands/npm-adduser/index.html +++ b/deps/npm/docs/public/cli-commands/npm-adduser/index.html @@ -74,7 +74,7 @@ } } }) -

    +

    section: cli-commands title: npm-adduser description: Set access level on published packages

    @@ -132,10 +132,10 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-audit/index.html b/deps/npm/docs/public/cli-commands/npm-audit/index.html index 38e49d8acfd59c..af60442b3d8bbb 100644 --- a/deps/npm/docs/public/cli-commands/npm-audit/index.html +++ b/deps/npm/docs/public/cli-commands/npm-audit/index.html @@ -74,7 +74,7 @@ } } }) -

    npm audit

    +

    npm audit

    Run a security audit

    Synopsis

    npm audit [--json|--parseable|--audit-level=(low|moderate|high|critical)]
    @@ -155,7 +155,7 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bin/index.html b/deps/npm/docs/public/cli-commands/npm-bin/index.html index 9ab0c902e28d7f..a90382b1fa30a7 100644 --- a/deps/npm/docs/public/cli-commands/npm-bin/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bin/index.html @@ -74,7 +74,7 @@ } } }) -

    npm bin

    +

    npm bin

    Display npm bin folder

    Synopsis

    npm bin [-g|--global]
    @@ -82,10 +82,10 @@

    Print the folder where npm will install executables.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bugs/index.html b/deps/npm/docs/public/cli-commands/npm-bugs/index.html index 2be442a22d2257..abdf2358c20769 100644 --- a/deps/npm/docs/public/cli-commands/npm-bugs/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bugs/index.html @@ -74,7 +74,7 @@ } } }) -

    npm bugs

    +

    npm bugs

    Bugs for a package in a web browser maybe

    Synopsis

    npm bugs [<pkgname>]
    @@ -100,11 +100,11 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-build/index.html b/deps/npm/docs/public/cli-commands/npm-build/index.html index 8e1a7d49e31256..d628353420206e 100644 --- a/deps/npm/docs/public/cli-commands/npm-build/index.html +++ b/deps/npm/docs/public/cli-commands/npm-build/index.html @@ -74,7 +74,7 @@ } } }) -

    npm build

    +

    npm build

    Build a package

    Synopsis

    npm build [<package-folder>]
    @@ -89,8 +89,8 @@

        npm run-script build

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bundle/index.html b/deps/npm/docs/public/cli-commands/npm-bundle/index.html index 4860ead9435ed1..1d2afb83593ef2 100644 --- a/deps/npm/docs/public/cli-commands/npm-bundle/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bundle/index.html @@ -74,7 +74,7 @@ } } }) -

    npm bundle

    +

    npm bundle

    REMOVED

    Description

    The npm bundle command has been removed in 1.0, for the simple reason @@ -83,7 +83,7 @@

    Just use npm install now to do what npm bundle used to do.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-cache/index.html b/deps/npm/docs/public/cli-commands/npm-cache/index.html index ae8d90e7b63bc0..f60c5bdab9a212 100644 --- a/deps/npm/docs/public/cli-commands/npm-cache/index.html +++ b/deps/npm/docs/public/cli-commands/npm-cache/index.html @@ -74,7 +74,7 @@ } } }) -

    npm cache

    +

    npm cache

    Manipulates packages cache

    Synopsis

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ci/index.html b/deps/npm/docs/public/cli-commands/npm-ci/index.html index fd0561cfc04ed3..d502204291cba4 100644 --- a/deps/npm/docs/public/cli-commands/npm-ci/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ci/index.html @@ -74,7 +74,7 @@ } } }) -

    npm ci

    +

    npm ci

    Install a project with a clean slate

    Synopsis

    npm ci
    @@ -96,7 +96,7 @@

    "$HOME/.npm"

    Description

    -

    This command is similar to npm install, except it's meant to be used in +

    This command is similar to npm install, except it's meant to be used in automated environments such as test platforms, continuous integration, and deployment -- or any situation where you want to make sure you're doing a clean install of your dependencies. It can be significantly faster than a regular npm @@ -113,7 +113,7 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-completion/index.html b/deps/npm/docs/public/cli-commands/npm-completion/index.html index a97a27f53f494f..e97603b0ab3c9d 100644 --- a/deps/npm/docs/public/cli-commands/npm-completion/index.html +++ b/deps/npm/docs/public/cli-commands/npm-completion/index.html @@ -74,7 +74,7 @@ } } }) -

    npm completion

    +

    npm completion

    Tab Completion for npm

    Synopsis

    source <(npm completion)
    @@ -104,4 +104,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-config/index.html b/deps/npm/docs/public/cli-commands/npm-config/index.html index 445ffb15f02d82..0af6041b1384ff 100644 --- a/deps/npm/docs/public/cli-commands/npm-config/index.html +++ b/deps/npm/docs/public/cli-commands/npm-config/index.html @@ -74,7 +74,7 @@ } } }) -

    npm config

    +

    npm config

    Manage the npm configuration files

    Synopsis

    npm config set <key> <value> [-g|--global]
    @@ -117,7 +117,7 @@ 

    See Also

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-dedupe/index.html b/deps/npm/docs/public/cli-commands/npm-dedupe/index.html index 617444b4bda9fb..6e9e8cca40b85a 100644 --- a/deps/npm/docs/public/cli-commands/npm-dedupe/index.html +++ b/deps/npm/docs/public/cli-commands/npm-dedupe/index.html @@ -74,7 +74,7 @@ } } }) -

    npm dedupe

    +

    npm dedupe

    Reduce duplication

    Synopsis

    npm dedupe
    @@ -111,9 +111,9 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-deprecate/index.html b/deps/npm/docs/public/cli-commands/npm-deprecate/index.html index 188fe3ecfe2d58..18996ef9a79b39 100644 --- a/deps/npm/docs/public/cli-commands/npm-deprecate/index.html +++ b/deps/npm/docs/public/cli-commands/npm-deprecate/index.html @@ -74,7 +74,7 @@ } } }) -

    npm deprecate

    +

    npm deprecate

    Deprecate a version of a package

    Synopsis

    npm deprecate <pkg>[@<version>] <message>
    @@ -91,7 +91,7 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html b/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html index d5644af8ace98b..6a79d5c45dfa03 100644 --- a/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html +++ b/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html @@ -74,7 +74,7 @@ } } }) -

    +

    section: cli-commands title: npm-dist-tag description: Modify package distribution tags

    @@ -136,11 +136,11 @@

    v.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-docs/index.html b/deps/npm/docs/public/cli-commands/npm-docs/index.html index 1ce1101b8f389c..f83c2dcc919064 100644 --- a/deps/npm/docs/public/cli-commands/npm-docs/index.html +++ b/deps/npm/docs/public/cli-commands/npm-docs/index.html @@ -74,7 +74,7 @@ } } }) -

    npm docs

    +

    npm docs

    Docs for a package in a web browser maybe

    Synopsis

    npm docs [<pkgname> [<pkgname> ...]]
    @@ -102,10 +102,10 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-doctor/index.html b/deps/npm/docs/public/cli-commands/npm-doctor/index.html index 8d7a375fd38362..af07d1dc13ddc8 100644 --- a/deps/npm/docs/public/cli-commands/npm-doctor/index.html +++ b/deps/npm/docs/public/cli-commands/npm-doctor/index.html @@ -74,7 +74,7 @@ } } }) -

    npm doctor

    +

    npm doctor

    Check your environments

    Synopsis

    npm doctor
    @@ -153,9 +153,9 @@

    npm cache clean and reset the cache.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-edit/index.html b/deps/npm/docs/public/cli-commands/npm-edit/index.html index 54e32d0a5dbb66..5637ae9b937ffd 100644 --- a/deps/npm/docs/public/cli-commands/npm-edit/index.html +++ b/deps/npm/docs/public/cli-commands/npm-edit/index.html @@ -74,7 +74,7 @@ } } }) -

    npm edit

    +

    npm edit

    Edit an installed package

    Synopsis

    npm edit <pkg>[/<subpkg>...]
    @@ -99,9 +99,9 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-explore/index.html b/deps/npm/docs/public/cli-commands/npm-explore/index.html index 45fdf5557d58ef..b303ef87fa6a25 100644 --- a/deps/npm/docs/public/cli-commands/npm-explore/index.html +++ b/deps/npm/docs/public/cli-commands/npm-explore/index.html @@ -74,7 +74,7 @@ } } }) -

    +

    section: cli-commands title: npm-explore description: Browse an installed package

    @@ -103,10 +103,10 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-fund/index.html b/deps/npm/docs/public/cli-commands/npm-fund/index.html index a924adfadaed53..6316163ea6257c 100644 --- a/deps/npm/docs/public/cli-commands/npm-fund/index.html +++ b/deps/npm/docs/public/cli-commands/npm-fund/index.html @@ -74,7 +74,7 @@ } } }) -

    npm fund

    +

    npm fund

    Retrieve funding information

    Synopsis

        npm fund [<pkg>]
    @@ -117,10 +117,10 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-help-search/index.html b/deps/npm/docs/public/cli-commands/npm-help-search/index.html index ba2f9d323b1287..7d14ad4482c381 100644 --- a/deps/npm/docs/public/cli-commands/npm-help-search/index.html +++ b/deps/npm/docs/public/cli-commands/npm-help-search/index.html @@ -74,7 +74,7 @@ } } }) -

    npm help-search

    +

    npm help-search

    Search npm help documentation

    Synopsis

    npm help-search <text>
    @@ -97,7 +97,7 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-help/index.html b/deps/npm/docs/public/cli-commands/npm-help/index.html index f547a63b990dee..ccb5a130407fac 100644 --- a/deps/npm/docs/public/cli-commands/npm-help/index.html +++ b/deps/npm/docs/public/cli-commands/npm-help/index.html @@ -74,7 +74,7 @@ } } }) -

    npm help

    +

    npm help

    Get help on npm

    Synopsis

    npm help <term> [<terms..>]
    @@ -96,10 +96,10 @@

    npm
  • npm folders
  • -
  • npm config
  • +
  • npm config
  • npmrc
  • package.json
  • -
  • npm help-search
  • +
  • npm help-search
  • πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-hook/index.html b/deps/npm/docs/public/cli-commands/npm-hook/index.html index de18367b6a74c0..bce71b0de492e6 100644 --- a/deps/npm/docs/public/cli-commands/npm-hook/index.html +++ b/deps/npm/docs/public/cli-commands/npm-hook/index.html @@ -74,7 +74,7 @@ } } }) -

    npm hook

    +

    npm hook

    Manage registry hooks

    Synopsis

    npm hook ls [pkg]
    @@ -119,4 +119,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-init/index.html b/deps/npm/docs/public/cli-commands/npm-init/index.html index 436d4865354c9d..534721f110b361 100644 --- a/deps/npm/docs/public/cli-commands/npm-init/index.html +++ b/deps/npm/docs/public/cli-commands/npm-init/index.html @@ -74,7 +74,7 @@ } } }) -

    npm init

    +

    npm init

    create a package.json file

    Synopsis

    npm init [--force|-f|--yes|-y|--scope]
    @@ -117,7 +117,7 @@ 

    https://github.com/isaacs/init-package-json
  • package.json
  • -
  • npm version
  • +
  • npm version
  • npm scope
  • πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html b/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html index 5e4f7b005d1e95..b44a6c6569b2cf 100644 --- a/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html @@ -74,7 +74,7 @@ } } }) -

    npm install-ci-test

    +

    npm install-ci-test

    Install a project with a clean slate and run tests

    Synopsis

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install-test/index.html b/deps/npm/docs/public/cli-commands/npm-install-test/index.html index 3f2748ab4963c1..ca4592503462e3 100644 --- a/deps/npm/docs/public/cli-commands/npm-install-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install-test/index.html @@ -74,7 +74,7 @@ } } }) -

    npm install-test

    +

    npm install-test

    Install package(s) and run tests

    Synopsis

    npm install-test (with no args, in package dir)
    @@ -93,8 +93,8 @@ 

    npm install.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install/index.html b/deps/npm/docs/public/cli-commands/npm-install/index.html index 81db8d705a5725..c809fc102b07d0 100644 --- a/deps/npm/docs/public/cli-commands/npm-install/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install/index.html @@ -74,7 +74,7 @@ } } }) -

    npm install

    +

    npm install

    Install a package

    Synopsis

    npm install (with no args, in package dir)
    @@ -95,14 +95,14 @@ 

    This command installs a package, and any packages that it depends on. If the package has a package-lock or shrinkwrap file, the installation of dependencies will be driven by that, with an npm-shrinkwrap.json taking precedence if both -files exist. See package-lock.json and npm shrinkwrap.

    +files exist. See package-lock.json and npm shrinkwrap.

    A package is:

    • a) a folder containing a program described by a package.json file
    • b) a gzipped tarball containing (a)
    • c) a url that resolves to (b)
    • d) a <name>@<version> that is published on the registry (see registry) with (c)
    • -
    • e) a <name>@<tag> (see npm dist-tag) that points to (d)
    • +
    • e) a <name>@<tag> (see npm dist-tag) that points to (d)
    • f) a <name> that has a "latest" tag satisfying (e)
    • g) a <git remote url> that resolves to (a)
    @@ -447,19 +447,19 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-link/index.html b/deps/npm/docs/public/cli-commands/npm-link/index.html index a4f7fcee914700..1b0a4516ea94b9 100644 --- a/deps/npm/docs/public/cli-commands/npm-link/index.html +++ b/deps/npm/docs/public/cli-commands/npm-link/index.html @@ -74,7 +74,7 @@ } } }) -

    npm link

    +

    npm link

    Synopsis

    npm link (in package dir)
    @@ -123,9 +123,9 @@ 

    npm developers
  • package.json
  • -
  • npm- nstall
  • +
  • npm- nstall
  • npm folders
  • -
  • npm config
  • +
  • npm config
  • npmrc
  • πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-logout/index.html b/deps/npm/docs/public/cli-commands/npm-logout/index.html index 3168c941901e4b..3ed2e62a05a4bf 100644 --- a/deps/npm/docs/public/cli-commands/npm-logout/index.html +++ b/deps/npm/docs/public/cli-commands/npm-logout/index.html @@ -74,7 +74,7 @@ } } }) -

    npm logout

    +

    npm logout

    Log out of the registry

    Synopsis

    npm logout [--registry=<url>] [--scope=<@scope>]
    @@ -98,10 +98,10 @@

    npm logout --scope=@myco

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ls/index.html b/deps/npm/docs/public/cli-commands/npm-ls/index.html index 60e60c921ad328..3cc086aace514a 100644 --- a/deps/npm/docs/public/cli-commands/npm-ls/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ls/index.html @@ -74,7 +74,7 @@ } } }) -

    npm ls

    +

    npm ls

    List installed packages

    Synopsis

    npm ls [[<@scope>/]<pkg> ...]
    @@ -87,7 +87,7 @@ 

    also show the paths to the specified packages. For example, running npm ls promzard in npm's source tree will show:

    -

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-org/index.html b/deps/npm/docs/public/cli-commands/npm-org/index.html index 6ca3da7e31974b..c522ab4571b5a2 100644 --- a/deps/npm/docs/public/cli-commands/npm-org/index.html +++ b/deps/npm/docs/public/cli-commands/npm-org/index.html @@ -74,7 +74,7 @@ } } }) -

    npm org

    +

    npm org

    Manage orgs

    Synopsis

    npm org set <orgname> <username> [developer | admin | owner]
    @@ -107,4 +107,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-outdated/index.html b/deps/npm/docs/public/cli-commands/npm-outdated/index.html index a9764a487afdc2..270d8ed1417a28 100644 --- a/deps/npm/docs/public/cli-commands/npm-outdated/index.html +++ b/deps/npm/docs/public/cli-commands/npm-outdated/index.html @@ -74,7 +74,7 @@ } } }) -

    npm outdated

    +

    npm outdated

    Check for outdated packages

    Synopsis

    npm outdated [[<@scope>/]<pkg> ...]
    @@ -167,8 +167,8 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-owner/index.html b/deps/npm/docs/public/cli-commands/npm-owner/index.html index 7eb600b8972ed9..2d2a9205b791b1 100644 --- a/deps/npm/docs/public/cli-commands/npm-owner/index.html +++ b/deps/npm/docs/public/cli-commands/npm-owner/index.html @@ -74,7 +74,7 @@ } } }) -

    npm owner

    +

    npm owner

    Manage package owners

    Synopsis

    npm owner add <user> [<@scope>/]<pkg>
    @@ -103,9 +103,9 @@ 

    --otp.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-pack/index.html b/deps/npm/docs/public/cli-commands/npm-pack/index.html index f0920804fde85b..c17aa71cea7303 100644 --- a/deps/npm/docs/public/cli-commands/npm-pack/index.html +++ b/deps/npm/docs/public/cli-commands/npm-pack/index.html @@ -74,7 +74,7 @@ } } }) -

    npm pack

    +

    npm pack

    Create a tarball from a package

    Synopsis

    npm pack [[<@scope>/]<pkg>...] [--dry-run]
    @@ -91,9 +91,9 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ping/index.html b/deps/npm/docs/public/cli-commands/npm-ping/index.html index a3c47f6d5cf5c4..12d116088d3a10 100644 --- a/deps/npm/docs/public/cli-commands/npm-ping/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ping/index.html @@ -74,7 +74,7 @@ } } }) -

    npm ping

    +

    npm ping

    Ping npm registry

    Synopsis

    npm ping [--registry <registry>]
    @@ -86,7 +86,7 @@

    Ping error: {*Detail about error}

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-prefix/index.html b/deps/npm/docs/public/cli-commands/npm-prefix/index.html index bd592f89e1b8a5..6d181e522dedc5 100644 --- a/deps/npm/docs/public/cli-commands/npm-prefix/index.html +++ b/deps/npm/docs/public/cli-commands/npm-prefix/index.html @@ -74,7 +74,7 @@ } } }) -

    npm prefix

    +

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-profile/index.html b/deps/npm/docs/public/cli-commands/npm-profile/index.html index ae212cc643e90c..2be07fe468bd92 100644 --- a/deps/npm/docs/public/cli-commands/npm-profile/index.html +++ b/deps/npm/docs/public/cli-commands/npm-profile/index.html @@ -74,7 +74,7 @@ } } }) -

    npm profile

    +

    npm profile

    Change settings on your registry profile

    Synopsis

    npm profile get [--json|--parseable] [<property>]
    @@ -140,7 +140,7 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-prune/index.html b/deps/npm/docs/public/cli-commands/npm-prune/index.html index aa9972bf58d0b0..9acabd16d78bab 100644 --- a/deps/npm/docs/public/cli-commands/npm-prune/index.html +++ b/deps/npm/docs/public/cli-commands/npm-prune/index.html @@ -74,7 +74,7 @@ } } }) -

    npm prune

    +

    npm prune

    Remove extraneous packages

    Synopsis

    npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
    @@ -98,9 +98,9 @@

    npm prune from time-to-time to remove them.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-publish/index.html b/deps/npm/docs/public/cli-commands/npm-publish/index.html index 9d163ecb6640a0..12adfb432ac484 100644 --- a/deps/npm/docs/public/cli-commands/npm-publish/index.html +++ b/deps/npm/docs/public/cli-commands/npm-publish/index.html @@ -74,7 +74,7 @@ } } }) -

    npm publish

    +

    npm publish

    Publish a package

    Synopsis

    npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>] [--otp otpcode] [--dry-run]
    @@ -117,11 +117,11 @@ 

    Once a package is published with a given name and version, that specific name and version combination can never be used again, even if -it is removed with npm unpublish.

    +it is removed with npm unpublish.

    As of npm@5, both a sha1sum and an integrity field with a sha512sum of the tarball will be submitted to the registry during publication. Subsequent installs will use the strongest supported algorithm to verify downloads.

    -

    Similar to --dry-run see npm pack, which figures out the files to be +

    Similar to --dry-run see npm pack, which figures out the files to be included and packs them into a tarball to be uploaded to the registry.

    See Also

      @@ -140,4 +140,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-rebuild/index.html b/deps/npm/docs/public/cli-commands/npm-rebuild/index.html index a5252346e9eb21..a1544c2c7cc28e 100644 --- a/deps/npm/docs/public/cli-commands/npm-rebuild/index.html +++ b/deps/npm/docs/public/cli-commands/npm-rebuild/index.html @@ -74,7 +74,7 @@ } } }) -

    npm rebuild

    +

    npm rebuild

    Rebuild a package

    Synopsis

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-repo/index.html b/deps/npm/docs/public/cli-commands/npm-repo/index.html index 4eae022c2d1c01..479482c78b6c29 100644 --- a/deps/npm/docs/public/cli-commands/npm-repo/index.html +++ b/deps/npm/docs/public/cli-commands/npm-repo/index.html @@ -74,7 +74,7 @@ } } }) -

    npm repo

    +

    npm repo

    Open package repository page in the browser

    Synopsis

    npm repo [<pkg>]
    @@ -92,8 +92,8 @@

    npm repo command to open websites.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-restart/index.html b/deps/npm/docs/public/cli-commands/npm-restart/index.html index 3c7836d0506365..7b15c970ea6332 100644 --- a/deps/npm/docs/public/cli-commands/npm-restart/index.html +++ b/deps/npm/docs/public/cli-commands/npm-restart/index.html @@ -74,7 +74,7 @@ } } }) -

    npm restart

    +

    npm restart

    Restart a package

    Synopsis

    npm restart [-- <args>]
    @@ -100,12 +100,12 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-root/index.html b/deps/npm/docs/public/cli-commands/npm-root/index.html index a26538db7c89a2..5dff9f57139a1e 100644 --- a/deps/npm/docs/public/cli-commands/npm-root/index.html +++ b/deps/npm/docs/public/cli-commands/npm-root/index.html @@ -74,7 +74,7 @@ } } }) -

    npm root

    +

    npm root

    Display npm root

    Synopsis

    npm root [-g]
    @@ -82,10 +82,10 @@

    Print the effective node_modules folder to standard out.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-run-script/index.html b/deps/npm/docs/public/cli-commands/npm-run-script/index.html index 4575220b541478..1543590862643a 100644 --- a/deps/npm/docs/public/cli-commands/npm-run-script/index.html +++ b/deps/npm/docs/public/cli-commands/npm-run-script/index.html @@ -74,7 +74,7 @@ } } }) -

    npm run-script

    +

    npm run-script

    Run arbitrary package scripts

    Synopsis

    npm run-script <command> [--silent] [-- <args>...]
    @@ -131,11 +131,11 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-search/index.html b/deps/npm/docs/public/cli-commands/npm-search/index.html index 1c44fd0cbf4cbd..beb2c3449b0e60 100644 --- a/deps/npm/docs/public/cli-commands/npm-search/index.html +++ b/deps/npm/docs/public/cli-commands/npm-search/index.html @@ -74,7 +74,7 @@ } } }) -

    npm search

    +

    npm search

    Search for packages

    Synopsis

    npm search [-l|--long] [--json] [--parseable] [--no-description] [search terms ...]
    @@ -158,9 +158,9 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html b/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html index aeb9ab9a9d573c..f3de0a29e8f130 100644 --- a/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html +++ b/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html @@ -74,7 +74,7 @@ } } }) -

    npm shrinkwrap

    +

    npm shrinkwrap

    Lock down dependency versions for publication

    Synopsis

    npm shrinkwrap
    @@ -86,14 +86,14 @@

    package-locks.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-star/index.html b/deps/npm/docs/public/cli-commands/npm-star/index.html index 641b39795e0a83..ea0fbdb1988d75 100644 --- a/deps/npm/docs/public/cli-commands/npm-star/index.html +++ b/deps/npm/docs/public/cli-commands/npm-star/index.html @@ -74,7 +74,7 @@ } } }) -

    npm star

    +

    npm star

    Mark your favorite packages

    Synopsis

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-stars/index.html b/deps/npm/docs/public/cli-commands/npm-stars/index.html index 821469b4585e60..ae9d0a68c5b00e 100644 --- a/deps/npm/docs/public/cli-commands/npm-stars/index.html +++ b/deps/npm/docs/public/cli-commands/npm-stars/index.html @@ -74,7 +74,7 @@ } } }) -

    npm stars

    +

    npm stars

    View packages marked as favorites

    Synopsis

    npm stars [<user>]
    @@ -85,10 +85,10 @@

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-start/index.html b/deps/npm/docs/public/cli-commands/npm-start/index.html index 3cc8120bd3b82b..38a286bf5391a7 100644 --- a/deps/npm/docs/public/cli-commands/npm-start/index.html +++ b/deps/npm/docs/public/cli-commands/npm-start/index.html @@ -74,7 +74,7 @@ } } }) -

    npm start

    +

    npm start

    Start a package

    Synopsis

    npm start [-- <args>]
    @@ -83,14 +83,14 @@

    "scripts" object. If no "start" property is specified on the "scripts" object, it will run node server.js.

    As of npm@2.0.0, you can -use custom arguments when executing scripts. Refer to npm run-script for more details.

    +use custom arguments when executing scripts. Refer to npm run-script for more details.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-stop/index.html b/deps/npm/docs/public/cli-commands/npm-stop/index.html index 94c7b6861645d6..be1fd5d5108e0e 100644 --- a/deps/npm/docs/public/cli-commands/npm-stop/index.html +++ b/deps/npm/docs/public/cli-commands/npm-stop/index.html @@ -74,7 +74,7 @@ } } }) -

    npm stop

    +

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-team/index.html b/deps/npm/docs/public/cli-commands/npm-team/index.html index b8af3c5821bb93..438c0af40fa430 100644 --- a/deps/npm/docs/public/cli-commands/npm-team/index.html +++ b/deps/npm/docs/public/cli-commands/npm-team/index.html @@ -74,7 +74,7 @@ } } }) -

    npm team

    +

    npm team

    Manage organization teams and team memberships

    Synopsis

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-test/index.html b/deps/npm/docs/public/cli-commands/npm-test/index.html index f65035e5b24501..0e509da74b22b9 100644 --- a/deps/npm/docs/public/cli-commands/npm-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-test/index.html @@ -74,7 +74,7 @@ } } }) -

    npm test

    +

    npm test

    Test a package

    Synopsis

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-token/index.html b/deps/npm/docs/public/cli-commands/npm-token/index.html index f94d350e8dc925..16d94a6d7176ba 100644 --- a/deps/npm/docs/public/cli-commands/npm-token/index.html +++ b/deps/npm/docs/public/cli-commands/npm-token/index.html @@ -74,7 +74,7 @@ } } }) -

    npm token

    +

    npm token

    Manage your authentication tokens

    Synopsis

      npm token list [--json|--parseable]
    @@ -133,4 +133,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-uninstall/index.html b/deps/npm/docs/public/cli-commands/npm-uninstall/index.html index 80f165f90dd781..9264061d7c3525 100644 --- a/deps/npm/docs/public/cli-commands/npm-uninstall/index.html +++ b/deps/npm/docs/public/cli-commands/npm-uninstall/index.html @@ -74,7 +74,7 @@ } } }) -

    npm uninstall

    +

    npm uninstall

    Remove a package

    Synopsis

    npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|-D|--save-dev|-O|--save-optional|--no-save]
    @@ -106,10 +106,10 @@ 

    npm uninstall lodash --no-save

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-unpublish/index.html b/deps/npm/docs/public/cli-commands/npm-unpublish/index.html index 7f42a97a7def07..ae663f1eb94ffa 100644 --- a/deps/npm/docs/public/cli-commands/npm-unpublish/index.html +++ b/deps/npm/docs/public/cli-commands/npm-unpublish/index.html @@ -74,16 +74,15 @@ } } }) -

    npm unpublish

    +

    npm unpublish

    Remove a package from the registry

    Synopsis

    -
    npm unpublish [<@scope>/]<pkg>[@<version>]
    +

    Unpublishing a single version of a package

    +
    npm unpublish [<@scope>/]<pkg>@<version>
    +

    Unpublishing an entire package

    +
    npm unpublish [<@scope>/]<pkg> --force

    Warning

    -

    It is generally considered bad behavior to remove versions of a library -that others are depending on!

    -

    Consider using the deprecate command -instead, if your intent is to encourage users to upgrade.

    -

    There is plenty of room on the registry.

    +

    Consider using the deprecate command instead, if your intent is to encourage users to upgrade, or if you no longer want to maintain a package.

    Description

    This removes a package version from the registry, deleting its entry and removing the tarball.

    @@ -91,21 +90,15 @@

    Even if a package version is unpublished, that specific name and version combination can never be reused. In order to publish the -package again, a new version number must be used. Additionally, -new versions of packages with every version unpublished may not -be republished until 24 hours have passed.

    -

    With the default registry (registry.npmjs.org), unpublish is -only allowed with versions published in the last 72 hours. If you -are trying to unpublish a version published longer ago than that, -contact support@npmjs.com.

    -

    The scope is optional and follows the usual rules for scope.

    +package again, a new version number must be used. If you unpublish the entire package, you may not publish any new versions of that package until 24 hours have passed.

    +

    To learn more about how unpublish is treated on the npm registry, see our unpublish policies.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-update/index.html b/deps/npm/docs/public/cli-commands/npm-update/index.html index 2f81638b91dd3e..19e83c6baf524f 100644 --- a/deps/npm/docs/public/cli-commands/npm-update/index.html +++ b/deps/npm/docs/public/cli-commands/npm-update/index.html @@ -74,7 +74,7 @@ } } }) -

    npm update

    +

    npm update

    Update a package

    Synopsis

    npm update [-g] [<pkg>...]
    @@ -148,17 +148,18 @@ 

    Updating Globally-Installed Packages

    npm update -g will apply the update action to each globally installed package that is outdated -- that is, has a version that is different from -latest.

    +wanted.

    +

    Note: Globally installed packages are treated as if they are installed with a caret semver range specified. So if you require to update to latest you may need to run npm install -g [<pkg>...]

    NOTE: If a package has been upgraded to a version newer than latest, it will be downgraded.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-version/index.html b/deps/npm/docs/public/cli-commands/npm-version/index.html index 047c689cf3007e..59d72822ff9509 100644 --- a/deps/npm/docs/public/cli-commands/npm-version/index.html +++ b/deps/npm/docs/public/cli-commands/npm-version/index.html @@ -74,7 +74,7 @@ } } }) -

    npm version

    +

    npm version

    Bump a package version

    Synopsis

    npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
    @@ -167,8 +167,8 @@ 

    Note that you must have a default GPG key set up in your git config for this to work properly.

    See Also

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-view/index.html b/deps/npm/docs/public/cli-commands/npm-view/index.html index 23115f84ff6163..3fc7a4bd29fbf1 100644 --- a/deps/npm/docs/public/cli-commands/npm-view/index.html +++ b/deps/npm/docs/public/cli-commands/npm-view/index.html @@ -74,7 +74,7 @@ } } }) -

    npm view

    +

    npm view

    View registry info

    Synopsis

    npm view [<@scope>/]<name>[@<version>] [<field>[.<subfield>]...]
    @@ -133,11 +133,11 @@ 

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-whoami/index.html b/deps/npm/docs/public/cli-commands/npm-whoami/index.html index aca97476eb19bb..30f978f3423be9 100644 --- a/deps/npm/docs/public/cli-commands/npm-whoami/index.html +++ b/deps/npm/docs/public/cli-commands/npm-whoami/index.html @@ -74,7 +74,7 @@ } } }) -

    npm whoami

    +

    npm whoami

    Display npm username

    Synopsis

    npm whoami [--registry <registry>]
    @@ -82,9 +82,9 @@

    Print the username config to standard output.

    See Also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm/index.html b/deps/npm/docs/public/cli-commands/npm/index.html index 610982c2e0d8f0..bfb6cd55911791 100644 --- a/deps/npm/docs/public/cli-commands/npm/index.html +++ b/deps/npm/docs/public/cli-commands/npm/index.html @@ -74,12 +74,12 @@ } } }) -

    npm

    +

    npm

    javascript package manager

    Synopsis

    npm <command> [args]

    Version

    -

    6.14.1

    +

    6.14.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 @@ -211,4 +211,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/folders/index.html b/deps/npm/docs/public/configuring-npm/folders/index.html index 3e94c99b2ce678..af6b56d09bd784 100644 --- a/deps/npm/docs/public/configuring-npm/folders/index.html +++ b/deps/npm/docs/public/configuring-npm/folders/index.html @@ -74,7 +74,7 @@ } } }) -

    folders

    +

    folders

    Folder Structures Used by npm

    Description

    npm puts various things on your computer. That's its job.

    @@ -122,7 +122,7 @@

    Cache

    -

    See npm cache. Cache files are stored in ~/.npm on Posix, or +

    See npm cache. Cache files are stored in ~/.npm on Posix, or %AppData%/npm-cache on Windows.

    This is controlled by the cache configuration param.

    Temp Files

    @@ -226,13 +226,13 @@

    See also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/install/index.html b/deps/npm/docs/public/configuring-npm/install/index.html index 2b9dee47e6dc40..f36bcf6c3606d7 100644 --- a/deps/npm/docs/public/configuring-npm/install/index.html +++ b/deps/npm/docs/public/configuring-npm/install/index.html @@ -74,7 +74,7 @@ } } }) -

    install

    +

    install

    Download and Install npm

    Description

    To publish and install packages to and from the public npm registry, you must install Node.js and the npm command line interface using either a Node version manager or a Node installer. We strongly recommend using a Node version manager to install Node.js and npm. We do not recommend using a Node installer, since the Node installation process installs npm in a directory with local permissions and can cause permissions errors when you run npm packages globally.

    @@ -123,4 +123,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/npmrc/index.html b/deps/npm/docs/public/configuring-npm/npmrc/index.html index b7fed53c905956..a05313359580bc 100644 --- a/deps/npm/docs/public/configuring-npm/npmrc/index.html +++ b/deps/npm/docs/public/configuring-npm/npmrc/index.html @@ -74,7 +74,7 @@ } } }) -

    npmrc

    +

    npmrc

    The npm config files

    Description

    npm gets its config settings from the command line, environment @@ -134,7 +134,7 @@

    See also

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-json/index.html b/deps/npm/docs/public/configuring-npm/package-json/index.html index ef1025e327d9a7..c4f28223828aa1 100644 --- a/deps/npm/docs/public/configuring-npm/package-json/index.html +++ b/deps/npm/docs/public/configuring-npm/package-json/index.html @@ -74,7 +74,7 @@ } } }) -

    package.json

    +

    package.json

    Specifics of npm's package.json handling

    Description

    This document is all you need to know about what's required in your package.json @@ -440,7 +440,7 @@

    range1 || range2 Passes if either range1 or range2 are satisfied.
  • git... See 'Git URLs as Dependencies' below
  • user/repo See 'GitHub URLs' below
  • -
  • tag A specific version tagged and published as tag See npm dist-tag
  • +
  • tag A specific version tagged and published as tag See npm dist-tag
  • path/path/path See Local Paths below
  • For example, these are all valid:

    @@ -699,13 +699,13 @@

    SEE ALSO

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-lock-json/index.html b/deps/npm/docs/public/configuring-npm/package-lock-json/index.html index 7256154fe32d40..b1922b55d44d9d 100644 --- a/deps/npm/docs/public/configuring-npm/package-lock-json/index.html +++ b/deps/npm/docs/public/configuring-npm/package-lock-json/index.html @@ -74,7 +74,7 @@ } } }) -

    package-lock.json

    +

    package-lock.json

    A manifestation of the manifest

    Description

    package-lock.json is automatically generated for any operations where npm @@ -174,11 +174,11 @@

    The dependencies of this dependency, exactly as at the top level.

    See also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-locks/index.html b/deps/npm/docs/public/configuring-npm/package-locks/index.html index 16fdc3eeea2c58..9ca424f40d2dab 100644 --- a/deps/npm/docs/public/configuring-npm/package-locks/index.html +++ b/deps/npm/docs/public/configuring-npm/package-locks/index.html @@ -74,10 +74,10 @@ } } }) -

    package-locks

    +

    package-locks

    An explanation of npm lockfiles

    Description

    -

    Conceptually, the "input" to npm install is a package.json, while its +

    Conceptually, the "input" to npm install is a package.json, while its "output" is a fully-formed node_modules tree: a representation of the dependencies you declared. In an ideal world, npm would work like a pure function: the same package.json should produce the exact same node_modules @@ -206,7 +206,7 @@

    package.json
  • package-lock.json
  • shrinkwrap.json
  • -
  • npm shrinkwrap
  • +
  • npm shrinkwrap
  • πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html b/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html index 1f0ac45677ee5f..95d88d30a59950 100644 --- a/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html +++ b/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html @@ -74,10 +74,10 @@ } } }) -

    npm shrinkwrap.json

    +

    npm shrinkwrap.json

    A publishable lockfile

    Description

    -

    npm-shrinkwrap.json is a file created by npm shrinkwrap. It is identical to +

    npm-shrinkwrap.json is a file created by npm shrinkwrap. It is identical to package-lock.json, with one major caveat: Unlike package-lock.json, npm-shrinkwrap.json may be included when publishing a package.

    The recommended use-case for npm-shrinkwrap.json is applications deployed @@ -91,10 +91,10 @@

    package-lock.json.

    See also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/index.html b/deps/npm/docs/public/index.html index 8b66aab22a4504..265bf4ca533db3 100644 --- a/deps/npm/docs/public/index.html +++ b/deps/npm/docs/public/index.html @@ -128,4 +128,4 @@ } } }) -
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!

    The current stable version of npm is available on GitHub.

    To upgrade, run: npm install npm@latest -g

    \ No newline at end of file +
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!

    The current stable version of npm is available on GitHub.

    To upgrade, run: npm install npm@latest -g

    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/config/index.html b/deps/npm/docs/public/using-npm/config/index.html index 14b2f75498ec67..fa60cc1ed1ca28 100644 --- a/deps/npm/docs/public/using-npm/config/index.html +++ b/deps/npm/docs/public/using-npm/config/index.html @@ -74,7 +74,7 @@ } } }) -

    config

    +

    config

    More than you probably want to know about npm configuration

    Description

    npm gets its configuration values from the following sources, sorted by priority:

    @@ -207,7 +207,7 @@

    npm install runs to the default registry and all registries configured for scopes. See the documentation -for npm audit for details on what is submitted.

    +for npm audit for details on what is submitted.

    audit-level

    -

    The location of npm's cache directory. See npm cache

    +

    The location of npm's cache directory. See npm cache

    cache-lock-stale

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/developers/index.html b/deps/npm/docs/public/using-npm/developers/index.html index 98b491cb57a762..16dfd872f01372 100644 --- a/deps/npm/docs/public/using-npm/developers/index.html +++ b/deps/npm/docs/public/using-npm/developers/index.html @@ -74,7 +74,7 @@ } } }) -

    developers

    +

    developers

    Developer Guide

    Description

    So, you've decided to use npm to develop (and maybe publish/deploy) @@ -259,4 +259,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/disputes/index.html b/deps/npm/docs/public/using-npm/disputes/index.html index 19011ba37b70dc..a96090bc963e98 100644 --- a/deps/npm/docs/public/using-npm/disputes/index.html +++ b/deps/npm/docs/public/using-npm/disputes/index.html @@ -74,7 +74,7 @@ } } }) -

    disputes

    +

    disputes

    Handling Module Name Disputes

    This document describes the steps that you should take to resolve module name disputes with other npm publishers. It also describes special steps you should @@ -184,7 +184,7 @@

    See also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/orgs/index.html b/deps/npm/docs/public/using-npm/orgs/index.html index d3583790ce3568..6985aac6bbf1db 100644 --- a/deps/npm/docs/public/using-npm/orgs/index.html +++ b/deps/npm/docs/public/using-npm/orgs/index.html @@ -74,7 +74,7 @@ } } }) -

    orgs

    +

    orgs

    Working with Teams & Orgs

    Description

    There are three levels of org users:

    @@ -88,8 +88,8 @@

    The developer will be able to access packages based on the teams they are on. Access is either read-write or read-only.

    There are two main commands:

      -
    1. npm team see npm team for more details
    2. -
    3. npm access see npm access for more details
    4. +
    5. npm team see npm team for more details
    6. +
    7. npm access see npm access for more details

    Team Admins create teams

    See also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/registry/index.html b/deps/npm/docs/public/using-npm/registry/index.html index 91e28bb9514e46..332a1d0944b2a6 100644 --- a/deps/npm/docs/public/using-npm/registry/index.html +++ b/deps/npm/docs/public/using-npm/registry/index.html @@ -74,7 +74,7 @@ } } }) -

    registry

    +

    registry

    The JavaScript Package Registry

    Description

    To resolve packages by name and version, npm talks to a registry website @@ -95,7 +95,7 @@

    https://github.com/npm/npm-registry-couchapp.

    The registry URL used is determined by the scope of the package (see scope. If no scope is specified, the default registry is used, which is -supplied by the registry config parameter. See npm config, +supplied by the registry config parameter. See npm config, npmrc, and config for more on managing npm's configuration.

    Does npm send any information about me back to the registry?

    Yes.

    @@ -144,7 +144,7 @@

    https://www.npmjs.com/

    See also

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/removal/index.html b/deps/npm/docs/public/using-npm/removal/index.html index d537016410ea10..cc20f5f3446807 100644 --- a/deps/npm/docs/public/using-npm/removal/index.html +++ b/deps/npm/docs/public/using-npm/removal/index.html @@ -74,7 +74,7 @@ } } }) -

    removal

    +

    removal

    Cleaning the Slate

    Synopsis

    So sad to see you go.

    @@ -107,8 +107,8 @@

    See also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/scope/index.html b/deps/npm/docs/public/using-npm/scope/index.html index 1fcfa14853a6e3..fdd0038f4ddd80 100644 --- a/deps/npm/docs/public/using-npm/scope/index.html +++ b/deps/npm/docs/public/using-npm/scope/index.html @@ -74,7 +74,7 @@ } } }) -

    scope

    +

    scope

    Scoped packages

    Description

    All npm packages have a name. Some package names also have a scope. A scope @@ -106,7 +106,7 @@

    "@myorg/mypackage": "^1.3.0" }

    Note that if the @ symbol is omitted, in either case, npm will instead attempt to -install from GitHub; see npm install.

    +install from GitHub; see npm install.

    Requiring scoped packages

    Because scoped packages are installed into a scope folder, you have to include the name of the scope when requiring them in your code, e.g.

    @@ -148,9 +148,9 @@

    See also

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/scripts/index.html b/deps/npm/docs/public/using-npm/scripts/index.html index 8e10a99e532e68..aab873ddb350ea 100644 --- a/deps/npm/docs/public/using-npm/scripts/index.html +++ b/deps/npm/docs/public/using-npm/scripts/index.html @@ -74,7 +74,7 @@ } } }) -

    scripts

    +

    scripts

    How npm handles the "scripts" field

    Description

    The "scripts" property of of your package.json file supports a number of built-in scripts and their preset life cycle events as well as arbitrary scripts. These all can be executed by running npm run-script <stage> or npm run <stage> for short. Pre and post commands with matching names will be run for those as well (e.g. premyscript, myscript, postmyscript). Scripts from dependencies can be run with npm explore <pkg> -- npm run <stage>.

    @@ -138,7 +138,7 @@

    Life Cycle Operation Order

    -

    npm publish

    +

    npm publish

    -

    npm pack

    +

    npm pack

    • prepack
    • postpack
    -

    npm install

    +

    npm install

    -

    npm start

    +

    npm start

    npm run start has an npm start shorthand.

    πŸ‘€ Found a typo? Let us know!

    The current stable version of npm is here. To upgrade, run: npm install npm@latest -g

    To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/semver/index.html b/deps/npm/docs/public/using-npm/semver/index.html index bd26f5f4d4ce09..513a6cf741a421 100644 --- a/deps/npm/docs/public/using-npm/semver/index.html +++ b/deps/npm/docs/public/using-npm/semver/index.html @@ -74,7 +74,7 @@ } } }) -

    semver(7) -- The semantic versioner for npm

    +

    semver(7) -- The semantic versioner for npm

    Install

    npm install --save semver

    Usage

    @@ -435,4 +435,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/lib/team.js b/deps/npm/lib/team.js index 2b56e3b14f95bb..e24f733475a23a 100644 --- a/deps/npm/lib/team.js +++ b/deps/npm/lib/team.js @@ -14,10 +14,10 @@ team.subcommands = ['create', 'destroy', 'add', 'rm', 'ls', 'edit'] team.usage = usage( 'team', - 'npm team create \n' + - 'npm team destroy \n' + - 'npm team add \n' + - 'npm team rm \n' + + 'npm team create [--otp ]\n' + + 'npm team destroy [--otp ]\n' + + 'npm team add [--otp ]\n' + + 'npm team rm [--otp ]\n' + 'npm team ls |\n' + 'npm team edit ' ) diff --git a/deps/npm/lib/unpublish.js b/deps/npm/lib/unpublish.js index 203c8b592f1099..59d7d1b5887d21 100644 --- a/deps/npm/lib/unpublish.js +++ b/deps/npm/lib/unpublish.js @@ -20,7 +20,11 @@ const readJson = BB.promisify(require('read-package-json')) const usage = require('./utils/usage.js') const whoami = BB.promisify(require('./whoami.js')) -unpublish.usage = usage('npm unpublish [<@scope>/][@]') +unpublish.usage = usage( + 'unpublish', + '\nnpm unpublish [<@scope>/]@' + + '\nnpm unpublish [<@scope>/] --force' +) function UsageError () { throw Object.assign(new Error(`Usage: ${unpublish.usage}`), { @@ -75,7 +79,7 @@ function unpublish (args, cb) { 'Refusing to delete entire project.\n' + 'Run with --force to do this.\n' + unpublish.usage - ), {code: 'EUSAGE'}) + ), { code: 'EUSAGE' }) } if (!spec || path.resolve(spec.name) === npm.localPrefix) { // if there's a package.json in the current folder, then diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1 index bc250bdaabc40c..2ba6afd57c0e2f 100644 --- a/deps/npm/man/man1/npm-README.1 +++ b/deps/npm/man/man1/npm-README.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "February 2020" "" "" +.TH "NPM" "1" "March 2020" "" "" .SH "NAME" \fBnpm\fR \- a JavaScript package manager .P diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 5521fd45a5ea05..448c9859a44a62 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ACCESS" "1" "February 2020" "" "" +.TH "NPM\-ACCESS" "1" "March 2020" "" "" .SH "NAME" \fBnpm-access\fR \- Set access level on published packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index 9e2ed19a86b336..3d005b13029d1a 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -3,7 +3,7 @@ section: cli\-commands title: npm\-adduser .SH description: Set access level on published packages -.TH "NPM\-ADDUSER" "1" "February 2020" "" "" +.TH "NPM\-ADDUSER" "1" "March 2020" "" "" .SH "NAME" \fBnpm-adduser\fR \- Add a registry user account .SS Synopsis diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1 index 3665ef2f7b690a..d0a77fdf0d7815 100644 --- a/deps/npm/man/man1/npm-audit.1 +++ b/deps/npm/man/man1/npm-audit.1 @@ -1,4 +1,4 @@ -.TH "NPM\-AUDIT" "1" "February 2020" "" "" +.TH "NPM\-AUDIT" "1" "March 2020" "" "" .SH "NAME" \fBnpm-audit\fR \- Run a security audit .SS Synopsis diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1 index 806e11757fb0e7..26480b0d0ff647 100644 --- a/deps/npm/man/man1/npm-bin.1 +++ b/deps/npm/man/man1/npm-bin.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BIN" "1" "February 2020" "" "" +.TH "NPM\-BIN" "1" "March 2020" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SS Synopsis diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 019763dd8c8c0e..1566c8706c1c53 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUGS" "1" "February 2020" "" "" +.TH "NPM\-BUGS" "1" "March 2020" "" "" .SH "NAME" \fBnpm-bugs\fR \- Bugs for a package in a web browser maybe .SS Synopsis diff --git a/deps/npm/man/man1/npm-build.1 b/deps/npm/man/man1/npm-build.1 index f199a43ad95303..20919da86c19f8 100644 --- a/deps/npm/man/man1/npm-build.1 +++ b/deps/npm/man/man1/npm-build.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUILD" "1" "February 2020" "" "" +.TH "NPM\-BUILD" "1" "March 2020" "" "" .SH "NAME" \fBnpm-build\fR \- Build a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-bundle.1 b/deps/npm/man/man1/npm-bundle.1 index 7c927041da9d1d..a2cb2ad35b4f2a 100644 --- a/deps/npm/man/man1/npm-bundle.1 +++ b/deps/npm/man/man1/npm-bundle.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUNDLE" "1" "February 2020" "" "" +.TH "NPM\-BUNDLE" "1" "March 2020" "" "" .SH "NAME" \fBnpm-bundle\fR \- REMOVED .SS Description diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 330f127fed0cf3..30186d7925cf8f 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CACHE" "1" "February 2020" "" "" +.TH "NPM\-CACHE" "1" "March 2020" "" "" .SH "NAME" \fBnpm-cache\fR \- Manipulates packages cache .SS Synopsis diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1 index ae835891432faa..625cf2ef7b4eea 100644 --- a/deps/npm/man/man1/npm-ci.1 +++ b/deps/npm/man/man1/npm-ci.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CI" "1" "February 2020" "" "" +.TH "NPM\-CI" "1" "March 2020" "" "" .SH "NAME" \fBnpm-ci\fR \- Install a project with a clean slate .SS Synopsis diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index 92d201f8c05539..263e04cba27875 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM\-COMPLETION" "1" "February 2020" "" "" +.TH "NPM\-COMPLETION" "1" "March 2020" "" "" .SH "NAME" \fBnpm-completion\fR \- Tab Completion for npm .SS Synopsis diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 278a7df70c65ef..2c71ad1410e40c 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "1" "February 2020" "" "" +.TH "NPM\-CONFIG" "1" "March 2020" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SS Synopsis diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index 22653cc2729c4f..53e71c0f405040 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEDUPE" "1" "February 2020" "" "" +.TH "NPM\-DEDUPE" "1" "March 2020" "" "" .SH "NAME" \fBnpm-dedupe\fR \- Reduce duplication .SS Synopsis diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index 82a5c34b1b4302..3d7c160d987b33 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEPRECATE" "1" "February 2020" "" "" +.TH "NPM\-DEPRECATE" "1" "March 2020" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index 9fe3f66a3b6b91..9e8fb37ac0db3b 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -3,7 +3,7 @@ section: cli\-commands title: npm\-dist\-tag .SH description: Modify package distribution tags -.TH "NPM\-DIST\-TAG" "1" "February 2020" "" "" +.TH "NPM\-DIST\-TAG" "1" "March 2020" "" "" .SH "NAME" \fBnpm-dist-tag\fR \- Modify package distribution tags .SS Synopsis diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index 24d9054c06839a..e518a5082fd6de 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCS" "1" "February 2020" "" "" +.TH "NPM\-DOCS" "1" "March 2020" "" "" .SH "NAME" \fBnpm-docs\fR \- Docs for a package in a web browser maybe .SS Synopsis diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1 index fb947f1b205a70..4c04a7b6be9d41 100644 --- a/deps/npm/man/man1/npm-doctor.1 +++ b/deps/npm/man/man1/npm-doctor.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCTOR" "1" "February 2020" "" "" +.TH "NPM\-DOCTOR" "1" "March 2020" "" "" .SH "NAME" \fBnpm-doctor\fR \- Check your environments .SS Synopsis diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index 2f8332a88813c0..9f992f04d55f65 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EDIT" "1" "February 2020" "" "" +.TH "NPM\-EDIT" "1" "March 2020" "" "" .SH "NAME" \fBnpm-edit\fR \- Edit an installed package .SS Synopsis diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index bce86b07718fd9..74159220becef2 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -3,7 +3,7 @@ section: cli\-commands title: npm\-explore .SH description: Browse an installed package -.TH "NPM\-EXPLORE" "1" "February 2020" "" "" +.TH "NPM\-EXPLORE" "1" "March 2020" "" "" .SH "NAME" \fBnpm-explore\fR \- Browse an installed package .SS Synopsis diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1 index 75e3eb5bc36ae3..e4c418f8dae881 100644 --- a/deps/npm/man/man1/npm-fund.1 +++ b/deps/npm/man/man1/npm-fund.1 @@ -1,4 +1,4 @@ -.TH "NPM\-FUND" "1" "February 2020" "" "" +.TH "NPM\-FUND" "1" "March 2020" "" "" .SH "NAME" \fBnpm-fund\fR \- Retrieve funding information .SS Synopsis diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 35020590bcfc59..19c7d7b5f5693d 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP\-SEARCH" "1" "February 2020" "" "" +.TH "NPM\-HELP\-SEARCH" "1" "March 2020" "" "" .SH "NAME" \fBnpm-help-search\fR \- Search npm help documentation .SS Synopsis diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index 3e1f7cf8cbd64c..6fa907cc9000f2 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP" "1" "February 2020" "" "" +.TH "NPM\-HELP" "1" "March 2020" "" "" .SH "NAME" \fBnpm-help\fR \- Get help on npm .SS Synopsis diff --git a/deps/npm/man/man1/npm-hook.1 b/deps/npm/man/man1/npm-hook.1 index a7f11bbf11ae21..74169fb4423c60 100644 --- a/deps/npm/man/man1/npm-hook.1 +++ b/deps/npm/man/man1/npm-hook.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HOOK" "1" "February 2020" "" "" +.TH "NPM\-HOOK" "1" "March 2020" "" "" .SH "NAME" \fBnpm-hook\fR \- Manage registry hooks .SS Synopsis diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 50e1bfa21b01e0..5c1b522ccbf7bb 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INIT" "1" "February 2020" "" "" +.TH "NPM\-INIT" "1" "March 2020" "" "" .SH "NAME" \fBnpm-init\fR \- create a package\.json file .SS Synopsis diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1 index b9de2ba2a63c74..e5962b93fdae02 100644 --- a/deps/npm/man/man1/npm-install-ci-test.1 +++ b/deps/npm/man/man1/npm-install-ci-test.1 @@ -1,4 +1,4 @@ -.TH "NPM" "" "February 2020" "" "" +.TH "NPM" "" "March 2020" "" "" .SH "NAME" \fBnpm\fR .SS Synopsis diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index d5fb253f77c1e8..73c7400b73d3de 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,4 +1,4 @@ -.TH "NPM" "" "February 2020" "" "" +.TH "NPM" "" "March 2020" "" "" .SH "NAME" \fBnpm\fR .SS Synopsis diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index 099a1534e13cdd..6bd9a4cd58e440 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL" "1" "February 2020" "" "" +.TH "NPM\-INSTALL" "1" "March 2020" "" "" .SH "NAME" \fBnpm-install\fR \- Install a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index f9f4ec3e37aea8..79ad02d88ca0db 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LINK" "1" "February 2020" "" "" +.TH "NPM\-LINK" "1" "March 2020" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SS Synopsis diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 7f53279a540c4a..d9020ea68413cb 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LOGOUT" "1" "February 2020" "" "" +.TH "NPM\-LOGOUT" "1" "March 2020" "" "" .SH "NAME" \fBnpm-logout\fR \- Log out of the registry .SS Synopsis diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index a621cf829ecd91..550ae7c67d177a 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LS" "1" "February 2020" "" "" +.TH "NPM\-LS" "1" "March 2020" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SS Synopsis @@ -22,7 +22,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show: .P .RS 2 .nf - npm@6\.14\.1 /path/to/npm + npm@6\.14\.3 /path/to/npm └─┬ init\-package\-json@0\.0\.4 └── promzard@0\.1\.5 .fi diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1 index b8fde0ed95d641..d3f1531252ed66 100644 --- a/deps/npm/man/man1/npm-org.1 +++ b/deps/npm/man/man1/npm-org.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ORG" "1" "February 2020" "" "" +.TH "NPM\-ORG" "1" "March 2020" "" "" .SH "NAME" \fBnpm-org\fR \- Manage orgs .SS Synopsis diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index f547f08a1c3187..808555c7b1b989 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OUTDATED" "1" "February 2020" "" "" +.TH "NPM\-OUTDATED" "1" "March 2020" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index 1c15beef6cff14..f0e2f07a0cbc9a 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OWNER" "1" "February 2020" "" "" +.TH "NPM\-OWNER" "1" "March 2020" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SS Synopsis diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index eca5f3c7b6dbb1..dac6963b4a2672 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PACK" "1" "February 2020" "" "" +.TH "NPM\-PACK" "1" "March 2020" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 0611ffe2e1186b..28ae935229cda4 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PING" "1" "February 2020" "" "" +.TH "NPM\-PING" "1" "March 2020" "" "" .SH "NAME" \fBnpm-ping\fR \- Ping npm registry .SS Synopsis diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index d65e3b45ecc5f0..3b695b870e085b 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PREFIX" "1" "February 2020" "" "" +.TH "NPM\-PREFIX" "1" "March 2020" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SS Synopsis diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1 index ee5018341e54d3..b0990f099e5085 100644 --- a/deps/npm/man/man1/npm-profile.1 +++ b/deps/npm/man/man1/npm-profile.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PROFILE" "1" "February 2020" "" "" +.TH "NPM\-PROFILE" "1" "March 2020" "" "" .SH "NAME" \fBnpm-profile\fR \- Change settings on your registry profile .SS Synopsis diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index 81c474ccf08979..b51f829ca9c9fc 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PRUNE" "1" "February 2020" "" "" +.TH "NPM\-PRUNE" "1" "March 2020" "" "" .SH "NAME" \fBnpm-prune\fR \- Remove extraneous packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index 7bb65ff36bd82a..eec1f60120a4cd 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PUBLISH" "1" "February 2020" "" "" +.TH "NPM\-PUBLISH" "1" "March 2020" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 9666d94ab1408a..7e0d43fadf134d 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REBUILD" "1" "February 2020" "" "" +.TH "NPM\-REBUILD" "1" "March 2020" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 3da701d2e09417..68920454a69173 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REPO" "1" "February 2020" "" "" +.TH "NPM\-REPO" "1" "March 2020" "" "" .SH "NAME" \fBnpm-repo\fR \- Open package repository page in the browser .SS Synopsis diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 25d39529847e4b..d90bebb90633d5 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RESTART" "1" "February 2020" "" "" +.TH "NPM\-RESTART" "1" "March 2020" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index b87596ea23ed79..dab19fcabf5a0e 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ROOT" "1" "February 2020" "" "" +.TH "NPM\-ROOT" "1" "March 2020" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SS Synopsis diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index e0ae4fe6a3bb8a..8a7d2b6e2ff06c 100644 --- a/deps/npm/man/man1/npm-run-script.1 +++ b/deps/npm/man/man1/npm-run-script.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RUN\-SCRIPT" "1" "February 2020" "" "" +.TH "NPM\-RUN\-SCRIPT" "1" "March 2020" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SS Synopsis diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index 6ba914b01bc002..9b9b7861dab818 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SEARCH" "1" "February 2020" "" "" +.TH "NPM\-SEARCH" "1" "March 2020" "" "" .SH "NAME" \fBnpm-search\fR \- Search for packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index 07283a8a326360..59b2e499d1e9bf 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP" "1" "February 2020" "" "" +.TH "NPM\-SHRINKWRAP" "1" "March 2020" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR \- Lock down dependency versions for publication .SS Synopsis diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index e8384832905bd4..e5a18f85be1374 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STAR" "1" "February 2020" "" "" +.TH "NPM\-STAR" "1" "March 2020" "" "" .SH "NAME" \fBnpm-star\fR \- Mark your favorite packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 5f666362a90058..bcc7cce20518c1 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STARS" "1" "February 2020" "" "" +.TH "NPM\-STARS" "1" "March 2020" "" "" .SH "NAME" \fBnpm-stars\fR \- View packages marked as favorites .SS Synopsis diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index b7d61384e4a3de..64a22b7cb9461a 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM\-START" "1" "February 2020" "" "" +.TH "NPM\-START" "1" "March 2020" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 15b7fea95073f1..5144671e15fcdd 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STOP" "1" "February 2020" "" "" +.TH "NPM\-STOP" "1" "March 2020" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index 5b04f786639a04..6e0b1da57d6e06 100644 --- a/deps/npm/man/man1/npm-team.1 +++ b/deps/npm/man/man1/npm-team.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEAM" "1" "February 2020" "" "" +.TH "NPM\-TEAM" "1" "March 2020" "" "" .SH "NAME" \fBnpm-team\fR \- Manage organization teams and team memberships .SS Synopsis @@ -23,6 +23,8 @@ handle permissions for packages\. .P Teams must always be fully qualified with the organization/scope they belong to when operating on them, separated by a colon (\fB:\fP)\. That is, if you have a \fBwombats\fP team in a \fBwisdom\fP organization, you must always refer to that team as \fBwisdom:wombats\fP in these commands\. +.P +If you have two\-factor authentication enabled in \fBauth\-and\-writes\fP mode, then you can provide a code from your authenticator with \fB[\-\-otp ]\fP\|\. If you don't include this then you will be prompted\. .RS 0 .IP \(bu 2 create / destroy: diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index c5e017eaea2dca..fed0b5d5bb2dd1 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEST" "1" "February 2020" "" "" +.TH "NPM\-TEST" "1" "March 2020" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index 7e2a93d2621959..2ef8c563f1eb30 100644 --- a/deps/npm/man/man1/npm-token.1 +++ b/deps/npm/man/man1/npm-token.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TOKEN" "1" "February 2020" "" "" +.TH "NPM\-TOKEN" "1" "March 2020" "" "" .SH "NAME" \fBnpm-token\fR \- Manage your authentication tokens .SS Synopsis diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index a46cc6b1e153cf..72172f08c8f1fb 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNINSTALL" "1" "February 2020" "" "" +.TH "NPM\-UNINSTALL" "1" "March 2020" "" "" .SH "NAME" \fBnpm-uninstall\fR \- Remove a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index 73c4c17b0d047b..5db95caffc36d5 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,22 +1,24 @@ -.TH "NPM\-UNPUBLISH" "1" "February 2020" "" "" +.TH "NPM\-UNPUBLISH" "1" "March 2020" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SS Synopsis +.SS Unpublishing a single version of a package .P .RS 2 .nf -npm unpublish [<@scope>/][@] +npm unpublish [<@scope>/]@ .fi .RE -.SS Warning -.P -\fBIt is generally considered bad behavior to remove versions of a library -that others are depending on!\fR +.SS Unpublishing an entire package .P -Consider using the \fBdeprecate\fP command -instead, if your intent is to encourage users to upgrade\. +.RS 2 +.nf +npm unpublish [<@scope>/] \-\-force +.fi +.RE +.SS Warning .P -There is plenty of room on the registry\. +Consider using the \fBdeprecate\fP command instead, if your intent is to encourage users to upgrade, or if you no longer want to maintain a package\. .SS Description .P This removes a package version from the registry, deleting its @@ -27,16 +29,9 @@ the root package entry is removed from the registry entirely\. .P Even if a package version is unpublished, that specific name and version combination can never be reused\. In order to publish the -package again, a new version number must be used\. Additionally, -new versions of packages with every version unpublished may not -be republished until 24 hours have passed\. -.P -With the default registry (\fBregistry\.npmjs\.org\fP), unpublish is -only allowed with versions published in the last 72 hours\. If you -are trying to unpublish a version published longer ago than that, -contact support@npmjs\.com\|\. +package again, a new version number must be used\. If you unpublish the entire package, you may not publish any new versions of that package until 24 hours have passed\. .P -The scope is optional and follows the usual rules for npm help \fBscope\fP\|\. +To learn more about how unpublish is treated on the npm registry, see our unpublish policies\|\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index e91c4a0a09f236..b236b1eaaaa561 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UPDATE" "1" "February 2020" "" "" +.TH "NPM\-UPDATE" "1" "March 2020" "" "" .SH "NAME" \fBnpm-update\fR \- Update a package .SS Synopsis @@ -120,7 +120,9 @@ version that satisfies \fB^0\.4\.0\fP (\fB>= 0\.4\.0 <0\.5\.0\fP) .P \fBnpm update \-g\fP will apply the \fBupdate\fP action to each globally installed package that is \fBoutdated\fP \-\- that is, has a version that is different from -\fBlatest\fP\|\. +\fBwanted\fP\|\. +.P +Note: Globally installed packages are treated as if they are installed with a caret semver range specified\. So if you require to update to \fBlatest\fP you may need to run \fBnpm install \-g [\.\.\.]\fP .P NOTE: If a package has been upgraded to a version newer than \fBlatest\fP, it will be \fIdowngraded\fR\|\. diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 83040d7709325f..22dc7a71ed4b01 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VERSION" "1" "February 2020" "" "" +.TH "NPM\-VERSION" "1" "March 2020" "" "" .SH "NAME" \fBnpm-version\fR \- Bump a package version .SS Synopsis diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index 7aec57fbc7c631..0bed92ababc3dd 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VIEW" "1" "February 2020" "" "" +.TH "NPM\-VIEW" "1" "March 2020" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SS Synopsis diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index 1fe3c7a0327f46..c581a1f0a4d363 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM\-WHOAMI" "1" "February 2020" "" "" +.TH "NPM\-WHOAMI" "1" "March 2020" "" "" .SH "NAME" \fBnpm-whoami\fR \- Display npm username .SS Synopsis diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index d2626ef19f1a35..3a0308ea98f117 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "February 2020" "" "" +.TH "NPM" "1" "March 2020" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SS Synopsis @@ -10,7 +10,7 @@ npm [args] .RE .SS Version .P -6\.14\.1 +6\.14\.3 .SS Description .P npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5 index 95b668999f2aee..c88bdecd34f1e8 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "February 2020" "" "" +.TH "FOLDERS" "5" "March 2020" "" "" .SH "NAME" \fBfolders\fR \- Folder Structures Used by npm .SS Description diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index 745eab3ed3f637..9309aa1f17c006 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "February 2020" "" "" +.TH "INSTALL" "5" "March 2020" "" "" .SH "NAME" \fBinstall\fR \- Download and Install npm .SS Description diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index f3f9057d883786..bc3f8fdaed0e5b 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "February 2020" "" "" +.TH "NPMRC" "5" "March 2020" "" "" .SH "NAME" \fBnpmrc\fR \- The npm config files .SS Description diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5 index f188a08e50a416..13d90854131429 100644 --- a/deps/npm/man/man5/package-json.5 +++ b/deps/npm/man/man5/package-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\.JSON" "5" "February 2020" "" "" +.TH "PACKAGE\.JSON" "5" "March 2020" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SS Description diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5 index 6a4dece03d0027..43c6e419367742 100644 --- a/deps/npm/man/man5/package-lock-json.5 +++ b/deps/npm/man/man5/package-lock-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\-LOCK\.JSON" "5" "February 2020" "" "" +.TH "PACKAGE\-LOCK\.JSON" "5" "March 2020" "" "" .SH "NAME" \fBpackage-lock.json\fR \- A manifestation of the manifest .SS Description diff --git a/deps/npm/man/man5/package-locks.5 b/deps/npm/man/man5/package-locks.5 index 0658ff24682af8..f610e42ba4ba4a 100644 --- a/deps/npm/man/man5/package-locks.5 +++ b/deps/npm/man/man5/package-locks.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\-LOCKS" "5" "February 2020" "" "" +.TH "PACKAGE\-LOCKS" "5" "March 2020" "" "" .SH "NAME" \fBpackage-locks\fR \- An explanation of npm lockfiles .SS Description diff --git a/deps/npm/man/man5/shrinkwrap-json.5 b/deps/npm/man/man5/shrinkwrap-json.5 index 11f24412a9c637..e891c84ecff4ee 100644 --- a/deps/npm/man/man5/shrinkwrap-json.5 +++ b/deps/npm/man/man5/shrinkwrap-json.5 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP\.JSON" "5" "February 2020" "" "" +.TH "NPM\-SHRINKWRAP\.JSON" "5" "March 2020" "" "" .SH "NAME" \fBnpm-shrinkwrap.json\fR \- A publishable lockfile .SS Description diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7 index 32612e44c55fd3..0f653366b1d287 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "February 2020" "" "" +.TH "CONFIG" "7" "March 2020" "" "" .SH "NAME" \fBconfig\fR \- More than you probably want to know about npm configuration .SS Description diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index da4a8a0af5c91c..a84548af27c641 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "February 2020" "" "" +.TH "DEVELOPERS" "7" "March 2020" "" "" .SH "NAME" \fBdevelopers\fR \- Developer Guide .SS Description diff --git a/deps/npm/man/man7/disputes.7 b/deps/npm/man/man7/disputes.7 index 64088b488db647..a94c70b3d833de 100644 --- a/deps/npm/man/man7/disputes.7 +++ b/deps/npm/man/man7/disputes.7 @@ -1,4 +1,4 @@ -.TH "DISPUTES" "7" "February 2020" "" "" +.TH "DISPUTES" "7" "March 2020" "" "" .SH "NAME" \fBdisputes\fR \- Handling Module Name Disputes .P diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index 9674c00d19b788..418537ead8c219 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGS" "7" "February 2020" "" "" +.TH "ORGS" "7" "March 2020" "" "" .SH "NAME" \fBorgs\fR \- Working with Teams & Orgs .SS Description diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index 1bfb2dcf609e52..f22059121e843b 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "February 2020" "" "" +.TH "REGISTRY" "7" "March 2020" "" "" .SH "NAME" \fBregistry\fR \- The JavaScript Package Registry .SS Description diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7 index cfc7bce1ba978b..7b7322628f2c65 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "February 2020" "" "" +.TH "REMOVAL" "7" "March 2020" "" "" .SH "NAME" \fBremoval\fR \- Cleaning the Slate .SS Synopsis diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7 index 6c6aae668bd97b..1884347b8b6ab1 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "February 2020" "" "" +.TH "SCOPE" "7" "March 2020" "" "" .SH "NAME" \fBscope\fR \- Scoped packages .SS Description diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7 index b9103a3f2de47d..17b549b05e7c1c 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,4 +1,4 @@ -.TH "SCRIPTS" "7" "February 2020" "" "" +.TH "SCRIPTS" "7" "March 2020" "" "" .SH "NAME" \fBscripts\fR \- How npm handles the "scripts" field .SS Description diff --git a/deps/npm/man/man7/semver.7 b/deps/npm/man/man7/semver.7 index 85623a5000adaa..419716a83d737a 100644 --- a/deps/npm/man/man7/semver.7 +++ b/deps/npm/man/man7/semver.7 @@ -1,4 +1,4 @@ -.TH "SEMVER" "7" "February 2020" "" "" +.TH "SEMVER" "7" "March 2020" "" "" .SH "NAME" \fBsemver\fR \- The semantic versioner for npm .SH Install diff --git a/deps/npm/node_modules/glob/README.md b/deps/npm/node_modules/glob/README.md index e71b967ea28809..0916a48255cd6f 100644 --- a/deps/npm/node_modules/glob/README.md +++ b/deps/npm/node_modules/glob/README.md @@ -371,3 +371,5 @@ npm run bench # to profile javascript npm run prof ``` + +![](oh-my-glob.gif) diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json index 788801e299e45f..0e1fa5805bccbc 100644 --- a/deps/npm/node_modules/glob/package.json +++ b/deps/npm/node_modules/glob/package.json @@ -1,23 +1,24 @@ { - "_from": "glob@7.1.4", - "_id": "glob@7.1.4", + "_from": "glob@7.1.6", + "_id": "glob@7.1.6", "_inBundle": false, - "_integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "_integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "_location": "/glob", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "glob@7.1.4", + "raw": "glob@7.1.6", "name": "glob", "escapedName": "glob", - "rawSpec": "7.1.4", + "rawSpec": "7.1.6", "saveSpec": null, - "fetchSpec": "7.1.4" + "fetchSpec": "7.1.6" }, "_requiredBy": [ "#USER", "/", + "/cacache", "/deglob", "/eslint", "/init-package-json", @@ -30,10 +31,10 @@ "/tap-mocha-reporter", "/test-exclude" ], - "_resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "_shasum": "aa608a2f6c577ad357e1ae5a5c26d9a8d1969255", - "_spec": "glob@7.1.4", - "_where": "/Users/isaacs/dev/npm/cli", + "_resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "_shasum": "141f33b81a7c2492e125594307480c46679278a6", + "_spec": "glob@7.1.6", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me", @@ -67,6 +68,9 @@ "sync.js", "common.js" ], + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, "homepage": "https://github.com/isaacs/node-glob#readme", "license": "ISC", "main": "glob.js", @@ -84,5 +88,5 @@ "test": "tap test/*.js --cov", "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js" }, - "version": "7.1.4" + "version": "7.1.6" } diff --git a/deps/npm/node_modules/hosted-git-info/CHANGELOG.md b/deps/npm/node_modules/hosted-git-info/CHANGELOG.md index 21fe13ca652fce..4f86601e029e95 100644 --- a/deps/npm/node_modules/hosted-git-info/CHANGELOG.md +++ b/deps/npm/node_modules/hosted-git-info/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [2.8.8](https://github.com/npm/hosted-git-info/compare/v2.8.7...v2.8.8) (2020-02-29) + + +### Bug Fixes + +* [#61](https://github.com/npm/hosted-git-info/issues/61) & [#65](https://github.com/npm/hosted-git-info/issues/65) addressing issues w/ url.URL implmentation which regressed node 6 support ([5038b18](https://github.com/npm/hosted-git-info/commit/5038b18)), closes [#66](https://github.com/npm/hosted-git-info/issues/66) + + + ## [2.8.7](https://github.com/npm/hosted-git-info/compare/v2.8.6...v2.8.7) (2020-02-26) diff --git a/deps/npm/node_modules/hosted-git-info/index.js b/deps/npm/node_modules/hosted-git-info/index.js index 08fa329760d8b4..21e53fe3724be1 100644 --- a/deps/npm/node_modules/hosted-git-info/index.js +++ b/deps/npm/node_modules/hosted-git-info/index.js @@ -120,7 +120,7 @@ function parseGitUrl (giturl) { // Pull off just the auth and host, so we dont' get the confusing // scp-style URL, then pass that to the WhatWG parser to get the // auth properly escaped. - const authmatch = giturl.match(/[^@]+@[^:/]+/) + var authmatch = giturl.match(/[^@]+@[^:/]+/) /* istanbul ignore else - this should be impossible */ if (authmatch) { var whatwg = new url.URL(authmatch[0]) diff --git a/deps/npm/node_modules/hosted-git-info/package.json b/deps/npm/node_modules/hosted-git-info/package.json index 7ce00ce18c551b..8d9c2b2046c742 100644 --- a/deps/npm/node_modules/hosted-git-info/package.json +++ b/deps/npm/node_modules/hosted-git-info/package.json @@ -1,19 +1,19 @@ { - "_from": "hosted-git-info@2.8.7", - "_id": "hosted-git-info@2.8.7", + "_from": "hosted-git-info@2.8.8", + "_id": "hosted-git-info@2.8.8", "_inBundle": false, - "_integrity": "sha512-ChkjQtKJ3GI6SsI4O5jwr8q8EPrWCnxuc4Tbx+vRI5x6mDOpjKKltNo1lRlszw3xwgTOSns1ZRBiMmmwpcvLxg==", + "_integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "_location": "/hosted-git-info", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "hosted-git-info@2.8.7", + "raw": "hosted-git-info@2.8.8", "name": "hosted-git-info", "escapedName": "hosted-git-info", - "rawSpec": "2.8.7", + "rawSpec": "2.8.8", "saveSpec": null, - "fetchSpec": "2.8.7" + "fetchSpec": "2.8.8" }, "_requiredBy": [ "#USER", @@ -21,10 +21,10 @@ "/normalize-package-data", "/npm-package-arg" ], - "_resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.7.tgz", - "_shasum": "4d2e0d5248e1cfabc984b0f6a6d75fe36e679511", - "_spec": "hosted-git-info@2.8.7", - "_where": "/Users/isaacs/dev/npm/cli", + "_resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "_shasum": "7539bd4bc1e0e0a895815a2e0262420b12858488", + "_spec": "hosted-git-info@2.8.8", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli", "author": { "name": "Rebecca Turner", "email": "me@re-becca.org", @@ -65,8 +65,8 @@ "posttest": "standard", "prerelease": "npm t", "release": "standard-version -s", - "test": "tap -J --100 --no-esm test/*.js", - "test:coverage": "tap --coverage-report=html -J --100 --no-esm test/*.js" + "test": "tap -J --coverage=90 --no-esm test/*.js", + "test:coverage": "tap --coverage-report=html -J --coverage=90 --no-esm test/*.js" }, - "version": "2.8.7" + "version": "2.8.8" } diff --git a/deps/npm/node_modules/minimist/.travis.yml b/deps/npm/node_modules/minimist/.travis.yml deleted file mode 100644 index cc4dba29d959a2..00000000000000 --- a/deps/npm/node_modules/minimist/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/deps/npm/node_modules/mkdirp/examples/pow.js b/deps/npm/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e6924212e6a244..00000000000000 --- a/deps/npm/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/deps/npm/node_modules/mkdirp/.travis.yml b/deps/npm/node_modules/mkdirp/node_modules/minimist/.travis.yml similarity index 100% rename from deps/npm/node_modules/mkdirp/.travis.yml rename to deps/npm/node_modules/mkdirp/node_modules/minimist/.travis.yml diff --git a/deps/npm/node_modules/minimist/LICENSE b/deps/npm/node_modules/mkdirp/node_modules/minimist/LICENSE similarity index 100% rename from deps/npm/node_modules/minimist/LICENSE rename to deps/npm/node_modules/mkdirp/node_modules/minimist/LICENSE diff --git a/deps/npm/node_modules/minimist/example/parse.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/example/parse.js similarity index 72% rename from deps/npm/node_modules/minimist/example/parse.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/example/parse.js index abff3e8ee8f5ef..f7c8d49807f32e 100644 --- a/deps/npm/node_modules/minimist/example/parse.js +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/example/parse.js @@ -1,2 +1,2 @@ var argv = require('../')(process.argv.slice(2)); -console.dir(argv); +console.log(argv); diff --git a/deps/npm/node_modules/minimist/index.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/index.js similarity index 50% rename from deps/npm/node_modules/minimist/index.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/index.js index 584f551a6da734..d5fa9d510fa17e 100644 --- a/deps/npm/node_modules/minimist/index.js +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/index.js @@ -1,16 +1,20 @@ module.exports = function (args, opts) { if (!opts) opts = {}; - - var flags = { bools : {}, strings : {} }; - - [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { - flags.bools[key] = true; - }); - - [].concat(opts.string).filter(Boolean).forEach(function (key) { - flags.strings[key] = true; - }); - + + var flags = { bools : {}, strings : {}, unknownFn: null }; + + if (typeof opts['unknown'] === 'function') { + flags.unknownFn = opts['unknown']; + } + + if (typeof opts['boolean'] === 'boolean' && opts['boolean']) { + flags.allBools = true; + } else { + [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); + } + var aliases = {}; Object.keys(opts.alias || {}).forEach(function (key) { aliases[key] = [].concat(opts.alias[key]); @@ -20,14 +24,21 @@ module.exports = function (args, opts) { })); }); }); - + + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + flags.strings[aliases[key]] = true; + } + }); + var defaults = opts['default'] || {}; - + var argv = { _ : [] }; Object.keys(flags.bools).forEach(function (key) { setArg(key, defaults[key] === undefined ? false : defaults[key]); }); - + var notFlags = []; if (args.indexOf('--') !== -1) { @@ -35,114 +46,183 @@ module.exports = function (args, opts) { args = args.slice(0, args.indexOf('--')); } - function setArg (key, val) { + function argDefined(key, arg) { + return (flags.allBools && /^--[^=]+$/.test(arg)) || + flags.strings[key] || flags.bools[key] || aliases[key]; + } + + function setArg (key, val, arg) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg) === false) return; + } + var value = !flags.strings[key] && isNumber(val) ? Number(val) : val ; setKey(argv, key.split('.'), value); - + (aliases[key] || []).forEach(function (x) { setKey(argv, x.split('.'), value); }); } - + + function setKey (obj, keys, value) { + var o = obj; + for (var i = 0; i < keys.length-1; i++) { + var key = keys[i]; + if (key === '__proto__') return; + if (o[key] === undefined) o[key] = {}; + if (o[key] === Object.prototype || o[key] === Number.prototype + || o[key] === String.prototype) o[key] = {}; + if (o[key] === Array.prototype) o[key] = []; + o = o[key]; + } + + var key = keys[keys.length - 1]; + if (key === '__proto__') return; + if (o === Object.prototype || o === Number.prototype + || o === String.prototype) o = {}; + if (o === Array.prototype) o = []; + if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') { + o[key] = value; + } + else if (Array.isArray(o[key])) { + o[key].push(value); + } + else { + o[key] = [ o[key], value ]; + } + } + + function aliasIsBoolean(key) { + return aliases[key].some(function (x) { + return flags.bools[x]; + }); + } + for (var i = 0; i < args.length; i++) { var arg = args[i]; - + if (/^--.+=/.test(arg)) { // Using [\s\S] instead of . because js doesn't support the // 'dotall' regex modifier. See: // http://stackoverflow.com/a/1068308/13216 var m = arg.match(/^--([^=]+)=([\s\S]*)$/); - setArg(m[1], m[2]); + var key = m[1]; + var value = m[2]; + if (flags.bools[key]) { + value = value !== 'false'; + } + setArg(key, value, arg); } else if (/^--no-.+/.test(arg)) { var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false); + setArg(key, false, arg); } else if (/^--.+/.test(arg)) { var key = arg.match(/^--(.+)/)[1]; var next = args[i + 1]; if (next !== undefined && !/^-/.test(next) && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, next); + && !flags.allBools + && (aliases[key] ? !aliasIsBoolean(key) : true)) { + setArg(key, next, arg); i++; } else if (/^(true|false)$/.test(next)) { - setArg(key, next === 'true'); + setArg(key, next === 'true', arg); i++; } else { - setArg(key, flags.strings[key] ? '' : true); + setArg(key, flags.strings[key] ? '' : true, arg); } } else if (/^-[^-]+/.test(arg)) { var letters = arg.slice(1,-1).split(''); - + var broken = false; for (var j = 0; j < letters.length; j++) { var next = arg.slice(j+2); - + if (next === '-') { - setArg(letters[j], next) + setArg(letters[j], next, arg) continue; } - + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split('=')[1], arg); + broken = true; + break; + } + if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { - setArg(letters[j], next); + setArg(letters[j], next, arg); broken = true; break; } - + if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2)); + setArg(letters[j], arg.slice(j+2), arg); broken = true; break; } else { - setArg(letters[j], flags.strings[letters[j]] ? '' : true); + setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); } } - + var key = arg.slice(-1)[0]; if (!broken && key !== '-') { if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, args[i+1]); + && (aliases[key] ? !aliasIsBoolean(key) : true)) { + setArg(key, args[i+1], arg); i++; } - else if (args[i+1] && /true|false/.test(args[i+1])) { - setArg(key, args[i+1] === 'true'); + else if (args[i+1] && /^(true|false)$/.test(args[i+1])) { + setArg(key, args[i+1] === 'true', arg); i++; } else { - setArg(key, flags.strings[key] ? '' : true); + setArg(key, flags.strings[key] ? '' : true, arg); } } } else { - argv._.push( - flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) - ); + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push( + flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) + ); + } + if (opts.stopEarly) { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } } } - + Object.keys(defaults).forEach(function (key) { if (!hasKey(argv, key.split('.'))) { setKey(argv, key.split('.'), defaults[key]); - + (aliases[key] || []).forEach(function (x) { setKey(argv, x.split('.'), defaults[key]); }); } }); - - notFlags.forEach(function(key) { - argv._.push(key); - }); + + if (opts['--']) { + argv['--'] = new Array(); + notFlags.forEach(function(key) { + argv['--'].push(key); + }); + } + else { + notFlags.forEach(function(key) { + argv._.push(key); + }); + } return argv; }; @@ -157,31 +237,8 @@ function hasKey (obj, keys) { return key in o; } -function setKey (obj, keys, value) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - if (o[key] === undefined) o[key] = {}; - o = o[key]; - }); - - var key = keys[keys.length - 1]; - if (o[key] === undefined || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } -} - function isNumber (x) { if (typeof x === 'number') return true; if (/^0x[0-9a-f]+$/i.test(x)) return true; return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); } - -function longest (xs) { - return Math.max.apply(null, xs.map(function (x) { return x.length })); -} diff --git a/deps/npm/node_modules/minimist/package.json b/deps/npm/node_modules/mkdirp/node_modules/minimist/package.json similarity index 63% rename from deps/npm/node_modules/minimist/package.json rename to deps/npm/node_modules/mkdirp/node_modules/minimist/package.json index 0a1961342b71b0..2846f6885ae634 100644 --- a/deps/npm/node_modules/minimist/package.json +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/package.json @@ -1,27 +1,27 @@ { - "_from": "minimist@0.0.8", - "_id": "minimist@0.0.8", + "_from": "minimist@^1.2.5", + "_id": "minimist@1.2.5", "_inBundle": false, - "_integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "_location": "/minimist", + "_integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "_location": "/mkdirp/minimist", "_phantomChildren": {}, "_requested": { - "type": "version", + "type": "range", "registry": true, - "raw": "minimist@0.0.8", + "raw": "minimist@^1.2.5", "name": "minimist", "escapedName": "minimist", - "rawSpec": "0.0.8", + "rawSpec": "^1.2.5", "saveSpec": null, - "fetchSpec": "0.0.8" + "fetchSpec": "^1.2.5" }, "_requiredBy": [ "/mkdirp" ], - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d", - "_spec": "minimist@0.0.8", - "_where": "/Users/rebecca/code/npm/node_modules/mkdirp", + "_resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "_shasum": "67d66014b66a6a8aaa0c083c5fd58df4e4e97602", + "_spec": "minimist@^1.2.5", + "_where": "/Users/darcyclarke/Documents/Repos/npm/npm/cli/node_modules/mkdirp", "author": { "name": "James Halliday", "email": "mail@substack.net", @@ -34,8 +34,9 @@ "deprecated": false, "description": "parse argument options", "devDependencies": { + "covert": "^1.0.0", "tap": "~0.4.0", - "tape": "~1.0.4" + "tape": "^3.5.0" }, "homepage": "https://github.com/substack/minimist", "keywords": [ @@ -52,6 +53,7 @@ "url": "git://github.com/substack/minimist.git" }, "scripts": { + "coverage": "covert test/*.js", "test": "tap test/*.js" }, "testling": { @@ -67,5 +69,5 @@ "opera/12" ] }, - "version": "0.0.8" + "version": "1.2.5" } diff --git a/deps/npm/node_modules/minimist/readme.markdown b/deps/npm/node_modules/mkdirp/node_modules/minimist/readme.markdown similarity index 53% rename from deps/npm/node_modules/minimist/readme.markdown rename to deps/npm/node_modules/mkdirp/node_modules/minimist/readme.markdown index c25635323e1661..5fd97ab11ee9d8 100644 --- a/deps/npm/node_modules/minimist/readme.markdown +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/readme.markdown @@ -5,15 +5,11 @@ parse argument options This module is the guts of optimist's argument parser without all the fanciful decoration. -[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist) - -[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist) - # example ``` js var argv = require('minimist')(process.argv.slice(2)); -console.dir(argv); +console.log(argv); ``` ``` @@ -33,6 +29,13 @@ $ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz beep: 'boop' } ``` +# security + +Previous versions had a prototype pollution bug that could cause privilege +escalation in some circumstances when handling untrusted user input. + +Please use version 1.2.3 or later: https://snyk.io/vuln/SNYK-JS-MINIMIST-559764 + # methods ``` js @@ -55,10 +58,29 @@ options can be: * `opts.string` - a string or array of strings argument names to always treat as strings -* `opts.boolean` - a string or array of strings to always treat as booleans +* `opts.boolean` - a boolean, string or array of strings to always treat as +booleans. if `true` will treat all double hyphenated arguments without equal signs +as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`) * `opts.alias` - an object mapping string names to strings or arrays of string argument names to use as aliases * `opts.default` - an object mapping string argument names to default values +* `opts.stopEarly` - when true, populate `argv._` with everything after the +first non-option +* `opts['--']` - when true, populate `argv._` with everything before the `--` +and `argv['--']` with everything after the `--`. Here's an example: + + ``` + > require('./')('one two three -- four five --six'.split(' '), { '--': true }) + { _: [ 'one', 'two', 'three' ], + '--': [ 'four', 'five', '--six' ] } + ``` + + Note that with `opts['--']` set, parsing for arguments still stops after the + `--`. + +* `opts.unknown` - a function which is invoked with a command line parameter not +defined in the `opts` configuration object. If the function returns `false`, the +unknown option is not added to `argv`. # install diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/all_bool.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/all_bool.js new file mode 100644 index 00000000000000..25df1654bc99d9 --- /dev/null +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/all_bool.js @@ -0,0 +1,32 @@ +var parse = require('../'); +var test = require('tape'); + +test('flag boolean true (default all --args to boolean)', function (t) { + var argv = parse(['moo', '--honk', 'cow'], { + boolean: true + }); + + t.deepEqual(argv, { + honk: true, + _: ['moo', 'cow'] + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); + +test('flag boolean true only affects double hyphen arguments without equals signs', function (t) { + var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], { + boolean: true + }); + + t.deepEqual(argv, { + honk: true, + tacos: 'good', + p: 55, + _: ['moo', 'cow'] + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/bool.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/bool.js new file mode 100644 index 00000000000000..dc9666bc619755 --- /dev/null +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/bool.js @@ -0,0 +1,178 @@ +var parse = require('../'); +var test = require('tape'); + +test('flag boolean default false', function (t) { + var argv = parse(['moo'], { + boolean: ['t', 'verbose'], + default: { verbose: false, t: false } + }); + + t.deepEqual(argv, { + verbose: false, + t: false, + _: ['moo'] + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); + +}); + +test('boolean groups', function (t) { + var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { + boolean: ['x','y','z'] + }); + + t.deepEqual(argv, { + x : true, + y : false, + z : true, + _ : [ 'one', 'two', 'three' ] + }); + + t.deepEqual(typeof argv.x, 'boolean'); + t.deepEqual(typeof argv.y, 'boolean'); + t.deepEqual(typeof argv.z, 'boolean'); + t.end(); +}); +test('boolean and alias with chainable api', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var opts = { + herp: { alias: 'h', boolean: true } + }; + var aliasedArgv = parse(aliased, { + boolean: 'herp', + alias: { h: 'herp' } + }); + var propertyArgv = parse(regular, { + boolean: 'herp', + alias: { h: 'herp' } + }); + var expected = { + herp: true, + h: true, + '_': [ 'derp' ] + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias with options hash', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var opts = { + alias: { 'h': 'herp' }, + boolean: 'herp' + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + '_': [ 'derp' ] + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias array with options hash', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var alt = [ '--harp', 'derp' ]; + var opts = { + alias: { 'h': ['herp', 'harp'] }, + boolean: 'h' + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var altPropertyArgv = parse(alt, opts); + var expected = { + harp: true, + herp: true, + h: true, + '_': [ 'derp' ] + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.same(altPropertyArgv, expected); + t.end(); +}); + +test('boolean and alias using explicit true', function (t) { + var aliased = [ '-h', 'true' ]; + var regular = [ '--herp', 'true' ]; + var opts = { + alias: { h: 'herp' }, + boolean: 'h' + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + '_': [ ] + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +test('boolean and --x=true', function(t) { + var parsed = parse(['--boool', '--other=true'], { + boolean: 'boool' + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'true'); + + parsed = parse(['--boool', '--other=false'], { + boolean: 'boool' + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'false'); + t.end(); +}); + +test('boolean --boool=true', function (t) { + var parsed = parse(['--boool=true'], { + default: { + boool: false + }, + boolean: ['boool'] + }); + + t.same(parsed.boool, true); + t.end(); +}); + +test('boolean --boool=false', function (t) { + var parsed = parse(['--boool=false'], { + default: { + boool: true + }, + boolean: ['boool'] + }); + + t.same(parsed.boool, false); + t.end(); +}); + +test('boolean using something similar to true', function (t) { + var opts = { boolean: 'h' }; + var result = parse(['-h', 'true.txt'], opts); + var expected = { + h: true, + '_': ['true.txt'] + }; + + t.same(result, expected); + t.end(); +}); \ No newline at end of file diff --git a/deps/npm/node_modules/minimist/test/dash.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dash.js similarity index 74% rename from deps/npm/node_modules/minimist/test/dash.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/test/dash.js index 8b034b99a9eace..5a4fa5be418596 100644 --- a/deps/npm/node_modules/minimist/test/dash.js +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dash.js @@ -22,3 +22,10 @@ test('-a -- b', function (t) { t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); }); + +test('move arguments after the -- into their own `--` array', function(t) { + t.plan(1); + t.deepEqual( + parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }), + { name: 'John', _: [ 'before' ], '--': [ 'after' ] }); +}); diff --git a/deps/npm/node_modules/minimist/test/default_bool.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/default_bool.js similarity index 58% rename from deps/npm/node_modules/minimist/test/default_bool.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/test/default_bool.js index f0041ee40cd05f..780a311270fcda 100644 --- a/deps/npm/node_modules/minimist/test/default_bool.js +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/default_bool.js @@ -18,3 +18,18 @@ test('boolean default false', function (t) { t.equal(argv.somefalse, false); t.end(); }); + +test('boolean default to null', function (t) { + var argv = parse([], { + boolean: 'maybe', + default: { maybe: null } + }); + t.equal(argv.maybe, null); + var argv = parse(['--maybe'], { + boolean: 'maybe', + default: { maybe: null } + }); + t.equal(argv.maybe, true); + t.end(); + +}) diff --git a/deps/npm/node_modules/minimist/test/dotted.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dotted.js similarity index 75% rename from deps/npm/node_modules/minimist/test/dotted.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/test/dotted.js index ef0ae349bf3bf5..d8b3e856ec795f 100644 --- a/deps/npm/node_modules/minimist/test/dotted.js +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dotted.js @@ -14,3 +14,9 @@ test('dotted default', function (t) { t.equal(argv.aa.bb, 11); t.end(); }); + +test('dotted default with no alias', function (t) { + var argv = parse('', {default: {'a.b': 11}}); + t.equal(argv.a.b, 11); + t.end(); +}); diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/kv_short.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/kv_short.js new file mode 100644 index 00000000000000..ae880be4661dd5 --- /dev/null +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/kv_short.js @@ -0,0 +1,16 @@ +var parse = require('../'); +var test = require('tape'); + +test('short -k=v' , function (t) { + t.plan(1); + + var argv = parse([ '-b=123' ]); + t.deepEqual(argv, { b: 123, _: [] }); +}); + +test('multi short -k=v' , function (t) { + t.plan(1); + + var argv = parse([ '-a=whatever', '-b=robots' ]); + t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] }); +}); diff --git a/deps/npm/node_modules/minimist/test/long.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/long.js similarity index 100% rename from deps/npm/node_modules/minimist/test/long.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/test/long.js diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/num.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/num.js new file mode 100644 index 00000000000000..2cc77f4d62ffb2 --- /dev/null +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/num.js @@ -0,0 +1,36 @@ +var parse = require('../'); +var test = require('tape'); + +test('nums', function (t) { + var argv = parse([ + '-x', '1234', + '-y', '5.67', + '-z', '1e7', + '-w', '10f', + '--hex', '0xdeadbeef', + '789' + ]); + t.deepEqual(argv, { + x : 1234, + y : 5.67, + z : 1e7, + w : '10f', + hex : 0xdeadbeef, + _ : [ 789 ] + }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv.y, 'number'); + t.deepEqual(typeof argv.z, 'number'); + t.deepEqual(typeof argv.w, 'string'); + t.deepEqual(typeof argv.hex, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); + +test('already a number', function (t) { + var argv = parse([ '-x', 1234, 789 ]); + t.deepEqual(argv, { x : 1234, _ : [ 789 ] }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); diff --git a/deps/npm/node_modules/minimist/test/parse.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse.js similarity index 54% rename from deps/npm/node_modules/minimist/test/parse.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse.js index 8a90646696628e..58f24572c47d86 100644 --- a/deps/npm/node_modules/minimist/test/parse.js +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse.js @@ -14,7 +14,7 @@ test('parse args', function (t) { ); t.end(); }); - + test('comprehensive', function (t) { t.deepEqual( parse([ @@ -42,32 +42,6 @@ test('comprehensive', function (t) { t.end(); }); -test('nums', function (t) { - var argv = parse([ - '-x', '1234', - '-y', '5.67', - '-z', '1e7', - '-w', '10f', - '--hex', '0xdeadbeef', - '789' - ]); - t.deepEqual(argv, { - x : 1234, - y : 5.67, - z : 1e7, - w : '10f', - hex : 0xdeadbeef, - _ : [ 789 ] - }); - t.deepEqual(typeof argv.x, 'number'); - t.deepEqual(typeof argv.y, 'number'); - t.deepEqual(typeof argv.z, 'number'); - t.deepEqual(typeof argv.w, 'string'); - t.deepEqual(typeof argv.hex, 'number'); - t.deepEqual(typeof argv._[0], 'number'); - t.end(); -}); - test('flag boolean', function (t) { var argv = parse([ '-t', 'moo' ], { boolean: 't' }); t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); @@ -80,58 +54,22 @@ test('flag boolean value', function (t) { boolean: [ 't', 'verbose' ], default: { verbose: true } }); - + t.deepEqual(argv, { verbose: false, t: true, _: ['moo'] }); - - t.deepEqual(typeof argv.verbose, 'boolean'); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); -}); -test('flag boolean default false', function (t) { - var argv = parse(['moo'], { - boolean: ['t', 'verbose'], - default: { verbose: false, t: false } - }); - - t.deepEqual(argv, { - verbose: false, - t: false, - _: ['moo'] - }); - t.deepEqual(typeof argv.verbose, 'boolean'); t.deepEqual(typeof argv.t, 'boolean'); t.end(); - -}); - -test('boolean groups', function (t) { - var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { - boolean: ['x','y','z'] - }); - - t.deepEqual(argv, { - x : true, - y : false, - z : true, - _ : [ 'one', 'two', 'three' ] - }); - - t.deepEqual(typeof argv.x, 'boolean'); - t.deepEqual(typeof argv.y, 'boolean'); - t.deepEqual(typeof argv.z, 'boolean'); - t.end(); }); test('newlines in params' , function (t) { var args = parse([ '-s', "X\nX" ]) t.deepEqual(args, { _ : [], s : "X\nX" }); - + // reproduce in bash: // VALUE="new // line" @@ -145,7 +83,7 @@ test('strings' , function (t) { var s = parse([ '-s', '0001234' ], { string: 's' }).s; t.equal(s, '0001234'); t.equal(typeof s, 'string'); - + var x = parse([ '-x', '56' ], { string: 'x' }).x; t.equal(x, '56'); t.equal(typeof x, 'string'); @@ -183,6 +121,29 @@ test('empty strings', function(t) { }); +test('string and alias', function(t) { + var x = parse([ '--str', '000123' ], { + string: 's', + alias: { s: 'str' } + }); + + t.equal(x.str, '000123'); + t.equal(typeof x.str, 'string'); + t.equal(x.s, '000123'); + t.equal(typeof x.s, 'string'); + + var y = parse([ '-s', '000123' ], { + string: 'str', + alias: { str: 's' } + }); + + t.equal(y.str, '000123'); + t.equal(typeof y.str, 'string'); + t.equal(y.s, '000123'); + t.equal(typeof y.s, 'string'); + t.end(); +}); + test('slashBreak', function (t) { t.same( parse([ '-I/foo/bar/baz' ]), @@ -222,7 +183,7 @@ test('nested dotted objects', function (t) { '--foo.quux.quibble', '5', '--foo.quux.o_O', '--beep.boop' ]); - + t.same(argv.foo, { bar : 3, baz : 4, @@ -234,85 +195,3 @@ test('nested dotted objects', function (t) { t.same(argv.beep, { boop : true }); t.end(); }); - -test('boolean and alias with chainable api', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = parse(aliased, { - boolean: 'herp', - alias: { h: 'herp' } - }); - var propertyArgv = parse(regular, { - boolean: 'herp', - alias: { h: 'herp' } - }); - var expected = { - herp: true, - h: true, - '_': [ 'derp' ] - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias with options hash', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - alias: { 'h': 'herp' }, - boolean: 'herp' - }; - var aliasedArgv = parse(aliased, opts); - var propertyArgv = parse(regular, opts); - var expected = { - herp: true, - h: true, - '_': [ 'derp' ] - }; - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias using explicit true', function (t) { - var aliased = [ '-h', 'true' ]; - var regular = [ '--herp', 'true' ]; - var opts = { - alias: { h: 'herp' }, - boolean: 'h' - }; - var aliasedArgv = parse(aliased, opts); - var propertyArgv = parse(regular, opts); - var expected = { - herp: true, - h: true, - '_': [ ] - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -// regression, see https://github.com/substack/node-optimist/issues/71 -test('boolean and --x=true', function(t) { - var parsed = parse(['--boool', '--other=true'], { - boolean: 'boool' - }); - - t.same(parsed.boool, true); - t.same(parsed.other, 'true'); - - parsed = parse(['--boool', '--other=false'], { - boolean: 'boool' - }); - - t.same(parsed.boool, true); - t.same(parsed.other, 'false'); - t.end(); -}); diff --git a/deps/npm/node_modules/minimist/test/parse_modified.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js similarity index 77% rename from deps/npm/node_modules/minimist/test/parse_modified.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js index 21851b036ee6d9..a22248532f0c6f 100644 --- a/deps/npm/node_modules/minimist/test/parse_modified.js +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js @@ -3,7 +3,7 @@ var test = require('tape'); test('parse with modifier functions' , function (t) { t.plan(1); - + var argv = parse([ '-b', '123' ], { boolean: 'b' }); - t.deepEqual(argv, { b: true, _: ['123'] }); + t.deepEqual(argv, { b: true, _: [123] }); }); diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/proto.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/proto.js new file mode 100644 index 00000000000000..8649107ecba1f0 --- /dev/null +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/proto.js @@ -0,0 +1,44 @@ +var parse = require('../'); +var test = require('tape'); + +test('proto pollution', function (t) { + var argv = parse(['--__proto__.x','123']); + t.equal({}.x, undefined); + t.equal(argv.__proto__.x, undefined); + t.equal(argv.x, undefined); + t.end(); +}); + +test('proto pollution (array)', function (t) { + var argv = parse(['--x','4','--x','5','--x.__proto__.z','789']); + t.equal({}.z, undefined); + t.deepEqual(argv.x, [4,5]); + t.equal(argv.x.z, undefined); + t.equal(argv.x.__proto__.z, undefined); + t.end(); +}); + +test('proto pollution (number)', function (t) { + var argv = parse(['--x','5','--x.__proto__.z','100']); + t.equal({}.z, undefined); + t.equal((4).z, undefined); + t.equal(argv.x, 5); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (string)', function (t) { + var argv = parse(['--x','abc','--x.__proto__.z','def']); + t.equal({}.z, undefined); + t.equal('...'.z, undefined); + t.equal(argv.x, 'abc'); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (constructor)', function (t) { + var argv = parse(['--constructor.prototype.y','123']); + t.equal({}.y, undefined); + t.equal(argv.y, undefined); + t.end(); +}); diff --git a/deps/npm/node_modules/minimist/test/short.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/short.js similarity index 99% rename from deps/npm/node_modules/minimist/test/short.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/test/short.js index d513a1c2529095..ac18880f1eb50c 100644 --- a/deps/npm/node_modules/minimist/test/short.js +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/short.js @@ -43,7 +43,7 @@ test('short', function (t) { ); t.end(); }); - + test('mixed short bool and capture', function (t) { t.same( parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), @@ -54,7 +54,7 @@ test('mixed short bool and capture', function (t) { ); t.end(); }); - + test('short and long', function (t) { t.deepEqual( parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/stop_early.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/stop_early.js new file mode 100644 index 00000000000000..bdf9fbcb0b57ab --- /dev/null +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/stop_early.js @@ -0,0 +1,15 @@ +var parse = require('../'); +var test = require('tape'); + +test('stops parsing on the first non-option when stopEarly is set', function (t) { + var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], { + stopEarly: true + }); + + t.deepEqual(argv, { + aaa: 'bbb', + _: ['ccc', '--ddd'] + }); + + t.end(); +}); diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/unknown.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/unknown.js new file mode 100644 index 00000000000000..462a36bdd7ec9f --- /dev/null +++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/unknown.js @@ -0,0 +1,102 @@ +var parse = require('../'); +var test = require('tape'); + +test('boolean and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = [ '-h', 'true', '--derp', 'true' ]; + var regular = [ '--herp', 'true', '-d', 'true' ]; + var opts = { + alias: { h: 'herp' }, + boolean: 'h', + unknown: unknownFn + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + + t.same(unknown, ['--derp', '-d']); + t.end(); +}); + +test('flag boolean true any double hyphen argument is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], { + boolean: true, + unknown: unknownFn + }); + t.same(unknown, ['--tacos=good', 'cow', '-p']); + t.same(argv, { + honk: true, + _: [] + }); + t.end(); +}); + +test('string and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = [ '-h', 'hello', '--derp', 'goodbye' ]; + var regular = [ '--herp', 'hello', '-d', 'moon' ]; + var opts = { + alias: { h: 'herp' }, + string: 'h', + unknown: unknownFn + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + + t.same(unknown, ['--derp', '-d']); + t.end(); +}); + +test('default and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = [ '-h', 'hello' ]; + var regular = [ '--herp', 'hello' ]; + var opts = { + default: { 'h': 'bar' }, + alias: { 'h': 'herp' }, + unknown: unknownFn + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + + t.same(unknown, []); + t.end(); + unknownFn(); // exercise fn for 100% coverage +}); + +test('value following -- is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = [ '--bad', '--', 'good', 'arg' ]; + var opts = { + '--': true, + unknown: unknownFn + }; + var argv = parse(aliased, opts); + + t.same(unknown, ['--bad']); + t.same(argv, { + '--': ['good', 'arg'], + '_': [] + }) + t.end(); +}); diff --git a/deps/npm/node_modules/minimist/test/whitespace.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/whitespace.js similarity index 100% rename from deps/npm/node_modules/minimist/test/whitespace.js rename to deps/npm/node_modules/mkdirp/node_modules/minimist/test/whitespace.js diff --git a/deps/npm/node_modules/mkdirp/package.json b/deps/npm/node_modules/mkdirp/package.json index aa7b9061128f2f..a880e2ef545118 100644 --- a/deps/npm/node_modules/mkdirp/package.json +++ b/deps/npm/node_modules/mkdirp/package.json @@ -1,47 +1,41 @@ { - "_args": [ - [ - "mkdirp@0.5.1", - "/Users/rebecca/code/npm" - ] - ], - "_from": "mkdirp@0.5.1", - "_id": "mkdirp@0.5.1", + "_from": "mkdirp@0.5.3", + "_id": "mkdirp@0.5.3", "_inBundle": false, - "_integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "_integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", "_location": "/mkdirp", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "mkdirp@0.5.1", + "raw": "mkdirp@0.5.3", "name": "mkdirp", "escapedName": "mkdirp", - "rawSpec": "0.5.1", + "rawSpec": "0.5.3", "saveSpec": null, - "fetchSpec": "0.5.1" + "fetchSpec": "0.5.3" }, "_requiredBy": [ + "#USER", "/", "/cacache", "/cmd-shim", "/copy-concurrently", "/eslint", - "/fstream", "/gentle-fs", + "/libcipm", "/move-concurrently", "/node-gyp", - "/npm-profile/cacache", - "/npm-registry-fetch/cacache", "/pacote", - "/tacks", + "/spawn-wrap", "/tap", "/tar", "/write" ], - "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "_spec": "0.5.1", - "_where": "/Users/rebecca/code/npm", + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "_shasum": "5a514b7179259287952881e94410ec5465659f8c", + "_spec": "mkdirp@0.5.3", + "_where": "/Users/darcyclarke/Documents/Repos/npm/npm/cli", "author": { "name": "James Halliday", "email": "mail@substack.net", @@ -53,14 +47,20 @@ "bugs": { "url": "https://github.com/substack/node-mkdirp/issues" }, + "bundleDependencies": false, "dependencies": { - "minimist": "0.0.8" + "minimist": "^1.2.5" }, + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "description": "Recursively mkdir, like `mkdir -p`", "devDependencies": { - "mock-fs": "2 >=2.7.0", - "tap": "1" + "mock-fs": "^3.7.0", + "tap": "^5.4.2" }, + "files": [ + "bin", + "index.js" + ], "homepage": "https://github.com/substack/node-mkdirp#readme", "keywords": [ "mkdir", @@ -69,6 +69,9 @@ "license": "MIT", "main": "index.js", "name": "mkdirp", + "publishConfig": { + "tag": "legacy" + }, "repository": { "type": "git", "url": "git+https://github.com/substack/node-mkdirp.git" @@ -76,5 +79,5 @@ "scripts": { "test": "tap test/*.js" }, - "version": "0.5.1" + "version": "0.5.3" } diff --git a/deps/npm/node_modules/mkdirp/test/chmod.js b/deps/npm/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 6a404b932f941f..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); -var _0744 = parseInt('0744', 8); - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = _0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & _0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = _0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/clobber.js b/deps/npm/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 2433b9ad548557..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; -var _0755 = parseInt('0755', 8); - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, _0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/mkdirp.js b/deps/npm/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index eaa8921c7f1488..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var exists = fs.exists || path.exists; -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('woo', function (t) { - t.plan(5); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, _0755, function (err) { - t.ifError(err); - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, _0755); - t.ok(stat.isDirectory(), 'target not a directory'); - }) - }) - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/opts_fs.js b/deps/npm/node_modules/mkdirp/test/opts_fs.js deleted file mode 100644 index 97186b62e0bb90..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/opts_fs.js +++ /dev/null @@ -1,29 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var test = require('tap').test; -var mockfs = require('mock-fs'); -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('opts.fs', function (t) { - t.plan(5); - - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/beep/boop/' + [x,y,z].join('/'); - var xfs = mockfs.fs(); - - mkdirp(file, { fs: xfs, mode: _0755 }, function (err) { - t.ifError(err); - xfs.exists(file, function (ex) { - t.ok(ex, 'created file'); - xfs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, _0755); - t.ok(stat.isDirectory(), 'target not a directory'); - }); - }); - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/opts_fs_sync.js b/deps/npm/node_modules/mkdirp/test/opts_fs_sync.js deleted file mode 100644 index 6c370aa6e93a20..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/opts_fs_sync.js +++ /dev/null @@ -1,27 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var test = require('tap').test; -var mockfs = require('mock-fs'); -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('opts.fs sync', function (t) { - t.plan(4); - - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/beep/boop/' + [x,y,z].join('/'); - var xfs = mockfs.fs(); - - mkdirp.sync(file, { fs: xfs, mode: _0755 }); - xfs.exists(file, function (ex) { - t.ok(ex, 'created file'); - xfs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, _0755); - t.ok(stat.isDirectory(), 'target not a directory'); - }); - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/perm.js b/deps/npm/node_modules/mkdirp/test/perm.js deleted file mode 100644 index fbce44b82bafee..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var exists = fs.exists || path.exists; -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('async perm', function (t) { - t.plan(5); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, _0755, function (err) { - t.ifError(err); - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, _0755); - t.ok(stat.isDirectory(), 'target not a directory'); - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', _0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/deps/npm/node_modules/mkdirp/test/perm_sync.js b/deps/npm/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index 398229fe54ab04..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,36 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var exists = fs.exists || path.exists; -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('sync perm', function (t) { - t.plan(4); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, _0755); - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, _0755); - t.ok(stat.isDirectory(), 'target not a directory'); - }); - }); -}); - -test('sync root perm', function (t) { - t.plan(3); - - var file = '/tmp'; - mkdirp.sync(file, _0755); - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - t.ok(stat.isDirectory(), 'target not a directory'); - }) - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/race.js b/deps/npm/node_modules/mkdirp/test/race.js deleted file mode 100644 index b0b9e183c902fb..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var exists = fs.exists || path.exists; -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('race', function (t) { - t.plan(10); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file); - - mk(file); - - function mk (file, cb) { - mkdirp(file, _0755, function (err) { - t.ifError(err); - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, _0755); - t.ok(stat.isDirectory(), 'target not a directory'); - }); - }) - }); - } -}); diff --git a/deps/npm/node_modules/mkdirp/test/rel.js b/deps/npm/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 4ddb34276a72a2..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var exists = fs.exists || path.exists; -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('rel', function (t) { - t.plan(5); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, _0755, function (err) { - t.ifError(err); - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - process.chdir(cwd); - t.equal(stat.mode & _0777, _0755); - t.ok(stat.isDirectory(), 'target not a directory'); - }) - }) - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/return.js b/deps/npm/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e5613e3f9..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(4); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, '/tmp/' + x); - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, null); - }); - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/return_sync.js b/deps/npm/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d3558d6f0..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - // Note that this will throw on failure, which will fail the test. - var made = mkdirp.sync(file); - t.equal(made, '/tmp/' + x); - - // making the same file again should have no effect. - made = mkdirp.sync(file); - t.equal(made, null); -}); diff --git a/deps/npm/node_modules/mkdirp/test/root.js b/deps/npm/node_modules/mkdirp/test/root.js deleted file mode 100644 index 9e7d079d9fc757..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,19 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; -var _0755 = parseInt('0755', 8); - -test('root', function (t) { - // '/' on unix, 'c:/' on windows. - var file = path.resolve('/'); - - mkdirp(file, _0755, function (err) { - if (err) throw err - fs.stat(file, function (er, stat) { - if (er) throw er - t.ok(stat.isDirectory(), 'target is a directory'); - t.end(); - }) - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/sync.js b/deps/npm/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 8c8dc938c8b4a8..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var exists = fs.exists || path.exists; -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('sync', function (t) { - t.plan(4); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file, _0755); - } catch (err) { - t.fail(err); - return t.end(); - } - - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, _0755); - t.ok(stat.isDirectory(), 'target not a directory'); - }); - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/umask.js b/deps/npm/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 2033c63a414efa..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var exists = fs.exists || path.exists; -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('implicit mode from umask', function (t) { - t.plan(5); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - t.ifError(err); - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, _0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - }); - }) - }); -}); diff --git a/deps/npm/node_modules/mkdirp/test/umask_sync.js b/deps/npm/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 11a76147496a52..00000000000000 --- a/deps/npm/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var exists = fs.exists || path.exists; -var test = require('tap').test; -var _0777 = parseInt('0777', 8); -var _0755 = parseInt('0755', 8); - -test('umask sync modes', function (t) { - t.plan(4); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file); - } catch (err) { - t.fail(err); - return t.end(); - } - - exists(file, function (ex) { - t.ok(ex, 'file created'); - fs.stat(file, function (err, stat) { - t.ifError(err); - t.equal(stat.mode & _0777, (_0777 & (~process.umask()))); - t.ok(stat.isDirectory(), 'target not a directory'); - }); - }); -}); diff --git a/deps/npm/node_modules/node-gyp/.github/workflows/Python_tests.yml b/deps/npm/node_modules/node-gyp/.github/workflows/Python_tests.yml new file mode 100644 index 00000000000000..dba9d10933cbf9 --- /dev/null +++ b/deps/npm/node_modules/node-gyp/.github/workflows/Python_tests.yml @@ -0,0 +1,40 @@ +# TODO: Line 15, enable python-version: 3.5 +# TODO: Line 36, enable pytest --doctest-modules + +name: Python_tests +on: [push, pull_request] +jobs: + Python_tests: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + max-parallel: 15 + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + python-version: [2.7, 3.6, 3.7, 3.8] # 3.5, + steps: + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest # -r requirements.txt + - name: Lint with flake8 + if: matrix.os == 'ubuntu-latest' + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest (Linux and macOS) + if: matrix.os != 'windows-latest' + run: pytest + - name: Test with pytest (Windows) + if: matrix.os == 'windows-latest' + shell: bash + run: GYP_MSVS_VERSION=2015 GYP_MSVS_OVERRIDE_PATH="C:\\Dummy" pytest + # - name: Run doctests with pytest + # run: pytest --doctest-modules diff --git a/deps/npm/node_modules/node-gyp/.travis.yml b/deps/npm/node_modules/node-gyp/.travis.yml index e43ba548fb784b..22f7bc12fc349c 100644 --- a/deps/npm/node_modules/node-gyp/.travis.yml +++ b/deps/npm/node_modules/node-gyp/.travis.yml @@ -1,33 +1,17 @@ dist: xenial language: python cache: pip -matrix: +addons: + homebrew: + update: true + packages: + - npm + - pyenv +jobs: include: - name: "Python 2.7 on Linux" env: NODE_GYP_FORCE_PYTHON=python2 python: 2.7 - - name: "Python 2.7 on macOS" - os: osx - osx_image: xcode11.2 - language: shell # 'language: python' is not yet supported on macOS - env: NODE_GYP_FORCE_PYTHON=python2 - before_install: HOMEBREW_NO_AUTO_UPDATE=1 brew install npm - - name: "Node.js 6 & Python 2.7 on Windows" - os: windows - language: node_js - node_js: 6 # node - env: >- - PATH=/c/Python27:/c/Python27/Scripts:$PATH - NODE_GYP_FORCE_PYTHON=/c/Python27/python.exe - before_install: choco install python2 - - name: "Node.js 12 & Python 2.7 on Windows" - os: windows - language: node_js - node_js: 12 # node - env: >- - PATH=/c/Python27:/c/Python27/Scripts:$PATH - NODE_GYP_FORCE_PYTHON=/c/Python27/python.exe - before_install: choco install python2 - name: "Node.js 6 & Python 3.8 on Linux" python: 3.8 @@ -58,12 +42,36 @@ matrix: env: NODE_GYP_FORCE_PYTHON=python3 before_install: nvm install 12 - - name: "Python 3.7 on macOS" + - name: "Python 2.7 on macOS" os: osx osx_image: xcode11.2 language: shell # 'language: python' is not yet supported on macOS - env: NODE_GYP_FORCE_PYTHON=python3 - before_install: HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade npm || true + env: NODE_GYP_FORCE_PYTHON=python2 PATH=$HOME/.pyenv/shims:$PATH PYENV_VERSION=2.7.17 + before_install: pyenv install $PYENV_VERSION + - name: "Python 3.8 on macOS" + os: osx + osx_image: xcode11.2 + language: shell # 'language: python' is not yet supported on macOS + env: NODE_GYP_FORCE_PYTHON=python3 PATH=$HOME/.pyenv/shims:$PATH PYENV_VERSION=3.8.0 + before_install: pyenv install $PYENV_VERSION + + - name: "Node.js 6 & Python 2.7 on Windows" + os: windows + language: node_js + node_js: 6 # node + env: >- + PATH=/c/Python27:/c/Python27/Scripts:$PATH + NODE_GYP_FORCE_PYTHON=/c/Python27/python.exe + before_install: choco install python2 + - name: "Node.js 12 & Python 2.7 on Windows" + os: windows + language: node_js + node_js: 12 # node + env: >- + PATH=/c/Python27:/c/Python27/Scripts:$PATH + NODE_GYP_FORCE_PYTHON=/c/Python27/python.exe + before_install: choco install python2 + - name: "Node.js 12 & Python 3.7 on Windows" os: windows language: node_js @@ -82,20 +90,19 @@ matrix: before_install: choco install python install: - #- pip install -r requirements.txt - - pip install --upgrade flake8 pytest==4.6.6 # pytest 5 no longer supports legacy Python + - python -m pip install --upgrade flake8 pytest==4.6.6 # pytest 5 no longer supports legacy Python before_script: - - flake8 --version + - python -m flake8 --version # stop the build if there are Python syntax errors or undefined names - - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + - python -m flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. Two space indentation is OK. The GitHub editor is 127 chars wide - - flake8 . --count --exit-zero --ignore=E111,E114,W503 --max-complexity=10 --max-line-length=127 --statistics + - python -m flake8 . --count --exit-zero --ignore=E111,E114,W503 --max-complexity=10 --max-line-length=127 --statistics - npm install - npm list script: - node -e 'require("npmlog").level="verbose"; require("./lib/find-python")(null,()=>{})' - npm test - - GYP_MSVS_VERSION=2015 GYP_MSVS_OVERRIDE_PATH="C:\\Dummy" pytest + - GYP_MSVS_VERSION=2015 GYP_MSVS_OVERRIDE_PATH="C:\\Dummy" python -m pytest notifications: on_success: change on_failure: change # `always` will be the setting once code changes slow down diff --git a/deps/npm/node_modules/node-gyp/CHANGELOG.md b/deps/npm/node_modules/node-gyp/CHANGELOG.md index 28f523779841de..5dc6bb4d47069b 100644 --- a/deps/npm/node_modules/node-gyp/CHANGELOG.md +++ b/deps/npm/node_modules/node-gyp/CHANGELOG.md @@ -1,3 +1,21 @@ +v5.1.0 2020-02-05 +================= + +* [[`f37a8b40d0`](https://github.com/nodejs/node-gyp/commit/f37a8b40d0)] - **doc**: add GitHub Actions badge (#1994) (Rod Vagg) [#1994](https://github.com/nodejs/node-gyp/pull/1994) +* [[`cb3f6aae5e`](https://github.com/nodejs/node-gyp/commit/cb3f6aae5e)] - **doc**: update macOS\_Catalina.md (#1992) (James Home) [#1992](https://github.com/nodejs/node-gyp/pull/1992) +* [[`0607596a4c`](https://github.com/nodejs/node-gyp/commit/0607596a4c)] - **doc**: fix typo in README.md (#1985) (Suraneti Rodsuwan) [#1985](https://github.com/nodejs/node-gyp/pull/1985) +* [[`0d5a415a14`](https://github.com/nodejs/node-gyp/commit/0d5a415a14)] - **doc**: add travis badge (Rod Vagg) [#1971](https://github.com/nodejs/node-gyp/pull/1971) +* [[`103740cd95`](https://github.com/nodejs/node-gyp/commit/103740cd95)] - **gyp**: list(dict) so we can del dict(key) while iterating (Christian Clauss) [#2009](https://github.com/nodejs/node-gyp/pull/2009) +* [[`278dcddbdd`](https://github.com/nodejs/node-gyp/commit/278dcddbdd)] - **lib**: ignore VS instances that cause COMExceptions (Andrew Casey) [#2018](https://github.com/nodejs/node-gyp/pull/2018) +* [[`1694907bbf`](https://github.com/nodejs/node-gyp/commit/1694907bbf)] - **lib**: compatibility with semver β‰₯ 7 (`new` for semver.Range) (Xavier Guimard) [#2006](https://github.com/nodejs/node-gyp/pull/2006) +* [[`a3f1143514`](https://github.com/nodejs/node-gyp/commit/a3f1143514)] - **(SEMVER-MINOR)** **lib**: noproxy support, match proxy detection to `request` (Matias Lopez) [#1978](https://github.com/nodejs/node-gyp/pull/1978) +* [[`52365819c7`](https://github.com/nodejs/node-gyp/commit/52365819c7)] - **test**: remove old docker test harness (#1993) (Rod Vagg) [#1993](https://github.com/nodejs/node-gyp/pull/1993) +* [[`bc509c511d`](https://github.com/nodejs/node-gyp/commit/bc509c511d)] - **test**: add Windows to GitHub Actions testing (#1996) (Christian Clauss) [#1996](https://github.com/nodejs/node-gyp/pull/1996) +* [[`91ee26dd48`](https://github.com/nodejs/node-gyp/commit/91ee26dd48)] - **test**: fix typo in header download test (#2001) (Richard Lau) [#2001](https://github.com/nodejs/node-gyp/pull/2001) +* [[`0923f344c9`](https://github.com/nodejs/node-gyp/commit/0923f344c9)] - **test**: direct python invocation & simpler pyenv (Matias Lopez) [#1979](https://github.com/nodejs/node-gyp/pull/1979) +* [[`32c8744b34`](https://github.com/nodejs/node-gyp/commit/32c8744b34)] - **test**: fix macOS Travis on Python 2.7 & 3.7 (Christian Clauss) [#1979](https://github.com/nodejs/node-gyp/pull/1979) +* [[`fd4b1351e4`](https://github.com/nodejs/node-gyp/commit/fd4b1351e4)] - **test**: initial Github Actions with Ubuntu & macOS (Christian Clauss) [#1985](https://github.com/nodejs/node-gyp/pull/1985) + v5.0.7 2019-12-16 ================= diff --git a/deps/npm/node_modules/node-gyp/README.md b/deps/npm/node_modules/node-gyp/README.md index e39c5de8ea0453..79abf4ba71fe3d 100644 --- a/deps/npm/node_modules/node-gyp/README.md +++ b/deps/npm/node_modules/node-gyp/README.md @@ -1,5 +1,8 @@ # `node-gyp` - Node.js native addon build tool +[![Travis CI](https://travis-ci.com/nodejs/node-gyp.svg?branch=master)](https://travis-ci.com/nodejs/node-gyp) +[![Build Status](https://github.com/nodejs/node-gyp/workflows/Python_tests/badge.svg)](https://github.com/nodejs/node-gyp/actions?workflow=Python_tests) + `node-gyp` is a cross-platform command-line tool written in Node.js for compiling native addon modules for Node.js. It contains a fork of the [gyp](https://gyp.gsrc.io) project that was previously used by the Chromium @@ -14,7 +17,7 @@ etc.), regardless of what version of Node.js is actually installed on your syste ## Features * The same build commands work on any of the supported platforms - * Supports the targetting of different versions of Node.js + * Supports the targeting of different versions of Node.js ## Installation @@ -191,7 +194,8 @@ Some additional resources for Node.js native addons and writing `gyp` configurat | `--devdir=$path` | SDK download directory (default is OS cache directory) | `--ensure` | Don't reinstall headers if already present | `--dist-url=$url` | Download header tarball from custom URL -| `--proxy=$url` | Set HTTP proxy for downloading header tarball +| `--proxy=$url` | Set HTTP(S) proxy for downloading header tarball +| `--noproxy=$urls` | Set urls to ignore proxies when downloading header tarball | `--cafile=$cafile` | Override default CA chain (to download tarball) | `--nodedir=$path` | Set the path to the node source code | `--python=$path` | Set path to the Python binary diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29a620fe4e274ba38d1343c70a43db676a612b4a GIT binary patch literal 7654 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 literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..39ccea3454f79de724e5d445270c448de8e2ed89 GIT binary patch literal 16426 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ʃm#*RKy_M>G9Y+?x472b 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 literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07853302a501f736a35f6681c50452d1c8d43656 GIT binary patch literal 168 zcmZSn%*&;{s5mZ}0SXv_v;zPHHijqnln?pbx?Yl{uM7U{-o+UTRTdNq&)je0*kJ ZW=VX!UO{CE2hda-h)z3@-6cTG003e1DKG#4 literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.pyc new file mode 100644 index 0000000000000000000000000000000000000000..515194caa3ff4e7f24be1d28d243e63fa97665c1 GIT binary patch literal 71261 zcmeFa3vgUldf#~)06_wLlOidKdR&sA(2xL7lr)rv5@!ekkc1Hh(hW$IIHKCk?grT; z&<*r$h~Suv<7i@! z`L3QQs_-utEk@B&F1nP9a(eHH7JH&gJ@$=oZ*-|Q4fjQt`qJ>G=+dS%+#g-)Ps5u# z!dudCZ?w2MS{jHh4R{@W_C6S08qDh48eQ5N)pkS`O6`wM>Sr@QTcXN<{|xf8HL7gm zXM0rH!Oza9vWuVHQDqN5d!xz&{OpS=`}sK#RUYK$U{raCpF>gQVSXNoDvw4dFKvse z+oMZ6qUz45v@5zAMWx;L++)wZQT2hSL@|#=pO2zT`=d&10ZKd^U3xI89EmPb?9u4b zLs4ZYxqDv1)mB*t?R4^P>AB+xE^3ehN9SOfrgx@E_?`U-3(xXvjEV}eqR2jDl z;;3>wx^y_IJQZC!5>-w_mySl2r=v?lQH{}kCaOG37d{bHPWsPt{_{LPeEX#ToT7Wj zqRIqBI^=Chhfj zRGEq@)6wSvm8YW0OBQ(|s=RE0r=uE!^^85AjViB1)lWnVxu`OuukS_CTbE8omCsnx z=c3B17I;3YoU_0u1$A@z*8t7h|IL5-9HG_@9?Q*Iy;WRTt(RN1Mt#;l?BT=9)z)bzGkf9n`C{Sx`T3EgwUemA>kLObHqk(($!Njs z#B0-})L?g{3?Gv1L=WXlSCZvY>smbY;>h|UFHFq8l5De7$?C#FZOsy?DIKLvzd0Y$ z)Eh0@zEMGHM@V$`^_g>1^KV_49gI9|D>Whvr5@;gZ7mUk8DCnm7MJRkW}{YV30@a# z_0=^Sk5X+dpcGG>G?Ir%FqF^M_i=`z1Dn{oy$i?WHC9$2Lv1Z6HTOpY&IX|UfU$JM9f_2s4G zbppkuMn%(VFJtunxc-&}kQT}+I=)o8Q5|2t<+v$bA8({FLjHOaF3@Dn$G)o_l+guB`n~9oBdlTKh5qAu6Na*m+r?cXGmSiecRkSd1aM z<}(ostkfG&M5Q-6c)c%L{*3b5%O>HfkQEfS$+GrE3@d2t`j#{>AY=w=0SAK2ghw|C zOSMZ8y>=V2ZA)~rG^i%bftI_Fj7&^#?EKZiI<=R5645CUb#_xmnmg|+gfWZYpo{+?~T7?rPWwotiD@aG~ioVEiKZ>YNbe8<(tiGi}lr2ZP|LCZPcq4m~XCDTSvQ^ zce7M)CE$r>iy|u31xr$~B6 zQ#}I|0L@XN&P2U?a;%J=fu8NT?K#4^J-xlT9l4fP!>5y9rB5rXwQ8$aUaAzCq56&Z zbUabWw+XG0c<9Vv=hx;^Jhnh&{P^SXP=2D&fksE-ax>AVp*&;Psy5?eT9iA5`D`#uXlor&gk+ro26wfu)(9gu-KB1*iKiCfvt^8I}+RKiA&AKYMn*LZVkCvYpM`megdPovI=Ir zN|p5+{El~wNf`KZGqbO5H1y%~P+keT#(OCL@>>^*=cZmdH}UcuQnD>i^kV#!8LkLoyaPmjcljZ#H)QrKELst5~M<(FdLc$kHjFh<3Qs>&i;Sv@~O zNt88ztxDCkg$0_?s4w1%lf~NAYpumw>dK7MUeF~=d@h%gssjnwNU*gG&s4e!{kFK+ z(Ryuts!_f zSofv#g-KZY^To;6rbc5nl=WyT>uhq3oxVMP>6XSwNOCad0twLJJ-4)R5u{^qRAa41 zV^QFyMgV>Gn*N3f^-=@!6>e=ohWV_$-xe5P>Ru2PK5sDA9}bQh@sXi3N4jA|g>487 z85G=m`bn}uTRs|Wf21~j%m8ZJO_e@;=)E$Xyn6s&I+)2nftk1)*nW?G0`r1@jWPMJ zO+U4#N6V^sO`GTG`2H=u52m!%QCJ!35|Q26#tqioM*`t>8hHkAB-08;-8cXi{1 zrp}$a-;CZzYUcZHAHwLVtjQXlJc>%i1WjlUnvI+BwQA|z8nT#$W@E|t_#4$`y}B5b zU}#%bmq&?jtX{n)p&fFlIH@fmZ$_|yghJFO(Jm6WR(iJ@zv>Dr1X$IQL=iD%NSA>i ztByEeT%^%FVg?mbE7uUPpooY~7ZqCpL@hQNmQ{+m!sMKZA`)Z^sD!S@4QSpbO;VYX zq98Ow4brNXDiY&Zne^vovnF*P;vxwrym%T~RtHK~V0D#srZt?zNY3jqU|y!@aXz6B zN&Nese(I^EWW*&;39=nYtgNIUzX$@d*Ct+_Hm3CSSTpUItJn~9H4)Y|nz!Osvx+P& zX_lokK6N@imiO>TGKjRK*#6L=qE3^T97n@tk{CpR>P;#FA0JFZCJc{1t+LZ7N)IFb z#_1C#HdPlon{Oj85lxKp;R^CEhRsYEx>7O5wFNX<@f+wf3>%yttS%lwoAQlm@9)qY3U4wubPy0!tg?+4964z3+$JKT;kLyjB!D0 zTrSnw>rlASUdZA-yc`yQM{RftbvsRv75Bt|YBmYgJ%0 zeq^w^wA{L-)oT5Alw)z4PY-D9!dM{ZE#Cktn+uDLo8tiF@s(BZu$1G+Pn>xElg~YW z;`plY3}WOP)iDNotkE2!w-&08mBxf<$FvT{e4qyfp^SLZUrpd@O{98@8W}Y+xY3~# zBZI5;d!|l)6O)zEERRxC=bDv=9%M0IpO>_PgCR33vUSpKg(?Gi({Bu2Ae2~0wnDC! z%NeRp74f$i^@YZG+_9V8YOHoFeo7IMv#`1dZ3nSKVJKk?|GMtfA+XG@1#qH7t$?+u zNHB@EkST5v8we|>q9_6=t}YuLmhR$74c%J+9aqKH>6VcxK)B!vih#ys$R3>$G1@5% zFO}je&BhH#ue9KC?Oww1Hi*LN44Ae-8_({U7#%t@GF};+ns!W04oCjvDgunj2qfEU zFEQGo$dU18>81vl4a0*7AT)%^wD&f8g-zZ#pt_UV}T}H zxWU zi^?Uz3KXHnr&NP@WY{I-3ex!Hd-^cf;UGu3wQk2;Wro>2&Z zsX4vi8@?#^&{%OI)my_vnD!QWP*5n<`0}*|dTk@~LsQdft~4l-4QsgxL7>%>l)%c> zq+D87_vs)s3FT^Xv_B<_r39QuLu_$07G=?p)UKlSh30T}#oB>lmF)|z1fZ6dGeCVJ zm8rH!wPVVaz46UP^M-@H+fM}aI6_2AbHv-2R9?+AicIh*iLn|vu5l7hD zofT>$XDuPybPTpd8PSG$hj3e2OQl;j)zvkTYGIh&aKgSo8I!MP&M71!}WoT1#+3i(25mRw<=as|#wZh^(8#$?dn_zI}UGT^_!5JHGvPotJgp zy#2Q9!Dwkb_HI1<&d|_swl+2jSn@E8Cu}gOWoYR3DN5exKb0P@8%qp&x*H)Tt!hl# zq^sdUeZY%Z#0Gl+=|(^vGC&aGVbh1^$QVKfqPbevh>kfgXy!~E>91hnvmj-j=!0Yx zT|b;aApZmJi3Ff6RAS>f9Zybfq!P7H&}x%iCN?e`31m6l1AnX|*1M9AWm@7FyQ*E& zRt+t@Va4{5nxXl-%(G0bnG*XVSh^}tnSjnLoz)-9y9sU>2KK0qaq!i3I-WoO`s6FA z);x_2OYclq4;st2)P?gG-coYVrT{j|We(O{a1A#WXys-0SbbuHH3OG)qdhY8;t@+F4vd9y1CwR5 z@lX$GSV{-i9qCq!E2}a;=^%+4;Y-RgdIBwXGr57BYTPtA1zibbb11`iUE~%Z2^K1L zNMb5rVzhgU?x76rXn_|ExrDK814!F4KG^ljxI)>9aE*sYhufsIRpkF8yJY@4TohIT+t?|t+0&; z2U$erxYKN54jfa3tw;M+RuE=n)p2Xb5ZVF6goTO1Tg3|;gc!ke35uCTjOeO%^=j3O z>5L-nqUO^AKbmlFl zl$r9$X9dAsAkw5Jq(fRTvc!|=n;Oq7Q7|Qyj6G)A$dFBNV03^81{=^(HJmd`t#KIHbq+1<{VJj{)F(B6%sKa8`C?HHo9u_{SLO}|9 zbmU^NO0DuW1IZ?0RHTS9@jYci8y2jn%TUG`LyV;mbeQC6847S{uEs(3Y!j;r7NEWw zHvtBxmjHvLT3uqP*AN-=cGJjkqgJeKv=uu(wlie7vcD7mBl%P4K(pFtI=NUwmX|WE zM&-wPEy5BZpfFGd24%MiRg{`WFHfS?_A{)mj*<+kK-8r0 zn=LR%RLK=3Kh#J#-yHgp@!dxM83n3Yg0>^6k;gX7qVKMdq>BgFim@5Kt5{7!MudX8 zTEG&8VzQmJj@6aYuPxRgML_ggYf9xZ7P$!319UQ!rMf^)gGnD!eA?0VQ6Sw%^d1b} z$jGQuHR*VE{H`zWUPZJk5sPg+cDkyp?Sjqvn2)Z(bxDjulkuwoM<)278wMh?W?>0J zGE68lPWmsj6cibYSl^1OXIU|8qAMH1x>hY?(aDNo z`(S;wj3Z=wh5JS3&iWFo$QT9YqtYn0Q$d!VnLhp03z|s*vq^i0@)yp}&6{|8ZsY}| zh(6EAAs6GJp=C=P$J3{WhCUs_fbwVgG#!so-Ba=97X-fb6g;l5@!be17itzjGFi32 z`{nE)aYAkwqn7Hi*M(Y}V5U<5>nTUG*>t^IE7>{%3nM#CX=h{AMz#FvRZwXH4XnjA z=Td_ z1Gd*EX>cgd&dgT+w~}`4DP^Km5~hdk0|ZZ4T|!AVJx-HTbJ%V z9$^H<5tZELrEF_D1xH@5L6TICY?#+NaCc|Z7>PxyIzyL?zAtWe$!&XBM&d3m-kNNa z@U%ue6GwntveD4Y4&|S*{jd#SX_wQH?ZhR@JTf@aUX)YSGSV3*i;f&atY8NNi@uab zk|XJ&axtX@OGZcvhC*6t@=O8TR&jUevOOVCcdN?QHh$ri^RsWAV!GB>1mm+l>XZmL z+bN{XhO7to8B-!stvZ%!y4XF9X+W6BhAJ5hgo}0&_FfUI>G1^$>u8th6d+$!;&?pW z)_S*~@I^aY#lAaBnq%@kDa?glDv}hcIrMI+jW4cB;s+7k93MP(Y#dDYf_m^e%v0xv zp#sRu`UUZ27>k_^(lOvSlmpNLSO~a~%33bm*&e{o0tY)^7_{Vnh2ZF5jL|-th+tz@ zJ$$`~l;Hf?&ukE; z%~+zAdq{57N_~ExMtlgE=2i5l>D%`N+>!70RFa%^}(7{1Mps8ck2^TdRi0NMo zh$5U!7iFPUI+TBQBwf}ieUk3ALlXR__!i1RB7Wcvydag33JNx{3=NimsY?{B(R_V)E6Am#5>G z3LHnec)svzDhRt*hIRFYGRN9whT|E}Lio3u4cxLvc^B2y|%;{{S^``UV zU0^f@{doZ^FirqTGQt5yjyR32#bpL0E2%hz&yLw?PWYK*j6*7F#h@LFhHhyei~e0+ z@bFR;Y?xeSsi+wx;$zQA^ZymoO`1E`Wlk< zsVw3STI9;{=wkT5Dd~HZ(fmrSVV2#PaUCvDmI#QI5Znh0COQ**moI_i>|SWcU=YpVYJ~S=N!K1WnCvIx zz?n9Q!R|DAEEz?Ko9NgvD{3CGwXr#Bf!W5TJ2paAHs&(t`&bjG0A76GMzCpgIaAr7 zF*+bTXd`g%zNnZDI$|fK&7**y*Dj1uR!fJh%}<1&4SLgkHZ*RcSk#exlMm+g&2rkS z`&IzcRMDvE=(#@gdS8!L%d^5onduckYp>Ye=MYek2ZNp1)FzLTB+4DKGu69u2ko~X zKLiIkW4%2`Ozvw09l6~2D6{-6%o3&*un0#a9h73IE<2aH+s6bAhktjv2;3@@N--5e z-6@?1Y$4+@dj+HRf-I9VO^lqX>_yks7GN96Z=|HOV$g(bMh*;wwo>5fT2Il{BsO!X z5w%gZZe)=~3j*a9XiT$DjL+*tF1<31s%3_QW*gGMQ^Z2j*|~(_7NvthPYt3dGKHm? zquoSFjNO4qdgw!!T|xP0Eh0<_sY-tV?LE9eZJ}OWiQ%$BQ6r-w@l!c^J31H_CdYl& zBy~~M>ScRbx}z3J6I{iKqZd?7=B}k2yqlB_t~1vrL~E^#mocC608UQ;yJ$S|pE*O? ziqT)MT=b|3Yx(HgB6Ap(i@w!x_!Rhc>hiAO)}nbph1@o@q9)sS7j{ zI98Y?c%hP;2&OO5bXt3CT*jX=_XO3pH!3wp;tN~&AHTPeL}>p-&Dq*=^HZ-fFgDQr zk>MjlUxgP)Vu%V~SxMCzTX;ip>N;|J$4Tm&MSuK_G`|}V>9T%9_&=joYW$*}M{@nS zEjgPD)vtM-)Lh6fg|=GT!vTdbSkozA+cdoRG6bg4{1bv zBnU+JVGz{gbD@RbkWN(8b9d+E{i5x(3hypCQ8EW1Tn^0Hv>J+@N7aDJUN+gHPQ%#R zGB%qb_H_y6v7d3|G+wiQX^6)g4jrE+TsXtSe2OHHaI#|iIt_<>lFS>!`^E-?A?#t0 zpuwQ`88C=^V<3o12jiDX@eQs4Ma7az@gx>b`E^j~qO3R}cB)PILmaUH3xq+YP$kI3 zV&o+=Z<-{?wNLCKa0PYSaymDCt^ zpyq*SOv15btX3bxV-Th`UWXx%VMCqLk~$WV7o}j2;SpLXVbK!0AD}8nPtzv3nv;ri zB1lF*n@!ZF3~Gf#Y@+1MX5B0WXl?REJeJ8#1e1-M^-ODufDjF)XrwrCt*+T0#zW(h zf|^Nr&?X{kVj~Q5vytq*dnDB`)<1*E%D+R{z~93fVH`Yx5o{fV5k8yMCQ1r(Yd1qdu)A&%I2|EE zCdf$e(}skZrBJQ-h#j>Nd;6$kh;O9e!WBKfj$x-Bn%~IHCV}EVfUjvNl&hRjQ5|WE*AHt*Ln!x)S7k zrpgW!swpZQC{vT<oYtb;x0E)0I}D+Fpi8d{uLm`#-?&1@KZx8)vb@4MMB zYT^6V;~*v&>}B`WDo$dOa<66yg^oSq!E#)=FxILU^@E7*%yAC{o_m-S)8OrB1 zS%vo2Ee^DnaFoQHc{z_>WRpWh;3Id21ow61M1sy43lD?!`!!T@{HB%Khu5yYoUeme zI4_X>8*Le)wNu)D)}SHoSUJjD5Y{$A*36FXYoFxd%~sExY0ti0y;2*Z_M#DZW;-7f zo}p4%m+@fNffPb=_v*$)>kN|0Nx6l*BOQQyKkG9d7DiqbfRAA7>Mu8 z2BOF2Q!}kU8;FOXOteASdce6L^T{@Kqc>{e9~m?P1&a68wVF%bO6DZBNA6b<(cxW? zaeLeRo8nqfo&@(r;PN{N)cT{O7_E#5b;D&TJqaY$i|%Zes0^2@w>O&$Rl>wrQ8_YP z#9#ECEz#OJOSMHZ!KurivRZJ_ibGbs8saOF-E@0&qc3XyNOT*I(>qie?xn8}hOY}q z6A57Y7$Q|UF8 z{*)Og2Z=|L4j*lfM0F%K&L!nz=cohVPcL9-4{MfoUvPP4!pU*$oZ+tIrAG7o z+?(GgjP*F5qy7hTeK=R$o_jFYi-XmE{@;^(gqVZ;4)NQYJCrksPxpTlrZ&sUtpCJ` zot1dv9PnGk;W>zdr_tk|CxDcw$2^+%X~8Q7EY@cMT)1zt0GOrU0w9{r78sDvR3$dA zsS1Eu1}z38veg3kg5G8UJmhb;0N(F+SYVe>m2%+-f0qUJ2qh_Iue?Jm@IZv~dQejp zclHlNpU0`cxwFSbJxKQR`1{ABJqZrWdA;CBTxc0}*{Q)ZkPxln~pm~4?pOfIA zh4Fg-kR`yO{UHnB)Ba%##1T&S)c_JdYJnrEWBsG4WBsA1Fqc2V$R>Y;NB795UJ5ad z@`FW^tqXyHv1BIYE1i>Q!HsMG`q32E_o zmuo_jni>ys%TI@}_fy+A7_qFi)W@G-z&5*|App(71^`*YCZs@44)7J|NdvuUpf6f` zPs@V6>OJj3tLApsxH+~g5TZy(oQAWr;i6YN4! zc0|cB)sfj`p6A^f5>(g0JN*aieeR+1dHX{a{K2}MdsOfZAEAN`v^*P^YG~UXRgPUy-Etr6NXA zwN|nC^FoW_c_L8ZKo5Vpf!@76+j_5LTorp?$mktLP}v}d&Y z7bv~YBGLmm!Uyin89oWGLz9_X zdu7^bb$|&snS1-6NK-;40L3@2z#BcMD#+M||s z$Hr-Qrsd9A+96B3leEmc`4Lx%s*#cY{+=*Qb|(wNM70O*_*@^0Zd25D4W11V>@+Xn zMzV)oc87~{4U!8;*cCOWH4i{efRkV8X$>nipHxn$IWJZNdY@ReYO5L+AaBH)wmVf# z?U8CqB|agU$a|Y1@}G=aqfu)t6iI{b?2c~lPHR3KwZ^TLt>XeSK1^MHIJ&bZ3Um5Y zbbF7!v#lO{rzcwZbgxR-8_6_bFKIDN0Pr5LI#1a2+~`&PheHgX4r&lqZuIi+qJL^V zZB=em#xqvNS31ggM#Xy>U+G=>O7F#uvOR0re!C+Z?Mt)$cJIn>r&T+{V-v)Dp6z3f zu7ASX$`ul7=h?oM>Ao=TCv7Tx=oxg_Cz1!aU}$geh+5BSe|=Hif-*X2t@u8hQWn+o z_AQk4Nn2jfHg;7-^RHNl4sAXDQfjmr&~ydILv+0S6||k8qNodXG~dC zh%oXk4$n+l;s4GUj60{VfR{`P8X4RTk(x{;JD7yhLRXEAIh|FJ$zxI<`U zZ6+VHv08Rf8Ts#6~9>Ld;CVB`<;>1aF+A#IWbrj&V7*vTZfrzn6` z{px{P*DZXP-oIOq@8RK+E=yytFX}_Ahf25Eo32Y_GF59%>#%jWXaySz)4VS%7tSf6 z7-2X2H12f$5_EN^5;^=Ccon`Qt->!4sV?bm8&pyzPMAqvE0xd6?|ZdigrRtIxZd_G zo8acNhj{Ph76GL!iwAJbLZ@i7GDK(E_%+Gd@vkF z&Jwc}XE1YO32U{@n_@RaTmaP=_#4l4u5MRcSa>3=BrR2oFheC9Bzv9oH6?kZy=OyI z$d=Xaj&C#Ip9>O=72YGZT}_Y&7!Xm!1rv_DeUy#z1&-e?+%l3}xh)Qn1zNGfTPo-% zk8ttOE7KEG(}kj6PE^!gR&zz}v3YHJcK(DbEWl8b(G>pRhtK(R0m>pOe48FOl}$*< zI_%?U(B$x{J4gT?zdIyE$+p3)l#G{v-VB+M-0Fs**~*RA><$|Zt|6_m9B1T3+ZTi} z3V)18Ci1Zj$c8EaRBFLe_$DRW%p)LuYi0+cw*iz*l9iRU%0Lmj0xnBR8!vG6m=rti z%wpR4v^9IG_EPIWsLImu!7A3}DLVNlS(bJfKNNoxQtwZsSj-Y|rf@ zv^{s6zn#dvRHy&ivv&aF!2Ogp*t;{gt8X7~Wi>keGZDzo5dp^Tyj?9PhR}o=qQyZ9 z(A%WwVhDLh3f3br=Jf#)cOd{7Xxkn%I+^#2WK>?#IsNP7YY&?-RO zh3_Z>kjQa&5zLEalrSYNjD~D;;%^Jvt0d6LPq7o*T*M{(YhX%1)t^qa64inaMjnJ6gBh-;1xPNgn2a?m*aBAC_(v_m7 zwC>`3ZJg8D)YxtpXP_s1sl7adB|ymtFAUW5@dQ&437kWW$TeES?)eoct=U=x( zDPrTwIr{BGaRW8xU&H*nlR{Ze0rlEh| zf@F*zo4n&|myIMM!Hy-xV~Nq<-b7b+Yd<`C^k{5clpS63ukn#%$&pjW)|hLu#I~F; z04^+1)^HL%rP7Nf-CF3vi{XtwZ$wpFHD0faYBrNMb(D07aQoaCTQ2wLP3rz$_FfK* z*_NFh1`pe@Y0_Va6O~iuYR#G06wlaTjjz$(TtejQ$6`X4H{!o@Qfi zd@`5v+AlWQZs%}OsmJt)_4r{PMk|@kY=z=6#!Fln^Z?(caRybXn%TD5D4!GCe@i(< zg_*R>Y*q_Dq}M;Jhs>xd_r$Z37Kcic9?*4P71%S1Oo6f zw_6&*E&QmWG!q6LwgwvZ^gG1E#AWyO-cRbW@D-YIi}oiA1fs3mpb@umd~9ECFgMsY zz?(SE2jER*Z2=bvZ`qs6LsxF&g4+Z9KH76|)4trkEdzbK$#Z1j5IpEZ97o$pDfaBm z=kh%#EN@KQjvk{xV`|g97zO$Zh_tf(UliyU`-}qp?!FJAK%qUuCJY@4i^^syqT{M5 z1J^e7iC#nnwn^JFgvHe5f7c5Y%HY383MkO@a$F~`-bSUkT?)4l&-QM#o#J;!&{dQo zVh-}gC4*OQ!+P81eu#9n$JlurbI^Os<~)Gkwp72n3k0C4y1Gq zjfQ@K?CT^`>N)5UC}L5B14e*Q!X2nCEM2x5o&58;+bC(!u;!>~zbH}Fq|QPvq14$O zUEgCwD+EwRE`2q}peWtGjI7Gib&^&8O4X<3L2^Pec^eCJ*F#B=T-H&3_{{7x zAkd1~Ty&5}PC9l)QWcpYxaa{SJAKc(`Ce}>$A#7q%uY$)IT)>d+WYmK+M#ds2pbzp zpf$iAhBr**gGO-vP!H5Ex-(u=g7b%Z?4U8NV?_5x*CG5&QsFB+D{_!1+>+tc5}4+PA~K(Be(y~BUS^2 zJ!G@^$9px(hkQ03?U=PkJ7(>hdZ}I94s-Qzbe$p&sW2i5pv}foNX>psV5&&8-0LFA zLdJEG(6K&i4@WgbKeTB-w@zb$^awvF{2%29a`!QQfVwz3**U3)?ZWDi>aNeM?3{`? z0&EUMD+`#)pxYLe{g_o68|YYrbE2vbN0p)I_G6t?b>*04(3#TUNHhqaNAEbPC%W_Jb?jVoE?h?w!Pl|*za>xX39rS%SRbTiA|?;E9`&j_)R1mEcLSOpb+EbqkGNK*LUXr+;7);42QeLzAc z&KK0I*<}{~A?erC_UcWco4_ypBgK7|hY_?+x6kNacex`d{B3>x$9nt|J&fFEg9x;F ztdMB_!awCnzVOeLNGkn~NXc^r zy{1>~j8Dz1OB}MC(4s!D{Fs8I;^S7zhVOMUlc(kDst-b&&udfx-qgrYMbvDWhByUf+fwi zNRxp>o2N;`XNXNRAwLL3;*`B|yBv`dEXKEB9daG+^Mp5%vaAovh4vr}wPP{4l}|+%SH@gUNbkuBSA^OQ>S-YQJfpHHnxY~6%LI-b z!NKGXdbF=i8kvAL2Ny7xm)arO$AH>$Y^$ZZMT~At^MS-pSb$%f%n#j^$t@0Qz(7GaytjeK610LATe=E+nLrn#S}!l;1Ex5e+HPbLcFG+4Ij z&E~Zyy11z=eQIwjne@pwC)+7(JByVq+iwd0Os}>r2)FyT@cjz?vL3(4108i6n>zOG zWh~8}$lPWa&b2M$evV1u&(n;{8j2$XqRrcT_JYRn+|#p9C@;4YQH;>t!~8vg*rW`m zHI<#3Z^-N~5zzY2klEUorL6;*!40$9NmZxsCi^gC26N6A5CpMc0MLYih*;_|akEpG zi|vDZL6>jqpL7y|aEOm=u&i*OoCQ2@1tHP^X@Y*J2lQjY76@qZ(g-Ysom|hqaz5hU zMex&HUI;mPiihEjWCP?eypcqDc-+qa+`X(eN?b4mCE9;{t<05Z)mCC+T&0x-;^^q8 z7S@>C_l>0lyTQn8UUaWRW2}$>%(h`@gU$P3e(JyUm$8&n$Z*34>6e-yJ(6Mwsf=oiU)-)%(;{~fh_5kN35ayEIG*Y`VUWah7@ z+O7jrhku6d$EJ*xvSZOrJF(KuJR-TNuh}$yf>+!A@rgmD%{lY0Bfr(|)1RxdamX4yGz!VH=0!jqY zbR@|7{>Rb+IrP%55$h0C4;|?#z~zyuo+d%Tn`wvD$mSF}W#WFBgmAv&*Ui3Tr;C9x zDDlyObFiAIO!UFe=G@{W6pP>-33`|>*_Y%@JPMZ!_lu}lxYE!!s*kJGsuMFqQi>?Q zKT)#KGHWb#glhKpNHgM1=ZvZy12JO|9iurSQw&*9JYeGXi#@R5GNpJR6SrS{`R1H%3hXc|_@{H6OiE~T+=?N#2n*Xjl9pnw^;&tiJu9%&P z^f>Hp49&i%d9hbDQ2k+R%i6eWJ|2(WX7}5#zMv`zNsg!&w-02@*UBTkrZ^z?QOm8V zLt(VLPh1^ZhKD=*H`MuZtn-EQRkRI-#js-cSMq*NEYv!Ze&ryPzCPLhn!z14dM`%P z#E^x|KySP+ml?#g8?%|R)Zk1Ij)3Lf*OQuJ9c_H-Pe*5BOp|Y>lI7K=U0>s71i=(0 z*h-JePz1A;Q01vOX!zyP66+ZqF^;h^=rEGbm|D(J*oVww#g5N7>x#27yRii?Se=F_ zFKooprZz0-xNBJLe~ylsUirA>OS;boAz_sRJ?2VITJVlGWk%UqtKQF;r`x<{qqcCM zx?NA4*DwYb%Gf}tGCiuv$H7t;wzHQSAB-E}IhoCf{B#F7fxsvXki?Bu^sQ{ydK$y$ z!D89=+VrKI93@qHx2Wz-M(j-&BscAZ6E{!^cj_W{eQd*Ac0zs9A#2b+L|1G zpFB@KndTDDlIF5(Vh-O1%%%Vd&PFBg zOl;U^W+yf5KGrjEm{BAboUUAu#I~(mz-UHJ_`B5$>r@M(t^7_yhFrG6B93ImWt4J! zleH>$089qA_sFAbwld1{bpnu&8@(w3ZmOOb%9~SAYif%0W5FdF0JbkJVA9V)CFVHI-K@Cm-;QeCov^D@2?&^R_8E@R@Zds07Y8@FAGG7D zcRS}Z#@!nw?w!WrG>%Y?%zI?!l_B+_72}_S+lKM?>%MGWo_*a|Agt0fg6?Riv+Qlsv!cJC&{y^N0X=?MkH4YEFY>T9bYPNVIC`n-o$@iAm+h){Qn;{N zTkRg(Z+Y0jg?$xdR<<3am=bpqcZeQ+1ZdYmw$M0aT6k7c~gB%32-ySK(WMX%SbPDzNZ00%8yFIt1$Dcd> ztygb5`u6s5d`r?dG2EIAW4gC6a`4t1aYpVoxAr@(y81Wkg>5yM7c^aXqj47dq|4Dx zq6b0=bQ1a6L4<8eML|jhySj-V$otLwz-y+dT=9h987>hf(`3myHeja{`rC{FDX_01 z#ioq25q(cIEMk{hDR8Y~R&g|k_5N?z$rG3&Kl6oAO~?sz)o~1rqMYAd*^O*jC$0B0 zD&~?g$d;G1-8*H>-Ws-4?XLJ$OgGl?*&vS!SaTh2G0;p7QgDW{Ad|WuZ<8KF3V#r0r{MOckxo)uIB#3E+8}7DV8XK2+~*<@n~VaDVRu;FSZxFju!k7%mYW$#BUU1^P4{aoLFKD|Db0GoD*MOlvLX<)qPnt%*1DzYuZ5CU9?yZtROHKP zk$8%v_Wvs&vHhz3$@H5mxE{~JVg@5o?*V8Fv6ef~kyZd*7}6}0U(o0fV>nE5AP}FY zad8{MjZIN=F(=X4CXR6VNi?!ydjK}Xovb$NNX2sy=OG-RSzBP4edg6^8OOF%W`@{dsXoW6_hv@2+w z^!g^nS;Myza?P}lGX|Bm@dty*@6gw5+ScjIY-~S%MT+gDsSk}AE<`si z&f=|A4XTp)BJNuV_~5h=FWeG%QwJEF`~hnyiQ^lv3tzg&x z3$$nlhE)P|u>S}XZHhC%!zNlxgb86j2)m?e*Alh#K0b#@x8m z@TQPAc=Mt=U6{p|^6Ngte~Ko2yM|a>Rs=IQxWV8)&L1eW$Y&nL}Oi7;hXikv+ z!;hx+YIpIYojD!bFqCSRTa~N>QVn3?^nVSg{L|F@y%`E)KQL${qJ3?jOq$U40eX5u z#DTRy^qhzP9>E}ZpLk+4qEnY25;+FUitlWWq#-FAN2Ei_tv%gN`?yh&BnQ_~-0Pyb zK!dz0w^FaX9`Wy@S0jpyxH|J^(*%~}15xc)OM$Ip@ZtXtXnNQRjfz6vV5fmi)VvYF z+ zkDGeLdK~6q0+`i$ZDqCE?C^kL6wOza=$DkJmj}h)SG4#ispE?Rzy}CKn?;UnL)dZ% zHf9^v2)p{sL{2T)%%7o0tzbuwdgfA1uMr&VkbsXJ!iR4$l5n=LpOuxwjs;t=CnnblTz6c*eO1k@VTAWdW)u@?^bdLp!w6iHd{2%irVmu{;>!2r>T|OD(2>FPaHSf@sXTN14I&C= z)yjuWH>!L0;(9O`RePK_E5tF9p~&q*m^4*>O3bS*_8fMZ9`+YR?Tq#dUH-Y;bJVH6 zqhx2iFzXm_6BET{1G^NGghAr0p4qZULKl*+EJgggD3UQd0?AiAuwLp3nSAIoRGHBSHbhYn+UZ$-1yFFN`%{Lpqg`>L=x_+?zfupJE$qpd3Sud;Fq8xN`#7y z(e~t%(Jf;_&l$t@)oH0w%JZ9)WF*>_JhBO2z?|>Y`>54~)kS<5 z4%$0nvZUXzVyO0sv?iNFA4#lhK2L3ZDMCocR5f9sGioLLWh((tAM1D>v(}htE7>u; zkqI^iH%v_*c2~c)Sw*Z%^i+4E`hPU6N=xxSjMVE}`sFl-wp>19Mpdj@H>&zw>mZa@ z+o;KL>ivV8_gr_P`s-=)Vr$;Nuqy5~kk8+HAlJ3! zlk2Ma*EW)j!eOiCJ2&5B6#jF+px{*JDE#Ms8-;A9uG*+)Gv%-Asz)~Z!9($4ccS`d z(l)wN^uK!7>_S(cUYBQoglFo?r$SDLT^T*!Gt zN}fd~{Vf+9;}jZlynMWr8%Q&ttrePpb-w&`cl^QpwrG z3E44sKI-Y*wfpnxy5uVd2gy-62XTBJQZacPigzO`JR}1_glwD>Ce2uwxI{DfWLht* z7D?UVae5;QI+%%0Zt7Iqq~(_JQTPthT|I$igY-@EZes>J)Amn_ksA)8EGnbljo*^x zPiSH=yrV)GK72nJd)DC$^=t5YZT9OrrBX11Jn?OvqcZMnhLnXDIQda+zN^a!EBK%E zMpWx%yjm@!=1-yJa!aLAan_^oNoK)t(avUy?7I6sam5Y`Sw?zwnzD<0*<*>49{;e~lU zUJ>&~z#kvK2)O&e+dmKkrpm#65A!p2adC94Df#K?w}*z#7iM0bnKfTl$CBe_w%1ND zCPtoA>zrPZ5W*65WbH~5-_dTO*QcV-VV^fh;M|m(Lh&m5zH>8YWqFmxxh~T(%hkDZ zl435=h)X9cm2oJ+t&q~{^Jd32 z*R3o!>oOJZeylswp`A7zHH;`i2@QFM&P{Ww<-(jDjZ$j$Ad4L_7wD!OOQh{sugKQn6z(FrQMy_!E;NyR-fT2) za1u>^zz(cSzl>)yYaHJmwQqJidVDmVZHzUR!&L!XdfZ|P6VuZVq&_Cfat|P*vR zv@nQH6(V*e$VP^Ki>+=RS$CA6({vi@-?SJ&ctY6=?J%L~)tZiFHaz|Hq zgvN&@hC^>fnXOZMLM^G5wyCsCci%Q;z@!_q>98qw`RC|1pf%*#VAr~mR7{drueKBv z3cSeyBB22*tB9R>onv+3_5ZzteX(P(2}azI!B8d75Nr=$PY%w_&*8?^pvDfx z-FV>_RfF*D+%-8wwB`mBfem4HxyP|&+z^wRENk0!4V`t3d1evdnsu%6!aPkWyspO^ zJnSGx;V1QBMsYu;P-X$?n*CSos~)DY{W2i~Vsu64oJMe!NUS7>^;I)CW2XZP;f57c z!JpB$eLQIO%o2z0%C%M-5!&f@S4>Ti#uZaPs*tqyK2h~sE(SN9;O{6}yQmscyQ0Ix zMzIuLrYH7cqH-OC$2WFko#%f^U9>a9vgjb&929TX0*F>OEBZ|p{7^{I_F|YNlq<&H zP#OU{-th5hXb{!J?x<=$5^a32rf9Yj;oZVFlF&4qsZr=l=_d0=wW+(=UGr&@>3^oQ ze^w7OS@?4b{e&Jr&ZEO_)I|NipbuZw$*(Yavb7X0Ofm>|My{q zdMGzY`R=|^YS9o!U7m{Xg#Ekc=qC+vmUDmKAzG|U2>NL+7Onkz$fvygQ6qQ0^L3|u z9Q4Yiq^w8|(dHfe4pB}o{qypSKPWSjrp?i>X>`g2P#@}`SWZd`q17YQ8qigOSvY|2Lx5`Tca@U;*Zep($pkTel(3sqDa!45(;+|KdpW^@i)0Y~s) z@N#zY82pOWQm1NZVUrbGemN`3e|ESuJUV=3`0}XPWDSo(9?1yx^zfC%(zW4{ z_@*vpGBj;Gs1A~WksG+iQUWx@Jg?ZNE3O_asf1SR78f1pz%b61TelXguJN<+Gd3uG zdvL%Q5~Gf}p?5Ic+jExgwH@J`M$lanh;p!=aG4V1OrI9sEn7u5hb2z-;fT6X#7A0yA-k$V+F$lw3v=@0Bv{x9Q`o&fE-NTK!_xK6Hsm#w^IqjHF zUR`icwdqK%EO-?eks-7HL@QGShPDK45qQazazb8M&Z4m*;5tQfQlX=5sB2SQiz9t>j~apSLSl5Bccr0u zSuyLo1!6$W%wWk)tWNSXkpCvPc0?Fs>hb|o*V^_XCG8H^SFQZdxr-U@q1`#up>z2M z0Egt)d+vc0Fd-2$oiw<#&xM$+X03c9-CqJS$WHPiGEDJsN^)G9YL*pVk3f{Hs&JqR(E>MjMgoD%g~ZsQ(1a%ZzzX|N|~E;)C~q05d-7i=JO zTnllwnf01sc;`TPv`826EsU>HYj8CWX$_VkOwy@1-&odB^3vi+I&oR1)IvL6rI;(V ztE-LGBSAJLn0(}DY@BL(jgKE1){z>CgEl-OYC=2{Yjq8k6E-3Tl=C)R>9NFo zrv*+}o-q-A3CXUu7RH`8`6p~_r%RR2gS5RQ93TUWFgkO}>KmV#ou4keHa#^nF+aV5 zpI4IwjLh1eIB@2a+m&kTYHw1`ory}hR!XkH%Rnr!)UTCJxE;7SI^_I-oAEB!s%w?n zRpfXD2$0Bqp?yIGws$xkMf1%~rbmT$^|-8uZGHbzU&S05n`IzZ)SXuKij@yR;pN-s z&Y>{hk@uB^6PN#0ZH>CDAiXP|piEYC$5;1JS0T_md z!jZTKb9ei3+`(iCeM9m+X4*@9g+R3jjE-BUHhRZ0q5T3)2LsR%Va{FBoxpb9^u_ks z^u@NE9ETiq7H+#AiQC~nJEN1BF@oq}E7rczH|saWj6gTK?Y4{~*pzl*>O}qg^BbBu z+QOc@IV$6(jgQauzUc1<^}{}VgRTAFD**+s{QGF-OZs;)bP*E|Y{AoxY!a=5I8YxU zOQ9p!y+pR!Kk9bN8}_}=vte$Lt3j-6u%9^z&A~DgX~FhRCWb)!nNhN`al%H99^;{$ zk9cD_h*B8`EE}ac7#&p7hdd2_K0-N0mCNMducd?Ou1o5lN@vhd1^v_X^CLE4b@$ax zZisktN9Klwc4I&is2AH|-_uSihAjrRl7Gs2NXhGPbLqMBlN0BPZ@&3v2jk|uRJc_! zo}GF%BevxwWCKnQ>X}<^*#G=`UUtWh%!tj|P#eO<$XU%ruc18-yo{yESc*uY%%x+x zdrvg4+6I%H3Ya;_Accxgb(J3^n))E4(i%tImV~y|95c*}OG^zZW)lcSX}{~pMU}n- ziVn{lmrTGcxWk1`Ul(yc?JB$pPN>*K=Wzjd#fWdZ+7rjiW!IvX zmzP6eZOu1YX{xgJ6{p{vpPrr5)jy1si9`L{Tw${K(hT>inq96oJpIkd;+`xx*l$K!|GlfGx9*Xqv!b^~+-&;0)NE5G zXl48DjfvuZQjhjgh|lU(V)??)@Gz16Qfb+}FGy%-ju#3~DKx|*FDa3WwiNO?v_pb^ zbL=k>X|oHc7h$vvh>`P^Ru@~v5a+I8&#NFHD=LgC^dyh_Iq`+RLIpjV>jHsj`%aGc z>V8*l*4e7x?Y)O={`VtR-33i0-`7LA&3yv{62MCMEYH}3{AD48ySq&6s^7ARUj1po zn;1>{3T^+k5+xA`^ioAO@=7_I(EDi6^*&!BXt!wk>lb)6I=96j-q&#vJiM-PQIn!} zKZIedA14R^LoVV~hag-!j(?s>#k zUndH6c~(q1cSrmW75cIsZMZ$lYkQ~)gAC<;9VWHmEe+Ea0)EXflFT|`9nsa%x=UO8Ih}_OeUCOyI})MWnjqhE_SRQje!`~a1ou!v^<#(j{QB781C3|dFmp#`MBY`tnTaIjuENFnWM;OgxR@bOf>2qTHjs4Wj}G4%;Y-N3^gJJM->$(IE{=M) z^@Y1Vv>-B+^gJ(N*in6OcbGx84lHnHiIL~8MwFqblb~ppz{&l>->JHH)>Ku;V8}2` zD;Cb5pC3u=O3gHCYNjwd@ftL*SzWY~8F}unA&H|2HP5NeEreQCEKzXhZ1Om;f2nTv z7=K%d&hWUesO3LW!4G8Mi_{IT&QOJ0dyE)h@fbm1s9hAY#?iJle3A$-l1U!viC3}f z@)Ia=aBAS~=FLH@EFn9>><;6LU=%eTh^EZs^0<3s_;E`2&=(Zq&mZ@}KI11S`-e3U z>Q=OMHh+vCNPJ^s8Ne?gDG zsK-z1ag<>#Oz3e|k3XZhKc&Z?*5gm=F{2MZr;yNY;i?|S)?8HRpXnj#sj&gh0~u8* zg2kPWYs)AIH#zU4X*L_4_83~|J`CjNsp@ALMDwE9-`C$WaA@EU@>d!7{R58=>?Cx1 z;PAkc1DgnM9_Sy~&)>hq0AxpRZrcG&JYF1_+t#;j^T1aA9~c^(I<3Uy`!=o4ErBjz5l~}Y*;3Ea#pm(ous8pvY=@Ez;p&@wznYgBa)!X=I<91UE_Q8`L}@GX%e~&|VWC|8nRy`2YD7!SuV$ob6j<3+klFDj2j`7jDEf z&rKOcS9BRMeo8Ih&Euuo+RQ@NClgqStF+RR>auMhZpe5}<@|=e?Nlh8)9OoDbtLYh zL%?REu8YYsKq%&@1X4#B^-5XBR}-9_}4WZwSKxt|t)CA|13L+aC7?0$R+%E65;kia?mU+z>kl zdO-yTa$#k|(llp7Kzaz&{Jf&}2SwOdh-&#P7Yl=Al9g?E$n-J*oeYUc*|scWx`d8g zKV=RJB~=l&oAm`PVn$Hn%T`;|*rag-CU=uR+tWsooRyzXEz{2)OD;>{>HMNV#$}kF zBV?!m$`K=c%y67&DPOCWZxqYu0gT@=VNIokRq+loKou^ay=}Uh!X;e7GiJkSWD9fd zI*a={=UNKL2*lu7N586R-bG}DC`(q355g7gM%-l^hFU0wsaJyK-$0xx+K!23uMX%K zs*jz4N%d*tbC0xMLh&X&mTbuALB%jZ+|ucsHm+d_i%EcP3b*r!#2AYT4}f!I!oie1=unUvN;IOe$32Ic&FS8D?b+T z?;<+5p_AP$g|KRd2>*ls5Q*;%-t0b&IOAe$2au1j(7i$HVzsQ%Wd`PtmM1WHC5 zNQNi_Z-2b9-LYS}TLsjfWT%cDQE9tX$tBpkrOMxTh@uU=m zgZz*T)hH@QG>s<#FKHW5B%(w-N$DsNPjX0|!|o?J9*)-VBDJ z@P5SKuSQ(VtM8Bd`!$^h)%z3vUehsZy^s0(^@wBAdVk8_Z$#WFp!a9|eKD$h!ro7! z3FWLitN%IEHs0*1Jg=T|3L0k;ctlOR^GWXxoufOLpQ}4SR<3RrZ*yW;y2>y0gnS4b z=^QC7$qC)fU3tNh9O$jQXoGlKgBX$nXx&5NI$Djyl1}%k_gFhZtLcQZtk`Z zTjLj3w)gSxBGAf()@#4(<^0=rIc!RJ+Niv$d{o)I)wlAxU2{PsjpW3vR`3_o3aD8d z#Dk{EvYWWMq?^mFn_un2&jA5iVX`ne8uyKCV@eK3x{2HJ zRPf{!Zr*MkR-BTq{E1B$1EM;TdJ~CLJc@gjdlHGJC-LV3DPw+ z0`JP3%;e+I+P6fvAEz<5qC3OwJR$RNben&4u_vH@0(bK1et>+|Tvps+0$3|=;cx3R zn{SWE<3)I9928~k;e!p!Kk5(fmN&QZkNPiSA3`PaF|!R%gpWlBw1KeoR4&2T^w$%yvS=;t?!Lh+`AjI=JGsjV$n(1(tgP_ba92`DAa> ze)Cl2*Gm_^OnQGUXx+jxBBXUIhavLAMg$Gd0A9Uf6vI~Qz!1-Owqp2cWwF~Z@z#K=Qp#pm6_@ZvQtZ* z@xY6J7kE(E$XpYAs**-Clek_4cTB<@#f%0<&uIs92ZY`v{yKb#B^afxBUqd5F`^c0 zfCV}&4bW_*A^n(asZ>-nH5d5xJf>Uo2)W#xt3fVKNwRdOylQPIQK`nPbiCVE$Hjm* zR*U!me619x?&>7ESf_94a`L!{-m?Ilegasgw=plaN1@=~*ew(?Vp0?eIsci+(0b}Z z&O48scZQsI5i(C$h4JwSJ8oVtQo{!@fh;JBz)|tQ-hKB+F*xt&_o6yFGcwppR}_i8 zfb#3cG_#n14w8lC6h=3SEH@`}WkH`&Oa=8bItodTx@KZ{SfXzP8V2jEQVE4+gz}gF zXjN8m_*KR=BuvbWfT5Pf)%`55ex}u#5G7!gQ+6dD%;WQ+je*9PlL~S6xbK*|PzN2e z=cdA{+KZ0iVU0LkGlte$C~>6aqQtxM5n5xRUgynj&QuP&hA!8tudaiAkkRk8CV|aF3{)<`pFlD{EDDVM7tka~)?Fv((l|r6kKa@ zXq7RDG$?bk)9wxA?9QXEGNG=9$dx=LGXP7m8?no1e`ZO^29r$vfg#!6~c=4zE0 z*ozQ3s(>M9{NcKBjEv!WhBf;Hz`UQ*d$#TUjNWr??|FJZZ+pL>w-fg(dOLByrneLK z8+to&m*u-Gqh%>~k|J4Bmfdtlx%3c@Axalrn&4W3tps-vNO1EJUDOfmT3hdBm^gA; zQMK~2Pjxd}G^j9ID&_YT4?x>)-=T3{Sqt1YVvy_Gi&4rKbWz-E*6rDqFYa<>gqEX3 zw6^s|LfUS0Z*heTM-SY5$Bq@U$?qK(1sMZjt?$RJl4he>uN?&2uii2ZNh(J=k{S`C z*-EQADXF~Z6ke}w!eXs^mPiyjNH zS=6q2vgV{!D2>n``FRfkh57DPB68jKwYU$mVLV*$DMDn|KwBWA2)Z$=dGGzTX0;W% z*Eu%GcQ^G+ZCZ=;a=+@{=GXTLJ|K7zVWQVuZlJ~*z3BpO55j8$h&)J(ffvJL9{bqBh$NWi_v;+~_c#4IUOnVsg= z8l-QgQ*!N}J3-u7$kc&mPS|e#-iYLLcjq_+zn6n^!Ts;0RBGhi^*Iu3|Kh{<*iwa$ zqLSpTN3UCLT($19MC?ZJ+EY*xO~v}5EWq3QYq6E)YY&_BpDLvgv_OsEpTG5p*ZB=X zmx*si7~TMUuyLTUPN-pDu5WAj75NxW=f961-va)>*;PpEKVQ+JEd#TMkivF94%G(Q zOrTQi+ErJqPC+!ZF17*hZzb>w7Zqp+;u~Xw(DU06+Y;M^y!hNTZ0ti^v<|UpbAKSV zb~UZ;L!<=p(jdY%pbfUd@_7oSq!k8OFj##lT4O`}8n`y81ZgSVCSoJ_x(R7r0%euK zz67i+01stZj}$krTDxk93x_CPx!gF>!gG|+FF=rALPTP@1r8TO_ZkOb8XnHcBFW0bEve{7_uRwv^4Va(zePu`HcHgQ8@AaQkK zV`4Dz-Hltj%yd*CKc#x0{GGu#6K1qNikA%nj{(k>^ zt4eMU0X`qamafh{`#tA>{`)zn|997~d+@un57d(U-x~ftpOlj9qkTzI=ckm+B*|a@KADLZ4n+$E({mpb;*Tw zMfi^7!W~6;B)KqBgx4n*))(OoMYuni*^ta`OfGEf^lwv^m2`8P zUk8$zZOQERKvm>eRfKkxDL-lTC~QY|Nq^~v;}WO{G%R+3z} zKdG0Kj}h3H)b}{BKdJ9^;DMxmzXJ!7`o5$wnp`O*_5F&W;OiF-CiMr3*aMx|LrHzq zg&s`m2OW4QsULD+EU6RuQ1UT=WIU;lIr4B)A9vv4q<+|eN0R!(4m_IFA93KZr2eP_ zk0MXZxfreH}g3D+VP{WoSS&z z<>QsJ>G2aMU%NGS@|6>c?I-Wd)Mckmo|`y#@@VDdlP~0DGS*EpUcEIjFRErHUz$jd zAL}imj_uoX^7Ogm>8az#PEMRVUO9F$ZEqs_*2qjX?AvoTJ#*}pqvw?E@YP1My|Y{I zyGpFTwM6?4VtQ)GwkgNb(KDw{oP6<>ln**{x^jBr)bX}D_U`CxNclh1nwx7cw>J__ zUt!2jo<94^xk`HG%(+a{vF}6msaCT(+gNrjJz40pD$j5?LtX*xjvp1*O*J9oq%}7(N)z;Ov`Z(WeT$x%NC6xG)ohEenm8{Xq4$oem z0|v9hwYhrZaC3h4aFak~cCNlK)5!cXcJ=1`Vg1hE1gacjN*k?ed#-i3In|u5j?drp zoC%!g&$_V}X~E-@ls1+&lsX?P{OynZA_9Q+G;5m=WNr5)tsM$X^6@OL>%2djwEL3j z{$zTls&yHT!|GcT=jwotoPZeOdm%Tw+0 zn^QA0<;#sSE40yKP}+@pxtb|6t8j)=t*Z;OK~ukww;PU@Fmr; z4^E6-czEnRmFLDUUOYT@>A`&-^Eata>;FKeLEn2|Z#JMe1@yTJ92nI+@HI(7vx=Rq zwreqE46VUuHhUwhG-elOs=^!wIDgEExmKFZpO~6ywDpy(#{5jR*6=K+J5;NxzA{sN zW3IKjQ>@kI9!+XgCi1~LMXXm;vSv$Zpfpn2beq{ePA1K3$@BW4C(*>3*<nCQRp%S^@pLz}dqVH`{9WAt@MCjEn`6h^ zd|Flp&GlTXp6=Dl2oG0T$!<2=)kV)qR2a)q@KH~-!dG{W1PjMJ2pXeUf&C->_r;v3 z&w@>_z=H&01y1+n>+7N?U>WYoYmzZv>PxQlCp#wn71;w6nW)zp)Fz9Cm6flu_MBqo z7TWU*ZN|ENZQR&ze>T29+niY%(Oyd+o1d9#gFhpO`W|&Sml|jb36r7G z%vckvJ9JuHeB1=h*3>ukH0j$_@?4$+H#FLc_diYN3&PpQ2sB`0fMK2Ix*H1D21=a$8 zlpz9iZ+soVd~~i^Ys|M7U>|NiRKC10HB$$>b+bp-@D^2}88dT+i6cXLa_P#I6O=4L7F z!7Q`r88n7;9{M@oV5Ht?JVa`}G2dv`nX!B}$}cb$3p4fd^gp=WYL?GzHUJD(VXIMPRYK3F>J2w@d2Uhj z0u3oQ7OS)KGj#RMYmKG{ULWy-2&0NKR&&fSy@&1z-1Kf5*oGk0s3f0(4j9x$B`4g= zbJytp+~sLTgK?Y#E+{(3pc-z+%jI)(9~xG^f(vmv{a1cN(ETskz|QdF|6^3VU0(?LZy-{ zQ5IaB7&zm)_RaZ*1E=Sj4U>LWe=NcZ9Nz4_nQh|o)s;tzbLm)`r;& zm85cn6Xq#1#VRTTGJ#M^GAnbfc7=%!sx?4d)|k1HK0;u1v9HKMr83o=YF8>BRkPwY zlD^@7{`c{}e|T`XG(1of=GAXMzn&wF0RubD1obD^2VoK1>t~2g%>tC$tp%39mN`Ib zte4|J^M(0>7a|fnc(uyvX^(rz7W?YjsDJ2ki+Hn%gv>W<;?VFEF#VpR+2 z4f*CRAhU#wqC~&VA9hA@vnri^fJZUbIqrQ(@LFv`zzw7Mcte-W0a#`!$W2Wo%%e>H z9x4%d!BlPByv#VW5yScd4O(D30d1W*W40}QjL4V-FP%Ml{q-12;}By!ztI7J*NZL#Kd-_V<_IzdF$PB}pY(AavDjCCiA#0B zFdYrH%H#BxiHeop-@%8SF_QF>kI}AtjOHUCfK#^Yi+S__+!v&Zrm*l60cs-6Ww=Tt zuBkcEYy>B~`u7r=n@z>Bzehl+VhB(wVZm zoqCVMcRGv~n)tgMzAr&Ht<312_ee>tFWsA{-l&}1#G z5w%dB!DNXa0z=6XKLpk$OZ*UEej?_MWXa*{!%6Ft(mPC}Ro_qqK#IevA5BSK=N(d~ zP)R*BFW)JkXaXkDnN2-Ozb#NyTbq+b25D__?9$F;8F-*i>yn+MOm9}`*&Dx*oR^Mf zOESGRncn8_8CH|acl7jwj`k~3HE!?8Ov90Rq$l%8-f3k9DuzH*TFBXd=V3%6o}z-n z_UVvJu1FpW(X%WyuS5eg=};~$n!37Bdk*pIjmAt*IoGMGBc=Nh zE?`Ym&~EYUTKeO2Ry-{}btL{Cc|4QusS!2_O4p?JqOJB^Mc)@O0xCslGDnps_{x_RI;F>HJ;Vwd9rt`tnkr>dk3CA( z92AqN=}pIq*iN$~yA}^Gt@7R_F{?pco}~-F#&4!!P1Yej`TrI@`xG82Z7*#p-BlXl zZGCB1|Mt?ZzU`%2Ke;vDk^_v-euDt`W0|GP4~S$iX*H!8Y>nx48ni(?C<+yc&7221i2t^I`1h)e}T!fVSQ&1hku$3W1R%zxH+&GmGv zTAM6`!6LuWD>%2)p&ZZrExz#h;=I(x(&$VfZG_ffg(XWWq$R=Sl64;C^2sZ_TLx-t z(w8J$N`MEEWEqx(P(Rh)tXt}wL87mRSs^dvMNUEVBWF-gwBDS`DEqD|rMc)}A+;Z< z2(?JG-KoZbOn|(i-_~UxPPLda@qZT`F>VR_HfBA|KMJ@nXmztGBXr=~$@=2Wd9AT? zbFVa~ZY(r%X`-{9(^tu3zy~c~nYwCJU~^3@Hm`XZ{CWm5^;%S<7rP9qT2mW{Sk)zC ztPpT88DQ`SG@0GYBUwAhdKoNj@7qz@!BcM=`-e+=2yO4HX}##T!vlOLFM?UG9NDs1 zDh6Tc+5uz}Moe38l}fA`Kwc0EIIj^1@9r$7ZtMWDy(=m5t|8Xso=UoT2Z`+g^1R+5 zVr?>uypyAA>Er3Jb_5F5{G>KjO3+GW%1wn))2%#W+KufrJ+@YXNZZoqS)fPpEX4cj z3um zx-g+{512^NZoFFPDR;4wyhLQ+90rr_0EZ6q)PLhpb*}>tzt4*>=J{Kpg0%=p00~TA zXWDOcvV|e^ywo&Iqu9lj*>cE1;V4*2THo&a;T5fe5Xuf9jC#IVveEQ#GQG~+nQ^*m z=*P0!LAIY;S%sk!F@YMd4<*^JXfa3aUta1~m)8p;M|;hrKb5D?kUdcm<~l3?3-<3gm19NqLDf1)iR4 zz+!x~4}5Uz!DL&b4OMGqY9`8Fm3#BaXLP zn1Y2*(=Xv+J!cOR72f8fT|o?81D_aW)MFJm4EL^s{w=KT)2g^z?X4MPUF_obE`If2 zTC)-Oja{)igmLt14&#>z1fb?{8`umyX)qqi9u%SPKpogKhipqS*ZY&!IRUX?81Ta( z;7QT}?2xdgP5)UP7b!O&_92gFnSeY?$w>Cqs$W1pfEBuw0NGls-{dy zt#r7k#cN6JvM%TVh}V_okiVZ1`IA6?8NR&yCbGWZJvhxSmvIAY-qe*T)T(e8=TK)q zRF0@%C(yovP*qUOwoqcM0l~c9yk^4ARagqK$mH7aW<$1fnb>R>YK&hUw;^Q;jkp9T z3}ZzVv0~qxLglO8w%^1c(~xPMH62~ftIzVT|7jLpiY+>~s$ZTqx)0eTy-a*2ozj8* z*@3du^-Ux`bfHKIb2GB{xL>0gtGw2_yl{0KVc_uNM;?9TiN_9(kBT*qHRjcJQ>}

    ^5AQteDoiUUI^pwua`EoLhG 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 literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py index 2973c078fc82b7..d1742800ac507e 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py @@ -2286,7 +2286,7 @@ def SetUpConfigurations(target, target_dict): merged_configurations[configuration]) # Now drop all the abstract ones. - for configuration in target_dict['configurations'].keys(): + for configuration in list(target_dict['configurations']): old_configuration_dict = target_dict['configurations'][configuration] if old_configuration_dict.get('abstract'): del target_dict['configurations'][configuration] diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7db27168471000ecd8547ac8f37b2704ead31b90 GIT binary patch literal 63378 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 b#@)1QclWt>snJ2|R@coFS}5D+I$g_uUflHu literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.pyc new file mode 100644 index 0000000000000000000000000000000000000000..565cfb5bd6286ca2fdd997c9beb8e9570c6d0485 GIT binary patch literal 48168 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�UHqYM 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 E1qenp`v3p{ literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0de5efbc6d2ca56aa1d69fbe74f863d300a06f2e GIT binary patch literal 6457 zcmcIo&2t<_74P0%ee7yw*|9Cjacoaw87(B1ih?SL6G9+PsKQl?YedRKV2065uQc-P z%xb#VlB(nj)`c_02~Ke156G1Y{|SEsH!kq|z203(CY6G!tfX$e>CgB5UcdT37h7-t z+5S3Fqn|qde~4y(iY`@Z8@*O(P32l`1MqN7ZP!#eo@Zs|TUXYN?;-5F+idY^aQAEN-o?6GyGZ~e7#UYR&OZVjyoJmMRz?BDq5CK|M`kzpU9 z*$%oBrS``Rds!10?9pljH^?EtTb)@f?%EpqwZQU-wY9+UINv|;Qx7^Ea^ziQ26>zq zKhVIyVOgcTQb}hY0owf3n#ykWcgiX&>}FD?X0sUdHwyrfXSkJ*`@6@3O}4>tp6v)E zjF0Sb;o_r>!LeJwdB!I3z(j-C?JeO`a8lY4_a{~6OqBqVpC4OJvaP zaHa5~9J;~Kxfy&PW~tlj@Ek`OS(EodvMZzrrzov?93Mqlk+~?k%8Pls(oH>4(+OSI zFyYm7ALKwawbGE)meA9+RJfMFg1D!O!WODSUNl8I$fm*^=2>A@0FE>+A@XD@sS@FQ z2;k^lY6b3Ug~T4buAT_NJguAYY`N!d zFe09UbR^W7BX?NE1Cb>G5u+Dq3-cmqVTr8Zasi0`l$n&2{k|#O>qMS(C>`jG{}XI578YJrV4`55Z0Xh1@=2X5 zywXrA-4LC!l-)fW{2;hz#k~nDx@BP;d6ikXBo`Nn8L`NEUhS7zAyx!G438rE76}7M zgl8@jdGO>__{m^Q#X?U~1oUE$lHEOYQpC``@3?S(fmm(du#Ez%o>l=dq+SHyi2 z-sCviltKXoK?LvN|47-c=!5}+Z9@HBVEaE(4-Kk5k;UN5jKb#`XQ*=xguC(dEI%(! zBjJUz!iaB+H8Reu>zH`NIekO|v)_?)W#KAuMOcy%{yFmnYPsl zV$y}fTdKM<7Wtw&!TIN>X?mSYV49bD#S92ir{&O~<03tiyF}m=A-Kv0E-MRJ1>Io2 z;uvp7IZIhd-tg`47RJOdDg#4vK5MXkJ;Qh9;V8jbFdQ*MoM&HEFbY-dE_{O!H9x$= zE@1a2J6;vuWw*wTiV=PT-ISG({Q4%YvAk8)ujpkxt8aWoOUT(a8e_1S=w}lpg?-Y= z`Pc!qsPpsoi#Y{$!ZEr!J>JL@&Yv5c8xPKjo}P{uOXdev#VOeJqCrJt@bM9rA5e6e z*3?4i@ZT09bopr)l>z!q>ZR31B#Yf0Kh zPj>K*enNsYRGaMXiaMT1NIf~R3c+}`` z2Us&jQpmC~3cn#t0+gOeW)f; znZ%hD(X*Zt9WSHk>=X&6>_%860LSzaWnNG6MH3$ZfFpeYpDd5bRk+uq?@D5z)iY!Z zNG8C7hPr`p`wR{a--x?4^*wHp7r^(i<>0D%g7K{meT97=U1;2}D)`tpK{4#_n2Pm- z^|kdN*^8?kDa*J4+v3Ze6~g;&S(_q>n>b|M2Jkb z0lHb;ZZzx7MtiQ=0IZj;HFf(IM)=!ouO)QSY!r}$8X`q2g?Q(bU1f>M`>o%~AfNK1 z7afEvs=I?7A4{b)hy&|Tdfg4|Fxm4Jit3h6?5du^Kjbk)I tWMI+z>;X{j?3=`ictd)#GeoDNM`9B1`=a>=;)mJI*4l6m&HD21{sWqwQ*i(Q literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c521ea364fe6d50672cbd4baa405458610c92b5 GIT binary patch literal 2222 zcmcgt&2Ah;5U!s6^(J9%$um^Yp z@Fu^e3$IA)7T_(Ibz!m%C;1SX_!gY?p!^k-QvbDS*5>88f^V05fZK3*x($;Zzz$#= za0d>~e}@y(meX$o(o5pE;lOl6^bR1sB-(|8CuC+9j{6&o_b+Nb*Kuld)OM!*0=2fBFasQIlmw+Q@ES=w^V14WWA z*e^^7q~IzTANQ#b{eT+J;xNpk48zd(WRO`?r8HcvA`wW>eM!CHV~3?1W>Z@xxf{mT z;4m+;VNRWJwb9Ao0bw8VSJY`Tm7Yu3kD)}NsK>0B4|HrtTZtu?!HL;y{ut0B`sDC> z4?LNy;03W)!QIvG_$1$lrVoU2M@%_SOcs`}m+s!7^*<@08?pVk-(;P?P;*FhxNv`g zW#ki^YkE0ycFLZn&{gq5NA&lEdG0=0P+?y91&rAH&2(;t!=rrQN`2bzNLFNN*{+DL0~Suh{3 zxth!uWrLA`_B*sNyi^sM#1)Z`7oHu$1eY*;g|)CqV$|n2kS76_SB!YwWN483Tl6_* z1hg7zPi?BUTJwO97ap*k6!&AXYP2$lC&wLX-k5!Uo3vkfE%KCa@p~i_^1{ka<}sTm zcD_%YxtMx*x&tp2GxvpJ+CB~7yt4)%wljK3M?oRJj@}%WEjsNA3zx3@B)N`+QLHoX z6B^KcKoFJ>+4axl>Nq^T2j2(qlHP`-WP`C0Le9B>`v>Q@;e-U2p^|dLS`&|%8w+MW z=n8X9i3@OswbZfaQCi{ue}_b#nH7e{##ABsiaC-SfC`1A z$Hg>N@h}unV+JKLG~+IJc|5f?6;!j-MqY4I6_G!cl`*?T){W@ek`CQpb5UL830GO! zEH{wYFrtFJN>R3M%vrPAM$sH|BFTtRU3pM?uQ_q0TpX+l|EG-BX=>WRZsTUKaibS( VG#aW;seCWkR9nGDK$2E3_#4r{9)17- literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.pyc new file mode 100644 index 0000000000000000000000000000000000000000..430e45ee42790abdfc94c3eae07095e912cc1327 GIT binary patch literal 61720 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 literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0b7f58059b6f4a3c55c15bee6e41ec2ac4ddfc7 GIT binary patch literal 7555 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 L8krwiAG!H|PX01~ literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3cfa2088007f78249774a225fb9594f72bdafe72 GIT binary patch literal 93565 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 F{{W2t9DD!( literal 0 HcmV?d00001 diff --git a/deps/npm/node_modules/node-gyp/lib/Find-VisualStudio.cs b/deps/npm/node_modules/node-gyp/lib/Find-VisualStudio.cs index 0a533f42d6a4ff..d2e45a76275f53 100644 --- a/deps/npm/node_modules/node-gyp/lib/Find-VisualStudio.cs +++ b/deps/npm/node_modules/node-gyp/lib/Find-VisualStudio.cs @@ -205,7 +205,14 @@ public static void PrintJson() return; } - instances.Add(InstanceJson(rgelt[0])); + try + { + instances.Add(InstanceJson(rgelt[0])); + } + catch (COMException) + { + // Ignore instances that can't be queried. + } } } diff --git a/deps/npm/node_modules/node-gyp/lib/find-python.js b/deps/npm/node_modules/node-gyp/lib/find-python.js index e79bc50d5a1d54..fabc4630f15d44 100644 --- a/deps/npm/node_modules/node-gyp/lib/find-python.js +++ b/deps/npm/node_modules/node-gyp/lib/find-python.js @@ -226,7 +226,7 @@ PythonFinder.prototype = { } this.addLog(`- version is "${version}"`) - const range = semver.Range(this.semverRange) + const range = new semver.Range(this.semverRange) var valid = false try { valid = range.test(version) diff --git a/deps/npm/node_modules/node-gyp/lib/install.js b/deps/npm/node_modules/node-gyp/lib/install.js index f68cd7fd6d2a59..c919c1058811ee 100644 --- a/deps/npm/node_modules/node-gyp/lib/install.js +++ b/deps/npm/node_modules/node-gyp/lib/install.js @@ -11,6 +11,7 @@ const request = require('request') const mkdir = require('mkdirp') const processRelease = require('./process-release') const win = process.platform === 'win32' +const getProxyFromURI = require('./proxy') function install (fs, gyp, argv, callback) { var release = processRelease(argv, gyp, process.version, process.release) @@ -410,10 +411,7 @@ function download (gyp, env, url) { } // basic support for a proxy server - var proxyUrl = gyp.opts.proxy || - env.http_proxy || - env.HTTP_PROXY || - env.npm_config_proxy + var proxyUrl = getProxyFromURI(gyp, env, url) if (proxyUrl) { if (/^https?:\/\//i.test(proxyUrl)) { log.verbose('download', 'using proxy url: "%s"', proxyUrl) diff --git a/deps/npm/node_modules/node-gyp/lib/node-gyp.js b/deps/npm/node_modules/node-gyp/lib/node-gyp.js index 9d24103900f702..81fc590919ba8e 100644 --- a/deps/npm/node_modules/node-gyp/lib/node-gyp.js +++ b/deps/npm/node_modules/node-gyp/lib/node-gyp.js @@ -67,6 +67,7 @@ proto.configDefs = { ensure: Boolean, // 'install' solution: String, // 'build' (windows only) proxy: String, // 'install' + noproxy: String, // 'install' devdir: String, // everywhere nodedir: String, // 'configure' loglevel: String, // everywhere diff --git a/deps/npm/node_modules/node-gyp/lib/proxy.js b/deps/npm/node_modules/node-gyp/lib/proxy.js new file mode 100644 index 00000000000000..92d9ed2f7f0855 --- /dev/null +++ b/deps/npm/node_modules/node-gyp/lib/proxy.js @@ -0,0 +1,92 @@ +'use strict' +// Taken from https://github.com/request/request/blob/212570b/lib/getProxyFromURI.js + +const url = require('url') + +function formatHostname (hostname) { + // canonicalize the hostname, so that 'oogle.com' won't match 'google.com' + return hostname.replace(/^\.*/, '.').toLowerCase() +} + +function parseNoProxyZone (zone) { + zone = zone.trim().toLowerCase() + + var zoneParts = zone.split(':', 2) + var zoneHost = formatHostname(zoneParts[0]) + var zonePort = zoneParts[1] + var hasPort = zone.indexOf(':') > -1 + + return { hostname: zoneHost, port: zonePort, hasPort: hasPort } +} + +function uriInNoProxy (uri, noProxy) { + var port = uri.port || (uri.protocol === 'https:' ? '443' : '80') + var hostname = formatHostname(uri.hostname) + var noProxyList = noProxy.split(',') + + // iterate through the noProxyList until it finds a match. + return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) { + var isMatchedAt = hostname.indexOf(noProxyZone.hostname) + var hostnameMatched = ( + isMatchedAt > -1 && + (isMatchedAt === hostname.length - noProxyZone.hostname.length) + ) + + if (noProxyZone.hasPort) { + return (port === noProxyZone.port) && hostnameMatched + } + + return hostnameMatched + }) +} + +function getProxyFromURI (gyp, env, uri) { + // If a string URI/URL was given, parse it into a URL object + if (typeof uri === 'string') { + // eslint-disable-next-line + uri = url.parse(uri) + } + + // Decide the proper request proxy to use based on the request URI object and the + // environmental variables (NO_PROXY, HTTP_PROXY, etc.) + // respect NO_PROXY environment variables (see: https://lynx.invisible-island.net/lynx2.8.7/breakout/lynx_help/keystrokes/environments.html) + + var noProxy = gyp.opts.noproxy || env.NO_PROXY || env.no_proxy || env.npm_config_noproxy || '' + + // if the noProxy is a wildcard then return null + + if (noProxy === '*') { + return null + } + + // if the noProxy is not empty and the uri is found return null + + if (noProxy !== '' && uriInNoProxy(uri, noProxy)) { + return null + } + + // Check for HTTP or HTTPS Proxy in environment Else default to null + + if (uri.protocol === 'http:') { + return gyp.opts.proxy || + env.HTTP_PROXY || + env.http_proxy || + env.npm_config_proxy || null + } + + if (uri.protocol === 'https:') { + return gyp.opts.proxy || + env.HTTPS_PROXY || + env.https_proxy || + env.HTTP_PROXY || + env.http_proxy || + env.npm_config_proxy || null + } + + // if none of that works, return null + // (What uri protocol are you using then?) + + return null +} + +module.exports = getProxyFromURI diff --git a/deps/npm/node_modules/node-gyp/macOS_Catalina.md b/deps/npm/node_modules/node-gyp/macOS_Catalina.md index 5f02face57d963..d948f76caa074d 100644 --- a/deps/npm/node_modules/node-gyp/macOS_Catalina.md +++ b/deps/npm/node_modules/node-gyp/macOS_Catalina.md @@ -1,39 +1,37 @@ # Installation notes for macOS Catalina (v10.15) -_This document specifically refers to upgrades from previous versions of macOS to Catalina (10.15). It should be removed from the source repository when Catalina ceases to be the latest macOS version or updated to deal with challenges involved in upgrades to the next version of macOS._ +_This document specifically refers to upgrades from previous versions of macOS to Catalina (10.15). It should be removed from the source repository when Catalina ceases to be the latest macOS version or when future Catalina versions no longer raise these issues._ -Lessons learned from: -* https://github.com/nodejs/node-gyp/issues/1779 -* https://github.com/nodejs/node-gyp/issues/1861 -* https://github.com/nodejs/node-gyp/issues/1927 and elsewhere - -Installing `node-gyp` on macOS can be found at https://github.com/nodejs/node-gyp#on-macos - -However, upgrading to macOS Catalina changes some settings that may cause normal `node-gyp` installations to fail. +**Upgrading to macOS Catalina may cause normal `node-gyp` installations to fail.** ### Is my Mac running macOS Catalina? -Let's make first make sure that your Mac is currently running Catalina: -% `sw_vers` +Let's first make sure that your Mac is running Catalina: +``` +% sw_vers ProductName: Mac OS X ProductVersion: 10.15 BuildVersion: 19A602 +``` +If `ProductVersion` is less then `10.15` then this document is not for you. Normal install docs for `node-gyp` on macOS can be found at https://github.com/nodejs/node-gyp#on-macos -If `ProductVersion` is less then `10.15` then this document is not really for you. ### The acid test -Next, lets see if `Xcode Command Line Tools` are installed: +To see if `Xcode Command Line Tools` is installed in a way that will work with `node-gyp`, run: 1. `/usr/sbin/pkgutil --packages | grep CL` - * If nothing is listed, then [skip to the next section](#Two-roads). - * If `com.apple.pkg.CLTools_Executables` is listed then try: + * `com.apple.pkg.CLTools_Executables` should be listed. If it isn't, this test failed. 2. `/usr/sbin/pkgutil --pkg-info com.apple.pkg.CLTools_Executables` - * If `version: 11.0.0` or later is listed then _you are done_! Your Mac should be ready to install `node-gyp`. Doing `clang -v` should show `Apple clang version 11.0.0` or later. + * `version: 11.0.0` (or later) should be listed. If it isn't, this test failed. + +If both tests succeeded, _you are done_! You should be ready to install `node-gyp`. -As you go through the remainder of this document, at anytime you can try these `acid test` commands. If they pass then your Mac should be ready to install `node-gyp`. +If either test failed, there is a problem with your Xcode Command Line Tools installation. [Continue to Solutions](#Solutions). + +### Solutions +There are three ways to install the Xcode libraries `node-gyp` needs on macOS. People running Catalina have had success with some but not others in a way that has been unpredictable. -### Two roads -There are two main ways to install `node-gyp` on macOS: 1. With the full Xcode (~7.6 GB download) from the `App Store` app. 2. With the _much_ smaller Xcode Command Line Tools via `xcode-select --install` +3. With the _much_ smaller Xcode Command Line Tools via manual download. **For people running the latest version of Catalina (10.15.2 at the time of this writing), this has worked when the other two solutions haven't.** ### Installing `node-gyp` using the full Xcode 1. `xcodebuild -version` should show `Xcode 11.1` or later. @@ -52,7 +50,7 @@ There are two main ways to install `node-gyp` on macOS: 10. `sudo xcode-select --reset` # Enter root password. No output is normal. 11. Repeat step 7 above. Is the path different this time? Repeat the _acid test_. -### Installing `node-gyp` using the Xcode Command Line Tools +### Installing `node-gyp` using the Xcode Command Line Tools via `xcode-select --install` 1. If the _acid test_ has not succeeded, then try `xcode-select --install` 2. Wait until the install process is _complete_. 3. `softwareupdate -l` # No listing is a good sign. @@ -64,6 +62,11 @@ There are two main ways to install `node-gyp` on macOS: 8. `sudo xcode-select --reset` # Enter root password. No output is normal. 9. Repeat step 5 above. Is the path different this time? Repeat the _acid test_. +### Installing `node-gyp` using the Xcode Command Line Tools via manual download +1. Download the appropriate version of the "Command Line Tools for Xcode" for your version of Catalina from developer.apple.com/download. As of MacOS 10.15.2, that's Command_Line_Tools_for_Xcode_11.3.dmg +2. Install the package. +3. Run the _acid test_. + ### I did all that and the acid test still does not pass :-( 1. `sudo rm -rf $(xcode-select -print-path)` # Enter root password. No output is normal. 2. `xcode-select --install` @@ -72,3 +75,9 @@ There are two main ways to install `node-gyp` on macOS: 5. `npm explore npm -g -- npm explore npm-lifecycle -- npm install node-gyp@latest` 6. If the _acid test_ still does _not_ pass then... 7. Add a comment to https://github.com/nodejs/node-gyp/issues/1927 so we can improve. + +Lessons learned from: +* https://github.com/nodejs/node-gyp/issues/1779 +* https://github.com/nodejs/node-gyp/issues/1861 +* https://github.com/nodejs/node-gyp/issues/1927 and elsewhere +* Thanks to @rrrix for discovering Solution 3 diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json index afa45f3969095a..4638db5a3f4a30 100644 --- a/deps/npm/node_modules/node-gyp/package.json +++ b/deps/npm/node_modules/node-gyp/package.json @@ -1,29 +1,29 @@ { - "_from": "node-gyp@5.0.7", - "_id": "node-gyp@5.0.7", + "_from": "node-gyp@5.1.0", + "_id": "node-gyp@5.1.0", "_inBundle": false, - "_integrity": "sha512-K8aByl8OJD51V0VbUURTKsmdswkQQusIvlvmTyhHlIT1hBvaSxzdxpSle857XuXa7uc02UEZx9OR5aDxSWS5Qw==", + "_integrity": "sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw==", "_location": "/node-gyp", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "node-gyp@5.0.7", + "raw": "node-gyp@5.1.0", "name": "node-gyp", "escapedName": "node-gyp", - "rawSpec": "5.0.7", + "rawSpec": "5.1.0", "saveSpec": null, - "fetchSpec": "5.0.7" + "fetchSpec": "5.1.0" }, "_requiredBy": [ "#USER", "/", "/npm-lifecycle" ], - "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.0.7.tgz", - "_shasum": "dd4225e735e840cf2870e4037c2ed9c28a31719e", - "_spec": "node-gyp@5.0.7", - "_where": "/Users/mperrotte/npminc/cli", + "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.0.tgz", + "_shasum": "8e31260a7af4a2e2f994b0673d4e0b3866156332", + "_spec": "node-gyp@5.1.0", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli", "author": { "name": "Nathan Rajlich", "email": "nathan@tootallnate.net", @@ -84,5 +84,5 @@ "lint": "standard */*.js test/**/*.js", "test": "npm run lint && tap --timeout=120 test/test-*" }, - "version": "5.0.7" + "version": "5.1.0" } diff --git a/deps/npm/node_modules/node-gyp/test/docker.sh b/deps/npm/node_modules/node-gyp/test/docker.sh deleted file mode 100755 index 67014209d00038..00000000000000 --- a/deps/npm/node_modules/node-gyp/test/docker.sh +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/bash - -#set -e - -test_node_versions="6.17.0 8.15.1 10.15.3 11.12.0" - -myuid=$(id -u) -mygid=$(id -g) -__dirname="$(CDPATH= cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -dot_node_gyp=${__dirname}/.node-gyp/ - -# borrows from https://github.com/rvagg/dnt/ - -# Simple setup function for a container: -# setup_container(image id, base image, commands to run to set up) -setup_container() { - local container_id="$1" - local base_container="$2" - local run_cmd="$3" - - # Does this image exist? If yes, ignore - docker inspect "$container_id" &> /dev/null - if [[ $? -eq 0 ]]; then - echo "Found existing container [$container_id]" - else - # No such image, so make it - echo "Did not find container [$container_id], creating..." - docker run -i $base_container /bin/bash -c "$run_cmd" - sleep 2 - docker commit $(docker ps -l -q) $container_id - fi -} - -# Run tests inside each of the versioned containers, copy cwd into npm's copy of node-gyp -# so it'll be invoked by npm when a compile is needed -# run_tests(version, test-commands) -run_tests() { - local version="$1" - local run_cmd="$2" - - run_cmd="rsync -aAXx --delete --exclude .git --exclude build /node-gyp-src/ /usr/lib/node_modules/npm/node_modules/node-gyp/; - /bin/su -s /bin/bash node-gyp -c 'cd && ${run_cmd}'" - - rm -rf $dot_node_gyp - mkdir $dot_node_gyp - - docker run \ - --rm -i \ - -v ~/.npm/:/node-gyp/.npm/ \ - -v ${dot_node_gyp}:/node-gyp/.node-gyp/ \ - -v $(pwd):/node-gyp-src/:ro \ - node-gyp-test/${version} /bin/bash -c "${run_cmd}" -} - -# A base image with build tools and a user account -setup_container "node-gyp-test/base" "ubuntu:14.04" " - adduser --gecos node-gyp --home /node-gyp/ --disabled-login node-gyp --uid $myuid && - echo "node-gyp:node-gyp" | chpasswd && - apt-get update && - apt-get install -y build-essential python git rsync curl -" - -# An image on top of the base containing clones of repos we want to use for testing -setup_container "node-gyp-test/clones" "node-gyp-test/base" " - cd /node-gyp/ && git clone https://github.com/justmoon/node-bignum.git && - cd /node-gyp/ && git clone https://github.com/bnoordhuis/node-buffertools.git && - chown -R node-gyp.node-gyp /node-gyp/ -" - -# An image for each of the node versions we want to test with that version installed and the latest npm -for v in $test_node_versions; do - setup_container "node-gyp-test/${v}" "node-gyp-test/clones" " - curl -sL https://nodejs.org/dist/v${v}/node-v${v}-linux-x64.tar.gz | tar -zxv --strip-components=1 -C /usr/ && - npm install npm@latest -g && - node -v && npm -v - " -done - -# Test use of --target=x.y.z to compile against alternate versions -test_download_node_version() { - local run_with_ver="$1" - local expected_dir="$2" - local expected_ver="$3" - run_tests $run_with_ver "cd node-buffertools && npm install --loglevel=info --target=${expected_ver}" - local node_ver=$(cat "${dot_node_gyp}${expected_dir}/node_version.h" | grep '#define NODE_\w*_VERSION [0-9]*$') - node_ver=$(echo $node_ver | sed 's/#define NODE_[A-Z]*_VERSION //g' | sed 's/ /./g') - if [ "X$(echo $node_ver)" != "X${expected_ver}" ]; then - echo "Did not download v${expected_ver} using --target, instead got: $(echo $node_ver)" - exit 1 - fi - echo "Verified correct download of [v${node_ver}]" -} - -test_download_node_version "0.12.7" "0.10.30/src" "0.10.30" -# should download the headers file -test_download_node_version "4.3.0" "4.3.0/include/node" "4.3.0" -test_download_node_version "5.6.0" "5.6.0/include/node" "5.6.0" - -# TODO: test --dist-url by starting up a localhost server and serving up tarballs - -# testing --dist-url, using simple-proxy.js to make localhost work as a distribution -# point for tarballs -# we can test whether it uses the proxy because after 2 connections the proxy will -# die and therefore should not be running at the end of the test, `nc` can tell us this -run_tests "0.12.7" " - (node /node-gyp-src/test/simple-proxy.js 8080 /boombar/ https://nodejs.org/dist/ &) && - cd node-buffertools && - NODEJS_ORG_MIRROR=http://localhost:8080/boombar/ /node-gyp-src/bin/node-gyp.js --loglevel=info rebuild && - nc -z localhost 8080 && echo -e \"\\n\\n\\033[31mFAILED TO USE LOCAL PROXY\\033[39m\\n\\n\" -" - -rm -rf $dot_node_gyp diff --git a/deps/npm/node_modules/node-gyp/test/test-download.js b/deps/npm/node_modules/node-gyp/test/test-download.js index 738a43f276b093..fe373e3280ce66 100644 --- a/deps/npm/node_modules/node-gyp/test/test-download.js +++ b/deps/npm/node_modules/node-gyp/test/test-download.js @@ -90,6 +90,101 @@ test('download over https with custom ca', function (t) { }) }) +test('download over http with proxy', function (t) { + t.plan(2) + + var server = http.createServer(function (req, res) { + t.strictEqual(req.headers['user-agent'], + 'node-gyp v42 (node ' + process.version + ')') + res.end('ok') + pserver.close(function () { + server.close() + }) + }) + + var pserver = http.createServer(function (req, res) { + t.strictEqual(req.headers['user-agent'], + 'node-gyp v42 (node ' + process.version + ')') + res.end('proxy ok') + server.close(function () { + pserver.close() + }) + }) + + var host = 'localhost' + server.listen(0, host, function () { + var port = this.address().port + pserver.listen(port + 1, host, function () { + var gyp = { + opts: { + proxy: 'http://' + host + ':' + (port + 1) + }, + version: '42' + } + var url = 'http://' + host + ':' + port + var req = install.test.download(gyp, {}, url) + req.on('response', function (res) { + var body = '' + res.setEncoding('utf8') + res.on('data', function (data) { + body += data + }) + res.on('end', function () { + t.strictEqual(body, 'proxy ok') + }) + }) + }) + }) +}) + +test('download over http with noproxy', function (t) { + t.plan(2) + + var server = http.createServer(function (req, res) { + t.strictEqual(req.headers['user-agent'], + 'node-gyp v42 (node ' + process.version + ')') + res.end('ok') + pserver.close(function () { + server.close() + }) + }) + + var pserver = http.createServer(function (req, res) { + t.strictEqual(req.headers['user-agent'], + 'node-gyp v42 (node ' + process.version + ')') + res.end('proxy ok') + server.close(function () { + pserver.close() + }) + }) + + var host = 'localhost' + server.listen(0, host, function () { + var port = this.address().port + pserver.listen(port + 1, host, function () { + var gyp = { + opts: { + proxy: 'http://' + host + ':' + (port + 1), + noproxy: 'localhost' + }, + version: '42' + } + var url = 'http://' + host + ':' + port + var req = install.test.download(gyp, {}, url) + req.on('response', function (res) { + var body = '' + res.setEncoding('utf8') + res.on('data', function (data) { + body += data + }) + res.on('end', function () { + t.strictEqual(body, 'ok') + }) + }) + }) + }) +}) + test('download with missing cafile', function (t) { t.plan(1) var gyp = { @@ -116,7 +211,7 @@ test('download headers (actual)', function (t) { process.release.name !== 'node' || semver.prerelease(process.version) !== null || semver.satisfies(process.version, '<10')) { - return t.skip('Skipping acutal download of headers due to test environment configuration') + return t.skip('Skipping actual download of headers due to test environment configuration') } t.plan(17) diff --git a/deps/npm/node_modules/npm-profile/index.js b/deps/npm/node_modules/npm-profile/index.js index b7f753fb4d41da..d9c48c131bc927 100644 --- a/deps/npm/node_modules/npm-profile/index.js +++ b/deps/npm/node_modules/npm-profile/index.js @@ -1,7 +1,7 @@ 'use strict' const fetch = require('npm-registry-fetch') -const {HttpErrorBase} = require('npm-registry-fetch/errors.js') +const { HttpErrorBase } = require('npm-registry-fetch/errors.js') const os = require('os') const pudding = require('figgy-pudding') const validate = require('aproba') @@ -18,6 +18,16 @@ exports.listTokens = listTokens exports.removeToken = removeToken exports.createToken = createToken +const url = require('url') + +const isValidUrl = u => { + if (u && typeof u === 'string') { + const p = url.parse(u) + return p.slashes && p.host && p.path && /^https?:$/.test(p.protocol) + } + return false +} + const ProfileConfig = pudding({ creds: {}, hostname: {}, @@ -76,21 +86,16 @@ function webAuth (opener, opts, body) { })).then(res => { return Promise.all([res, res.json()]) }).then(([res, content]) => { - const {doneUrl, loginUrl} = content + const { doneUrl, loginUrl } = content process.emit('log', 'verbose', 'web auth', 'got response', content) - if ( - typeof doneUrl !== 'string' || - typeof loginUrl !== 'string' || - !doneUrl || - !loginUrl - ) { + if (!isValidUrl(doneUrl) || !isValidUrl(loginUrl)) { throw new WebLoginInvalidResponse('POST', res, content) } return content - }).then(({doneUrl, loginUrl}) => { + }).then(({ doneUrl, loginUrl }) => { process.emit('log', 'verbose', 'web auth', 'opening url pair') return opener(loginUrl).then( - () => webAuthCheckLogin(doneUrl, opts.concat({cache: false})) + () => webAuthCheckLogin(doneUrl, opts.concat({ cache: false })) ) }).catch(er => { if ((er.statusCode >= 400 && er.statusCode <= 499) || er.statusCode === 500) { @@ -183,7 +188,7 @@ function loginCouch (username, password, opts) { } if (err.code !== 'E409') throw err return fetch.json(target, opts.concat({ - query: {write: true} + query: { write: true } })).then(result => { Object.keys(result).forEach(function (k) { if (!body[k] || k === 'roles') { diff --git a/deps/npm/node_modules/npm-profile/package.json b/deps/npm/node_modules/npm-profile/package.json index 2f252aac85ab0d..e90e16ddf975d9 100644 --- a/deps/npm/node_modules/npm-profile/package.json +++ b/deps/npm/node_modules/npm-profile/package.json @@ -1,28 +1,29 @@ { - "_from": "npm-profile@4.0.2", - "_id": "npm-profile@4.0.2", + "_from": "npm-profile@4.0.4", + "_id": "npm-profile@4.0.4", "_inBundle": false, - "_integrity": "sha512-VRsC04pvRH+9cF+PoVh2nTmJjiG21yu59IHpsBpkxk+jaGAV8lxx96G4SDc0jOHAkfWLXbc6kIph3dGAuRnotQ==", + "_integrity": "sha512-Ta8xq8TLMpqssF0H60BXS1A90iMoM6GeKwsmravJ6wYjWwSzcYBTdyWa3DZCYqPutacBMEm7cxiOkiIeCUAHDQ==", "_location": "/npm-profile", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "npm-profile@4.0.2", + "raw": "npm-profile@4.0.4", "name": "npm-profile", "escapedName": "npm-profile", - "rawSpec": "4.0.2", + "rawSpec": "4.0.4", "saveSpec": null, - "fetchSpec": "4.0.2" + "fetchSpec": "4.0.4" }, "_requiredBy": [ "#USER", - "/" + "/", + "/libnpm" ], - "_resolved": "https://registry.npmjs.org/npm-profile/-/npm-profile-4.0.2.tgz", - "_shasum": "8272a71c19634d0dce9c35a5daf8ee589cbb0f52", - "_spec": "npm-profile@4.0.2", - "_where": "/Users/isaacs/dev/npm/cli", + "_resolved": "https://registry.npmjs.org/npm-profile/-/npm-profile-4.0.4.tgz", + "_shasum": "28ee94390e936df6d084263ee2061336a6a1581b", + "_spec": "npm-profile@4.0.4", + "_where": "/Users/darcyclarke/Documents/Repos/npm/cli", "author": { "name": "Rebecca Turner", "email": "me@re-becca.org", @@ -48,9 +49,12 @@ "license": "ISC", "main": "index.js", "name": "npm-profile", + "publishConfig": { + "tag": "legacy-v4" + }, "repository": { "type": "git", "url": "git+https://github.com/npm/npm-profile.git" }, - "version": "4.0.2" + "version": "4.0.4" } diff --git a/deps/npm/node_modules/rimraf/package.json b/deps/npm/node_modules/rimraf/package.json index a82c85a6954442..48f172fb29f5c0 100644 --- a/deps/npm/node_modules/rimraf/package.json +++ b/deps/npm/node_modules/rimraf/package.json @@ -1,46 +1,47 @@ { - "_from": "rimraf@2.6.3", - "_id": "rimraf@2.6.3", + "_from": "rimraf@2.7.1", + "_id": "rimraf@2.7.1", "_inBundle": false, - "_integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "_integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "_location": "/rimraf", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "rimraf@2.6.3", + "raw": "rimraf@2.7.1", "name": "rimraf", "escapedName": "rimraf", - "rawSpec": "2.6.3", + "rawSpec": "2.7.1", "saveSpec": null, - "fetchSpec": "2.6.3" + "fetchSpec": "2.7.1" }, "_requiredBy": [ "#USER", "/", "/cacache", "/copy-concurrently", - "/flat-cache", "/fs-vacuum", - "/fstream", + "/istanbul-lib-source-maps", "/libcipm", "/libnpx", "/move-concurrently", "/node-gyp", + "/nyc", "/pacote", + "/spawn-wrap", "/tap" ], - "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "_shasum": "b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab", - "_spec": "rimraf@2.6.3", - "_where": "/Users/aeschright/code/cli", + "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "_shasum": "35797f13a7fdadc566142c29d4f07ccad483e3ec", + "_spec": "rimraf@2.7.1", + "_where": "/Users/darcyclarke/Documents/Repos/npm/npm/cli", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me", "url": "http://blog.izs.me/" }, "bin": { - "rimraf": "./bin.js" + "rimraf": "bin.js" }, "bugs": { "url": "https://github.com/isaacs/rimraf/issues" @@ -75,5 +76,5 @@ "preversion": "npm test", "test": "tap test/*.js" }, - "version": "2.6.3" + "version": "2.7.1" } diff --git a/deps/npm/node_modules/rimraf/rimraf.js b/deps/npm/node_modules/rimraf/rimraf.js index e80dd10693f8f6..a90ad029f3ece1 100644 --- a/deps/npm/node_modules/rimraf/rimraf.js +++ b/deps/npm/node_modules/rimraf/rimraf.js @@ -4,7 +4,12 @@ rimraf.sync = rimrafSync var assert = require("assert") var path = require("path") var fs = require("fs") -var glob = require("glob") +var glob = undefined +try { + glob = require("glob") +} catch (_err) { + // treat glob as optional. +} var _0666 = parseInt('666', 8) var defaultGlobOpts = { @@ -37,6 +42,9 @@ function defaults (options) { if (options.glob === false) { options.disableGlob = true } + if (options.disableGlob !== true && glob === undefined) { + throw Error('glob dependency not found, set `options.disableGlob = true` if intentional') + } options.disableGlob = options.disableGlob || false options.glob = options.glob || defaultGlobOpts } diff --git a/deps/npm/package.json b/deps/npm/package.json index 8852d3efad18f1..71c1527eb3285e 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "6.14.1", + "version": "6.14.3", "name": "npm", "description": "a package manager for JavaScript", "keywords": [ @@ -60,10 +60,10 @@ "fs-vacuum": "~1.2.10", "fs-write-stream-atomic": "~1.0.10", "gentle-fs": "^2.3.0", - "glob": "^7.1.4", + "glob": "^7.1.6", "graceful-fs": "^4.2.3", "has-unicode": "~2.0.1", - "hosted-git-info": "^2.8.7", + "hosted-git-info": "^2.8.8", "iferr": "^1.0.2", "infer-owner": "^1.0.4", "inflight": "~1.0.6", @@ -91,9 +91,9 @@ "lru-cache": "^5.1.1", "meant": "~1.0.1", "mississippi": "^3.0.0", - "mkdirp": "~0.5.1", + "mkdirp": "^0.5.3", "move-concurrently": "^1.0.1", - "node-gyp": "^5.0.7", + "node-gyp": "^5.1.0", "nopt": "~4.0.1", "normalize-package-data": "^2.5.0", "npm-audit-report": "^1.3.2", @@ -103,7 +103,7 @@ "npm-package-arg": "^6.1.1", "npm-packlist": "^1.4.8", "npm-pick-manifest": "^3.0.2", - "npm-profile": "^4.0.2", + "npm-profile": "^4.0.4", "npm-registry-fetch": "^4.0.3", "npm-user-validate": "~1.0.0", "npmlog": "~4.1.2", @@ -125,7 +125,7 @@ "readdir-scoped-modules": "^1.1.0", "request": "^2.88.0", "retry": "^0.12.0", - "rimraf": "^2.6.3", + "rimraf": "^2.7.1", "safe-buffer": "^5.1.2", "semver": "^5.7.1", "sha": "^3.0.0", @@ -280,8 +280,8 @@ "licensee": "^7.0.3", "marked": "^0.6.3", "marked-man": "^0.6.0", - "npm-registry-couchapp": "^2.7.3", - "npm-registry-mock": "^1.3.0", + "npm-registry-couchapp": "^2.7.4", + "npm-registry-mock": "^1.3.1", "require-inject": "^1.4.4", "sprintf-js": "^1.1.2", "standard": "^11.0.1", diff --git a/deps/npm/test/fixtures/config/userconfig-with-gc b/deps/npm/test/fixtures/config/userconfig-with-gc deleted file mode 100644 index cf774bb883d966..00000000000000 --- a/deps/npm/test/fixtures/config/userconfig-with-gc +++ /dev/null @@ -1,23 +0,0 @@ -globalconfig = /Users/isaacs/dev/npm/cli/test/fixtures/config/globalconfig -email = i@izs.me -env-thing = ${random_env_var} -init.author.name = Isaac Z. Schlueter -init.author.email = i@izs.me -init.author.url = http://blog.izs.me/ -init.version = 1.2.3 -npm:publishtest = true -_npmjs.org:couch = https://admin:password@localhost:5984/registry -npm-www:nocache = 1 -nodedir = /Users/isaacs/dev/js/node-v0.8 -sign-git-tag = true -message = v%s -strict-ssl = false -tmp = ~/.tmp -_auth = dXNlcm5hbWU6cGFzc3dvcmQ= - -[_token] -AuthSession = yabba-dabba-doodle -version = 1 -expires = 1345001053415 -path = / -httponly = true From dd4eb8bd215829ab63a138757513eb82b586dfd0 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 20 Mar 2020 15:09:27 +0100 Subject: [PATCH 3/7] deps: remove *.pyc files from deps/npm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These seem to have accidentally slipped into the npm source tarball and cause problems when contributors update their git checkout of node. PR-URL: https://github.com/nodejs/node/pull/32387 Refs: https://github.com/nodejs/node/pull/32368 Refs: https://github.com/npm/cli/issues/1037 Reviewed-By: Beth Griggs Reviewed-By: Colin Ihrig Reviewed-By: Matteo Collina Reviewed-By: MichaΓ«l Zasso Reviewed-By: Richard Lau --- .../node-gyp/gyp/pylib/gyp/MSVSUtil.pyc | Bin 7654 -> 0 bytes .../node-gyp/gyp/pylib/gyp/MSVSVersion.pyc | Bin 14398 -> 0 bytes .../node-gyp/gyp/pylib/gyp/__init__.pyc | Bin 16426 -> 0 bytes .../node-gyp/gyp/pylib/gyp/common.pyc | Bin 19552 -> 0 bytes .../gyp/pylib/gyp/generator/__init__.pyc | Bin 168 -> 0 bytes .../node-gyp/gyp/pylib/gyp/generator/make.pyc | Bin 71261 -> 0 bytes .../node-gyp/gyp/pylib/gyp/generator/ninja.pyc | Bin 68498 -> 0 bytes .../node-gyp/gyp/pylib/gyp/generator/xcode.pyc | Bin 26219 -> 0 bytes .../node-gyp/gyp/pylib/gyp/input.pyc | Bin 63378 -> 0 bytes .../node-gyp/gyp/pylib/gyp/msvs_emulation.pyc | Bin 48168 -> 0 bytes .../node-gyp/gyp/pylib/gyp/ninja_syntax.pyc | Bin 6457 -> 0 bytes .../node-gyp/gyp/pylib/gyp/simple_copy.pyc | Bin 2222 -> 0 bytes .../node-gyp/gyp/pylib/gyp/xcode_emulation.pyc | Bin 61720 -> 0 bytes .../node-gyp/gyp/pylib/gyp/xcode_ninja.pyc | Bin 7555 -> 0 bytes .../node-gyp/gyp/pylib/gyp/xcodeproj_file.pyc | Bin 93565 -> 0 bytes 15 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/common.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.pyc delete mode 100644 deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.pyc diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.pyc deleted file mode 100644 index 29a620fe4e274ba38d1343c70a43db676a612b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7654 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 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.pyc deleted file mode 100644 index 39ccea3454f79de724e5d445270c448de8e2ed89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16426 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ʃm#*RKy_M>G9Y+?x472b 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 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.pyc deleted file mode 100644 index 07853302a501f736a35f6681c50452d1c8d43656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmZSn%*&;{s5mZ}0SXv_v;zPHHijqnln?pbx?Yl{uM7U{-o+UTRTdNq&)je0*kJ ZW=VX!UO{CE2hda-h)z3@-6cTG003e1DKG#4 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.pyc deleted file mode 100644 index 515194caa3ff4e7f24be1d28d243e63fa97665c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71261 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

    ^5AQteDoiUUI^pwua`EoLhG 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 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.pyc deleted file mode 100644 index 7db27168471000ecd8547ac8f37b2704ead31b90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63378 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 b#@)1QclWt>snJ2|R@coFS}5D+I$g_uUflHu diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.pyc deleted file mode 100644 index 565cfb5bd6286ca2fdd997c9beb8e9570c6d0485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48168 zcmd7550G5Po!|Fncd?5F0RjX`{2?iE2m-`{1ZMe95Cwsh7P|{@Prxqj%>p1PP@}=j z+rZFub7ZUTfU%!6+y8HL*-~a9&{y%o@c;VaW=W0>* z-!Oka%`bhY5JmMUdWUNvst-lYLPS=U9*W)>%G1NqJHvT;BzkAW>EWokEm|3k-WiPw z**jy=JKOVe<4PwxqU53IChzZzlA-9vuBbi|z0YSJj_TW@FZ1o)QGL{jJyCtkiASRP zb|>~m^>HU2jp{p`cr2&=lv*p`<;VPeUBeM z5!D~bAMfowelkj)imD%p>W{k6N2B^z0`avfS zNA)M1I1<&LbmBP;W_jW%jqx&<9gEi+X>p}pUu!1C>q&DpEhZ~#&1yF(UT&mo)n>8W zU8^_R#g|`v@wMW$wqjb^==Zlv90B|TnT?KD=Z zoknw`*lM(HR7*P=f5d13^4PbOQdE0Zk}m4FASZ%!<4tWN5;y3uT0b802MomK*R zG}^7w>PB}vHJ)x(SFY8oZyX^Fu(+sUN8GX_M|^W=LLluv#^p}vedU%Q)2VclN0jFghqufsTc!b6F3a1?EDMwh2kEg1Lq0y`ku?Gxv8PI>XTo@Ye9% z&y&`^sGl2ZpgO$*ri0o1Zfwh_lD@DldU}Qe`~x#Ick&#osRswYD!7G^d0MX9<8zBY>nUeSnF6HtXw8i!QBC%MpwcOOx=06g8I zA(socpvMt3MlXaZA3sELLNC+1C@Q@eiw0~ZP}6ZfaC$juCF`r5Hw-d;c{G|3R84}? zZne`*?=-sCyXtSc+H7>)yms2vP^?yYBK&T(J1f3X?u~Y%6_8nXjB6;Y(K7aClX@%r z)_sI8&$cvkGju%*pG`lUA{hUiC(;3qh!MHi|csjkI`I!*$o> zv0ChQl0-PDLOklU+uggzi%XCJXyNT@b1f-Cg7wDnBAlg@bk{nq;@x_(R9$O!?-m=N zZ)-y}z-e5rSZ^n3>u9%_tkdz5an?8*P;3t^tegY%oklHAx}8RHJ28b>PP%>2sU3z` z_Mup#x|LvyMO4o6W90d7c(gE5(65$HDk0Rgo?qeuC;-CE?NMh>fR32~_z59NOCqt9 zpjX^><{~&bw=?hV$;b;(+yA+t=+?&ouuJYQi%xlb(iy6ss@H*1Cs}H&--VMG?DkW_2ei;&|iPY~!O;b)NT>a}K4nl~@8hu7XdyqIo+*k|<`0?sWy zX2_AxE%j1M2Eac@tLBylV8+B~F>zL^s}g0p*AW4huNUuff45ZJR1#q%ho7dCL>oh! z%$4Gu1|ZRfo6EA~RT5PquNHA;2JOc&Ww<$Mo-V;AXyG$`f4TU1{L2}}c z=<-oro>l=3?oy)(78xJnqB2EVXs(e)AKX$z*vZE#GwoOdwhBA^EcbzQ4j(A&{ z3mvFGyyQArVWy890JM9C_6*g?GDqyq^nXkS9FR#3bVXE=#5}3X;3lAx*kv&-C?DzX zNz@CX9ZKTzh-IMB=*F0lVoYd$1ATLQmUzD~6r{Kt8CT?+|x6f@eHMklFt-zt`8K2s`AUr%Z` zrM~D9cpwsAuXgIiq;1YMd+03$RyBRP1AZpRYe}cq+)`J9UVS~S->lRd9pBBoMVl)#b8#wGL)FsN%!O{P zC7q2_ROrpmoWF3j++OP5sdkd97aFxrJLT?b)@$o7lc{ky?bh3C-8`9eI(->=t-EyM zwXTHQIdQ#a^CD7ADn4H1zs4|$R8sKOiHEsb+PGd#tKDv=D`B8=7D!}Y%qlPp;^RDw zCC2!bY>Z7zgXFq)Ez?KctBY-@gem96xr?)Ij?~??7CL7)NInJn-!#AU%Ul2p3|NHL2A0m7{dAzyr^AFs=js*Gl(r3Fzlw}RrLN2mEyo)9*s;?L(2YzmfnCAsEP14|1e zQAD@Vf&sR$30y9d2l^FT)s+NOflLxfqf0Q+dX|C3 zR9R2NFJ#%sq-9hbgx*pr2p^ufT+XlzoI7S!=kj#G&%D6&KmqH6sd(k#iQbetW{kX& z%`XYEhbOYTV-^Ae9x@G#zZRYF| zDz~Yy#Ks{w!sF3io7pvHq6Y zIP>ns2eof|bQj&@d;a8h3LS{v8;|btZz#Gs7Ipra(yH*EMem_V@{c((6rH~Hy@-ET z_UHQ z)TK^)Wpe?sn;;S~H(JHMZIK#V-D(3HMCP)eU+9NnNs62YU_ls#&d?IEH$teXe!Ds(W!RZoyt6T79vEAAAZl_x7 zmahZu`i1i4a@iK+xquGow<(ey<`NAL7Y-I4f#yFZ9a(&!aHw!(Xk>U7d80!|c;?n$ z0I4t{cY$zP(~J5~rj9fG((f`$6AbxGJgzotz$xS}7>blYtSb56aP(z-3e1&oJK|f@ zcNIg93x0rc5qV80;2!2Ny$d2H;`{&H!8t!5M&yAvgmLk2+C|>Q6iIOjIvAaVV-k7oH!cQpL1d&svmXYSX7^I;`yk4%!wDG`twd4kLoWtaU!Z8cY<*{;lyMVmnS5G zq~GH*Rjf6uX+|+nM45aNM3s?wY6@N zc6a3^a^S|Z_(|7RSKFN~p00`T;o=b-S5`K%hFE@;WWFP4J0m1D_u_LTV$oyEhB5=&8e|rU z(q|6Fuv#q=>6R@j4cg8aw+OI$6wCNxCB`=6)T-X>dM)v!vWyv+t-qTzmtygQ_%nJ- zSO~cPmC=4Aq-h{<7{~E^DoOUw6+3vbU6Vigj1u(v5DV^1Gzd zSGh!m@xpGjp~3%m5A8rp+5_)=e&_%^bbM&Eu*-VWXrTxXtqDFu{D%2W^Gi>2VMgAt z-W9#mt1C z7Oz$1i*3uSX=yS0tQ@dODP(HK-}ez?rV3f<$?RLkA6qb=;vJ(aJjMo2ef3foBc`Oe z#i{t*>|$l{?TfRO*|!#hwd-d73LV)}+{i>xB&(#Q5&uIzoC;y0(Z?k_1rLxkE#bOh z{wP=w02%m9P)}sl#O?)C2mT{b3tlj+gi6{H2E+q)^m8D<0dYq07vXb&atm)7rpsf| zere8_#t^LF7L){M@X^1Ak&J>ohm|xS&&X9fqLUJscJc@5>EY-koCV5$68#A3eUe&` zhEDdshDhWhkMajW?J@qqW*+AchPr*xNg#^J4mDjm(srRLK@ul}4ug>nD5@@uaaOMi zaGvsny}ok3Alesy1j_qn_1y@x{@O{?9AW@odD$d4$Hm|VG5%Sy&GSu&uF;UU zA`}W1g^&Z*9!oVN^CEJ--~ZzMIqu4Yu-fbcfK7F3*8|D-lwIf1JthbVP8H=m(4Nv*(KIgr$;A7^IJwUG=yoCms2W3z3ek7F^ zuri>tcn6tKw^jjD|E#p;_KyFZ44hZ|H@q9unwZ7j!bb}GU?4k&h6`f@|3BPIACyyB zJXYjHe@#*jk2?dN5B?-6^Y@#;(l�UHqYM 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 E1qenp`v3p{ diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.pyc deleted file mode 100644 index 0de5efbc6d2ca56aa1d69fbe74f863d300a06f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6457 zcmcIo&2t<_74P0%ee7yw*|9Cjacoaw87(B1ih?SL6G9+PsKQl?YedRKV2065uQc-P z%xb#VlB(nj)`c_02~Ke156G1Y{|SEsH!kq|z203(CY6G!tfX$e>CgB5UcdT37h7-t z+5S3Fqn|qde~4y(iY`@Z8@*O(P32l`1MqN7ZP!#eo@Zs|TUXYN?;-5F+idY^aQAEN-o?6GyGZ~e7#UYR&OZVjyoJmMRz?BDq5CK|M`kzpU9 z*$%oBrS``Rds!10?9pljH^?EtTb)@f?%EpqwZQU-wY9+UINv|;Qx7^Ea^ziQ26>zq zKhVIyVOgcTQb}hY0owf3n#ykWcgiX&>}FD?X0sUdHwyrfXSkJ*`@6@3O}4>tp6v)E zjF0Sb;o_r>!LeJwdB!I3z(j-C?JeO`a8lY4_a{~6OqBqVpC4OJvaP zaHa5~9J;~Kxfy&PW~tlj@Ek`OS(EodvMZzrrzov?93Mqlk+~?k%8Pls(oH>4(+OSI zFyYm7ALKwawbGE)meA9+RJfMFg1D!O!WODSUNl8I$fm*^=2>A@0FE>+A@XD@sS@FQ z2;k^lY6b3Ug~T4buAT_NJguAYY`N!d zFe09UbR^W7BX?NE1Cb>G5u+Dq3-cmqVTr8Zasi0`l$n&2{k|#O>qMS(C>`jG{}XI578YJrV4`55Z0Xh1@=2X5 zywXrA-4LC!l-)fW{2;hz#k~nDx@BP;d6ikXBo`Nn8L`NEUhS7zAyx!G438rE76}7M zgl8@jdGO>__{m^Q#X?U~1oUE$lHEOYQpC``@3?S(fmm(du#Ez%o>l=dq+SHyi2 z-sCviltKXoK?LvN|47-c=!5}+Z9@HBVEaE(4-Kk5k;UN5jKb#`XQ*=xguC(dEI%(! zBjJUz!iaB+H8Reu>zH`NIekO|v)_?)W#KAuMOcy%{yFmnYPsl zV$y}fTdKM<7Wtw&!TIN>X?mSYV49bD#S92ir{&O~<03tiyF}m=A-Kv0E-MRJ1>Io2 z;uvp7IZIhd-tg`47RJOdDg#4vK5MXkJ;Qh9;V8jbFdQ*MoM&HEFbY-dE_{O!H9x$= zE@1a2J6;vuWw*wTiV=PT-ISG({Q4%YvAk8)ujpkxt8aWoOUT(a8e_1S=w}lpg?-Y= z`Pc!qsPpsoi#Y{$!ZEr!J>JL@&Yv5c8xPKjo}P{uOXdev#VOeJqCrJt@bM9rA5e6e z*3?4i@ZT09bopr)l>z!q>ZR31B#Yf0Kh zPj>K*enNsYRGaMXiaMT1NIf~R3c+}`` z2Us&jQpmC~3cn#t0+gOeW)f; znZ%hD(X*Zt9WSHk>=X&6>_%860LSzaWnNG6MH3$ZfFpeYpDd5bRk+uq?@D5z)iY!Z zNG8C7hPr`p`wR{a--x?4^*wHp7r^(i<>0D%g7K{meT97=U1;2}D)`tpK{4#_n2Pm- z^|kdN*^8?kDa*J4+v3Ze6~g;&S(_q>n>b|M2Jkb z0lHb;ZZzx7MtiQ=0IZj;HFf(IM)=!ouO)QSY!r}$8X`q2g?Q(bU1f>M`>o%~AfNK1 z7afEvs=I?7A4{b)hy&|Tdfg4|Fxm4Jit3h6?5du^Kjbk)I tWMI+z>;X{j?3=`ictd)#GeoDNM`9B1`=a>=;)mJI*4l6m&HD21{sWqwQ*i(Q diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.pyc deleted file mode 100644 index 8c521ea364fe6d50672cbd4baa405458610c92b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2222 zcmcgt&2Ah;5U!s6^(J9%$um^Yp z@Fu^e3$IA)7T_(Ibz!m%C;1SX_!gY?p!^k-QvbDS*5>88f^V05fZK3*x($;Zzz$#= za0d>~e}@y(meX$o(o5pE;lOl6^bR1sB-(|8CuC+9j{6&o_b+Nb*Kuld)OM!*0=2fBFasQIlmw+Q@ES=w^V14WWA z*e^^7q~IzTANQ#b{eT+J;xNpk48zd(WRO`?r8HcvA`wW>eM!CHV~3?1W>Z@xxf{mT z;4m+;VNRWJwb9Ao0bw8VSJY`Tm7Yu3kD)}NsK>0B4|HrtTZtu?!HL;y{ut0B`sDC> z4?LNy;03W)!QIvG_$1$lrVoU2M@%_SOcs`}m+s!7^*<@08?pVk-(;P?P;*FhxNv`g zW#ki^YkE0ycFLZn&{gq5NA&lEdG0=0P+?y91&rAH&2(;t!=rrQN`2bzNLFNN*{+DL0~Suh{3 zxth!uWrLA`_B*sNyi^sM#1)Z`7oHu$1eY*;g|)CqV$|n2kS76_SB!YwWN483Tl6_* z1hg7zPi?BUTJwO97ap*k6!&AXYP2$lC&wLX-k5!Uo3vkfE%KCa@p~i_^1{ka<}sTm zcD_%YxtMx*x&tp2GxvpJ+CB~7yt4)%wljK3M?oRJj@}%WEjsNA3zx3@B)N`+QLHoX z6B^KcKoFJ>+4axl>Nq^T2j2(qlHP`-WP`C0Le9B>`v>Q@;e-U2p^|dLS`&|%8w+MW z=n8X9i3@OswbZfaQCi{ue}_b#nH7e{##ABsiaC-SfC`1A z$Hg>N@h}unV+JKLG~+IJc|5f?6;!j-MqY4I6_G!cl`*?T){W@ek`CQpb5UL830GO! zEH{wYFrtFJN>R3M%vrPAM$sH|BFTtRU3pM?uQ_q0TpX+l|EG-BX=>WRZsTUKaibS( VG#aW;seCWkR9nGDK$2E3_#4r{9)17- diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.pyc deleted file mode 100644 index 430e45ee42790abdfc94c3eae07095e912cc1327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61720 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 diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.pyc deleted file mode 100644 index f0b7f58059b6f4a3c55c15bee6e41ec2ac4ddfc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7555 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 L8krwiAG!H|PX01~ diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.pyc b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.pyc deleted file mode 100644 index 3cfa2088007f78249774a225fb9594f72bdafe72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93565 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 F{{W2t9DD!( From b9dc030fba5ea60374e59f54a3eebfb23a8c0f34 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Thu, 30 Jan 2020 21:29:43 +1100 Subject: [PATCH 4/7] deps: update term-size with signed version PR-URL: https://github.com/nodejs/node/pull/31459 Refs: https://github.com/nodejs/node/issues/29216 Refs: https://github.com/sindresorhus/macos-term-size/pull/3 Reviewed-By: Christian Clauss Reviewed-By: Michael Dawson Reviewed-By: Ash Cripps Signed-off-by: Rod Vagg --- .../term-size/vendor/macos/term-size | Bin 8760 -> 27264 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/deps/npm/node_modules/term-size/vendor/macos/term-size b/deps/npm/node_modules/term-size/vendor/macos/term-size index e383cc737f8e232aecd06a8492657b28d5fb9f1c..c32a1fdc1b073bb41e9ddbabbd694a741ed67abc 100755 GIT binary patch literal 27264 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 delta 581 zcmZp;%DBTt^!%^4|JWHA7?~Lu8kiUu82EvhVWMa^Bm2aK=8U%|-gFmy!v~ZHimHI5 zfZ)w!Lq>Z+0ia5ds1I0-fk9w$BTzI3DjEb8jhTFraXBZ@0tTQ349t@+GO2Si2tafS zOy0<(Ik}5TPE`OV0y7K92dRevHXwszvMh6r1W*DD6d;rZ$jLy!K6xYad4=^_EX&;` z&8_yd3eT7OY#|A9FjxZ*7Xt$jPu{>{$z*(O@@p2?&EWzcI3^45@j6%oJ+Y6afq}vB zz>DiZ4V{OZfB!FWcQyRx(Hr_;Uq%UsgW-YB`!BWvOh5|P=%Hdg+>sC zo^XZxfGooUKAqn?Z@o~Qe34JwaKe98J)oxlss>=v2uzxQNi#5M0VI8TWf_5#WAJ~~ zkCP?%OD9j{cV~Pv`6j=+t^zb_w4k&Jl(vJ?9#A?6L~nL<-^@QrL7b6cvxGteqW~y2 USb!K9kRaeNxj|84@&UyP02%;+;{X5v From 7706dadf38b16b2a64aab4ef880a5c1d6679308a Mon Sep 17 00:00:00 2001 From: Ruy Adorno Date: Wed, 25 Mar 2020 20:22:55 -0400 Subject: [PATCH 5/7] deps: upgrade npm to 6.14.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/32495 Reviewed-By: Myles Borins Reviewed-By: MichaΓ«l Zasso Reviewed-By: Gus Caplan --- deps/npm/CHANGELOG.md | 17 ++ .../public/cli-commands/npm-access/index.html | 4 +- .../cli-commands/npm-adduser/index.html | 4 +- .../public/cli-commands/npm-audit/index.html | 4 +- .../public/cli-commands/npm-bin/index.html | 4 +- .../public/cli-commands/npm-bugs/index.html | 4 +- .../public/cli-commands/npm-build/index.html | 4 +- .../public/cli-commands/npm-bundle/index.html | 4 +- .../public/cli-commands/npm-cache/index.html | 4 +- .../public/cli-commands/npm-ci/index.html | 4 +- .../cli-commands/npm-completion/index.html | 4 +- .../public/cli-commands/npm-config/index.html | 4 +- .../public/cli-commands/npm-dedupe/index.html | 4 +- .../cli-commands/npm-deprecate/index.html | 4 +- .../cli-commands/npm-dist-tag/index.html | 4 +- .../public/cli-commands/npm-docs/index.html | 4 +- .../public/cli-commands/npm-doctor/index.html | 4 +- .../public/cli-commands/npm-edit/index.html | 4 +- .../cli-commands/npm-explore/index.html | 4 +- .../public/cli-commands/npm-fund/index.html | 4 +- .../cli-commands/npm-help-search/index.html | 4 +- .../public/cli-commands/npm-help/index.html | 4 +- .../public/cli-commands/npm-hook/index.html | 4 +- .../public/cli-commands/npm-init/index.html | 4 +- .../npm-install-ci-test/index.html | 4 +- .../cli-commands/npm-install-test/index.html | 4 +- .../cli-commands/npm-install/index.html | 4 +- .../public/cli-commands/npm-link/index.html | 4 +- .../public/cli-commands/npm-logout/index.html | 4 +- .../public/cli-commands/npm-ls/index.html | 6 +- .../public/cli-commands/npm-org/index.html | 4 +- .../cli-commands/npm-outdated/index.html | 4 +- .../public/cli-commands/npm-owner/index.html | 4 +- .../public/cli-commands/npm-pack/index.html | 4 +- .../public/cli-commands/npm-ping/index.html | 4 +- .../public/cli-commands/npm-prefix/index.html | 4 +- .../cli-commands/npm-profile/index.html | 4 +- .../public/cli-commands/npm-prune/index.html | 4 +- .../cli-commands/npm-publish/index.html | 4 +- .../cli-commands/npm-rebuild/index.html | 4 +- .../public/cli-commands/npm-repo/index.html | 4 +- .../cli-commands/npm-restart/index.html | 4 +- .../public/cli-commands/npm-root/index.html | 4 +- .../cli-commands/npm-run-script/index.html | 4 +- .../public/cli-commands/npm-search/index.html | 4 +- .../cli-commands/npm-shrinkwrap/index.html | 4 +- .../public/cli-commands/npm-star/index.html | 4 +- .../public/cli-commands/npm-stars/index.html | 4 +- .../public/cli-commands/npm-start/index.html | 4 +- .../public/cli-commands/npm-stop/index.html | 4 +- .../public/cli-commands/npm-team/index.html | 4 +- .../public/cli-commands/npm-test/index.html | 4 +- .../public/cli-commands/npm-token/index.html | 4 +- .../cli-commands/npm-uninstall/index.html | 4 +- .../cli-commands/npm-unpublish/index.html | 4 +- .../public/cli-commands/npm-update/index.html | 4 +- .../cli-commands/npm-version/index.html | 4 +- .../public/cli-commands/npm-view/index.html | 4 +- .../public/cli-commands/npm-whoami/index.html | 4 +- .../docs/public/cli-commands/npm/index.html | 6 +- .../public/configuring-npm/folders/index.html | 4 +- .../public/configuring-npm/install/index.html | 4 +- .../public/configuring-npm/npmrc/index.html | 4 +- .../configuring-npm/package-json/index.html | 4 +- .../package-lock-json/index.html | 4 +- .../configuring-npm/package-locks/index.html | 4 +- .../shrinkwrap-json/index.html | 4 +- deps/npm/docs/public/index.html | 2 +- .../docs/public/using-npm/config/index.html | 4 +- .../public/using-npm/developers/index.html | 4 +- .../docs/public/using-npm/disputes/index.html | 4 +- .../npm/docs/public/using-npm/orgs/index.html | 4 +- .../docs/public/using-npm/registry/index.html | 4 +- .../docs/public/using-npm/removal/index.html | 4 +- .../docs/public/using-npm/scope/index.html | 4 +- .../docs/public/using-npm/scripts/index.html | 4 +- .../docs/public/using-npm/semver/index.html | 4 +- deps/npm/man/man1/npm-ls.1 | 2 +- deps/npm/man/man1/npm.1 | 2 +- .../readable-stream/CONTRIBUTING.md | 38 --- .../node_modules/bcrypt-pbkdf/CONTRIBUTING.md | 13 - .../readable-stream/CONTRIBUTING.md | 38 --- .../npm/node_modules/deep-extend/CHANGELOG.md | 8 + deps/npm/node_modules/deep-extend/README.md | 2 - .../npm/node_modules/deep-extend/package.json | 29 +- .../readable-stream/CONTRIBUTING.md | 38 --- .../readable-stream/CONTRIBUTING.md | 38 --- .../readable-stream/CONTRIBUTING.md | 38 --- .../readable-stream/CONTRIBUTING.md | 38 --- deps/npm/node_modules/is-ci/.travis.yml | 7 - deps/npm/node_modules/is-ci/README.md | 29 +- deps/npm/node_modules/is-ci/package.json | 22 +- deps/npm/node_modules/is-ci/test.js | 19 -- .../node_modules/is-retry-allowed/index.js | 4 +- .../is-retry-allowed/package.json | 14 +- deps/npm/node_modules/jsprim/CONTRIBUTING.md | 19 -- .../libnpmaccess/CODE_OF_CONDUCT.md | 151 ----------- .../node_modules/libnpmaccess/CONTRIBUTING.md | 256 ------------------ .../libnpmconfig/CODE_OF_CONDUCT.md | 151 ----------- .../node_modules/libnpmconfig/CONTRIBUTING.md | 256 ------------------ .../node_modules/libnpmorg/CODE_OF_CONDUCT.md | 151 ----------- .../node_modules/libnpmorg/CONTRIBUTING.md | 256 ------------------ .../libnpmpublish/CODE_OF_CONDUCT.md | 151 ----------- .../libnpmpublish/CONTRIBUTING.md | 256 ------------------ .../libnpmsearch/CODE_OF_CONDUCT.md | 151 ----------- .../node_modules/libnpmsearch/CONTRIBUTING.md | 256 ------------------ .../libnpmteam/CODE_OF_CONDUCT.md | 151 ----------- .../node_modules/libnpmteam/CONTRIBUTING.md | 256 ------------------ deps/npm/node_modules/mkdirp/index.js | 1 + deps/npm/node_modules/mkdirp/package.json | 22 +- .../npm/node_modules/node-gyp/CONTRIBUTING.md | 34 --- .../readable-stream/CONTRIBUTING.md | 38 --- .../rc/node_modules/minimist/example/parse.js | 2 +- .../rc/node_modules/minimist/index.js | 15 +- .../rc/node_modules/minimist/package.json | 12 +- .../rc/node_modules/minimist/readme.markdown | 32 ++- .../rc/node_modules/minimist/test/bool.js | 12 + .../rc/node_modules/minimist/test/proto.js | 44 +++ deps/npm/node_modules/rc/package.json | 16 +- .../readable-stream/CONTRIBUTING.md | 38 --- .../registry-auth-token/.npmignore | 6 + .../registry-auth-token/CHANGELOG.md | 6 + .../node_modules/registry-auth-token/index.js | 25 +- .../registry-auth-token/package.json | 12 +- .../test/auth-token.test.js | 36 +++ .../registry-auth-token/yarn.lock | 20 +- .../readable-stream/CONTRIBUTING.md | 38 --- .../readable-stream/CONTRIBUTING.md | 38 --- .../node_modules/update-notifier/package.json | 14 +- deps/npm/node_modules/verror/CONTRIBUTING.md | 19 -- deps/npm/node_modules/widest-line/index.js | 7 +- .../npm/node_modules/widest-line/package.json | 12 +- deps/npm/package.json | 4 +- deps/npm/scripts/dep-update | 1 + deps/npm/scripts/dev-dep-update | 1 + deps/npm/scripts/gen-dev-ignores.js | 2 + .../test/fixtures/config/userconfig-with-gc | 23 ++ deps/npm/test/fixtures/third-party.md | 25 ++ 138 files changed, 485 insertions(+), 3233 deletions(-) delete mode 100644 deps/npm/node_modules/are-we-there-yet/node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/bcrypt-pbkdf/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/concat-stream/node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/duplexify/node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/flush-write-stream/node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/from2/node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/fs-write-stream-atomic/node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/is-ci/.travis.yml delete mode 100644 deps/npm/node_modules/is-ci/test.js delete mode 100644 deps/npm/node_modules/jsprim/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/libnpmaccess/CODE_OF_CONDUCT.md delete mode 100644 deps/npm/node_modules/libnpmaccess/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/libnpmconfig/CODE_OF_CONDUCT.md delete mode 100644 deps/npm/node_modules/libnpmconfig/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/libnpmorg/CODE_OF_CONDUCT.md delete mode 100644 deps/npm/node_modules/libnpmorg/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/libnpmpublish/CODE_OF_CONDUCT.md delete mode 100644 deps/npm/node_modules/libnpmpublish/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/libnpmsearch/CODE_OF_CONDUCT.md delete mode 100644 deps/npm/node_modules/libnpmsearch/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/libnpmteam/CODE_OF_CONDUCT.md delete mode 100644 deps/npm/node_modules/libnpmteam/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/node-gyp/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/parallel-transform/node_modules/readable-stream/CONTRIBUTING.md create mode 100644 deps/npm/node_modules/rc/node_modules/minimist/test/proto.js delete mode 100644 deps/npm/node_modules/readable-stream/CONTRIBUTING.md create mode 100644 deps/npm/node_modules/registry-auth-token/.npmignore delete mode 100644 deps/npm/node_modules/stream-iterate/node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/through2/node_modules/readable-stream/CONTRIBUTING.md delete mode 100644 deps/npm/node_modules/verror/CONTRIBUTING.md create mode 100644 deps/npm/test/fixtures/config/userconfig-with-gc create mode 100644 deps/npm/test/fixtures/third-party.md diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md index 1c0779eb25e5d7..5cd9c8d8f88615 100644 --- a/deps/npm/CHANGELOG.md +++ b/deps/npm/CHANGELOG.md @@ -1,3 +1,20 @@ +## 6.14.4 (2020-03-24) + +### DEPENDENCIES + +* Bump `minimist@1.2.5` transitive dep to resolve security issue + * [`9c554fd8c`](https://github.com/npm/cli/commit/9c554fd8cd1e9aeb8eb122ccfa3c78d12af4097a) `update-notifier@2.5.0` + * bump `deep-extend@1.2.5` + * bump `deep-extend@0.6.0` + * bump `is-ci@1.2.1` + * bump `is-retry-allowed@1.2.0` + * bump `rc@1.2.8` + * bump `registry-auth-token@3.4.0` + * bump `widest-line@2.0.1` +* [`136832dca`](https://github.com/npm/cli/commit/136832dcae13cb5518b1fe17bd63ea9b2a195f92) `mkdirp@0.5.4` +* [`8bf99b2b5`](https://github.com/npm/cli/commit/8bf99b2b58c14d45dc6739fce77de051ebc8ffb7) [#1053](https://github.com/npm/cli/pull/1053) deps: updates term-size to use signed binary + * [`d2f08a1bdb`](https://github.com/nodejs/node/commit/d2f08a1bdb78655c4a3fc49825986c148d14117e) ([@rvagg](https://github.com/rvagg)) + ## 6.14.3 (2020-03-19) ### DOCUMENTATION diff --git a/deps/npm/docs/public/cli-commands/npm-access/index.html b/deps/npm/docs/public/cli-commands/npm-access/index.html index 42d6d5374f2655..f3853e530b6b3a 100644 --- a/deps/npm/docs/public/cli-commands/npm-access/index.html +++ b/deps/npm/docs/public/cli-commands/npm-access/index.html @@ -74,7 +74,7 @@ } } }) -

    npm access

    +

    npm access

    Set access level on published packages

    Synopsis

    npm access public [<package>]
    @@ -148,4 +148,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-adduser/index.html b/deps/npm/docs/public/cli-commands/npm-adduser/index.html index 755c36040bf4c5..7b96fcce677001 100644 --- a/deps/npm/docs/public/cli-commands/npm-adduser/index.html +++ b/deps/npm/docs/public/cli-commands/npm-adduser/index.html @@ -74,7 +74,7 @@ } } }) -

    +

    section: cli-commands title: npm-adduser description: Set access level on published packages

    @@ -143,4 +143,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-audit/index.html b/deps/npm/docs/public/cli-commands/npm-audit/index.html index af60442b3d8bbb..5d57fac3d4e3e5 100644 --- a/deps/npm/docs/public/cli-commands/npm-audit/index.html +++ b/deps/npm/docs/public/cli-commands/npm-audit/index.html @@ -74,7 +74,7 @@ } } }) -

    npm audit

    +

    npm audit

    Run a security audit

    Synopsis

    npm audit [--json|--parseable|--audit-level=(low|moderate|high|critical)]
    @@ -165,4 +165,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bin/index.html b/deps/npm/docs/public/cli-commands/npm-bin/index.html index a90382b1fa30a7..c54afe93556aeb 100644 --- a/deps/npm/docs/public/cli-commands/npm-bin/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bin/index.html @@ -74,7 +74,7 @@ } } }) -

    npm bin

    +

    npm bin

    Display npm bin folder

    Synopsis

    npm bin [-g|--global]
    @@ -94,4 +94,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bugs/index.html b/deps/npm/docs/public/cli-commands/npm-bugs/index.html index abdf2358c20769..d9f5b5282ff212 100644 --- a/deps/npm/docs/public/cli-commands/npm-bugs/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bugs/index.html @@ -74,7 +74,7 @@ } } }) -

    npm bugs

    +

    npm bugs

    Bugs for a package in a web browser maybe

    Synopsis

    npm bugs [<pkgname>]
    @@ -114,4 +114,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-build/index.html b/deps/npm/docs/public/cli-commands/npm-build/index.html index d628353420206e..8850a4e9d88f3e 100644 --- a/deps/npm/docs/public/cli-commands/npm-build/index.html +++ b/deps/npm/docs/public/cli-commands/npm-build/index.html @@ -74,7 +74,7 @@ } } }) -

    npm build

    +

    npm build

    Build a package

    Synopsis

    npm build [<package-folder>]
    @@ -100,4 +100,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-bundle/index.html b/deps/npm/docs/public/cli-commands/npm-bundle/index.html index 1d2afb83593ef2..9e8457cc5ac1c3 100644 --- a/deps/npm/docs/public/cli-commands/npm-bundle/index.html +++ b/deps/npm/docs/public/cli-commands/npm-bundle/index.html @@ -74,7 +74,7 @@ } } }) -

    npm bundle

    +

    npm bundle

    REMOVED

    Description

    The npm bundle command has been removed in 1.0, for the simple reason @@ -91,4 +91,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-cache/index.html b/deps/npm/docs/public/cli-commands/npm-cache/index.html index f60c5bdab9a212..bbf164e0fb1e5a 100644 --- a/deps/npm/docs/public/cli-commands/npm-cache/index.html +++ b/deps/npm/docs/public/cli-commands/npm-cache/index.html @@ -74,7 +74,7 @@ } } }) -

    npm cache

    +

    npm cache

    Manipulates packages cache

    Synopsis

    npm cache add <tarball file>
    @@ -145,4 +145,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ci/index.html b/deps/npm/docs/public/cli-commands/npm-ci/index.html index d502204291cba4..08b46aff44b0d5 100644 --- a/deps/npm/docs/public/cli-commands/npm-ci/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ci/index.html @@ -74,7 +74,7 @@ } } }) -

    npm ci

    +

    npm ci

    Install a project with a clean slate

    Synopsis

    npm ci
    @@ -122,4 +122,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-completion/index.html b/deps/npm/docs/public/cli-commands/npm-completion/index.html index e97603b0ab3c9d..0a8d28382f08e5 100644 --- a/deps/npm/docs/public/cli-commands/npm-completion/index.html +++ b/deps/npm/docs/public/cli-commands/npm-completion/index.html @@ -74,7 +74,7 @@ } } }) -

    npm completion

    +

    npm completion

    Tab Completion for npm

    Synopsis

    source <(npm completion)
    @@ -104,4 +104,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-config/index.html b/deps/npm/docs/public/cli-commands/npm-config/index.html index 0af6041b1384ff..5f6c38423fd106 100644 --- a/deps/npm/docs/public/cli-commands/npm-config/index.html +++ b/deps/npm/docs/public/cli-commands/npm-config/index.html @@ -74,7 +74,7 @@ } } }) -

    npm config

    +

    npm config

    Manage the npm configuration files

    Synopsis

    npm config set <key> <value> [-g|--global]
    @@ -128,4 +128,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-dedupe/index.html b/deps/npm/docs/public/cli-commands/npm-dedupe/index.html index 6e9e8cca40b85a..0b9b4e795290c3 100644 --- a/deps/npm/docs/public/cli-commands/npm-dedupe/index.html +++ b/deps/npm/docs/public/cli-commands/npm-dedupe/index.html @@ -74,7 +74,7 @@ } } }) -

    npm dedupe

    +

    npm dedupe

    Reduce duplication

    Synopsis

    npm dedupe
    @@ -121,4 +121,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-deprecate/index.html b/deps/npm/docs/public/cli-commands/npm-deprecate/index.html index 18996ef9a79b39..503e6ec7fc4660 100644 --- a/deps/npm/docs/public/cli-commands/npm-deprecate/index.html +++ b/deps/npm/docs/public/cli-commands/npm-deprecate/index.html @@ -74,7 +74,7 @@ } } }) -

    npm deprecate

    +

    npm deprecate

    Deprecate a version of a package

    Synopsis

    npm deprecate <pkg>[@<version>] <message>
    @@ -100,4 +100,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html b/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html index 6a79d5c45dfa03..7955f8def330eb 100644 --- a/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html +++ b/deps/npm/docs/public/cli-commands/npm-dist-tag/index.html @@ -74,7 +74,7 @@ } } }) -

    +

    section: cli-commands title: npm-dist-tag description: Modify package distribution tags

    @@ -149,4 +149,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-docs/index.html b/deps/npm/docs/public/cli-commands/npm-docs/index.html index f83c2dcc919064..42f18e75075ce1 100644 --- a/deps/npm/docs/public/cli-commands/npm-docs/index.html +++ b/deps/npm/docs/public/cli-commands/npm-docs/index.html @@ -74,7 +74,7 @@ } } }) -

    npm docs

    +

    npm docs

    Docs for a package in a web browser maybe

    Synopsis

    npm docs [<pkgname> [<pkgname> ...]]
    @@ -115,4 +115,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-doctor/index.html b/deps/npm/docs/public/cli-commands/npm-doctor/index.html index af07d1dc13ddc8..ac94c50d0edca3 100644 --- a/deps/npm/docs/public/cli-commands/npm-doctor/index.html +++ b/deps/npm/docs/public/cli-commands/npm-doctor/index.html @@ -74,7 +74,7 @@ } } }) -

    npm doctor

    +

    npm doctor

    Check your environments

    Synopsis

    npm doctor
    @@ -163,4 +163,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-edit/index.html b/deps/npm/docs/public/cli-commands/npm-edit/index.html index 5637ae9b937ffd..bddb1c09c83afc 100644 --- a/deps/npm/docs/public/cli-commands/npm-edit/index.html +++ b/deps/npm/docs/public/cli-commands/npm-edit/index.html @@ -74,7 +74,7 @@ } } }) -

    npm edit

    +

    npm edit

    Edit an installed package

    Synopsis

    npm edit <pkg>[/<subpkg>...]
    @@ -110,4 +110,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-explore/index.html b/deps/npm/docs/public/cli-commands/npm-explore/index.html index b303ef87fa6a25..97f438294558d4 100644 --- a/deps/npm/docs/public/cli-commands/npm-explore/index.html +++ b/deps/npm/docs/public/cli-commands/npm-explore/index.html @@ -74,7 +74,7 @@ } } }) -

    +

    section: cli-commands title: npm-explore description: Browse an installed package

    @@ -114,4 +114,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-fund/index.html b/deps/npm/docs/public/cli-commands/npm-fund/index.html index 6316163ea6257c..f58901446cd58a 100644 --- a/deps/npm/docs/public/cli-commands/npm-fund/index.html +++ b/deps/npm/docs/public/cli-commands/npm-fund/index.html @@ -74,7 +74,7 @@ } } }) -

    npm fund

    +

    npm fund

    Retrieve funding information

    Synopsis

        npm fund [<pkg>]
    @@ -128,4 +128,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-help-search/index.html b/deps/npm/docs/public/cli-commands/npm-help-search/index.html index 7d14ad4482c381..abd84b775782d5 100644 --- a/deps/npm/docs/public/cli-commands/npm-help-search/index.html +++ b/deps/npm/docs/public/cli-commands/npm-help-search/index.html @@ -74,7 +74,7 @@ } } }) -

    npm help-search

    +

    npm help-search

    Search npm help documentation

    Synopsis

    npm help-search <text>
    @@ -105,4 +105,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-help/index.html b/deps/npm/docs/public/cli-commands/npm-help/index.html index ccb5a130407fac..e38710dc87f52c 100644 --- a/deps/npm/docs/public/cli-commands/npm-help/index.html +++ b/deps/npm/docs/public/cli-commands/npm-help/index.html @@ -74,7 +74,7 @@ } } }) -

    npm help

    +

    npm help

    Get help on npm

    Synopsis

    npm help <term> [<terms..>]
    @@ -107,4 +107,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-hook/index.html b/deps/npm/docs/public/cli-commands/npm-hook/index.html index bce71b0de492e6..bd3e717c829525 100644 --- a/deps/npm/docs/public/cli-commands/npm-hook/index.html +++ b/deps/npm/docs/public/cli-commands/npm-hook/index.html @@ -74,7 +74,7 @@ } } }) -

    npm hook

    +

    npm hook

    Manage registry hooks

    Synopsis

    npm hook ls [pkg]
    @@ -119,4 +119,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-init/index.html b/deps/npm/docs/public/cli-commands/npm-init/index.html index 534721f110b361..0515fcadc6ce4b 100644 --- a/deps/npm/docs/public/cli-commands/npm-init/index.html +++ b/deps/npm/docs/public/cli-commands/npm-init/index.html @@ -74,7 +74,7 @@ } } }) -

    npm init

    +

    npm init

    create a package.json file

    Synopsis

    npm init [--force|-f|--yes|-y|--scope]
    @@ -126,4 +126,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html b/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html index b44a6c6569b2cf..78f717dc33e524 100644 --- a/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install-ci-test/index.html @@ -74,7 +74,7 @@ } } }) -

    npm install-ci-test

    +

    npm install-ci-test

    Install a project with a clean slate and run tests

    Synopsis

    npm install-ci-test
    @@ -93,4 +93,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install-test/index.html b/deps/npm/docs/public/cli-commands/npm-install-test/index.html index ca4592503462e3..d63b61afcf1249 100644 --- a/deps/npm/docs/public/cli-commands/npm-install-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install-test/index.html @@ -74,7 +74,7 @@ } } }) -

    npm install-test

    +

    npm install-test

    Install package(s) and run tests

    Synopsis

    npm install-test (with no args, in package dir)
    @@ -102,4 +102,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-install/index.html b/deps/npm/docs/public/cli-commands/npm-install/index.html index c809fc102b07d0..16a98c965a6d08 100644 --- a/deps/npm/docs/public/cli-commands/npm-install/index.html +++ b/deps/npm/docs/public/cli-commands/npm-install/index.html @@ -74,7 +74,7 @@ } } }) -

    npm install

    +

    npm install

    Install a package

    Synopsis

    npm install (with no args, in package dir)
    @@ -468,4 +468,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-link/index.html b/deps/npm/docs/public/cli-commands/npm-link/index.html index 1b0a4516ea94b9..5b568995d6209d 100644 --- a/deps/npm/docs/public/cli-commands/npm-link/index.html +++ b/deps/npm/docs/public/cli-commands/npm-link/index.html @@ -74,7 +74,7 @@ } } }) -

    npm link

    +

    npm link

    Synopsis

    npm link (in package dir)
    @@ -134,4 +134,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-logout/index.html b/deps/npm/docs/public/cli-commands/npm-logout/index.html index 3ed2e62a05a4bf..7e4ce934fb5c4c 100644 --- a/deps/npm/docs/public/cli-commands/npm-logout/index.html +++ b/deps/npm/docs/public/cli-commands/npm-logout/index.html @@ -74,7 +74,7 @@ } } }) -

    npm logout

    +

    npm logout

    Log out of the registry

    Synopsis

    npm logout [--registry=<url>] [--scope=<@scope>]
    @@ -109,4 +109,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ls/index.html b/deps/npm/docs/public/cli-commands/npm-ls/index.html index 3cc086aace514a..89ed133f3ab21b 100644 --- a/deps/npm/docs/public/cli-commands/npm-ls/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ls/index.html @@ -74,7 +74,7 @@ } } }) -

    npm ls

    +
    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-org/index.html b/deps/npm/docs/public/cli-commands/npm-org/index.html index c522ab4571b5a2..0a7800216e28e1 100644 --- a/deps/npm/docs/public/cli-commands/npm-org/index.html +++ b/deps/npm/docs/public/cli-commands/npm-org/index.html @@ -74,7 +74,7 @@ } } }) -

    npm org

    +

    npm org

    Manage orgs

    Synopsis

    npm org set <orgname> <username> [developer | admin | owner]
    @@ -107,4 +107,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-outdated/index.html b/deps/npm/docs/public/cli-commands/npm-outdated/index.html index 270d8ed1417a28..77274aff6bf25d 100644 --- a/deps/npm/docs/public/cli-commands/npm-outdated/index.html +++ b/deps/npm/docs/public/cli-commands/npm-outdated/index.html @@ -74,7 +74,7 @@ } } }) -

    npm outdated

    +

    npm outdated

    Check for outdated packages

    Synopsis

    npm outdated [[<@scope>/]<pkg> ...]
    @@ -178,4 +178,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-owner/index.html b/deps/npm/docs/public/cli-commands/npm-owner/index.html index 2d2a9205b791b1..d128bf2ff1136a 100644 --- a/deps/npm/docs/public/cli-commands/npm-owner/index.html +++ b/deps/npm/docs/public/cli-commands/npm-owner/index.html @@ -74,7 +74,7 @@ } } }) -

    npm owner

    +

    npm owner

    Manage package owners

    Synopsis

    npm owner add <user> [<@scope>/]<pkg>
    @@ -114,4 +114,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-pack/index.html b/deps/npm/docs/public/cli-commands/npm-pack/index.html index c17aa71cea7303..1bdd218cfb3f11 100644 --- a/deps/npm/docs/public/cli-commands/npm-pack/index.html +++ b/deps/npm/docs/public/cli-commands/npm-pack/index.html @@ -74,7 +74,7 @@ } } }) -

    npm pack

    +

    npm pack

    Create a tarball from a package

    Synopsis

    npm pack [[<@scope>/]<pkg>...] [--dry-run]
    @@ -102,4 +102,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-ping/index.html b/deps/npm/docs/public/cli-commands/npm-ping/index.html index 12d116088d3a10..478c206499f759 100644 --- a/deps/npm/docs/public/cli-commands/npm-ping/index.html +++ b/deps/npm/docs/public/cli-commands/npm-ping/index.html @@ -74,7 +74,7 @@ } } }) -

    npm ping

    +

    npm ping

    Ping npm registry

    Synopsis

    npm ping [--registry <registry>]
    @@ -95,4 +95,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-prefix/index.html b/deps/npm/docs/public/cli-commands/npm-prefix/index.html index 6d181e522dedc5..aa5515abf372bb 100644 --- a/deps/npm/docs/public/cli-commands/npm-prefix/index.html +++ b/deps/npm/docs/public/cli-commands/npm-prefix/index.html @@ -74,7 +74,7 @@ } } }) -

    npm prefix

    +

    npm prefix

    Display prefix

    Synopsis

    npm prefix [-g]
    @@ -98,4 +98,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-profile/index.html b/deps/npm/docs/public/cli-commands/npm-profile/index.html index 2be07fe468bd92..97617c3fb01b80 100644 --- a/deps/npm/docs/public/cli-commands/npm-profile/index.html +++ b/deps/npm/docs/public/cli-commands/npm-profile/index.html @@ -74,7 +74,7 @@ } } }) -

    npm profile

    +

    npm profile

    Change settings on your registry profile

    Synopsis

    npm profile get [--json|--parseable] [<property>]
    @@ -148,4 +148,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-prune/index.html b/deps/npm/docs/public/cli-commands/npm-prune/index.html index 9acabd16d78bab..8dc6092402f5e1 100644 --- a/deps/npm/docs/public/cli-commands/npm-prune/index.html +++ b/deps/npm/docs/public/cli-commands/npm-prune/index.html @@ -74,7 +74,7 @@ } } }) -

    npm prune

    +

    npm prune

    Remove extraneous packages

    Synopsis

    npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
    @@ -108,4 +108,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-publish/index.html b/deps/npm/docs/public/cli-commands/npm-publish/index.html index 12adfb432ac484..4ba3e0db658254 100644 --- a/deps/npm/docs/public/cli-commands/npm-publish/index.html +++ b/deps/npm/docs/public/cli-commands/npm-publish/index.html @@ -74,7 +74,7 @@ } } }) -

    npm publish

    +

    npm publish

    Publish a package

    Synopsis

    npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>] [--otp otpcode] [--dry-run]
    @@ -140,4 +140,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-rebuild/index.html b/deps/npm/docs/public/cli-commands/npm-rebuild/index.html index a1544c2c7cc28e..1be8c34433293f 100644 --- a/deps/npm/docs/public/cli-commands/npm-rebuild/index.html +++ b/deps/npm/docs/public/cli-commands/npm-rebuild/index.html @@ -74,7 +74,7 @@ } } }) -

    npm rebuild

    +

    npm rebuild

    Rebuild a package

    Synopsis

    npm rebuild [[<@scope>/<name>]...]
    @@ -93,4 +93,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-repo/index.html b/deps/npm/docs/public/cli-commands/npm-repo/index.html index 479482c78b6c29..790ee382f5e989 100644 --- a/deps/npm/docs/public/cli-commands/npm-repo/index.html +++ b/deps/npm/docs/public/cli-commands/npm-repo/index.html @@ -74,7 +74,7 @@ } } }) -

    npm repo

    +

    npm repo

    Open package repository page in the browser

    Synopsis

    npm repo [<pkg>]
    @@ -101,4 +101,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-restart/index.html b/deps/npm/docs/public/cli-commands/npm-restart/index.html index 7b15c970ea6332..0a360a63e88e8f 100644 --- a/deps/npm/docs/public/cli-commands/npm-restart/index.html +++ b/deps/npm/docs/public/cli-commands/npm-restart/index.html @@ -74,7 +74,7 @@ } } }) -

    npm restart

    +

    npm restart

    Restart a package

    Synopsis

    npm restart [-- <args>]
    @@ -113,4 +113,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-root/index.html b/deps/npm/docs/public/cli-commands/npm-root/index.html index 5dff9f57139a1e..28c9770f184c2a 100644 --- a/deps/npm/docs/public/cli-commands/npm-root/index.html +++ b/deps/npm/docs/public/cli-commands/npm-root/index.html @@ -74,7 +74,7 @@ } } }) -

    npm root

    +

    npm root

    Display npm root

    Synopsis

    npm root [-g]
    @@ -94,4 +94,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-run-script/index.html b/deps/npm/docs/public/cli-commands/npm-run-script/index.html index 1543590862643a..3afd3d51c62c09 100644 --- a/deps/npm/docs/public/cli-commands/npm-run-script/index.html +++ b/deps/npm/docs/public/cli-commands/npm-run-script/index.html @@ -74,7 +74,7 @@ } } }) -

    npm run-script

    +

    npm run-script

    Run arbitrary package scripts

    Synopsis

    npm run-script <command> [--silent] [-- <args>...]
    @@ -143,4 +143,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-search/index.html b/deps/npm/docs/public/cli-commands/npm-search/index.html index beb2c3449b0e60..d97c2b26efa3dd 100644 --- a/deps/npm/docs/public/cli-commands/npm-search/index.html +++ b/deps/npm/docs/public/cli-commands/npm-search/index.html @@ -74,7 +74,7 @@ } } }) -

    npm search

    +

    npm search

    Search for packages

    Synopsis

    npm search [-l|--long] [--json] [--parseable] [--no-description] [search terms ...]
    @@ -168,4 +168,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html b/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html index f3de0a29e8f130..2cff81bb8c896b 100644 --- a/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html +++ b/deps/npm/docs/public/cli-commands/npm-shrinkwrap/index.html @@ -74,7 +74,7 @@ } } }) -

    npm shrinkwrap

    +

    npm shrinkwrap

    Lock down dependency versions for publication

    Synopsis

    npm shrinkwrap
    @@ -101,4 +101,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-star/index.html b/deps/npm/docs/public/cli-commands/npm-star/index.html index ea0fbdb1988d75..d0c887c754a130 100644 --- a/deps/npm/docs/public/cli-commands/npm-star/index.html +++ b/deps/npm/docs/public/cli-commands/npm-star/index.html @@ -74,7 +74,7 @@ } } }) -

    npm star

    +

    npm star

    Mark your favorite packages

    Synopsis

    npm star [<pkg>...]
    @@ -96,4 +96,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-stars/index.html b/deps/npm/docs/public/cli-commands/npm-stars/index.html index ae9d0a68c5b00e..226a132de82039 100644 --- a/deps/npm/docs/public/cli-commands/npm-stars/index.html +++ b/deps/npm/docs/public/cli-commands/npm-stars/index.html @@ -74,7 +74,7 @@ } } }) -

    npm stars

    +

    npm stars

    View packages marked as favorites

    Synopsis

    npm stars [<user>]
    @@ -96,4 +96,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-start/index.html b/deps/npm/docs/public/cli-commands/npm-start/index.html index 38a286bf5391a7..387e4fe959e9c9 100644 --- a/deps/npm/docs/public/cli-commands/npm-start/index.html +++ b/deps/npm/docs/public/cli-commands/npm-start/index.html @@ -74,7 +74,7 @@ } } }) -

    npm start

    +

    npm start

    Start a package

    Synopsis

    npm start [-- <args>]
    @@ -98,4 +98,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-stop/index.html b/deps/npm/docs/public/cli-commands/npm-stop/index.html index be1fd5d5108e0e..e6fed3aeec6c23 100644 --- a/deps/npm/docs/public/cli-commands/npm-stop/index.html +++ b/deps/npm/docs/public/cli-commands/npm-stop/index.html @@ -74,7 +74,7 @@ } } }) -

    npm stop

    +

    npm stop

    Stop a package

    Synopsis

    npm stop [-- <args>]
    @@ -94,4 +94,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-team/index.html b/deps/npm/docs/public/cli-commands/npm-team/index.html index 438c0af40fa430..6d6a0bd0866a40 100644 --- a/deps/npm/docs/public/cli-commands/npm-team/index.html +++ b/deps/npm/docs/public/cli-commands/npm-team/index.html @@ -74,7 +74,7 @@ } } }) -

    npm team

    +

    npm team

    Manage organization teams and team memberships

    Synopsis

    npm team create <scope:team>
    @@ -125,4 +125,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-test/index.html b/deps/npm/docs/public/cli-commands/npm-test/index.html index 0e509da74b22b9..7f47f2ab2d328d 100644 --- a/deps/npm/docs/public/cli-commands/npm-test/index.html +++ b/deps/npm/docs/public/cli-commands/npm-test/index.html @@ -74,7 +74,7 @@ } } }) -

    npm test

    +

    npm test

    Test a package

    Synopsis

    npm test [-- <args>]
    @@ -96,4 +96,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-token/index.html b/deps/npm/docs/public/cli-commands/npm-token/index.html index 16d94a6d7176ba..10f880ea2e132e 100644 --- a/deps/npm/docs/public/cli-commands/npm-token/index.html +++ b/deps/npm/docs/public/cli-commands/npm-token/index.html @@ -74,7 +74,7 @@ } } }) -

    npm token

    +

    npm token

    Manage your authentication tokens

    Synopsis

      npm token list [--json|--parseable]
    @@ -133,4 +133,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-uninstall/index.html b/deps/npm/docs/public/cli-commands/npm-uninstall/index.html index 9264061d7c3525..059bac05a46a2d 100644 --- a/deps/npm/docs/public/cli-commands/npm-uninstall/index.html +++ b/deps/npm/docs/public/cli-commands/npm-uninstall/index.html @@ -74,7 +74,7 @@ } } }) -

    npm uninstall

    +

    npm uninstall

    Remove a package

    Synopsis

    npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|-D|--save-dev|-O|--save-optional|--no-save]
    @@ -118,4 +118,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-unpublish/index.html b/deps/npm/docs/public/cli-commands/npm-unpublish/index.html index ae663f1eb94ffa..f9ea9a44155b54 100644 --- a/deps/npm/docs/public/cli-commands/npm-unpublish/index.html +++ b/deps/npm/docs/public/cli-commands/npm-unpublish/index.html @@ -74,7 +74,7 @@ } } }) -

    npm unpublish

    +

    npm unpublish

    Remove a package from the registry

    Synopsis

    Unpublishing a single version of a package

    @@ -106,4 +106,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-update/index.html b/deps/npm/docs/public/cli-commands/npm-update/index.html index 19e83c6baf524f..e6653d1f1908f8 100644 --- a/deps/npm/docs/public/cli-commands/npm-update/index.html +++ b/deps/npm/docs/public/cli-commands/npm-update/index.html @@ -74,7 +74,7 @@ } } }) -

    npm update

    +

    npm update

    Update a package

    Synopsis

    npm update [-g] [<pkg>...]
    @@ -167,4 +167,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-version/index.html b/deps/npm/docs/public/cli-commands/npm-version/index.html index 59d72822ff9509..d540d9d254764a 100644 --- a/deps/npm/docs/public/cli-commands/npm-version/index.html +++ b/deps/npm/docs/public/cli-commands/npm-version/index.html @@ -74,7 +74,7 @@ } } }) -

    npm version

    +

    npm version

    Bump a package version

    Synopsis

    npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
    @@ -180,4 +180,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-view/index.html b/deps/npm/docs/public/cli-commands/npm-view/index.html index 3fc7a4bd29fbf1..c9345b8d0893a6 100644 --- a/deps/npm/docs/public/cli-commands/npm-view/index.html +++ b/deps/npm/docs/public/cli-commands/npm-view/index.html @@ -74,7 +74,7 @@ } } }) -

    npm view

    +

    npm view

    View registry info

    Synopsis

    npm view [<@scope>/]<name>[@<version>] [<field>[.<subfield>]...]
    @@ -145,4 +145,4 @@ 

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm-whoami/index.html b/deps/npm/docs/public/cli-commands/npm-whoami/index.html index 30f978f3423be9..e0c37ba0252cc8 100644 --- a/deps/npm/docs/public/cli-commands/npm-whoami/index.html +++ b/deps/npm/docs/public/cli-commands/npm-whoami/index.html @@ -74,7 +74,7 @@ } } }) -

    npm whoami

    +

    npm whoami

    Display npm username

    Synopsis

    npm whoami [--registry <registry>]
    @@ -92,4 +92,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/cli-commands/npm/index.html b/deps/npm/docs/public/cli-commands/npm/index.html index bfb6cd55911791..0d06bfb33ab2e2 100644 --- a/deps/npm/docs/public/cli-commands/npm/index.html +++ b/deps/npm/docs/public/cli-commands/npm/index.html @@ -74,12 +74,12 @@ } } }) -

    npm

    +

    npm

    javascript package manager

    Synopsis

    npm <command> [args]

    Version

    -

    6.14.3

    +

    6.14.4

    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 @@ -211,4 +211,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/folders/index.html b/deps/npm/docs/public/configuring-npm/folders/index.html index af6b56d09bd784..a48d6c70ff5ffd 100644 --- a/deps/npm/docs/public/configuring-npm/folders/index.html +++ b/deps/npm/docs/public/configuring-npm/folders/index.html @@ -74,7 +74,7 @@ } } }) -

    folders

    +

    folders

    Folder Structures Used by npm

    Description

    npm puts various things on your computer. That's its job.

    @@ -240,4 +240,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/install/index.html b/deps/npm/docs/public/configuring-npm/install/index.html index f36bcf6c3606d7..1464ac5477af5a 100644 --- a/deps/npm/docs/public/configuring-npm/install/index.html +++ b/deps/npm/docs/public/configuring-npm/install/index.html @@ -74,7 +74,7 @@ } } }) -

    install

    +

    install

    Download and Install npm

    Description

    To publish and install packages to and from the public npm registry, you must install Node.js and the npm command line interface using either a Node version manager or a Node installer. We strongly recommend using a Node version manager to install Node.js and npm. We do not recommend using a Node installer, since the Node installation process installs npm in a directory with local permissions and can cause permissions errors when you run npm packages globally.

    @@ -123,4 +123,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/npmrc/index.html b/deps/npm/docs/public/configuring-npm/npmrc/index.html index a05313359580bc..e1a2c4efda160e 100644 --- a/deps/npm/docs/public/configuring-npm/npmrc/index.html +++ b/deps/npm/docs/public/configuring-npm/npmrc/index.html @@ -74,7 +74,7 @@ } } }) -

    npmrc

    +

    npmrc

    The npm config files

    Description

    npm gets its config settings from the command line, environment @@ -145,4 +145,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-json/index.html b/deps/npm/docs/public/configuring-npm/package-json/index.html index c4f28223828aa1..0c18b027fdb734 100644 --- a/deps/npm/docs/public/configuring-npm/package-json/index.html +++ b/deps/npm/docs/public/configuring-npm/package-json/index.html @@ -74,7 +74,7 @@ } } }) -

    package.json

    +

    package.json

    Specifics of npm's package.json handling

    Description

    This document is all you need to know about what's required in your package.json @@ -713,4 +713,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-lock-json/index.html b/deps/npm/docs/public/configuring-npm/package-lock-json/index.html index b1922b55d44d9d..6ffd16ebed3502 100644 --- a/deps/npm/docs/public/configuring-npm/package-lock-json/index.html +++ b/deps/npm/docs/public/configuring-npm/package-lock-json/index.html @@ -74,7 +74,7 @@ } } }) -

    package-lock.json

    +

    package-lock.json

    A manifestation of the manifest

    Description

    package-lock.json is automatically generated for any operations where npm @@ -186,4 +186,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/package-locks/index.html b/deps/npm/docs/public/configuring-npm/package-locks/index.html index 9ca424f40d2dab..535f83b28e08e2 100644 --- a/deps/npm/docs/public/configuring-npm/package-locks/index.html +++ b/deps/npm/docs/public/configuring-npm/package-locks/index.html @@ -74,7 +74,7 @@ } } }) -

    package-locks

    +

    package-locks

    An explanation of npm lockfiles

    Description

    Conceptually, the "input" to npm install is a package.json, while its @@ -214,4 +214,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html b/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html index 95d88d30a59950..e2ff06feb4c377 100644 --- a/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html +++ b/deps/npm/docs/public/configuring-npm/shrinkwrap-json/index.html @@ -74,7 +74,7 @@ } } }) -

    npm shrinkwrap.json

    +

    npm shrinkwrap.json

    A publishable lockfile

    Description

    npm-shrinkwrap.json is a file created by npm shrinkwrap. It is identical to @@ -102,4 +102,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/index.html b/deps/npm/docs/public/index.html index 265bf4ca533db3..a3bd3a8d519095 100644 --- a/deps/npm/docs/public/index.html +++ b/deps/npm/docs/public/index.html @@ -128,4 +128,4 @@ } } }) -
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!

    The current stable version of npm is available on GitHub.

    To upgrade, run: npm install npm@latest -g

    \ No newline at end of file +
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!
    npm cli _
    The intelligent package manager for the Node Javascript Platform. Install stuff and get coding!

    The current stable version of npm is available on GitHub.

    To upgrade, run: npm install npm@latest -g

    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/config/index.html b/deps/npm/docs/public/using-npm/config/index.html index fa60cc1ed1ca28..6d7c2995a95c3c 100644 --- a/deps/npm/docs/public/using-npm/config/index.html +++ b/deps/npm/docs/public/using-npm/config/index.html @@ -74,7 +74,7 @@ } } }) -

    config

    +

    config

    More than you probably want to know about npm configuration

    Description

    npm gets its configuration values from the following sources, sorted by priority:

    @@ -1161,4 +1161,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/developers/index.html b/deps/npm/docs/public/using-npm/developers/index.html index 16dfd872f01372..a6cbcdf43bc5e3 100644 --- a/deps/npm/docs/public/using-npm/developers/index.html +++ b/deps/npm/docs/public/using-npm/developers/index.html @@ -74,7 +74,7 @@ } } }) -

    developers

    +

    developers

    Developer Guide

    Description

    So, you've decided to use npm to develop (and maybe publish/deploy) @@ -259,4 +259,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/disputes/index.html b/deps/npm/docs/public/using-npm/disputes/index.html index a96090bc963e98..fa98276007062f 100644 --- a/deps/npm/docs/public/using-npm/disputes/index.html +++ b/deps/npm/docs/public/using-npm/disputes/index.html @@ -74,7 +74,7 @@ } } }) -

    disputes

    +

    disputes

    Handling Module Name Disputes

    This document describes the steps that you should take to resolve module name disputes with other npm publishers. It also describes special steps you should @@ -192,4 +192,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/orgs/index.html b/deps/npm/docs/public/using-npm/orgs/index.html index 6985aac6bbf1db..3ebd3a1444a936 100644 --- a/deps/npm/docs/public/using-npm/orgs/index.html +++ b/deps/npm/docs/public/using-npm/orgs/index.html @@ -74,7 +74,7 @@ } } }) -

    orgs

    +

    orgs

    Working with Teams & Orgs

    Description

    There are three levels of org users:

    @@ -144,4 +144,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/registry/index.html b/deps/npm/docs/public/using-npm/registry/index.html index 332a1d0944b2a6..6cc806bc43651a 100644 --- a/deps/npm/docs/public/using-npm/registry/index.html +++ b/deps/npm/docs/public/using-npm/registry/index.html @@ -74,7 +74,7 @@ } } }) -

    registry

    +

    registry

    The JavaScript Package Registry

    Description

    To resolve packages by name and version, npm talks to a registry website @@ -156,4 +156,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/removal/index.html b/deps/npm/docs/public/using-npm/removal/index.html index cc20f5f3446807..723334e4dae6e3 100644 --- a/deps/npm/docs/public/using-npm/removal/index.html +++ b/deps/npm/docs/public/using-npm/removal/index.html @@ -74,7 +74,7 @@ } } }) -

    removal

    +

    removal

    Cleaning the Slate

    Synopsis

    So sad to see you go.

    @@ -116,4 +116,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/scope/index.html b/deps/npm/docs/public/using-npm/scope/index.html index fdd0038f4ddd80..fe450fd3739bd7 100644 --- a/deps/npm/docs/public/using-npm/scope/index.html +++ b/deps/npm/docs/public/using-npm/scope/index.html @@ -74,7 +74,7 @@ } } }) -

    scope

    +

    scope

    Scoped packages

    Description

    All npm packages have a name. Some package names also have a scope. A scope @@ -159,4 +159,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/scripts/index.html b/deps/npm/docs/public/using-npm/scripts/index.html index aab873ddb350ea..d2376cf2754a68 100644 --- a/deps/npm/docs/public/using-npm/scripts/index.html +++ b/deps/npm/docs/public/using-npm/scripts/index.html @@ -74,7 +74,7 @@ } } }) -

    scripts

    +

    scripts

    How npm handles the "scripts" field

    Description

    The "scripts" property of of your package.json file supports a number of built-in scripts and their preset life cycle events as well as arbitrary scripts. These all can be executed by running npm run-script <stage> or npm run <stage> for short. Pre and post commands with matching names will be run for those as well (e.g. premyscript, myscript, postmyscript). Scripts from dependencies can be run with npm explore <pkg> -- npm run <stage>.

    @@ -309,4 +309,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/docs/public/using-npm/semver/index.html b/deps/npm/docs/public/using-npm/semver/index.html index 513a6cf741a421..79ff8e1c437f92 100644 --- a/deps/npm/docs/public/using-npm/semver/index.html +++ b/deps/npm/docs/public/using-npm/semver/index.html @@ -74,7 +74,7 @@ } } }) -

    semver(7) -- The semantic versioner for npm

    +

    semver(7) -- The semantic versioner for npm

    Install

    npm install --save semver

    Usage

    @@ -435,4 +435,4 @@

    \ No newline at end of file +
    \ No newline at end of file diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index 550ae7c67d177a..54ef77772f060f 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -22,7 +22,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show: .P .RS 2 .nf - npm@6\.14\.3 /path/to/npm + npm@6\.14\.4 /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 3a0308ea98f117..a9ea697aea7dc2 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -10,7 +10,7 @@ npm [args] .RE .SS Version .P -6\.14\.3 +6\.14\.4 .SS Description .P npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/node_modules/are-we-there-yet/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/are-we-there-yet/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/are-we-there-yet/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/bcrypt-pbkdf/CONTRIBUTING.md b/deps/npm/node_modules/bcrypt-pbkdf/CONTRIBUTING.md deleted file mode 100644 index 401d34ed5c7a3f..00000000000000 --- a/deps/npm/node_modules/bcrypt-pbkdf/CONTRIBUTING.md +++ /dev/null @@ -1,13 +0,0 @@ -# Contributing - -This repository uses [cr.joyent.us](https://cr.joyent.us) (Gerrit) for new -changes. Anyone can submit changes. To get started, see the [cr.joyent.us user -guide](https://github.com/joyent/joyent-gerrit/blob/master/docs/user/README.md). -This repo does not use GitHub pull requests. - -See the [Joyent Engineering -Guidelines](https://github.com/joyent/eng/blob/master/docs/index.md) for general -best practices expected in this repository. - -If you're changing something non-trivial or user-facing, you may want to submit -an issue first. diff --git a/deps/npm/node_modules/concat-stream/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/concat-stream/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/concat-stream/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/deep-extend/CHANGELOG.md b/deps/npm/node_modules/deep-extend/CHANGELOG.md index 3932f8f024e5ea..dd13ec1311b2b6 100644 --- a/deps/npm/node_modules/deep-extend/CHANGELOG.md +++ b/deps/npm/node_modules/deep-extend/CHANGELOG.md @@ -1,6 +1,14 @@ Changelog ========= +v0.6.0 +------ + +- Updated "devDependencies" versions to fix vulnerability alerts +- Dropped support of io.js and node.js v0.12.x and lower since new versions of + "devDependencies" couldn't work with those old node.js versions + (minimal supported version of node.js now is v4.0.0) + v0.5.1 ------ diff --git a/deps/npm/node_modules/deep-extend/README.md b/deps/npm/node_modules/deep-extend/README.md index cf84f70dedcbe0..67c7fc085903bc 100644 --- a/deps/npm/node_modules/deep-extend/README.md +++ b/deps/npm/node_modules/deep-extend/README.md @@ -7,8 +7,6 @@ Recursive object extending. [![NPM](https://nodei.co/npm/deep-extend.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/deep-extend/) -[![NPM](https://nodei.co/npm-dl/deep-extend.png?height=3)](https://nodei.co/npm/deep-extend/) - Install ------- diff --git a/deps/npm/node_modules/deep-extend/package.json b/deps/npm/node_modules/deep-extend/package.json index 3aaa6742ff9e2b..15386bcffeaafd 100644 --- a/deps/npm/node_modules/deep-extend/package.json +++ b/deps/npm/node_modules/deep-extend/package.json @@ -1,27 +1,27 @@ { - "_from": "deep-extend@^0.5.1", - "_id": "deep-extend@0.5.1", + "_from": "deep-extend@^0.6.0", + "_id": "deep-extend@0.6.0", "_inBundle": false, - "_integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "_integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "_location": "/deep-extend", "_phantomChildren": {}, "_requested": { "type": "range", "registry": true, - "raw": "deep-extend@^0.5.1", + "raw": "deep-extend@^0.6.0", "name": "deep-extend", "escapedName": "deep-extend", - "rawSpec": "^0.5.1", + "rawSpec": "^0.6.0", "saveSpec": null, - "fetchSpec": "^0.5.1" + "fetchSpec": "^0.6.0" }, "_requiredBy": [ "/rc" ], - "_resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "_shasum": "b894a9dd90d3023fbf1c55a394fb858eb2066f1f", - "_spec": "deep-extend@^0.5.1", - "_where": "/Users/rebecca/code/npm/node_modules/rc", + "_resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "_shasum": "c4fa7c95404a17a9c3e8ca7e1537312b736330ac", + "_spec": "deep-extend@^0.6.0", + "_where": "/Users/ruyadorno/Documents/workspace/cli/node_modules/rc", "author": { "name": "Viacheslav Lotsmanov", "email": "lotsmanov89@gmail.com" @@ -51,12 +51,11 @@ "deprecated": false, "description": "Recursive object extending", "devDependencies": { - "mocha": "2.2.1", - "should": "5.2.0" + "mocha": "5.2.0", + "should": "13.2.1" }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=4.0.0" }, "files": [ "index.js", @@ -89,5 +88,5 @@ "scripts": { "test": "mocha" }, - "version": "0.5.1" + "version": "0.6.0" } diff --git a/deps/npm/node_modules/duplexify/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/duplexify/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/duplexify/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/flush-write-stream/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/flush-write-stream/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/flush-write-stream/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/from2/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/from2/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/from2/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/is-ci/.travis.yml b/deps/npm/node_modules/is-ci/.travis.yml deleted file mode 100644 index 21f721050948b7..00000000000000 --- a/deps/npm/node_modules/is-ci/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: -- '6' -- '5' -- '4' -- '0.12' -- '0.10' diff --git a/deps/npm/node_modules/is-ci/README.md b/deps/npm/node_modules/is-ci/README.md index 0e49db91bbe4ca..bc3840a220cfbd 100644 --- a/deps/npm/node_modules/is-ci/README.md +++ b/deps/npm/node_modules/is-ci/README.md @@ -6,12 +6,13 @@ server. Please [open an issue](https://github.com/watson/is-ci/issues) if your CI server isn't properly detected :) +[![npm](https://img.shields.io/npm/v/is-ci.svg)](https://www.npmjs.com/package/is-ci) [![Build status](https://travis-ci.org/watson/is-ci.svg?branch=master)](https://travis-ci.org/watson/is-ci) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://github.com/feross/standard) ## Installation -``` +```bash npm install is-ci --save ``` @@ -36,34 +37,14 @@ There's a few ways to do that: - Or provide the full path to the executable, e.g. `./node_modules/.bin/is-ci` -``` +```bash is-ci && echo "This is a CI server" ``` ## Supported CI tools -Officially supported CI servers: - -- [Travis CI](http://travis-ci.org) -- [CircleCI](http://circleci.com) -- [Jenkins CI](https://jenkins-ci.org) -- [Hudson](http://hudson-ci.org) -- [Bamboo](https://www.atlassian.com/software/bamboo) -- [TeamCity](https://www.jetbrains.com/teamcity/) -- [Team Foundation Server](https://www.visualstudio.com/en-us/products/tfs-overview-vs.aspx) -- [GitLab CI](https://about.gitlab.com/gitlab-ci/) -- [Codeship](https://codeship.com) -- [Drone.io](https://drone.io) -- [Magnum CI](https://magnum-ci.com) -- [Semaphore](https://semaphoreci.com) -- [AppVeyor](http://www.appveyor.com) -- [Buildkite](https://buildkite.com) -- [TaskCluster](http://docs.taskcluster.net) -- [GoCD](https://www.go.cd/) -- [Bitbucket Pipelines](https://bitbucket.org/product/features/pipelines) - -Other CI tools using environment variables like `BUILD_ID` or `CI` would be detected as well. +Refer to [ci-info](https://github.com/watson/ci-info#supported-ci-tools) docs for all supported CI's ## License -MIT +[MIT](LICENSE) diff --git a/deps/npm/node_modules/is-ci/package.json b/deps/npm/node_modules/is-ci/package.json index e87ba5d7fd903c..344aa2a1f59525 100644 --- a/deps/npm/node_modules/is-ci/package.json +++ b/deps/npm/node_modules/is-ci/package.json @@ -1,8 +1,8 @@ { "_from": "is-ci@^1.0.10", - "_id": "is-ci@1.1.0", + "_id": "is-ci@1.2.1", "_inBundle": false, - "_integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "_integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "_location": "/is-ci", "_phantomChildren": {}, "_requested": { @@ -18,10 +18,10 @@ "_requiredBy": [ "/update-notifier" ], - "_resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", - "_shasum": "247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5", + "_resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "_shasum": "e3779c8ee17fccf428488f6e281187f2e632841c", "_spec": "is-ci@^1.0.10", - "_where": "/Users/rebecca/code/npm/node_modules/update-notifier", + "_where": "/Users/ruyadorno/Documents/workspace/cli/node_modules/update-notifier", "author": { "name": "Thomas Watson Steen", "email": "w@tson.dk", @@ -35,17 +35,17 @@ }, "bundleDependencies": false, "coordinates": [ - 56.0093252, - 11.9592058 + 55.778255, + 12.593033 ], "dependencies": { - "ci-info": "^1.0.0" + "ci-info": "^1.5.0" }, "deprecated": false, - "description": "Detect if your code is running on a CI server", + "description": "Detect if the current environment is a CI server", "devDependencies": { "clear-require": "^1.0.1", - "standard": "^10.0.3" + "standard": "^11.0.1" }, "homepage": "https://github.com/watson/is-ci", "keywords": [ @@ -65,5 +65,5 @@ "scripts": { "test": "standard && node test.js" }, - "version": "1.1.0" + "version": "1.2.1" } diff --git a/deps/npm/node_modules/is-ci/test.js b/deps/npm/node_modules/is-ci/test.js deleted file mode 100644 index a9938bbdb8ecfc..00000000000000 --- a/deps/npm/node_modules/is-ci/test.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict' - -var assert = require('assert') -var clearRequire = require('clear-require') - -process.env.CI = 'true' - -var isCI = require('./') -assert(isCI) - -delete process.env.CI -delete process.env.CONTINUOUS_INTEGRATION -delete process.env.BUILD_NUMBER -delete process.env.TRAVIS - -clearRequire('./') -clearRequire('ci-info') -isCI = require('./') -assert(!isCI) diff --git a/deps/npm/node_modules/is-retry-allowed/index.js b/deps/npm/node_modules/is-retry-allowed/index.js index 663ee338fce94c..3bab6c16b26b9b 100644 --- a/deps/npm/node_modules/is-retry-allowed/index.js +++ b/deps/npm/node_modules/is-retry-allowed/index.js @@ -6,7 +6,9 @@ var WHITELIST = [ 'EADDRINUSE', 'ESOCKETTIMEDOUT', 'ECONNREFUSED', - 'EPIPE' + 'EPIPE', + 'EHOSTUNREACH', + 'EAI_AGAIN' ]; var BLACKLIST = [ diff --git a/deps/npm/node_modules/is-retry-allowed/package.json b/deps/npm/node_modules/is-retry-allowed/package.json index e494bb3f7841af..7bae1606a740c7 100644 --- a/deps/npm/node_modules/is-retry-allowed/package.json +++ b/deps/npm/node_modules/is-retry-allowed/package.json @@ -1,8 +1,8 @@ { "_from": "is-retry-allowed@^1.0.0", - "_id": "is-retry-allowed@1.1.0", + "_id": "is-retry-allowed@1.2.0", "_inBundle": false, - "_integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "_integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", "_location": "/is-retry-allowed", "_phantomChildren": {}, "_requested": { @@ -18,10 +18,10 @@ "_requiredBy": [ "/got" ], - "_resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "_shasum": "11a060568b67339444033d0125a61a20d564fb34", + "_resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "_shasum": "d778488bd0a4666a3be8a1482b9f2baafedea8b4", "_spec": "is-retry-allowed@^1.0.0", - "_where": "/Users/rebecca/code/npm/node_modules/got", + "_where": "/Users/ruyadorno/Documents/workspace/cli/node_modules/got", "author": { "name": "Vsevolod Strukchinsky", "email": "floatdrop@gmail.com", @@ -33,7 +33,7 @@ "bundleDependencies": false, "dependencies": {}, "deprecated": false, - "description": "My prime module", + "description": "Is retry allowed for Error?", "devDependencies": { "ava": "^0.8.0", "xo": "^0.12.1" @@ -55,5 +55,5 @@ "scripts": { "test": "xo && ava" }, - "version": "1.1.0" + "version": "1.2.0" } diff --git a/deps/npm/node_modules/jsprim/CONTRIBUTING.md b/deps/npm/node_modules/jsprim/CONTRIBUTING.md deleted file mode 100644 index 750cef8dfd54a6..00000000000000 --- a/deps/npm/node_modules/jsprim/CONTRIBUTING.md +++ /dev/null @@ -1,19 +0,0 @@ -# Contributing - -This repository uses [cr.joyent.us](https://cr.joyent.us) (Gerrit) for new -changes. Anyone can submit changes. To get started, see the [cr.joyent.us user -guide](https://github.com/joyent/joyent-gerrit/blob/master/docs/user/README.md). -This repo does not use GitHub pull requests. - -See the [Joyent Engineering -Guidelines](https://github.com/joyent/eng/blob/master/docs/index.md) for general -best practices expected in this repository. - -Contributions should be "make prepush" clean. The "prepush" target runs the -"check" target, which requires these separate tools: - -* https://github.com/davepacheco/jsstyle -* https://github.com/davepacheco/javascriptlint - -If you're changing something non-trivial or user-facing, you may want to submit -an issue first. diff --git a/deps/npm/node_modules/libnpmaccess/CODE_OF_CONDUCT.md b/deps/npm/node_modules/libnpmaccess/CODE_OF_CONDUCT.md deleted file mode 100644 index aeb72f598dcb45..00000000000000 --- a/deps/npm/node_modules/libnpmaccess/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,151 +0,0 @@ -# Code of Conduct - -## When Something Happens - -If you see a Code of Conduct violation, follow these steps: - -1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s) or commits. -2. That person should immediately stop the behavior and correct the issue. -3. If this doesn’t happen, or if you're uncomfortable speaking up, [contact the maintainers](#contacting-maintainers). -4. As soon as available, a maintainer will look into the issue, and take [further action (see below)](#further-enforcement), starting with a warning, then temporary block, then long-term repo or organization ban. - -When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation. - -**The maintainer team will prioritize the well-being and comfort of the recipients of the violation over the comfort of the violator.** See [some examples below](#enforcement-examples). - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers of this project pledge to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, technical preferences, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - - * Using welcoming and inclusive language. - * Being respectful of differing viewpoints and experiences. - * Gracefully accepting constructive feedback. - * Focusing on what is best for the community. - * Showing empathy and kindness towards other community members. - * Encouraging and raising up your peers in the project so you can all bask in hacks and glory. - -Examples of unacceptable behavior by participants include: - - * The use of sexualized language or imagery and unwelcome sexual attention or advances, including when simulated online. The only exception to sexual topics is channels/spaces specifically for topics of sexual identity. - * Casual mention of slavery or indentured servitude and/or false comparisons of one's occupation or situation to slavery. Please consider using or asking about alternate terminology when referring to such metaphors in technology. - * Making light of/making mocking comments about trigger warnings and content warnings. - * Trolling, insulting/derogatory comments, and personal or political attacks. - * Public or private harassment, deliberate intimidation, or threats. - * Publishing others' private information, such as a physical or electronic address, without explicit permission. This includes any sort of "outing" of any aspect of someone's identity without their consent. - * Publishing private screenshots or quotes of interactions in the context of this project without all quoted users' *explicit* consent. - * Publishing of private communication that doesn't have to do with reporting harrassment. - * Any of the above even when [presented as "ironic" or "joking"](https://en.wikipedia.org/wiki/Hipster_racism). - * Any attempt to present "reverse-ism" versions of the above as violations. Examples of reverse-isms are "reverse racism", "reverse sexism", "heterophobia", and "cisphobia". - * Unsolicited explanations under the assumption that someone doesn't already know it. Ask before you teach! Don't assume what people's knowledge gaps are. - * [Feigning or exaggerating surprise](https://www.recurse.com/manual#no-feigned-surprise) when someone admits to not knowing something. - * "[Well-actuallies](https://www.recurse.com/manual#no-well-actuallys)" - * Other conduct which could reasonably be considered inappropriate in a professional or community setting. - -## Scope - -This Code of Conduct applies both within spaces involving this project and in other spaces involving community members. This includes the repository, its Pull Requests and Issue tracker, its Twitter community, private email communications in the context of the project, and any events where members of the project are participating, as well as adjacent communities and venues affecting the project's members. - -Depending on the violation, the maintainers may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members. - -### Other Community Standards - -As a project on GitHub, this project is additionally covered by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/). - -Additionally, as a project hosted on npm, is is covered by [npm, Inc's Code of Conduct](https://www.npmjs.com/policies/conduct). - -Enforcement of those guidelines after violations overlapping with the above are the responsibility of the entities, and enforcement may happen in any or all of the services/communities. - -## Maintainer Enforcement Process - -Once the maintainers get involved, they will follow a documented series of steps and do their best to preserve the well-being of project members. This section covers actual concrete steps. - -### Contacting Maintainers - -You may get in touch with the maintainer team through any of the following methods: - - * Through email: - * [kzm@zkat.tech](mailto:kzm@zkat.tech) (Kat MarchΓ‘n) - - * Through Twitter: - * [@maybekatz](https://twitter.com/maybekatz) (Kat MarchΓ‘n) - -### Further Enforcement - -If you've already followed the [initial enforcement steps](#enforcement), these are the steps maintainers will take for further enforcement, as needed: - - 1. Repeat the request to stop. - 2. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked. - 3. If the behavior continues or is repeated later, the person will be blocked from participating for 24 hours. - 4. If the behavior continues or is repeated after the temporary block, a long-term (6-12mo) ban will be used. - -On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary. - -Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk. - -Members expelled from events or venues with any sort of paid attendance will not be refunded. - -### Who Watches the Watchers? - -Maintainers and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. These may include anything from removal from the maintainer team to a permanent ban from the community. - -Additionally, as a project hosted on both GitHub and npm, [their own Codes of Conducts may be applied against maintainers of this project](#other-community-standards), externally of this project's procedures. - -### Enforcement Examples - -#### The Best Case - -The vast majority of situations work out like this. This interaction is common, and generally positive. - -> Alex: "Yeah I used X and it was really crazy!" - -> Patt (not a maintainer): "Hey, could you not use that word? What about 'ridiculous' instead?" - -> Alex: "oh sorry, sure." -> edits old comment to say "it was really confusing!" - -#### The Maintainer Case - -Sometimes, though, you need to get maintainers involved. Maintainers will do their best to resolve conflicts, but people who were harmed by something **will take priority**. - -> Patt: "Honestly, sometimes I just really hate using $library and anyone who uses it probably sucks at their job." - -> Alex: "Whoa there, could you dial it back a bit? There's a CoC thing about attacking folks' tech use like that." - -> Patt: "I'm not attacking anyone, what's your problem?" - -> Alex: "@maintainers hey uh. Can someone look at this issue? Patt is getting a bit aggro. I tried to nudge them about it, but nope." - -> KeeperOfCommitBits: (on issue) "Hey Patt, maintainer here. Could you tone it down? This sort of attack is really not okay in this space." - -> Patt: "Leave me alone I haven't said anything bad wtf is wrong with you." - -> KeeperOfCommitBits: (deletes user's comment), "@patt I mean it. Please refer to the CoC over at (URL to this CoC) if you have questions, but you can consider this an actual warning. I'd appreciate it if you reworded your messages in this thread, since they made folks there uncomfortable. Let's try and be kind, yeah?" - -> Patt: "@keeperofbits Okay sorry. I'm just frustrated and I'm kinda burnt out and I guess I got carried away. I'll DM Alex a note apologizing and edit my messages. Sorry for the trouble." - -> KeeperOfCommitBits: "@patt Thanks for that. I hear you on the stress. Burnout sucks :/. Have a good one!" - -#### The Nope Case - -> PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white supremacists are quite fashionable." - -> Patt: "NOOOOPE. OH NOPE NOPE." - -> Alex: "JFC NO. NOPE. @keeperofbits NOPE NOPE LOOK HERE" - -> KeeperOfCommitBits: "πŸ‘€ Nope. NOPE NOPE NOPE. πŸ”₯" - -> PepeTheFrog🐸 has been banned from all organization or user repositories belonging to KeeperOfCommitBits. - -## Attribution - -This Code of Conduct was generated using [WeAllJS Code of Conduct Generator](https://npm.im/weallbehave), which is based on the [WeAllJS Code of -Conduct](https://wealljs.org/code-of-conduct), which is itself based on -[Contributor Covenant](http://contributor-covenant.org), version 1.4, available -at -[http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4), -and the LGBTQ in Technology Slack [Code of -Conduct](http://lgbtq.technology/coc.html). diff --git a/deps/npm/node_modules/libnpmaccess/CONTRIBUTING.md b/deps/npm/node_modules/libnpmaccess/CONTRIBUTING.md deleted file mode 100644 index e13356ea444974..00000000000000 --- a/deps/npm/node_modules/libnpmaccess/CONTRIBUTING.md +++ /dev/null @@ -1,256 +0,0 @@ -# Contributing - -## How do I... - -* [Use This Guide](#introduction)? -* Ask or Say Something? πŸ€”πŸ›πŸ˜± - * [Request Support](#request-support) - * [Report an Error or Bug](#report-an-error-or-bug) - * [Request a Feature](#request-a-feature) -* Make Something? πŸ€“πŸ‘©πŸ½β€πŸ’»πŸ“œπŸ³ - * [Project Setup](#project-setup) - * [Contribute Documentation](#contribute-documentation) - * [Contribute Code](#contribute-code) -* Manage Something βœ…πŸ™†πŸΌπŸ’ƒπŸ‘” - * [Provide Support on Issues](#provide-support-on-issues) - * [Label Issues](#label-issues) - * [Clean Up Issues and PRs](#clean-up-issues-and-prs) - * [Review Pull Requests](#review-pull-requests) - * [Merge Pull Requests](#merge-pull-requests) - * [Tag a Release](#tag-a-release) - * [Join the Project Team](#join-the-project-team) -* Add a Guide Like This One [To My Project](#attribution)? πŸ€–πŸ˜»πŸ‘» - -## Introduction - -Thank you so much for your interest in contributing!. All types of contributions are encouraged and valued. See the [table of contents](#toc) for different ways to help and details about how this project handles them!πŸ“ - -Please make sure to read the relevant section before making your contribution! It will make it a lot easier for us maintainers to make the most of it and smooth out the experience for all involved. πŸ’š - -The [Project Team](#join-the-project-team) looks forward to your contributions. πŸ™ŒπŸΎβœ¨ - -## Request Support - -If you have a question about this project, how to use it, or just need clarification about something: - -* Open an Issue at https://github.com/npm/libnpmaccess/issues -* Provide as much context as you can about what you're running into. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* Someone will try to have a response soon. -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. - -## Report an Error or Bug - -If you run into an error or bug with the project: - -* Open an Issue at https://github.com/npm/libnpmaccess/issues -* Include *reproduction steps* that someone else can follow to recreate the bug or error on their own. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* A team member will try to reproduce the issue with your provided steps. If there are no repro steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. -* If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#contribute-code). -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. -* `critical` issues may be left open, depending on perceived immediacy and severity, even past the 30 day deadline. - -## Request a Feature - -If the project doesn't do something you need or want it to do: - -* Open an Issue at https://github.com/npm/libnpmaccess/issues -* Provide as much context as you can about what you're running into. -* Please try and be clear about why existing features and alternatives would not work for you. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* The project team will evaluate the feature request, possibly asking you more questions to understand its purpose and any relevant requirements. If the issue is closed, the team will convey their reasoning and suggest an alternative path forward. -* If the feature request is accepted, it will be marked for implementation with `feature-accepted`, which can then be done by either by a core team member or by anyone in the community who wants to [contribute code](#contribute-code). - -Note: The team is unlikely to be able to accept every single feature request that is filed. Please understand if they need to say no. - -## Project Setup - -So you wanna contribute some code! That's great! This project uses GitHub Pull Requests to manage contributions, so [read up on how to fork a GitHub project and file a PR](https://guides.github.com/activities/forking) if you've never done it before. - -If this seems like a lot or you aren't able to do all this setup, you might also be able to [edit the files directly](https://help.github.com/articles/editing-files-in-another-user-s-repository/) without having to do any of this setup. Yes, [even code](#contribute-code). - -If you want to go the usual route and run the project locally, though: - -* [Install Node.js](https://nodejs.org/en/download/) -* [Fork the project](https://guides.github.com/activities/forking/#fork) - -Then in your terminal: -* `cd path/to/your/clone` -* `npm install` -* `npm test` - -And you should be ready to go! - -## Contribute Documentation - -Documentation is a super important, critical part of this project. Docs are how we keep track of what we're doing, how, and why. It's how we stay on the same page about our policies. And it's how we tell others everything they need in order to be able to use this project -- or contribute to it. So thank you in advance. - -Documentation contributions of any size are welcome! Feel free to file a PR even if you're just rewording a sentence to be more clear, or fixing a spelling mistake! - -To contribute documentation: - -* [Set up the project](#project-setup). -* Edit or add any relevant documentation. -* Make sure your changes are formatted correctly and consistently with the rest of the documentation. -* Re-read what you wrote, and run a spellchecker on it to make sure you didn't miss anything. -* In your commit message(s), begin the first line with `docs: `. For example: `docs: Adding a doc contrib section to CONTRIBUTING.md`. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). Documentation commits should use `docs(): `. -* Go to https://github.com/npm/libnpmaccess/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Contribute Code - -We like code commits a lot! They're super handy, and they keep the project going and doing the work it needs to do to be useful to others. - -Code contributions of just about any size are acceptable! - -The main difference between code contributions and documentation contributions is that contributing code requires inclusion of relevant tests for the code being added or changed. Contributions without accompanying tests will be held off until a test is added, unless the maintainers consider the specific tests to be either impossible, or way too much of a burden for such a contribution. - -To contribute code: - -* [Set up the project](#project-setup). -* Make any necessary changes to the source code. -* Include any [additional documentation](#contribute-documentation) the changes might need. -* Write tests that verify that your contribution works as expected. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). -* Dependency updates, additions, or removals must be in individual commits, and the message must use the format: `(deps): PKG@VERSION`, where `` is any of the usual `conventional-changelog` prefixes, at your discretion. -* Go to https://github.com/npm/libnpmaccess/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* Barring special circumstances, maintainers will not review PRs until all checks pass (Travis, AppVeyor, etc). -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. Additional tags (such as `needs-tests`) will be added depending on the review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Provide Support on Issues - -[Needs Collaborator](#join-the-project-team): none - -Helping out other users with their questions is a really awesome way of contributing to any community. It's not uncommon for most of the issues on an open source projects being support-related questions by users trying to understand something they ran into, or find their way around a known bug. - -Sometimes, the `support` label will be added to things that turn out to actually be other things, like bugs or feature requests. In that case, suss out the details with the person who filed the original issue, add a comment explaining what the bug is, and change the label from `support` to `bug` or `feature`. If you can't do this yourself, @mention a maintainer so they can do it. - -In order to help other folks out with their questions: - -* Go to the issue tracker and [filter open issues by the `support` label](https://github.com/npm/libnpmaccess/issues?q=is%3Aopen+is%3Aissue+label%3Asupport). -* Read through the list until you find something that you're familiar enough with to give an answer to. -* Respond to the issue with whatever details are needed to clarify the question, or get more details about what's going on. -* Once the discussion wraps up and things are clarified, either close the issue, or ask the original issue filer (or a maintainer) to close it for you. - -Some notes on picking up support issues: - -* Avoid responding to issues you don't know you can answer accurately. -* As much as possible, try to refer to past issues with accepted answers. Link to them from your replies with the `#123` format. -* Be kind and patient with users -- often, folks who have run into confusing things might be upset or impatient. This is ok. Try to understand where they're coming from, and if you're too uncomfortable with the tone, feel free to stay away or withdraw from the issue. (note: if the user is outright hostile or is violating the CoC, [refer to the Code of Conduct](CODE_OF_CONDUCT.md) to resolve the conflict). - -## Label Issues - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -One of the most important tasks in handling issues is labeling them usefully and accurately. All other tasks involving issues ultimately rely on the issue being classified in such a way that relevant parties looking to do their own tasks can find them quickly and easily. - -In order to label issues, [open up the list of unlabeled issues](https://github.com/npm/libnpmaccess/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and, **from newest to oldest**, read through each one and apply issue labels according to the table below. If you're unsure about what label to apply, skip the issue and try the next one: don't feel obligated to label each and every issue yourself! - -Label | Apply When | Notes ---- | --- | --- -`bug` | Cases where the code (or documentation) is behaving in a way it wasn't intended to. | If something is happening that surprises the *user* but does not go against the way the code is designed, it should use the `enhancement` label. -`critical` | Added to `bug` issues if the problem described makes the code completely unusable in a common situation. | -`documentation` | Added to issues or pull requests that affect any of the documentation for the project. | Can be combined with other labels, such as `bug` or `enhancement`. -`duplicate` | Added to issues or PRs that refer to the exact same issue as another one that's been previously labeled. | Duplicate issues should be marked and closed right away, with a message referencing the issue it's a duplicate of (with `#123`) -`enhancement` | Added to [feature requests](#request-a-feature), PRs, or documentation issues that are purely additive: the code or docs currently work as expected, but a change is being requested or suggested. | -`help wanted` | Applied by [Committers](#join-the-project-team) to issues and PRs that they would like to get outside help for. Generally, this means it's lower priority for the maintainer team to itself implement, but that the community is encouraged to pick up if they so desire | Never applied on first-pass labeling. -`in-progress` | Applied by [Committers](#join-the-project-team) to PRs that are pending some work before they're ready for review. | The original PR submitter should @mention the team member that applied the label once the PR is complete. -`performance` | This issue or PR is directly related to improving performance. | -`refactor` | Added to issues or PRs that deal with cleaning up or modifying the project for the betterment of it. | -`starter` | Applied by [Committers](#join-the-project-team) to issues that they consider good introductions to the project for people who have not contributed before. These are not necessarily "easy", but rather focused around how much context is necessary in order to understand what needs to be done for this project in particular. | Existing project members are expected to stay away from these unless they increase in priority. -`support` | This issue is either asking a question about how to use the project, clarifying the reason for unexpected behavior, or possibly reporting a `bug` but does not have enough detail yet to determine whether it would count as such. | The label should be switched to `bug` if reliable reproduction steps are provided. Issues primarily with unintended configurations of a user's environment are not considered bugs, even if they cause crashes. -`tests` | This issue or PR either requests or adds primarily tests to the project. | If a PR is pending tests, that will be handled through the [PR review process](#review-pull-requests) -`wontfix` | Labelers may apply this label to issues that clearly have nothing at all to do with the project or are otherwise entirely outside of its scope/sphere of influence. [Committers](#join-the-project-team) may apply this label and close an issue or PR if they decide to pass on an otherwise relevant issue. | The issue or PR should be closed as soon as the label is applied, and a clear explanation provided of why the label was used. Contributors are free to contest the labeling, but the decision ultimately falls on committers as to whether to accept something or not. - -## Clean Up Issues and PRs - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -Issues and PRs can go stale after a while. Maybe they're abandoned. Maybe the team will just plain not have time to address them any time soon. - -In these cases, they should be closed until they're brought up again or the interaction starts over. - -To clean up issues and PRs: - -* Search the issue tracker for issues or PRs, and add the term `updated:<=YYYY-MM-DD`, where the date is 30 days before today. -* Go through each issue *from oldest to newest*, and close them if **all of the following are true**: - * not opened by a maintainer - * not marked as `critical` - * not marked as `starter` or `help wanted` (these might stick around for a while, in general, as they're intended to be available) - * no explicit messages in the comments asking for it to be left open - * does not belong to a milestone -* Leave a message when closing saying "Cleaning up stale issue. Please reopen or ping us if and when you're ready to resume this. See https://github.com/npm/libnpmaccess/blob/latest/CONTRIBUTING.md#clean-up-issues-and-prs for more details." - -## Review Pull Requests - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -While anyone can comment on a PR, add feedback, etc, PRs are only *approved* by team members with Issue Tracker or higher permissions. - -PR reviews use [GitHub's own review feature](https://help.github.com/articles/about-pull-request-reviews/), which manages comments, approval, and review iteration. - -Some notes: - -* You may ask for minor changes ("nitpicks"), but consider whether they are really blockers to merging: try to err on the side of "approve, with comments". -* *ALL PULL REQUESTS* should be covered by a test: either by a previously-failing test, an existing test that covers the entire functionality of the submitted code, or new tests to verify any new/changed behavior. All tests must also pass and follow established conventions. Test coverage should not drop, unless the specific case is considered reasonable by maintainers. -* Please make sure you're familiar with the code or documentation being updated, unless it's a minor change (spellchecking, minor formatting, etc). You may @mention another project member who you think is better suited for the review, but still provide a non-approving review of your own. -* Be extra kind: people who submit code/doc contributions are putting themselves in a pretty vulnerable position, and have put time and care into what they've done (even if that's not obvious to you!) -- always respond with respect, be understanding, but don't feel like you need to sacrifice your standards for their sake, either. Just don't be a jerk about it? - -## Merge Pull Requests - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. - -## Tag A Release - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. The most important bit here is probably that all tests must pass, and tags must use [semver](https://semver.org). - -## Join the Project Team - -### Ways to Join - -There are many ways to contribute! Most of them don't require any official status unless otherwise noted. That said, there's a couple of positions that grant special repository abilities, and this section describes how they're granted and what they do. - -All of the below positions are granted based on the project team's needs, as well as their consensus opinion about whether they would like to work with the person and think that they would fit well into that position. The process is relatively informal, and it's likely that people who express interest in participating can just be granted the permissions they'd like. - -You can spot a collaborator on the repo by looking for the `[Collaborator]` or `[Owner]` tags next to their names. - -Permission | Description ---- | --- -Issue Tracker | Granted to contributors who express a strong interest in spending time on the project's issue tracker. These tasks are mainly [labeling issues](#label-issues), [cleaning up old ones](#clean-up-issues-and-prs), and [reviewing pull requests](#review-pull-requests), as well as all the usual things non-team-member contributors can do. Issue handlers should not merge pull requests, tag releases, or directly commit code themselves: that should still be done through the usual pull request process. Becoming an Issue Handler means the project team trusts you to understand enough of the team's process and context to implement it on the issue tracker. -Committer | Granted to contributors who want to handle the actual pull request merges, tagging new versions, etc. Committers should have a good level of familiarity with the codebase, and enough context to understand the implications of various changes, as well as a good sense of the will and expectations of the project team. -Admin/Owner | Granted to people ultimately responsible for the project, its community, etc. - -## Attribution - -This guide was generated using the WeAllJS `CONTRIBUTING.md` generator. [Make your own](https://npm.im/weallcontribute)! diff --git a/deps/npm/node_modules/libnpmconfig/CODE_OF_CONDUCT.md b/deps/npm/node_modules/libnpmconfig/CODE_OF_CONDUCT.md deleted file mode 100644 index aeb72f598dcb45..00000000000000 --- a/deps/npm/node_modules/libnpmconfig/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,151 +0,0 @@ -# Code of Conduct - -## When Something Happens - -If you see a Code of Conduct violation, follow these steps: - -1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s) or commits. -2. That person should immediately stop the behavior and correct the issue. -3. If this doesn’t happen, or if you're uncomfortable speaking up, [contact the maintainers](#contacting-maintainers). -4. As soon as available, a maintainer will look into the issue, and take [further action (see below)](#further-enforcement), starting with a warning, then temporary block, then long-term repo or organization ban. - -When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation. - -**The maintainer team will prioritize the well-being and comfort of the recipients of the violation over the comfort of the violator.** See [some examples below](#enforcement-examples). - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers of this project pledge to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, technical preferences, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - - * Using welcoming and inclusive language. - * Being respectful of differing viewpoints and experiences. - * Gracefully accepting constructive feedback. - * Focusing on what is best for the community. - * Showing empathy and kindness towards other community members. - * Encouraging and raising up your peers in the project so you can all bask in hacks and glory. - -Examples of unacceptable behavior by participants include: - - * The use of sexualized language or imagery and unwelcome sexual attention or advances, including when simulated online. The only exception to sexual topics is channels/spaces specifically for topics of sexual identity. - * Casual mention of slavery or indentured servitude and/or false comparisons of one's occupation or situation to slavery. Please consider using or asking about alternate terminology when referring to such metaphors in technology. - * Making light of/making mocking comments about trigger warnings and content warnings. - * Trolling, insulting/derogatory comments, and personal or political attacks. - * Public or private harassment, deliberate intimidation, or threats. - * Publishing others' private information, such as a physical or electronic address, without explicit permission. This includes any sort of "outing" of any aspect of someone's identity without their consent. - * Publishing private screenshots or quotes of interactions in the context of this project without all quoted users' *explicit* consent. - * Publishing of private communication that doesn't have to do with reporting harrassment. - * Any of the above even when [presented as "ironic" or "joking"](https://en.wikipedia.org/wiki/Hipster_racism). - * Any attempt to present "reverse-ism" versions of the above as violations. Examples of reverse-isms are "reverse racism", "reverse sexism", "heterophobia", and "cisphobia". - * Unsolicited explanations under the assumption that someone doesn't already know it. Ask before you teach! Don't assume what people's knowledge gaps are. - * [Feigning or exaggerating surprise](https://www.recurse.com/manual#no-feigned-surprise) when someone admits to not knowing something. - * "[Well-actuallies](https://www.recurse.com/manual#no-well-actuallys)" - * Other conduct which could reasonably be considered inappropriate in a professional or community setting. - -## Scope - -This Code of Conduct applies both within spaces involving this project and in other spaces involving community members. This includes the repository, its Pull Requests and Issue tracker, its Twitter community, private email communications in the context of the project, and any events where members of the project are participating, as well as adjacent communities and venues affecting the project's members. - -Depending on the violation, the maintainers may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members. - -### Other Community Standards - -As a project on GitHub, this project is additionally covered by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/). - -Additionally, as a project hosted on npm, is is covered by [npm, Inc's Code of Conduct](https://www.npmjs.com/policies/conduct). - -Enforcement of those guidelines after violations overlapping with the above are the responsibility of the entities, and enforcement may happen in any or all of the services/communities. - -## Maintainer Enforcement Process - -Once the maintainers get involved, they will follow a documented series of steps and do their best to preserve the well-being of project members. This section covers actual concrete steps. - -### Contacting Maintainers - -You may get in touch with the maintainer team through any of the following methods: - - * Through email: - * [kzm@zkat.tech](mailto:kzm@zkat.tech) (Kat MarchΓ‘n) - - * Through Twitter: - * [@maybekatz](https://twitter.com/maybekatz) (Kat MarchΓ‘n) - -### Further Enforcement - -If you've already followed the [initial enforcement steps](#enforcement), these are the steps maintainers will take for further enforcement, as needed: - - 1. Repeat the request to stop. - 2. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked. - 3. If the behavior continues or is repeated later, the person will be blocked from participating for 24 hours. - 4. If the behavior continues or is repeated after the temporary block, a long-term (6-12mo) ban will be used. - -On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary. - -Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk. - -Members expelled from events or venues with any sort of paid attendance will not be refunded. - -### Who Watches the Watchers? - -Maintainers and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. These may include anything from removal from the maintainer team to a permanent ban from the community. - -Additionally, as a project hosted on both GitHub and npm, [their own Codes of Conducts may be applied against maintainers of this project](#other-community-standards), externally of this project's procedures. - -### Enforcement Examples - -#### The Best Case - -The vast majority of situations work out like this. This interaction is common, and generally positive. - -> Alex: "Yeah I used X and it was really crazy!" - -> Patt (not a maintainer): "Hey, could you not use that word? What about 'ridiculous' instead?" - -> Alex: "oh sorry, sure." -> edits old comment to say "it was really confusing!" - -#### The Maintainer Case - -Sometimes, though, you need to get maintainers involved. Maintainers will do their best to resolve conflicts, but people who were harmed by something **will take priority**. - -> Patt: "Honestly, sometimes I just really hate using $library and anyone who uses it probably sucks at their job." - -> Alex: "Whoa there, could you dial it back a bit? There's a CoC thing about attacking folks' tech use like that." - -> Patt: "I'm not attacking anyone, what's your problem?" - -> Alex: "@maintainers hey uh. Can someone look at this issue? Patt is getting a bit aggro. I tried to nudge them about it, but nope." - -> KeeperOfCommitBits: (on issue) "Hey Patt, maintainer here. Could you tone it down? This sort of attack is really not okay in this space." - -> Patt: "Leave me alone I haven't said anything bad wtf is wrong with you." - -> KeeperOfCommitBits: (deletes user's comment), "@patt I mean it. Please refer to the CoC over at (URL to this CoC) if you have questions, but you can consider this an actual warning. I'd appreciate it if you reworded your messages in this thread, since they made folks there uncomfortable. Let's try and be kind, yeah?" - -> Patt: "@keeperofbits Okay sorry. I'm just frustrated and I'm kinda burnt out and I guess I got carried away. I'll DM Alex a note apologizing and edit my messages. Sorry for the trouble." - -> KeeperOfCommitBits: "@patt Thanks for that. I hear you on the stress. Burnout sucks :/. Have a good one!" - -#### The Nope Case - -> PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white supremacists are quite fashionable." - -> Patt: "NOOOOPE. OH NOPE NOPE." - -> Alex: "JFC NO. NOPE. @keeperofbits NOPE NOPE LOOK HERE" - -> KeeperOfCommitBits: "πŸ‘€ Nope. NOPE NOPE NOPE. πŸ”₯" - -> PepeTheFrog🐸 has been banned from all organization or user repositories belonging to KeeperOfCommitBits. - -## Attribution - -This Code of Conduct was generated using [WeAllJS Code of Conduct Generator](https://npm.im/weallbehave), which is based on the [WeAllJS Code of -Conduct](https://wealljs.org/code-of-conduct), which is itself based on -[Contributor Covenant](http://contributor-covenant.org), version 1.4, available -at -[http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4), -and the LGBTQ in Technology Slack [Code of -Conduct](http://lgbtq.technology/coc.html). diff --git a/deps/npm/node_modules/libnpmconfig/CONTRIBUTING.md b/deps/npm/node_modules/libnpmconfig/CONTRIBUTING.md deleted file mode 100644 index 970c1cf43aca08..00000000000000 --- a/deps/npm/node_modules/libnpmconfig/CONTRIBUTING.md +++ /dev/null @@ -1,256 +0,0 @@ -# Contributing - -## How do I... - -* [Use This Guide](#introduction)? -* Ask or Say Something? πŸ€”πŸ›πŸ˜± - * [Request Support](#request-support) - * [Report an Error or Bug](#report-an-error-or-bug) - * [Request a Feature](#request-a-feature) -* Make Something? πŸ€“πŸ‘©πŸ½β€πŸ’»πŸ“œπŸ³ - * [Project Setup](#project-setup) - * [Contribute Documentation](#contribute-documentation) - * [Contribute Code](#contribute-code) -* Manage Something βœ…πŸ™†πŸΌπŸ’ƒπŸ‘” - * [Provide Support on Issues](#provide-support-on-issues) - * [Label Issues](#label-issues) - * [Clean Up Issues and PRs](#clean-up-issues-and-prs) - * [Review Pull Requests](#review-pull-requests) - * [Merge Pull Requests](#merge-pull-requests) - * [Tag a Release](#tag-a-release) - * [Join the Project Team](#join-the-project-team) -* Add a Guide Like This One [To My Project](#attribution)? πŸ€–πŸ˜»πŸ‘» - -## Introduction - -Thank you so much for your interest in contributing!. All types of contributions are encouraged and valued. See the [table of contents](#toc) for different ways to help and details about how this project handles them!πŸ“ - -Please make sure to read the relevant section before making your contribution! It will make it a lot easier for us maintainers to make the most of it and smooth out the experience for all involved. πŸ’š - -The [Project Team](#join-the-project-team) looks forward to your contributions. πŸ™ŒπŸΎβœ¨ - -## Request Support - -If you have a question about this project, how to use it, or just need clarification about something: - -* Open an Issue at https://github.com/npm/libnpmconfig/issues -* Provide as much context as you can about what you're running into. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* Someone will try to have a response soon. -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. - -## Report an Error or Bug - -If you run into an error or bug with the project: - -* Open an Issue at https://github.com/npm/libnpmconfig/issues -* Include *reproduction steps* that someone else can follow to recreate the bug or error on their own. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* A team member will try to reproduce the issue with your provided steps. If there are no repro steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. -* If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#contribute-code). -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. -* `critical` issues may be left open, depending on perceived immediacy and severity, even past the 30 day deadline. - -## Request a Feature - -If the project doesn't do something you need or want it to do: - -* Open an Issue at https://github.com/npm/libnpmconfig/issues -* Provide as much context as you can about what you're running into. -* Please try and be clear about why existing features and alternatives would not work for you. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* The project team will evaluate the feature request, possibly asking you more questions to understand its purpose and any relevant requirements. If the issue is closed, the team will convey their reasoning and suggest an alternative path forward. -* If the feature request is accepted, it will be marked for implementation with `feature-accepted`, which can then be done by either by a core team member or by anyone in the community who wants to [contribute code](#contribute-code). - -Note: The team is unlikely to be able to accept every single feature request that is filed. Please understand if they need to say no. - -## Project Setup - -So you wanna contribute some code! That's great! This project uses GitHub Pull Requests to manage contributions, so [read up on how to fork a GitHub project and file a PR](https://guides.github.com/activities/forking) if you've never done it before. - -If this seems like a lot or you aren't able to do all this setup, you might also be able to [edit the files directly](https://help.github.com/articles/editing-files-in-another-user-s-repository/) without having to do any of this setup. Yes, [even code](#contribute-code). - -If you want to go the usual route and run the project locally, though: - -* [Install Node.js](https://nodejs.org/en/download/) -* [Fork the project](https://guides.github.com/activities/forking/#fork) - -Then in your terminal: -* `cd path/to/your/clone` -* `npm install` -* `npm test` - -And you should be ready to go! - -## Contribute Documentation - -Documentation is a super important, critical part of this project. Docs are how we keep track of what we're doing, how, and why. It's how we stay on the same page about our policies. And it's how we tell others everything they need in order to be able to use this project -- or contribute to it. So thank you in advance. - -Documentation contributions of any size are welcome! Feel free to file a PR even if you're just rewording a sentence to be more clear, or fixing a spelling mistake! - -To contribute documentation: - -* [Set up the project](#project-setup). -* Edit or add any relevant documentation. -* Make sure your changes are formatted correctly and consistently with the rest of the documentation. -* Re-read what you wrote, and run a spellchecker on it to make sure you didn't miss anything. -* In your commit message(s), begin the first line with `docs: `. For example: `docs: Adding a doc contrib section to CONTRIBUTING.md`. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). Documentation commits should use `docs(): `. -* Go to https://github.com/npm/libnpmconfig/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Contribute Code - -We like code commits a lot! They're super handy, and they keep the project going and doing the work it needs to do to be useful to others. - -Code contributions of just about any size are acceptable! - -The main difference between code contributions and documentation contributions is that contributing code requires inclusion of relevant tests for the code being added or changed. Contributions without accompanying tests will be held off until a test is added, unless the maintainers consider the specific tests to be either impossible, or way too much of a burden for such a contribution. - -To contribute code: - -* [Set up the project](#project-setup). -* Make any necessary changes to the source code. -* Include any [additional documentation](#contribute-documentation) the changes might need. -* Write tests that verify that your contribution works as expected. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). -* Dependency updates, additions, or removals must be in individual commits, and the message must use the format: `(deps): PKG@VERSION`, where `` is any of the usual `conventional-changelog` prefixes, at your discretion. -* Go to https://github.com/npm/libnpmconfig/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* Barring special circumstances, maintainers will not review PRs until all checks pass (Travis, AppVeyor, etc). -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. Additional tags (such as `needs-tests`) will be added depending on the review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Provide Support on Issues - -[Needs Collaborator](#join-the-project-team): none - -Helping out other users with their questions is a really awesome way of contributing to any community. It's not uncommon for most of the issues on an open source projects being support-related questions by users trying to understand something they ran into, or find their way around a known bug. - -Sometimes, the `support` label will be added to things that turn out to actually be other things, like bugs or feature requests. In that case, suss out the details with the person who filed the original issue, add a comment explaining what the bug is, and change the label from `support` to `bug` or `feature`. If you can't do this yourself, @mention a maintainer so they can do it. - -In order to help other folks out with their questions: - -* Go to the issue tracker and [filter open issues by the `support` label](https://github.com/npm/libnpmconfig/issues?q=is%3Aopen+is%3Aissue+label%3Asupport). -* Read through the list until you find something that you're familiar enough with to give an answer to. -* Respond to the issue with whatever details are needed to clarify the question, or get more details about what's going on. -* Once the discussion wraps up and things are clarified, either close the issue, or ask the original issue filer (or a maintainer) to close it for you. - -Some notes on picking up support issues: - -* Avoid responding to issues you don't know you can answer accurately. -* As much as possible, try to refer to past issues with accepted answers. Link to them from your replies with the `#123` format. -* Be kind and patient with users -- often, folks who have run into confusing things might be upset or impatient. This is ok. Try to understand where they're coming from, and if you're too uncomfortable with the tone, feel free to stay away or withdraw from the issue. (note: if the user is outright hostile or is violating the CoC, [refer to the Code of Conduct](CODE_OF_CONDUCT.md) to resolve the conflict). - -## Label Issues - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -One of the most important tasks in handling issues is labeling them usefully and accurately. All other tasks involving issues ultimately rely on the issue being classified in such a way that relevant parties looking to do their own tasks can find them quickly and easily. - -In order to label issues, [open up the list of unlabeled issues](https://github.com/npm/libnpmconfig/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and, **from newest to oldest**, read through each one and apply issue labels according to the table below. If you're unsure about what label to apply, skip the issue and try the next one: don't feel obligated to label each and every issue yourself! - -Label | Apply When | Notes ---- | --- | --- -`bug` | Cases where the code (or documentation) is behaving in a way it wasn't intended to. | If something is happening that surprises the *user* but does not go against the way the code is designed, it should use the `enhancement` label. -`critical` | Added to `bug` issues if the problem described makes the code completely unusable in a common situation. | -`documentation` | Added to issues or pull requests that affect any of the documentation for the project. | Can be combined with other labels, such as `bug` or `enhancement`. -`duplicate` | Added to issues or PRs that refer to the exact same issue as another one that's been previously labeled. | Duplicate issues should be marked and closed right away, with a message referencing the issue it's a duplicate of (with `#123`) -`enhancement` | Added to [feature requests](#request-a-feature), PRs, or documentation issues that are purely additive: the code or docs currently work as expected, but a change is being requested or suggested. | -`help wanted` | Applied by [Committers](#join-the-project-team) to issues and PRs that they would like to get outside help for. Generally, this means it's lower priority for the maintainer team to itself implement, but that the community is encouraged to pick up if they so desire | Never applied on first-pass labeling. -`in-progress` | Applied by [Committers](#join-the-project-team) to PRs that are pending some work before they're ready for review. | The original PR submitter should @mention the team member that applied the label once the PR is complete. -`performance` | This issue or PR is directly related to improving performance. | -`refactor` | Added to issues or PRs that deal with cleaning up or modifying the project for the betterment of it. | -`starter` | Applied by [Committers](#join-the-project-team) to issues that they consider good introductions to the project for people who have not contributed before. These are not necessarily "easy", but rather focused around how much context is necessary in order to understand what needs to be done for this project in particular. | Existing project members are expected to stay away from these unless they increase in priority. -`support` | This issue is either asking a question about how to use the project, clarifying the reason for unexpected behavior, or possibly reporting a `bug` but does not have enough detail yet to determine whether it would count as such. | The label should be switched to `bug` if reliable reproduction steps are provided. Issues primarily with unintended configurations of a user's environment are not considered bugs, even if they cause crashes. -`tests` | This issue or PR either requests or adds primarily tests to the project. | If a PR is pending tests, that will be handled through the [PR review process](#review-pull-requests) -`wontfix` | Labelers may apply this label to issues that clearly have nothing at all to do with the project or are otherwise entirely outside of its scope/sphere of influence. [Committers](#join-the-project-team) may apply this label and close an issue or PR if they decide to pass on an otherwise relevant issue. | The issue or PR should be closed as soon as the label is applied, and a clear explanation provided of why the label was used. Contributors are free to contest the labeling, but the decision ultimately falls on committers as to whether to accept something or not. - -## Clean Up Issues and PRs - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -Issues and PRs can go stale after a while. Maybe they're abandoned. Maybe the team will just plain not have time to address them any time soon. - -In these cases, they should be closed until they're brought up again or the interaction starts over. - -To clean up issues and PRs: - -* Search the issue tracker for issues or PRs, and add the term `updated:<=YYYY-MM-DD`, where the date is 30 days before today. -* Go through each issue *from oldest to newest*, and close them if **all of the following are true**: - * not opened by a maintainer - * not marked as `critical` - * not marked as `starter` or `help wanted` (these might stick around for a while, in general, as they're intended to be available) - * no explicit messages in the comments asking for it to be left open - * does not belong to a milestone -* Leave a message when closing saying "Cleaning up stale issue. Please reopen or ping us if and when you're ready to resume this. See https://github.com/npm/libnpmconfig/blob/latest/CONTRIBUTING.md#clean-up-issues-and-prs for more details." - -## Review Pull Requests - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -While anyone can comment on a PR, add feedback, etc, PRs are only *approved* by team members with Issue Tracker or higher permissions. - -PR reviews use [GitHub's own review feature](https://help.github.com/articles/about-pull-request-reviews/), which manages comments, approval, and review iteration. - -Some notes: - -* You may ask for minor changes ("nitpicks"), but consider whether they are really blockers to merging: try to err on the side of "approve, with comments". -* *ALL PULL REQUESTS* should be covered by a test: either by a previously-failing test, an existing test that covers the entire functionality of the submitted code, or new tests to verify any new/changed behavior. All tests must also pass and follow established conventions. Test coverage should not drop, unless the specific case is considered reasonable by maintainers. -* Please make sure you're familiar with the code or documentation being updated, unless it's a minor change (spellchecking, minor formatting, etc). You may @mention another project member who you think is better suited for the review, but still provide a non-approving review of your own. -* Be extra kind: people who submit code/doc contributions are putting themselves in a pretty vulnerable position, and have put time and care into what they've done (even if that's not obvious to you!) -- always respond with respect, be understanding, but don't feel like you need to sacrifice your standards for their sake, either. Just don't be a jerk about it? - -## Merge Pull Requests - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. - -## Tag A Release - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. The most important bit here is probably that all tests must pass, and tags must use [semver](https://semver.org). - -## Join the Project Team - -### Ways to Join - -There are many ways to contribute! Most of them don't require any official status unless otherwise noted. That said, there's a couple of positions that grant special repository abilities, and this section describes how they're granted and what they do. - -All of the below positions are granted based on the project team's needs, as well as their consensus opinion about whether they would like to work with the person and think that they would fit well into that position. The process is relatively informal, and it's likely that people who express interest in participating can just be granted the permissions they'd like. - -You can spot a collaborator on the repo by looking for the `[Collaborator]` or `[Owner]` tags next to their names. - -Permission | Description ---- | --- -Issue Tracker | Granted to contributors who express a strong interest in spending time on the project's issue tracker. These tasks are mainly [labeling issues](#label-issues), [cleaning up old ones](#clean-up-issues-and-prs), and [reviewing pull requests](#review-pull-requests), as well as all the usual things non-team-member contributors can do. Issue handlers should not merge pull requests, tag releases, or directly commit code themselves: that should still be done through the usual pull request process. Becoming an Issue Handler means the project team trusts you to understand enough of the team's process and context to implement it on the issue tracker. -Committer | Granted to contributors who want to handle the actual pull request merges, tagging new versions, etc. Committers should have a good level of familiarity with the codebase, and enough context to understand the implications of various changes, as well as a good sense of the will and expectations of the project team. -Admin/Owner | Granted to people ultimately responsible for the project, its community, etc. - -## Attribution - -This guide was generated using the WeAllJS `CONTRIBUTING.md` generator. [Make your own](https://npm.im/weallcontribute)! diff --git a/deps/npm/node_modules/libnpmorg/CODE_OF_CONDUCT.md b/deps/npm/node_modules/libnpmorg/CODE_OF_CONDUCT.md deleted file mode 100644 index aeb72f598dcb45..00000000000000 --- a/deps/npm/node_modules/libnpmorg/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,151 +0,0 @@ -# Code of Conduct - -## When Something Happens - -If you see a Code of Conduct violation, follow these steps: - -1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s) or commits. -2. That person should immediately stop the behavior and correct the issue. -3. If this doesn’t happen, or if you're uncomfortable speaking up, [contact the maintainers](#contacting-maintainers). -4. As soon as available, a maintainer will look into the issue, and take [further action (see below)](#further-enforcement), starting with a warning, then temporary block, then long-term repo or organization ban. - -When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation. - -**The maintainer team will prioritize the well-being and comfort of the recipients of the violation over the comfort of the violator.** See [some examples below](#enforcement-examples). - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers of this project pledge to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, technical preferences, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - - * Using welcoming and inclusive language. - * Being respectful of differing viewpoints and experiences. - * Gracefully accepting constructive feedback. - * Focusing on what is best for the community. - * Showing empathy and kindness towards other community members. - * Encouraging and raising up your peers in the project so you can all bask in hacks and glory. - -Examples of unacceptable behavior by participants include: - - * The use of sexualized language or imagery and unwelcome sexual attention or advances, including when simulated online. The only exception to sexual topics is channels/spaces specifically for topics of sexual identity. - * Casual mention of slavery or indentured servitude and/or false comparisons of one's occupation or situation to slavery. Please consider using or asking about alternate terminology when referring to such metaphors in technology. - * Making light of/making mocking comments about trigger warnings and content warnings. - * Trolling, insulting/derogatory comments, and personal or political attacks. - * Public or private harassment, deliberate intimidation, or threats. - * Publishing others' private information, such as a physical or electronic address, without explicit permission. This includes any sort of "outing" of any aspect of someone's identity without their consent. - * Publishing private screenshots or quotes of interactions in the context of this project without all quoted users' *explicit* consent. - * Publishing of private communication that doesn't have to do with reporting harrassment. - * Any of the above even when [presented as "ironic" or "joking"](https://en.wikipedia.org/wiki/Hipster_racism). - * Any attempt to present "reverse-ism" versions of the above as violations. Examples of reverse-isms are "reverse racism", "reverse sexism", "heterophobia", and "cisphobia". - * Unsolicited explanations under the assumption that someone doesn't already know it. Ask before you teach! Don't assume what people's knowledge gaps are. - * [Feigning or exaggerating surprise](https://www.recurse.com/manual#no-feigned-surprise) when someone admits to not knowing something. - * "[Well-actuallies](https://www.recurse.com/manual#no-well-actuallys)" - * Other conduct which could reasonably be considered inappropriate in a professional or community setting. - -## Scope - -This Code of Conduct applies both within spaces involving this project and in other spaces involving community members. This includes the repository, its Pull Requests and Issue tracker, its Twitter community, private email communications in the context of the project, and any events where members of the project are participating, as well as adjacent communities and venues affecting the project's members. - -Depending on the violation, the maintainers may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members. - -### Other Community Standards - -As a project on GitHub, this project is additionally covered by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/). - -Additionally, as a project hosted on npm, is is covered by [npm, Inc's Code of Conduct](https://www.npmjs.com/policies/conduct). - -Enforcement of those guidelines after violations overlapping with the above are the responsibility of the entities, and enforcement may happen in any or all of the services/communities. - -## Maintainer Enforcement Process - -Once the maintainers get involved, they will follow a documented series of steps and do their best to preserve the well-being of project members. This section covers actual concrete steps. - -### Contacting Maintainers - -You may get in touch with the maintainer team through any of the following methods: - - * Through email: - * [kzm@zkat.tech](mailto:kzm@zkat.tech) (Kat MarchΓ‘n) - - * Through Twitter: - * [@maybekatz](https://twitter.com/maybekatz) (Kat MarchΓ‘n) - -### Further Enforcement - -If you've already followed the [initial enforcement steps](#enforcement), these are the steps maintainers will take for further enforcement, as needed: - - 1. Repeat the request to stop. - 2. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked. - 3. If the behavior continues or is repeated later, the person will be blocked from participating for 24 hours. - 4. If the behavior continues or is repeated after the temporary block, a long-term (6-12mo) ban will be used. - -On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary. - -Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk. - -Members expelled from events or venues with any sort of paid attendance will not be refunded. - -### Who Watches the Watchers? - -Maintainers and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. These may include anything from removal from the maintainer team to a permanent ban from the community. - -Additionally, as a project hosted on both GitHub and npm, [their own Codes of Conducts may be applied against maintainers of this project](#other-community-standards), externally of this project's procedures. - -### Enforcement Examples - -#### The Best Case - -The vast majority of situations work out like this. This interaction is common, and generally positive. - -> Alex: "Yeah I used X and it was really crazy!" - -> Patt (not a maintainer): "Hey, could you not use that word? What about 'ridiculous' instead?" - -> Alex: "oh sorry, sure." -> edits old comment to say "it was really confusing!" - -#### The Maintainer Case - -Sometimes, though, you need to get maintainers involved. Maintainers will do their best to resolve conflicts, but people who were harmed by something **will take priority**. - -> Patt: "Honestly, sometimes I just really hate using $library and anyone who uses it probably sucks at their job." - -> Alex: "Whoa there, could you dial it back a bit? There's a CoC thing about attacking folks' tech use like that." - -> Patt: "I'm not attacking anyone, what's your problem?" - -> Alex: "@maintainers hey uh. Can someone look at this issue? Patt is getting a bit aggro. I tried to nudge them about it, but nope." - -> KeeperOfCommitBits: (on issue) "Hey Patt, maintainer here. Could you tone it down? This sort of attack is really not okay in this space." - -> Patt: "Leave me alone I haven't said anything bad wtf is wrong with you." - -> KeeperOfCommitBits: (deletes user's comment), "@patt I mean it. Please refer to the CoC over at (URL to this CoC) if you have questions, but you can consider this an actual warning. I'd appreciate it if you reworded your messages in this thread, since they made folks there uncomfortable. Let's try and be kind, yeah?" - -> Patt: "@keeperofbits Okay sorry. I'm just frustrated and I'm kinda burnt out and I guess I got carried away. I'll DM Alex a note apologizing and edit my messages. Sorry for the trouble." - -> KeeperOfCommitBits: "@patt Thanks for that. I hear you on the stress. Burnout sucks :/. Have a good one!" - -#### The Nope Case - -> PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white supremacists are quite fashionable." - -> Patt: "NOOOOPE. OH NOPE NOPE." - -> Alex: "JFC NO. NOPE. @keeperofbits NOPE NOPE LOOK HERE" - -> KeeperOfCommitBits: "πŸ‘€ Nope. NOPE NOPE NOPE. πŸ”₯" - -> PepeTheFrog🐸 has been banned from all organization or user repositories belonging to KeeperOfCommitBits. - -## Attribution - -This Code of Conduct was generated using [WeAllJS Code of Conduct Generator](https://npm.im/weallbehave), which is based on the [WeAllJS Code of -Conduct](https://wealljs.org/code-of-conduct), which is itself based on -[Contributor Covenant](http://contributor-covenant.org), version 1.4, available -at -[http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4), -and the LGBTQ in Technology Slack [Code of -Conduct](http://lgbtq.technology/coc.html). diff --git a/deps/npm/node_modules/libnpmorg/CONTRIBUTING.md b/deps/npm/node_modules/libnpmorg/CONTRIBUTING.md deleted file mode 100644 index eb4b58b03ef1a8..00000000000000 --- a/deps/npm/node_modules/libnpmorg/CONTRIBUTING.md +++ /dev/null @@ -1,256 +0,0 @@ -# Contributing - -## How do I... - -* [Use This Guide](#introduction)? -* Ask or Say Something? πŸ€”πŸ›πŸ˜± - * [Request Support](#request-support) - * [Report an Error or Bug](#report-an-error-or-bug) - * [Request a Feature](#request-a-feature) -* Make Something? πŸ€“πŸ‘©πŸ½β€πŸ’»πŸ“œπŸ³ - * [Project Setup](#project-setup) - * [Contribute Documentation](#contribute-documentation) - * [Contribute Code](#contribute-code) -* Manage Something βœ…πŸ™†πŸΌπŸ’ƒπŸ‘” - * [Provide Support on Issues](#provide-support-on-issues) - * [Label Issues](#label-issues) - * [Clean Up Issues and PRs](#clean-up-issues-and-prs) - * [Review Pull Requests](#review-pull-requests) - * [Merge Pull Requests](#merge-pull-requests) - * [Tag a Release](#tag-a-release) - * [Join the Project Team](#join-the-project-team) -* Add a Guide Like This One [To My Project](#attribution)? πŸ€–πŸ˜»πŸ‘» - -## Introduction - -Thank you so much for your interest in contributing!. All types of contributions are encouraged and valued. See the [table of contents](#toc) for different ways to help and details about how this project handles them!πŸ“ - -Please make sure to read the relevant section before making your contribution! It will make it a lot easier for us maintainers to make the most of it and smooth out the experience for all involved. πŸ’š - -The [Project Team](#join-the-project-team) looks forward to your contributions. πŸ™ŒπŸΎβœ¨ - -## Request Support - -If you have a question about this project, how to use it, or just need clarification about something: - -* Open an Issue at https://github.com/npm/libnpmorg/issues -* Provide as much context as you can about what you're running into. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* Someone will try to have a response soon. -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. - -## Report an Error or Bug - -If you run into an error or bug with the project: - -* Open an Issue at https://github.com/npm/libnpmorg/issues -* Include *reproduction steps* that someone else can follow to recreate the bug or error on their own. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* A team member will try to reproduce the issue with your provided steps. If there are no repro steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. -* If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#contribute-code). -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. -* `critical` issues may be left open, depending on perceived immediacy and severity, even past the 30 day deadline. - -## Request a Feature - -If the project doesn't do something you need or want it to do: - -* Open an Issue at https://github.com/npm/libnpmorg/issues -* Provide as much context as you can about what you're running into. -* Please try and be clear about why existing features and alternatives would not work for you. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* The project team will evaluate the feature request, possibly asking you more questions to understand its purpose and any relevant requirements. If the issue is closed, the team will convey their reasoning and suggest an alternative path forward. -* If the feature request is accepted, it will be marked for implementation with `feature-accepted`, which can then be done by either by a core team member or by anyone in the community who wants to [contribute code](#contribute-code). - -Note: The team is unlikely to be able to accept every single feature request that is filed. Please understand if they need to say no. - -## Project Setup - -So you wanna contribute some code! That's great! This project uses GitHub Pull Requests to manage contributions, so [read up on how to fork a GitHub project and file a PR](https://guides.github.com/activities/forking) if you've never done it before. - -If this seems like a lot or you aren't able to do all this setup, you might also be able to [edit the files directly](https://help.github.com/articles/editing-files-in-another-user-s-repository/) without having to do any of this setup. Yes, [even code](#contribute-code). - -If you want to go the usual route and run the project locally, though: - -* [Install Node.js](https://nodejs.org/en/download/) -* [Fork the project](https://guides.github.com/activities/forking/#fork) - -Then in your terminal: -* `cd path/to/your/clone` -* `npm install` -* `npm test` - -And you should be ready to go! - -## Contribute Documentation - -Documentation is a super important, critical part of this project. Docs are how we keep track of what we're doing, how, and why. It's how we stay on the same page about our policies. And it's how we tell others everything they need in order to be able to use this project -- or contribute to it. So thank you in advance. - -Documentation contributions of any size are welcome! Feel free to file a PR even if you're just rewording a sentence to be more clear, or fixing a spelling mistake! - -To contribute documentation: - -* [Set up the project](#project-setup). -* Edit or add any relevant documentation. -* Make sure your changes are formatted correctly and consistently with the rest of the documentation. -* Re-read what you wrote, and run a spellchecker on it to make sure you didn't miss anything. -* In your commit message(s), begin the first line with `docs: `. For example: `docs: Adding a doc contrib section to CONTRIBUTING.md`. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). Documentation commits should use `docs(): `. -* Go to https://github.com/npm/libnpmorg/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Contribute Code - -We like code commits a lot! They're super handy, and they keep the project going and doing the work it needs to do to be useful to others. - -Code contributions of just about any size are acceptable! - -The main difference between code contributions and documentation contributions is that contributing code requires inclusion of relevant tests for the code being added or changed. Contributions without accompanying tests will be held off until a test is added, unless the maintainers consider the specific tests to be either impossible, or way too much of a burden for such a contribution. - -To contribute code: - -* [Set up the project](#project-setup). -* Make any necessary changes to the source code. -* Include any [additional documentation](#contribute-documentation) the changes might need. -* Write tests that verify that your contribution works as expected. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). -* Dependency updates, additions, or removals must be in individual commits, and the message must use the format: `(deps): PKG@VERSION`, where `` is any of the usual `conventional-changelog` prefixes, at your discretion. -* Go to https://github.com/npm/libnpmorg/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* Barring special circumstances, maintainers will not review PRs until all checks pass (Travis, AppVeyor, etc). -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. Additional tags (such as `needs-tests`) will be added depending on the review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Provide Support on Issues - -[Needs Collaborator](#join-the-project-team): none - -Helping out other users with their questions is a really awesome way of contributing to any community. It's not uncommon for most of the issues on an open source projects being support-related questions by users trying to understand something they ran into, or find their way around a known bug. - -Sometimes, the `support` label will be added to things that turn out to actually be other things, like bugs or feature requests. In that case, suss out the details with the person who filed the original issue, add a comment explaining what the bug is, and change the label from `support` to `bug` or `feature`. If you can't do this yourself, @mention a maintainer so they can do it. - -In order to help other folks out with their questions: - -* Go to the issue tracker and [filter open issues by the `support` label](https://github.com/npm/libnpmorg/issues?q=is%3Aopen+is%3Aissue+label%3Asupport). -* Read through the list until you find something that you're familiar enough with to give an answer to. -* Respond to the issue with whatever details are needed to clarify the question, or get more details about what's going on. -* Once the discussion wraps up and things are clarified, either close the issue, or ask the original issue filer (or a maintainer) to close it for you. - -Some notes on picking up support issues: - -* Avoid responding to issues you don't know you can answer accurately. -* As much as possible, try to refer to past issues with accepted answers. Link to them from your replies with the `#123` format. -* Be kind and patient with users -- often, folks who have run into confusing things might be upset or impatient. This is ok. Try to understand where they're coming from, and if you're too uncomfortable with the tone, feel free to stay away or withdraw from the issue. (note: if the user is outright hostile or is violating the CoC, [refer to the Code of Conduct](CODE_OF_CONDUCT.md) to resolve the conflict). - -## Label Issues - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -One of the most important tasks in handling issues is labeling them usefully and accurately. All other tasks involving issues ultimately rely on the issue being classified in such a way that relevant parties looking to do their own tasks can find them quickly and easily. - -In order to label issues, [open up the list of unlabeled issues](https://github.com/npm/libnpmorg/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and, **from newest to oldest**, read through each one and apply issue labels according to the table below. If you're unsure about what label to apply, skip the issue and try the next one: don't feel obligated to label each and every issue yourself! - -Label | Apply When | Notes ---- | --- | --- -`bug` | Cases where the code (or documentation) is behaving in a way it wasn't intended to. | If something is happening that surprises the *user* but does not go against the way the code is designed, it should use the `enhancement` label. -`critical` | Added to `bug` issues if the problem described makes the code completely unusable in a common situation. | -`documentation` | Added to issues or pull requests that affect any of the documentation for the project. | Can be combined with other labels, such as `bug` or `enhancement`. -`duplicate` | Added to issues or PRs that refer to the exact same issue as another one that's been previously labeled. | Duplicate issues should be marked and closed right away, with a message referencing the issue it's a duplicate of (with `#123`) -`enhancement` | Added to [feature requests](#request-a-feature), PRs, or documentation issues that are purely additive: the code or docs currently work as expected, but a change is being requested or suggested. | -`help wanted` | Applied by [Committers](#join-the-project-team) to issues and PRs that they would like to get outside help for. Generally, this means it's lower priority for the maintainer team to itself implement, but that the community is encouraged to pick up if they so desire | Never applied on first-pass labeling. -`in-progress` | Applied by [Committers](#join-the-project-team) to PRs that are pending some work before they're ready for review. | The original PR submitter should @mention the team member that applied the label once the PR is complete. -`performance` | This issue or PR is directly related to improving performance. | -`refactor` | Added to issues or PRs that deal with cleaning up or modifying the project for the betterment of it. | -`starter` | Applied by [Committers](#join-the-project-team) to issues that they consider good introductions to the project for people who have not contributed before. These are not necessarily "easy", but rather focused around how much context is necessary in order to understand what needs to be done for this project in particular. | Existing project members are expected to stay away from these unless they increase in priority. -`support` | This issue is either asking a question about how to use the project, clarifying the reason for unexpected behavior, or possibly reporting a `bug` but does not have enough detail yet to determine whether it would count as such. | The label should be switched to `bug` if reliable reproduction steps are provided. Issues primarily with unintended configurations of a user's environment are not considered bugs, even if they cause crashes. -`tests` | This issue or PR either requests or adds primarily tests to the project. | If a PR is pending tests, that will be handled through the [PR review process](#review-pull-requests) -`wontfix` | Labelers may apply this label to issues that clearly have nothing at all to do with the project or are otherwise entirely outside of its scope/sphere of influence. [Committers](#join-the-project-team) may apply this label and close an issue or PR if they decide to pass on an otherwise relevant issue. | The issue or PR should be closed as soon as the label is applied, and a clear explanation provided of why the label was used. Contributors are free to contest the labeling, but the decision ultimately falls on committers as to whether to accept something or not. - -## Clean Up Issues and PRs - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -Issues and PRs can go stale after a while. Maybe they're abandoned. Maybe the team will just plain not have time to address them any time soon. - -In these cases, they should be closed until they're brought up again or the interaction starts over. - -To clean up issues and PRs: - -* Search the issue tracker for issues or PRs, and add the term `updated:<=YYYY-MM-DD`, where the date is 30 days before today. -* Go through each issue *from oldest to newest*, and close them if **all of the following are true**: - * not opened by a maintainer - * not marked as `critical` - * not marked as `starter` or `help wanted` (these might stick around for a while, in general, as they're intended to be available) - * no explicit messages in the comments asking for it to be left open - * does not belong to a milestone -* Leave a message when closing saying "Cleaning up stale issue. Please reopen or ping us if and when you're ready to resume this. See https://github.com/npm/libnpmorg/blob/latest/CONTRIBUTING.md#clean-up-issues-and-prs for more details." - -## Review Pull Requests - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -While anyone can comment on a PR, add feedback, etc, PRs are only *approved* by team members with Issue Tracker or higher permissions. - -PR reviews use [GitHub's own review feature](https://help.github.com/articles/about-pull-request-reviews/), which manages comments, approval, and review iteration. - -Some notes: - -* You may ask for minor changes ("nitpicks"), but consider whether they are really blockers to merging: try to err on the side of "approve, with comments". -* *ALL PULL REQUESTS* should be covered by a test: either by a previously-failing test, an existing test that covers the entire functionality of the submitted code, or new tests to verify any new/changed behavior. All tests must also pass and follow established conventions. Test coverage should not drop, unless the specific case is considered reasonable by maintainers. -* Please make sure you're familiar with the code or documentation being updated, unless it's a minor change (spellchecking, minor formatting, etc). You may @mention another project member who you think is better suited for the review, but still provide a non-approving review of your own. -* Be extra kind: people who submit code/doc contributions are putting themselves in a pretty vulnerable position, and have put time and care into what they've done (even if that's not obvious to you!) -- always respond with respect, be understanding, but don't feel like you need to sacrifice your standards for their sake, either. Just don't be a jerk about it? - -## Merge Pull Requests - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. - -## Tag A Release - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. The most important bit here is probably that all tests must pass, and tags must use [semver](https://semver.org). - -## Join the Project Team - -### Ways to Join - -There are many ways to contribute! Most of them don't require any official status unless otherwise noted. That said, there's a couple of positions that grant special repository abilities, and this section describes how they're granted and what they do. - -All of the below positions are granted based on the project team's needs, as well as their consensus opinion about whether they would like to work with the person and think that they would fit well into that position. The process is relatively informal, and it's likely that people who express interest in participating can just be granted the permissions they'd like. - -You can spot a collaborator on the repo by looking for the `[Collaborator]` or `[Owner]` tags next to their names. - -Permission | Description ---- | --- -Issue Tracker | Granted to contributors who express a strong interest in spending time on the project's issue tracker. These tasks are mainly [labeling issues](#label-issues), [cleaning up old ones](#clean-up-issues-and-prs), and [reviewing pull requests](#review-pull-requests), as well as all the usual things non-team-member contributors can do. Issue handlers should not merge pull requests, tag releases, or directly commit code themselves: that should still be done through the usual pull request process. Becoming an Issue Handler means the project team trusts you to understand enough of the team's process and context to implement it on the issue tracker. -Committer | Granted to contributors who want to handle the actual pull request merges, tagging new versions, etc. Committers should have a good level of familiarity with the codebase, and enough context to understand the implications of various changes, as well as a good sense of the will and expectations of the project team. -Admin/Owner | Granted to people ultimately responsible for the project, its community, etc. - -## Attribution - -This guide was generated using the WeAllJS `CONTRIBUTING.md` generator. [Make your own](https://npm.im/weallcontribute)! diff --git a/deps/npm/node_modules/libnpmpublish/CODE_OF_CONDUCT.md b/deps/npm/node_modules/libnpmpublish/CODE_OF_CONDUCT.md deleted file mode 100644 index aeb72f598dcb45..00000000000000 --- a/deps/npm/node_modules/libnpmpublish/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,151 +0,0 @@ -# Code of Conduct - -## When Something Happens - -If you see a Code of Conduct violation, follow these steps: - -1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s) or commits. -2. That person should immediately stop the behavior and correct the issue. -3. If this doesn’t happen, or if you're uncomfortable speaking up, [contact the maintainers](#contacting-maintainers). -4. As soon as available, a maintainer will look into the issue, and take [further action (see below)](#further-enforcement), starting with a warning, then temporary block, then long-term repo or organization ban. - -When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation. - -**The maintainer team will prioritize the well-being and comfort of the recipients of the violation over the comfort of the violator.** See [some examples below](#enforcement-examples). - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers of this project pledge to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, technical preferences, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - - * Using welcoming and inclusive language. - * Being respectful of differing viewpoints and experiences. - * Gracefully accepting constructive feedback. - * Focusing on what is best for the community. - * Showing empathy and kindness towards other community members. - * Encouraging and raising up your peers in the project so you can all bask in hacks and glory. - -Examples of unacceptable behavior by participants include: - - * The use of sexualized language or imagery and unwelcome sexual attention or advances, including when simulated online. The only exception to sexual topics is channels/spaces specifically for topics of sexual identity. - * Casual mention of slavery or indentured servitude and/or false comparisons of one's occupation or situation to slavery. Please consider using or asking about alternate terminology when referring to such metaphors in technology. - * Making light of/making mocking comments about trigger warnings and content warnings. - * Trolling, insulting/derogatory comments, and personal or political attacks. - * Public or private harassment, deliberate intimidation, or threats. - * Publishing others' private information, such as a physical or electronic address, without explicit permission. This includes any sort of "outing" of any aspect of someone's identity without their consent. - * Publishing private screenshots or quotes of interactions in the context of this project without all quoted users' *explicit* consent. - * Publishing of private communication that doesn't have to do with reporting harrassment. - * Any of the above even when [presented as "ironic" or "joking"](https://en.wikipedia.org/wiki/Hipster_racism). - * Any attempt to present "reverse-ism" versions of the above as violations. Examples of reverse-isms are "reverse racism", "reverse sexism", "heterophobia", and "cisphobia". - * Unsolicited explanations under the assumption that someone doesn't already know it. Ask before you teach! Don't assume what people's knowledge gaps are. - * [Feigning or exaggerating surprise](https://www.recurse.com/manual#no-feigned-surprise) when someone admits to not knowing something. - * "[Well-actuallies](https://www.recurse.com/manual#no-well-actuallys)" - * Other conduct which could reasonably be considered inappropriate in a professional or community setting. - -## Scope - -This Code of Conduct applies both within spaces involving this project and in other spaces involving community members. This includes the repository, its Pull Requests and Issue tracker, its Twitter community, private email communications in the context of the project, and any events where members of the project are participating, as well as adjacent communities and venues affecting the project's members. - -Depending on the violation, the maintainers may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members. - -### Other Community Standards - -As a project on GitHub, this project is additionally covered by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/). - -Additionally, as a project hosted on npm, is is covered by [npm, Inc's Code of Conduct](https://www.npmjs.com/policies/conduct). - -Enforcement of those guidelines after violations overlapping with the above are the responsibility of the entities, and enforcement may happen in any or all of the services/communities. - -## Maintainer Enforcement Process - -Once the maintainers get involved, they will follow a documented series of steps and do their best to preserve the well-being of project members. This section covers actual concrete steps. - -### Contacting Maintainers - -You may get in touch with the maintainer team through any of the following methods: - - * Through email: - * [kzm@zkat.tech](mailto:kzm@zkat.tech) (Kat MarchΓ‘n) - - * Through Twitter: - * [@maybekatz](https://twitter.com/maybekatz) (Kat MarchΓ‘n) - -### Further Enforcement - -If you've already followed the [initial enforcement steps](#enforcement), these are the steps maintainers will take for further enforcement, as needed: - - 1. Repeat the request to stop. - 2. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked. - 3. If the behavior continues or is repeated later, the person will be blocked from participating for 24 hours. - 4. If the behavior continues or is repeated after the temporary block, a long-term (6-12mo) ban will be used. - -On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary. - -Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk. - -Members expelled from events or venues with any sort of paid attendance will not be refunded. - -### Who Watches the Watchers? - -Maintainers and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. These may include anything from removal from the maintainer team to a permanent ban from the community. - -Additionally, as a project hosted on both GitHub and npm, [their own Codes of Conducts may be applied against maintainers of this project](#other-community-standards), externally of this project's procedures. - -### Enforcement Examples - -#### The Best Case - -The vast majority of situations work out like this. This interaction is common, and generally positive. - -> Alex: "Yeah I used X and it was really crazy!" - -> Patt (not a maintainer): "Hey, could you not use that word? What about 'ridiculous' instead?" - -> Alex: "oh sorry, sure." -> edits old comment to say "it was really confusing!" - -#### The Maintainer Case - -Sometimes, though, you need to get maintainers involved. Maintainers will do their best to resolve conflicts, but people who were harmed by something **will take priority**. - -> Patt: "Honestly, sometimes I just really hate using $library and anyone who uses it probably sucks at their job." - -> Alex: "Whoa there, could you dial it back a bit? There's a CoC thing about attacking folks' tech use like that." - -> Patt: "I'm not attacking anyone, what's your problem?" - -> Alex: "@maintainers hey uh. Can someone look at this issue? Patt is getting a bit aggro. I tried to nudge them about it, but nope." - -> KeeperOfCommitBits: (on issue) "Hey Patt, maintainer here. Could you tone it down? This sort of attack is really not okay in this space." - -> Patt: "Leave me alone I haven't said anything bad wtf is wrong with you." - -> KeeperOfCommitBits: (deletes user's comment), "@patt I mean it. Please refer to the CoC over at (URL to this CoC) if you have questions, but you can consider this an actual warning. I'd appreciate it if you reworded your messages in this thread, since they made folks there uncomfortable. Let's try and be kind, yeah?" - -> Patt: "@keeperofbits Okay sorry. I'm just frustrated and I'm kinda burnt out and I guess I got carried away. I'll DM Alex a note apologizing and edit my messages. Sorry for the trouble." - -> KeeperOfCommitBits: "@patt Thanks for that. I hear you on the stress. Burnout sucks :/. Have a good one!" - -#### The Nope Case - -> PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white supremacists are quite fashionable." - -> Patt: "NOOOOPE. OH NOPE NOPE." - -> Alex: "JFC NO. NOPE. @keeperofbits NOPE NOPE LOOK HERE" - -> KeeperOfCommitBits: "πŸ‘€ Nope. NOPE NOPE NOPE. πŸ”₯" - -> PepeTheFrog🐸 has been banned from all organization or user repositories belonging to KeeperOfCommitBits. - -## Attribution - -This Code of Conduct was generated using [WeAllJS Code of Conduct Generator](https://npm.im/weallbehave), which is based on the [WeAllJS Code of -Conduct](https://wealljs.org/code-of-conduct), which is itself based on -[Contributor Covenant](http://contributor-covenant.org), version 1.4, available -at -[http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4), -and the LGBTQ in Technology Slack [Code of -Conduct](http://lgbtq.technology/coc.html). diff --git a/deps/npm/node_modules/libnpmpublish/CONTRIBUTING.md b/deps/npm/node_modules/libnpmpublish/CONTRIBUTING.md deleted file mode 100644 index 780044ffcc0f36..00000000000000 --- a/deps/npm/node_modules/libnpmpublish/CONTRIBUTING.md +++ /dev/null @@ -1,256 +0,0 @@ -# Contributing - -## How do I... - -* [Use This Guide](#introduction)? -* Ask or Say Something? πŸ€”πŸ›πŸ˜± - * [Request Support](#request-support) - * [Report an Error or Bug](#report-an-error-or-bug) - * [Request a Feature](#request-a-feature) -* Make Something? πŸ€“πŸ‘©πŸ½β€πŸ’»πŸ“œπŸ³ - * [Project Setup](#project-setup) - * [Contribute Documentation](#contribute-documentation) - * [Contribute Code](#contribute-code) -* Manage Something βœ…πŸ™†πŸΌπŸ’ƒπŸ‘” - * [Provide Support on Issues](#provide-support-on-issues) - * [Label Issues](#label-issues) - * [Clean Up Issues and PRs](#clean-up-issues-and-prs) - * [Review Pull Requests](#review-pull-requests) - * [Merge Pull Requests](#merge-pull-requests) - * [Tag a Release](#tag-a-release) - * [Join the Project Team](#join-the-project-team) -* Add a Guide Like This One [To My Project](#attribution)? πŸ€–πŸ˜»πŸ‘» - -## Introduction - -Thank you so much for your interest in contributing!. All types of contributions are encouraged and valued. See the [table of contents](#toc) for different ways to help and details about how this project handles them!πŸ“ - -Please make sure to read the relevant section before making your contribution! It will make it a lot easier for us maintainers to make the most of it and smooth out the experience for all involved. πŸ’š - -The [Project Team](#join-the-project-team) looks forward to your contributions. πŸ™ŒπŸΎβœ¨ - -## Request Support - -If you have a question about this project, how to use it, or just need clarification about something: - -* Open an Issue at https://github.com/npm/libnpmpublish/issues -* Provide as much context as you can about what you're running into. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* Someone will try to have a response soon. -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. - -## Report an Error or Bug - -If you run into an error or bug with the project: - -* Open an Issue at https://github.com/npm/libnpmpublish/issues -* Include *reproduction steps* that someone else can follow to recreate the bug or error on their own. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* A team member will try to reproduce the issue with your provided steps. If there are no repro steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. -* If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#contribute-code). -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. -* `critical` issues may be left open, depending on perceived immediacy and severity, even past the 30 day deadline. - -## Request a Feature - -If the project doesn't do something you need or want it to do: - -* Open an Issue at https://github.com/npm/libnpmpublish/issues -* Provide as much context as you can about what you're running into. -* Please try and be clear about why existing features and alternatives would not work for you. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* The project team will evaluate the feature request, possibly asking you more questions to understand its purpose and any relevant requirements. If the issue is closed, the team will convey their reasoning and suggest an alternative path forward. -* If the feature request is accepted, it will be marked for implementation with `feature-accepted`, which can then be done by either by a core team member or by anyone in the community who wants to [contribute code](#contribute-code). - -Note: The team is unlikely to be able to accept every single feature request that is filed. Please understand if they need to say no. - -## Project Setup - -So you wanna contribute some code! That's great! This project uses GitHub Pull Requests to manage contributions, so [read up on how to fork a GitHub project and file a PR](https://guides.github.com/activities/forking) if you've never done it before. - -If this seems like a lot or you aren't able to do all this setup, you might also be able to [edit the files directly](https://help.github.com/articles/editing-files-in-another-user-s-repository/) without having to do any of this setup. Yes, [even code](#contribute-code). - -If you want to go the usual route and run the project locally, though: - -* [Install Node.js](https://nodejs.org/en/download/) -* [Fork the project](https://guides.github.com/activities/forking/#fork) - -Then in your terminal: -* `cd path/to/your/clone` -* `npm install` -* `npm test` - -And you should be ready to go! - -## Contribute Documentation - -Documentation is a super important, critical part of this project. Docs are how we keep track of what we're doing, how, and why. It's how we stay on the same page about our policies. And it's how we tell others everything they need in order to be able to use this project -- or contribute to it. So thank you in advance. - -Documentation contributions of any size are welcome! Feel free to file a PR even if you're just rewording a sentence to be more clear, or fixing a spelling mistake! - -To contribute documentation: - -* [Set up the project](#project-setup). -* Edit or add any relevant documentation. -* Make sure your changes are formatted correctly and consistently with the rest of the documentation. -* Re-read what you wrote, and run a spellchecker on it to make sure you didn't miss anything. -* In your commit message(s), begin the first line with `docs: `. For example: `docs: Adding a doc contrib section to CONTRIBUTING.md`. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). Documentation commits should use `docs(): `. -* Go to https://github.com/npm/libnpmpublish/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Contribute Code - -We like code commits a lot! They're super handy, and they keep the project going and doing the work it needs to do to be useful to others. - -Code contributions of just about any size are acceptable! - -The main difference between code contributions and documentation contributions is that contributing code requires inclusion of relevant tests for the code being added or changed. Contributions without accompanying tests will be held off until a test is added, unless the maintainers consider the specific tests to be either impossible, or way too much of a burden for such a contribution. - -To contribute code: - -* [Set up the project](#project-setup). -* Make any necessary changes to the source code. -* Include any [additional documentation](#contribute-documentation) the changes might need. -* Write tests that verify that your contribution works as expected. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). -* Dependency updates, additions, or removals must be in individual commits, and the message must use the format: `(deps): PKG@VERSION`, where `` is any of the usual `conventional-changelog` prefixes, at your discretion. -* Go to https://github.com/npm/libnpmpublish/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* Barring special circumstances, maintainers will not review PRs until all checks pass (Travis, AppVeyor, etc). -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. Additional tags (such as `needs-tests`) will be added depending on the review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Provide Support on Issues - -[Needs Collaborator](#join-the-project-team): none - -Helping out other users with their questions is a really awesome way of contributing to any community. It's not uncommon for most of the issues on an open source projects being support-related questions by users trying to understand something they ran into, or find their way around a known bug. - -Sometimes, the `support` label will be added to things that turn out to actually be other things, like bugs or feature requests. In that case, suss out the details with the person who filed the original issue, add a comment explaining what the bug is, and change the label from `support` to `bug` or `feature`. If you can't do this yourself, @mention a maintainer so they can do it. - -In order to help other folks out with their questions: - -* Go to the issue tracker and [filter open issues by the `support` label](https://github.com/npm/libnpmpublish/issues?q=is%3Aopen+is%3Aissue+label%3Asupport). -* Read through the list until you find something that you're familiar enough with to give an answer to. -* Respond to the issue with whatever details are needed to clarify the question, or get more details about what's going on. -* Once the discussion wraps up and things are clarified, either close the issue, or ask the original issue filer (or a maintainer) to close it for you. - -Some notes on picking up support issues: - -* Avoid responding to issues you don't know you can answer accurately. -* As much as possible, try to refer to past issues with accepted answers. Link to them from your replies with the `#123` format. -* Be kind and patient with users -- often, folks who have run into confusing things might be upset or impatient. This is ok. Try to understand where they're coming from, and if you're too uncomfortable with the tone, feel free to stay away or withdraw from the issue. (note: if the user is outright hostile or is violating the CoC, [refer to the Code of Conduct](CODE_OF_CONDUCT.md) to resolve the conflict). - -## Label Issues - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -One of the most important tasks in handling issues is labeling them usefully and accurately. All other tasks involving issues ultimately rely on the issue being classified in such a way that relevant parties looking to do their own tasks can find them quickly and easily. - -In order to label issues, [open up the list of unlabeled issues](https://github.com/npm/libnpmpublish/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and, **from newest to oldest**, read through each one and apply issue labels according to the table below. If you're unsure about what label to apply, skip the issue and try the next one: don't feel obligated to label each and every issue yourself! - -Label | Apply When | Notes ---- | --- | --- -`bug` | Cases where the code (or documentation) is behaving in a way it wasn't intended to. | If something is happening that surprises the *user* but does not go against the way the code is designed, it should use the `enhancement` label. -`critical` | Added to `bug` issues if the problem described makes the code completely unusable in a common situation. | -`documentation` | Added to issues or pull requests that affect any of the documentation for the project. | Can be combined with other labels, such as `bug` or `enhancement`. -`duplicate` | Added to issues or PRs that refer to the exact same issue as another one that's been previously labeled. | Duplicate issues should be marked and closed right away, with a message referencing the issue it's a duplicate of (with `#123`) -`enhancement` | Added to [feature requests](#request-a-feature), PRs, or documentation issues that are purely additive: the code or docs currently work as expected, but a change is being requested or suggested. | -`help wanted` | Applied by [Committers](#join-the-project-team) to issues and PRs that they would like to get outside help for. Generally, this means it's lower priority for the maintainer team to itself implement, but that the community is encouraged to pick up if they so desire | Never applied on first-pass labeling. -`in-progress` | Applied by [Committers](#join-the-project-team) to PRs that are pending some work before they're ready for review. | The original PR submitter should @mention the team member that applied the label once the PR is complete. -`performance` | This issue or PR is directly related to improving performance. | -`refactor` | Added to issues or PRs that deal with cleaning up or modifying the project for the betterment of it. | -`starter` | Applied by [Committers](#join-the-project-team) to issues that they consider good introductions to the project for people who have not contributed before. These are not necessarily "easy", but rather focused around how much context is necessary in order to understand what needs to be done for this project in particular. | Existing project members are expected to stay away from these unless they increase in priority. -`support` | This issue is either asking a question about how to use the project, clarifying the reason for unexpected behavior, or possibly reporting a `bug` but does not have enough detail yet to determine whether it would count as such. | The label should be switched to `bug` if reliable reproduction steps are provided. Issues primarily with unintended configurations of a user's environment are not considered bugs, even if they cause crashes. -`tests` | This issue or PR either requests or adds primarily tests to the project. | If a PR is pending tests, that will be handled through the [PR review process](#review-pull-requests) -`wontfix` | Labelers may apply this label to issues that clearly have nothing at all to do with the project or are otherwise entirely outside of its scope/sphere of influence. [Committers](#join-the-project-team) may apply this label and close an issue or PR if they decide to pass on an otherwise relevant issue. | The issue or PR should be closed as soon as the label is applied, and a clear explanation provided of why the label was used. Contributors are free to contest the labeling, but the decision ultimately falls on committers as to whether to accept something or not. - -## Clean Up Issues and PRs - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -Issues and PRs can go stale after a while. Maybe they're abandoned. Maybe the team will just plain not have time to address them any time soon. - -In these cases, they should be closed until they're brought up again or the interaction starts over. - -To clean up issues and PRs: - -* Search the issue tracker for issues or PRs, and add the term `updated:<=YYYY-MM-DD`, where the date is 30 days before today. -* Go through each issue *from oldest to newest*, and close them if **all of the following are true**: - * not opened by a maintainer - * not marked as `critical` - * not marked as `starter` or `help wanted` (these might stick around for a while, in general, as they're intended to be available) - * no explicit messages in the comments asking for it to be left open - * does not belong to a milestone -* Leave a message when closing saying "Cleaning up stale issue. Please reopen or ping us if and when you're ready to resume this. See https://github.com/npm/libnpmpublish/blob/latest/CONTRIBUTING.md#clean-up-issues-and-prs for more details." - -## Review Pull Requests - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -While anyone can comment on a PR, add feedback, etc, PRs are only *approved* by team members with Issue Tracker or higher permissions. - -PR reviews use [GitHub's own review feature](https://help.github.com/articles/about-pull-request-reviews/), which manages comments, approval, and review iteration. - -Some notes: - -* You may ask for minor changes ("nitpicks"), but consider whether they are really blockers to merging: try to err on the side of "approve, with comments". -* *ALL PULL REQUESTS* should be covered by a test: either by a previously-failing test, an existing test that covers the entire functionality of the submitted code, or new tests to verify any new/changed behavior. All tests must also pass and follow established conventions. Test coverage should not drop, unless the specific case is considered reasonable by maintainers. -* Please make sure you're familiar with the code or documentation being updated, unless it's a minor change (spellchecking, minor formatting, etc). You may @mention another project member who you think is better suited for the review, but still provide a non-approving review of your own. -* Be extra kind: people who submit code/doc contributions are putting themselves in a pretty vulnerable position, and have put time and care into what they've done (even if that's not obvious to you!) -- always respond with respect, be understanding, but don't feel like you need to sacrifice your standards for their sake, either. Just don't be a jerk about it? - -## Merge Pull Requests - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. - -## Tag A Release - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. The most important bit here is probably that all tests must pass, and tags must use [semver](https://semver.org). - -## Join the Project Team - -### Ways to Join - -There are many ways to contribute! Most of them don't require any official status unless otherwise noted. That said, there's a couple of positions that grant special repository abilities, and this section describes how they're granted and what they do. - -All of the below positions are granted based on the project team's needs, as well as their consensus opinion about whether they would like to work with the person and think that they would fit well into that position. The process is relatively informal, and it's likely that people who express interest in participating can just be granted the permissions they'd like. - -You can spot a collaborator on the repo by looking for the `[Collaborator]` or `[Owner]` tags next to their names. - -Permission | Description ---- | --- -Issue Tracker | Granted to contributors who express a strong interest in spending time on the project's issue tracker. These tasks are mainly [labeling issues](#label-issues), [cleaning up old ones](#clean-up-issues-and-prs), and [reviewing pull requests](#review-pull-requests), as well as all the usual things non-team-member contributors can do. Issue handlers should not merge pull requests, tag releases, or directly commit code themselves: that should still be done through the usual pull request process. Becoming an Issue Handler means the project team trusts you to understand enough of the team's process and context to implement it on the issue tracker. -Committer | Granted to contributors who want to handle the actual pull request merges, tagging new versions, etc. Committers should have a good level of familiarity with the codebase, and enough context to understand the implications of various changes, as well as a good sense of the will and expectations of the project team. -Admin/Owner | Granted to people ultimately responsible for the project, its community, etc. - -## Attribution - -This guide was generated using the WeAllJS `CONTRIBUTING.md` generator. [Make your own](https://npm.im/weallcontribute)! diff --git a/deps/npm/node_modules/libnpmsearch/CODE_OF_CONDUCT.md b/deps/npm/node_modules/libnpmsearch/CODE_OF_CONDUCT.md deleted file mode 100644 index aeb72f598dcb45..00000000000000 --- a/deps/npm/node_modules/libnpmsearch/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,151 +0,0 @@ -# Code of Conduct - -## When Something Happens - -If you see a Code of Conduct violation, follow these steps: - -1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s) or commits. -2. That person should immediately stop the behavior and correct the issue. -3. If this doesn’t happen, or if you're uncomfortable speaking up, [contact the maintainers](#contacting-maintainers). -4. As soon as available, a maintainer will look into the issue, and take [further action (see below)](#further-enforcement), starting with a warning, then temporary block, then long-term repo or organization ban. - -When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation. - -**The maintainer team will prioritize the well-being and comfort of the recipients of the violation over the comfort of the violator.** See [some examples below](#enforcement-examples). - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers of this project pledge to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, technical preferences, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - - * Using welcoming and inclusive language. - * Being respectful of differing viewpoints and experiences. - * Gracefully accepting constructive feedback. - * Focusing on what is best for the community. - * Showing empathy and kindness towards other community members. - * Encouraging and raising up your peers in the project so you can all bask in hacks and glory. - -Examples of unacceptable behavior by participants include: - - * The use of sexualized language or imagery and unwelcome sexual attention or advances, including when simulated online. The only exception to sexual topics is channels/spaces specifically for topics of sexual identity. - * Casual mention of slavery or indentured servitude and/or false comparisons of one's occupation or situation to slavery. Please consider using or asking about alternate terminology when referring to such metaphors in technology. - * Making light of/making mocking comments about trigger warnings and content warnings. - * Trolling, insulting/derogatory comments, and personal or political attacks. - * Public or private harassment, deliberate intimidation, or threats. - * Publishing others' private information, such as a physical or electronic address, without explicit permission. This includes any sort of "outing" of any aspect of someone's identity without their consent. - * Publishing private screenshots or quotes of interactions in the context of this project without all quoted users' *explicit* consent. - * Publishing of private communication that doesn't have to do with reporting harrassment. - * Any of the above even when [presented as "ironic" or "joking"](https://en.wikipedia.org/wiki/Hipster_racism). - * Any attempt to present "reverse-ism" versions of the above as violations. Examples of reverse-isms are "reverse racism", "reverse sexism", "heterophobia", and "cisphobia". - * Unsolicited explanations under the assumption that someone doesn't already know it. Ask before you teach! Don't assume what people's knowledge gaps are. - * [Feigning or exaggerating surprise](https://www.recurse.com/manual#no-feigned-surprise) when someone admits to not knowing something. - * "[Well-actuallies](https://www.recurse.com/manual#no-well-actuallys)" - * Other conduct which could reasonably be considered inappropriate in a professional or community setting. - -## Scope - -This Code of Conduct applies both within spaces involving this project and in other spaces involving community members. This includes the repository, its Pull Requests and Issue tracker, its Twitter community, private email communications in the context of the project, and any events where members of the project are participating, as well as adjacent communities and venues affecting the project's members. - -Depending on the violation, the maintainers may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members. - -### Other Community Standards - -As a project on GitHub, this project is additionally covered by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/). - -Additionally, as a project hosted on npm, is is covered by [npm, Inc's Code of Conduct](https://www.npmjs.com/policies/conduct). - -Enforcement of those guidelines after violations overlapping with the above are the responsibility of the entities, and enforcement may happen in any or all of the services/communities. - -## Maintainer Enforcement Process - -Once the maintainers get involved, they will follow a documented series of steps and do their best to preserve the well-being of project members. This section covers actual concrete steps. - -### Contacting Maintainers - -You may get in touch with the maintainer team through any of the following methods: - - * Through email: - * [kzm@zkat.tech](mailto:kzm@zkat.tech) (Kat MarchΓ‘n) - - * Through Twitter: - * [@maybekatz](https://twitter.com/maybekatz) (Kat MarchΓ‘n) - -### Further Enforcement - -If you've already followed the [initial enforcement steps](#enforcement), these are the steps maintainers will take for further enforcement, as needed: - - 1. Repeat the request to stop. - 2. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked. - 3. If the behavior continues or is repeated later, the person will be blocked from participating for 24 hours. - 4. If the behavior continues or is repeated after the temporary block, a long-term (6-12mo) ban will be used. - -On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary. - -Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk. - -Members expelled from events or venues with any sort of paid attendance will not be refunded. - -### Who Watches the Watchers? - -Maintainers and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. These may include anything from removal from the maintainer team to a permanent ban from the community. - -Additionally, as a project hosted on both GitHub and npm, [their own Codes of Conducts may be applied against maintainers of this project](#other-community-standards), externally of this project's procedures. - -### Enforcement Examples - -#### The Best Case - -The vast majority of situations work out like this. This interaction is common, and generally positive. - -> Alex: "Yeah I used X and it was really crazy!" - -> Patt (not a maintainer): "Hey, could you not use that word? What about 'ridiculous' instead?" - -> Alex: "oh sorry, sure." -> edits old comment to say "it was really confusing!" - -#### The Maintainer Case - -Sometimes, though, you need to get maintainers involved. Maintainers will do their best to resolve conflicts, but people who were harmed by something **will take priority**. - -> Patt: "Honestly, sometimes I just really hate using $library and anyone who uses it probably sucks at their job." - -> Alex: "Whoa there, could you dial it back a bit? There's a CoC thing about attacking folks' tech use like that." - -> Patt: "I'm not attacking anyone, what's your problem?" - -> Alex: "@maintainers hey uh. Can someone look at this issue? Patt is getting a bit aggro. I tried to nudge them about it, but nope." - -> KeeperOfCommitBits: (on issue) "Hey Patt, maintainer here. Could you tone it down? This sort of attack is really not okay in this space." - -> Patt: "Leave me alone I haven't said anything bad wtf is wrong with you." - -> KeeperOfCommitBits: (deletes user's comment), "@patt I mean it. Please refer to the CoC over at (URL to this CoC) if you have questions, but you can consider this an actual warning. I'd appreciate it if you reworded your messages in this thread, since they made folks there uncomfortable. Let's try and be kind, yeah?" - -> Patt: "@keeperofbits Okay sorry. I'm just frustrated and I'm kinda burnt out and I guess I got carried away. I'll DM Alex a note apologizing and edit my messages. Sorry for the trouble." - -> KeeperOfCommitBits: "@patt Thanks for that. I hear you on the stress. Burnout sucks :/. Have a good one!" - -#### The Nope Case - -> PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white supremacists are quite fashionable." - -> Patt: "NOOOOPE. OH NOPE NOPE." - -> Alex: "JFC NO. NOPE. @keeperofbits NOPE NOPE LOOK HERE" - -> KeeperOfCommitBits: "πŸ‘€ Nope. NOPE NOPE NOPE. πŸ”₯" - -> PepeTheFrog🐸 has been banned from all organization or user repositories belonging to KeeperOfCommitBits. - -## Attribution - -This Code of Conduct was generated using [WeAllJS Code of Conduct Generator](https://npm.im/weallbehave), which is based on the [WeAllJS Code of -Conduct](https://wealljs.org/code-of-conduct), which is itself based on -[Contributor Covenant](http://contributor-covenant.org), version 1.4, available -at -[http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4), -and the LGBTQ in Technology Slack [Code of -Conduct](http://lgbtq.technology/coc.html). diff --git a/deps/npm/node_modules/libnpmsearch/CONTRIBUTING.md b/deps/npm/node_modules/libnpmsearch/CONTRIBUTING.md deleted file mode 100644 index 1a61601a16dbab..00000000000000 --- a/deps/npm/node_modules/libnpmsearch/CONTRIBUTING.md +++ /dev/null @@ -1,256 +0,0 @@ -# Contributing - -## How do I... - -* [Use This Guide](#introduction)? -* Ask or Say Something? πŸ€”πŸ›πŸ˜± - * [Request Support](#request-support) - * [Report an Error or Bug](#report-an-error-or-bug) - * [Request a Feature](#request-a-feature) -* Make Something? πŸ€“πŸ‘©πŸ½β€πŸ’»πŸ“œπŸ³ - * [Project Setup](#project-setup) - * [Contribute Documentation](#contribute-documentation) - * [Contribute Code](#contribute-code) -* Manage Something βœ…πŸ™†πŸΌπŸ’ƒπŸ‘” - * [Provide Support on Issues](#provide-support-on-issues) - * [Label Issues](#label-issues) - * [Clean Up Issues and PRs](#clean-up-issues-and-prs) - * [Review Pull Requests](#review-pull-requests) - * [Merge Pull Requests](#merge-pull-requests) - * [Tag a Release](#tag-a-release) - * [Join the Project Team](#join-the-project-team) -* Add a Guide Like This One [To My Project](#attribution)? πŸ€–πŸ˜»πŸ‘» - -## Introduction - -Thank you so much for your interest in contributing!. All types of contributions are encouraged and valued. See the [table of contents](#toc) for different ways to help and details about how this project handles them!πŸ“ - -Please make sure to read the relevant section before making your contribution! It will make it a lot easier for us maintainers to make the most of it and smooth out the experience for all involved. πŸ’š - -The [Project Team](#join-the-project-team) looks forward to your contributions. πŸ™ŒπŸΎβœ¨ - -## Request Support - -If you have a question about this project, how to use it, or just need clarification about something: - -* Open an Issue at https://github.com/npm/libnpmsearch/issues -* Provide as much context as you can about what you're running into. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* Someone will try to have a response soon. -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. - -## Report an Error or Bug - -If you run into an error or bug with the project: - -* Open an Issue at https://github.com/npm/libnpmsearch/issues -* Include *reproduction steps* that someone else can follow to recreate the bug or error on their own. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* A team member will try to reproduce the issue with your provided steps. If there are no repro steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. -* If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#contribute-code). -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. -* `critical` issues may be left open, depending on perceived immediacy and severity, even past the 30 day deadline. - -## Request a Feature - -If the project doesn't do something you need or want it to do: - -* Open an Issue at https://github.com/npm/libnpmsearch/issues -* Provide as much context as you can about what you're running into. -* Please try and be clear about why existing features and alternatives would not work for you. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* The project team will evaluate the feature request, possibly asking you more questions to understand its purpose and any relevant requirements. If the issue is closed, the team will convey their reasoning and suggest an alternative path forward. -* If the feature request is accepted, it will be marked for implementation with `feature-accepted`, which can then be done by either by a core team member or by anyone in the community who wants to [contribute code](#contribute-code). - -Note: The team is unlikely to be able to accept every single feature request that is filed. Please understand if they need to say no. - -## Project Setup - -So you wanna contribute some code! That's great! This project uses GitHub Pull Requests to manage contributions, so [read up on how to fork a GitHub project and file a PR](https://guides.github.com/activities/forking) if you've never done it before. - -If this seems like a lot or you aren't able to do all this setup, you might also be able to [edit the files directly](https://help.github.com/articles/editing-files-in-another-user-s-repository/) without having to do any of this setup. Yes, [even code](#contribute-code). - -If you want to go the usual route and run the project locally, though: - -* [Install Node.js](https://nodejs.org/en/download/) -* [Fork the project](https://guides.github.com/activities/forking/#fork) - -Then in your terminal: -* `cd path/to/your/clone` -* `npm install` -* `npm test` - -And you should be ready to go! - -## Contribute Documentation - -Documentation is a super important, critical part of this project. Docs are how we keep track of what we're doing, how, and why. It's how we stay on the same page about our policies. And it's how we tell others everything they need in order to be able to use this project -- or contribute to it. So thank you in advance. - -Documentation contributions of any size are welcome! Feel free to file a PR even if you're just rewording a sentence to be more clear, or fixing a spelling mistake! - -To contribute documentation: - -* [Set up the project](#project-setup). -* Edit or add any relevant documentation. -* Make sure your changes are formatted correctly and consistently with the rest of the documentation. -* Re-read what you wrote, and run a spellchecker on it to make sure you didn't miss anything. -* In your commit message(s), begin the first line with `docs: `. For example: `docs: Adding a doc contrib section to CONTRIBUTING.md`. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). Documentation commits should use `docs(): `. -* Go to https://github.com/npm/libnpmsearch/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Contribute Code - -We like code commits a lot! They're super handy, and they keep the project going and doing the work it needs to do to be useful to others. - -Code contributions of just about any size are acceptable! - -The main difference between code contributions and documentation contributions is that contributing code requires inclusion of relevant tests for the code being added or changed. Contributions without accompanying tests will be held off until a test is added, unless the maintainers consider the specific tests to be either impossible, or way too much of a burden for such a contribution. - -To contribute code: - -* [Set up the project](#project-setup). -* Make any necessary changes to the source code. -* Include any [additional documentation](#contribute-documentation) the changes might need. -* Write tests that verify that your contribution works as expected. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). -* Dependency updates, additions, or removals must be in individual commits, and the message must use the format: `(deps): PKG@VERSION`, where `` is any of the usual `conventional-changelog` prefixes, at your discretion. -* Go to https://github.com/npm/libnpmsearch/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* Barring special circumstances, maintainers will not review PRs until all checks pass (Travis, AppVeyor, etc). -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. Additional tags (such as `needs-tests`) will be added depending on the review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Provide Support on Issues - -[Needs Collaborator](#join-the-project-team): none - -Helping out other users with their questions is a really awesome way of contributing to any community. It's not uncommon for most of the issues on an open source projects being support-related questions by users trying to understand something they ran into, or find their way around a known bug. - -Sometimes, the `support` label will be added to things that turn out to actually be other things, like bugs or feature requests. In that case, suss out the details with the person who filed the original issue, add a comment explaining what the bug is, and change the label from `support` to `bug` or `feature`. If you can't do this yourself, @mention a maintainer so they can do it. - -In order to help other folks out with their questions: - -* Go to the issue tracker and [filter open issues by the `support` label](https://github.com/npm/libnpmsearch/issues?q=is%3Aopen+is%3Aissue+label%3Asupport). -* Read through the list until you find something that you're familiar enough with to give an answer to. -* Respond to the issue with whatever details are needed to clarify the question, or get more details about what's going on. -* Once the discussion wraps up and things are clarified, either close the issue, or ask the original issue filer (or a maintainer) to close it for you. - -Some notes on picking up support issues: - -* Avoid responding to issues you don't know you can answer accurately. -* As much as possible, try to refer to past issues with accepted answers. Link to them from your replies with the `#123` format. -* Be kind and patient with users -- often, folks who have run into confusing things might be upset or impatient. This is ok. Try to understand where they're coming from, and if you're too uncomfortable with the tone, feel free to stay away or withdraw from the issue. (note: if the user is outright hostile or is violating the CoC, [refer to the Code of Conduct](CODE_OF_CONDUCT.md) to resolve the conflict). - -## Label Issues - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -One of the most important tasks in handling issues is labeling them usefully and accurately. All other tasks involving issues ultimately rely on the issue being classified in such a way that relevant parties looking to do their own tasks can find them quickly and easily. - -In order to label issues, [open up the list of unlabeled issues](https://github.com/npm/libnpmsearch/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and, **from newest to oldest**, read through each one and apply issue labels according to the table below. If you're unsure about what label to apply, skip the issue and try the next one: don't feel obligated to label each and every issue yourself! - -Label | Apply When | Notes ---- | --- | --- -`bug` | Cases where the code (or documentation) is behaving in a way it wasn't intended to. | If something is happening that surprises the *user* but does not go against the way the code is designed, it should use the `enhancement` label. -`critical` | Added to `bug` issues if the problem described makes the code completely unusable in a common situation. | -`documentation` | Added to issues or pull requests that affect any of the documentation for the project. | Can be combined with other labels, such as `bug` or `enhancement`. -`duplicate` | Added to issues or PRs that refer to the exact same issue as another one that's been previously labeled. | Duplicate issues should be marked and closed right away, with a message referencing the issue it's a duplicate of (with `#123`) -`enhancement` | Added to [feature requests](#request-a-feature), PRs, or documentation issues that are purely additive: the code or docs currently work as expected, but a change is being requested or suggested. | -`help wanted` | Applied by [Committers](#join-the-project-team) to issues and PRs that they would like to get outside help for. Generally, this means it's lower priority for the maintainer team to itself implement, but that the community is encouraged to pick up if they so desire | Never applied on first-pass labeling. -`in-progress` | Applied by [Committers](#join-the-project-team) to PRs that are pending some work before they're ready for review. | The original PR submitter should @mention the team member that applied the label once the PR is complete. -`performance` | This issue or PR is directly related to improving performance. | -`refactor` | Added to issues or PRs that deal with cleaning up or modifying the project for the betterment of it. | -`starter` | Applied by [Committers](#join-the-project-team) to issues that they consider good introductions to the project for people who have not contributed before. These are not necessarily "easy", but rather focused around how much context is necessary in order to understand what needs to be done for this project in particular. | Existing project members are expected to stay away from these unless they increase in priority. -`support` | This issue is either asking a question about how to use the project, clarifying the reason for unexpected behavior, or possibly reporting a `bug` but does not have enough detail yet to determine whether it would count as such. | The label should be switched to `bug` if reliable reproduction steps are provided. Issues primarily with unintended configurations of a user's environment are not considered bugs, even if they cause crashes. -`tests` | This issue or PR either requests or adds primarily tests to the project. | If a PR is pending tests, that will be handled through the [PR review process](#review-pull-requests) -`wontfix` | Labelers may apply this label to issues that clearly have nothing at all to do with the project or are otherwise entirely outside of its scope/sphere of influence. [Committers](#join-the-project-team) may apply this label and close an issue or PR if they decide to pass on an otherwise relevant issue. | The issue or PR should be closed as soon as the label is applied, and a clear explanation provided of why the label was used. Contributors are free to contest the labeling, but the decision ultimately falls on committers as to whether to accept something or not. - -## Clean Up Issues and PRs - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -Issues and PRs can go stale after a while. Maybe they're abandoned. Maybe the team will just plain not have time to address them any time soon. - -In these cases, they should be closed until they're brought up again or the interaction starts over. - -To clean up issues and PRs: - -* Search the issue tracker for issues or PRs, and add the term `updated:<=YYYY-MM-DD`, where the date is 30 days before today. -* Go through each issue *from oldest to newest*, and close them if **all of the following are true**: - * not opened by a maintainer - * not marked as `critical` - * not marked as `starter` or `help wanted` (these might stick around for a while, in general, as they're intended to be available) - * no explicit messages in the comments asking for it to be left open - * does not belong to a milestone -* Leave a message when closing saying "Cleaning up stale issue. Please reopen or ping us if and when you're ready to resume this. See https://github.com/npm/libnpmsearch/blob/latest/CONTRIBUTING.md#clean-up-issues-and-prs for more details." - -## Review Pull Requests - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -While anyone can comment on a PR, add feedback, etc, PRs are only *approved* by team members with Issue Tracker or higher permissions. - -PR reviews use [GitHub's own review feature](https://help.github.com/articles/about-pull-request-reviews/), which manages comments, approval, and review iteration. - -Some notes: - -* You may ask for minor changes ("nitpicks"), but consider whether they are really blockers to merging: try to err on the side of "approve, with comments". -* *ALL PULL REQUESTS* should be covered by a test: either by a previously-failing test, an existing test that covers the entire functionality of the submitted code, or new tests to verify any new/changed behavior. All tests must also pass and follow established conventions. Test coverage should not drop, unless the specific case is considered reasonable by maintainers. -* Please make sure you're familiar with the code or documentation being updated, unless it's a minor change (spellchecking, minor formatting, etc). You may @mention another project member who you think is better suited for the review, but still provide a non-approving review of your own. -* Be extra kind: people who submit code/doc contributions are putting themselves in a pretty vulnerable position, and have put time and care into what they've done (even if that's not obvious to you!) -- always respond with respect, be understanding, but don't feel like you need to sacrifice your standards for their sake, either. Just don't be a jerk about it? - -## Merge Pull Requests - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. - -## Tag A Release - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. The most important bit here is probably that all tests must pass, and tags must use [semver](https://semver.org). - -## Join the Project Team - -### Ways to Join - -There are many ways to contribute! Most of them don't require any official status unless otherwise noted. That said, there's a couple of positions that grant special repository abilities, and this section describes how they're granted and what they do. - -All of the below positions are granted based on the project team's needs, as well as their consensus opinion about whether they would like to work with the person and think that they would fit well into that position. The process is relatively informal, and it's likely that people who express interest in participating can just be granted the permissions they'd like. - -You can spot a collaborator on the repo by looking for the `[Collaborator]` or `[Owner]` tags next to their names. - -Permission | Description ---- | --- -Issue Tracker | Granted to contributors who express a strong interest in spending time on the project's issue tracker. These tasks are mainly [labeling issues](#label-issues), [cleaning up old ones](#clean-up-issues-and-prs), and [reviewing pull requests](#review-pull-requests), as well as all the usual things non-team-member contributors can do. Issue handlers should not merge pull requests, tag releases, or directly commit code themselves: that should still be done through the usual pull request process. Becoming an Issue Handler means the project team trusts you to understand enough of the team's process and context to implement it on the issue tracker. -Committer | Granted to contributors who want to handle the actual pull request merges, tagging new versions, etc. Committers should have a good level of familiarity with the codebase, and enough context to understand the implications of various changes, as well as a good sense of the will and expectations of the project team. -Admin/Owner | Granted to people ultimately responsible for the project, its community, etc. - -## Attribution - -This guide was generated using the WeAllJS `CONTRIBUTING.md` generator. [Make your own](https://npm.im/weallcontribute)! diff --git a/deps/npm/node_modules/libnpmteam/CODE_OF_CONDUCT.md b/deps/npm/node_modules/libnpmteam/CODE_OF_CONDUCT.md deleted file mode 100644 index aeb72f598dcb45..00000000000000 --- a/deps/npm/node_modules/libnpmteam/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,151 +0,0 @@ -# Code of Conduct - -## When Something Happens - -If you see a Code of Conduct violation, follow these steps: - -1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s) or commits. -2. That person should immediately stop the behavior and correct the issue. -3. If this doesn’t happen, or if you're uncomfortable speaking up, [contact the maintainers](#contacting-maintainers). -4. As soon as available, a maintainer will look into the issue, and take [further action (see below)](#further-enforcement), starting with a warning, then temporary block, then long-term repo or organization ban. - -When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation. - -**The maintainer team will prioritize the well-being and comfort of the recipients of the violation over the comfort of the violator.** See [some examples below](#enforcement-examples). - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers of this project pledge to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, technical preferences, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - - * Using welcoming and inclusive language. - * Being respectful of differing viewpoints and experiences. - * Gracefully accepting constructive feedback. - * Focusing on what is best for the community. - * Showing empathy and kindness towards other community members. - * Encouraging and raising up your peers in the project so you can all bask in hacks and glory. - -Examples of unacceptable behavior by participants include: - - * The use of sexualized language or imagery and unwelcome sexual attention or advances, including when simulated online. The only exception to sexual topics is channels/spaces specifically for topics of sexual identity. - * Casual mention of slavery or indentured servitude and/or false comparisons of one's occupation or situation to slavery. Please consider using or asking about alternate terminology when referring to such metaphors in technology. - * Making light of/making mocking comments about trigger warnings and content warnings. - * Trolling, insulting/derogatory comments, and personal or political attacks. - * Public or private harassment, deliberate intimidation, or threats. - * Publishing others' private information, such as a physical or electronic address, without explicit permission. This includes any sort of "outing" of any aspect of someone's identity without their consent. - * Publishing private screenshots or quotes of interactions in the context of this project without all quoted users' *explicit* consent. - * Publishing of private communication that doesn't have to do with reporting harrassment. - * Any of the above even when [presented as "ironic" or "joking"](https://en.wikipedia.org/wiki/Hipster_racism). - * Any attempt to present "reverse-ism" versions of the above as violations. Examples of reverse-isms are "reverse racism", "reverse sexism", "heterophobia", and "cisphobia". - * Unsolicited explanations under the assumption that someone doesn't already know it. Ask before you teach! Don't assume what people's knowledge gaps are. - * [Feigning or exaggerating surprise](https://www.recurse.com/manual#no-feigned-surprise) when someone admits to not knowing something. - * "[Well-actuallies](https://www.recurse.com/manual#no-well-actuallys)" - * Other conduct which could reasonably be considered inappropriate in a professional or community setting. - -## Scope - -This Code of Conduct applies both within spaces involving this project and in other spaces involving community members. This includes the repository, its Pull Requests and Issue tracker, its Twitter community, private email communications in the context of the project, and any events where members of the project are participating, as well as adjacent communities and venues affecting the project's members. - -Depending on the violation, the maintainers may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members. - -### Other Community Standards - -As a project on GitHub, this project is additionally covered by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/). - -Additionally, as a project hosted on npm, is is covered by [npm, Inc's Code of Conduct](https://www.npmjs.com/policies/conduct). - -Enforcement of those guidelines after violations overlapping with the above are the responsibility of the entities, and enforcement may happen in any or all of the services/communities. - -## Maintainer Enforcement Process - -Once the maintainers get involved, they will follow a documented series of steps and do their best to preserve the well-being of project members. This section covers actual concrete steps. - -### Contacting Maintainers - -You may get in touch with the maintainer team through any of the following methods: - - * Through email: - * [kzm@zkat.tech](mailto:kzm@zkat.tech) (Kat MarchΓ‘n) - - * Through Twitter: - * [@maybekatz](https://twitter.com/maybekatz) (Kat MarchΓ‘n) - -### Further Enforcement - -If you've already followed the [initial enforcement steps](#enforcement), these are the steps maintainers will take for further enforcement, as needed: - - 1. Repeat the request to stop. - 2. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked. - 3. If the behavior continues or is repeated later, the person will be blocked from participating for 24 hours. - 4. If the behavior continues or is repeated after the temporary block, a long-term (6-12mo) ban will be used. - -On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary. - -Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk. - -Members expelled from events or venues with any sort of paid attendance will not be refunded. - -### Who Watches the Watchers? - -Maintainers and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. These may include anything from removal from the maintainer team to a permanent ban from the community. - -Additionally, as a project hosted on both GitHub and npm, [their own Codes of Conducts may be applied against maintainers of this project](#other-community-standards), externally of this project's procedures. - -### Enforcement Examples - -#### The Best Case - -The vast majority of situations work out like this. This interaction is common, and generally positive. - -> Alex: "Yeah I used X and it was really crazy!" - -> Patt (not a maintainer): "Hey, could you not use that word? What about 'ridiculous' instead?" - -> Alex: "oh sorry, sure." -> edits old comment to say "it was really confusing!" - -#### The Maintainer Case - -Sometimes, though, you need to get maintainers involved. Maintainers will do their best to resolve conflicts, but people who were harmed by something **will take priority**. - -> Patt: "Honestly, sometimes I just really hate using $library and anyone who uses it probably sucks at their job." - -> Alex: "Whoa there, could you dial it back a bit? There's a CoC thing about attacking folks' tech use like that." - -> Patt: "I'm not attacking anyone, what's your problem?" - -> Alex: "@maintainers hey uh. Can someone look at this issue? Patt is getting a bit aggro. I tried to nudge them about it, but nope." - -> KeeperOfCommitBits: (on issue) "Hey Patt, maintainer here. Could you tone it down? This sort of attack is really not okay in this space." - -> Patt: "Leave me alone I haven't said anything bad wtf is wrong with you." - -> KeeperOfCommitBits: (deletes user's comment), "@patt I mean it. Please refer to the CoC over at (URL to this CoC) if you have questions, but you can consider this an actual warning. I'd appreciate it if you reworded your messages in this thread, since they made folks there uncomfortable. Let's try and be kind, yeah?" - -> Patt: "@keeperofbits Okay sorry. I'm just frustrated and I'm kinda burnt out and I guess I got carried away. I'll DM Alex a note apologizing and edit my messages. Sorry for the trouble." - -> KeeperOfCommitBits: "@patt Thanks for that. I hear you on the stress. Burnout sucks :/. Have a good one!" - -#### The Nope Case - -> PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white supremacists are quite fashionable." - -> Patt: "NOOOOPE. OH NOPE NOPE." - -> Alex: "JFC NO. NOPE. @keeperofbits NOPE NOPE LOOK HERE" - -> KeeperOfCommitBits: "πŸ‘€ Nope. NOPE NOPE NOPE. πŸ”₯" - -> PepeTheFrog🐸 has been banned from all organization or user repositories belonging to KeeperOfCommitBits. - -## Attribution - -This Code of Conduct was generated using [WeAllJS Code of Conduct Generator](https://npm.im/weallbehave), which is based on the [WeAllJS Code of -Conduct](https://wealljs.org/code-of-conduct), which is itself based on -[Contributor Covenant](http://contributor-covenant.org), version 1.4, available -at -[http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4), -and the LGBTQ in Technology Slack [Code of -Conduct](http://lgbtq.technology/coc.html). diff --git a/deps/npm/node_modules/libnpmteam/CONTRIBUTING.md b/deps/npm/node_modules/libnpmteam/CONTRIBUTING.md deleted file mode 100644 index 3fd40076caae85..00000000000000 --- a/deps/npm/node_modules/libnpmteam/CONTRIBUTING.md +++ /dev/null @@ -1,256 +0,0 @@ -# Contributing - -## How do I... - -* [Use This Guide](#introduction)? -* Ask or Say Something? πŸ€”πŸ›πŸ˜± - * [Request Support](#request-support) - * [Report an Error or Bug](#report-an-error-or-bug) - * [Request a Feature](#request-a-feature) -* Make Something? πŸ€“πŸ‘©πŸ½β€πŸ’»πŸ“œπŸ³ - * [Project Setup](#project-setup) - * [Contribute Documentation](#contribute-documentation) - * [Contribute Code](#contribute-code) -* Manage Something βœ…πŸ™†πŸΌπŸ’ƒπŸ‘” - * [Provide Support on Issues](#provide-support-on-issues) - * [Label Issues](#label-issues) - * [Clean Up Issues and PRs](#clean-up-issues-and-prs) - * [Review Pull Requests](#review-pull-requests) - * [Merge Pull Requests](#merge-pull-requests) - * [Tag a Release](#tag-a-release) - * [Join the Project Team](#join-the-project-team) -* Add a Guide Like This One [To My Project](#attribution)? πŸ€–πŸ˜»πŸ‘» - -## Introduction - -Thank you so much for your interest in contributing!. All types of contributions are encouraged and valued. See the [table of contents](#toc) for different ways to help and details about how this project handles them!πŸ“ - -Please make sure to read the relevant section before making your contribution! It will make it a lot easier for us maintainers to make the most of it and smooth out the experience for all involved. πŸ’š - -The [Project Team](#join-the-project-team) looks forward to your contributions. πŸ™ŒπŸΎβœ¨ - -## Request Support - -If you have a question about this project, how to use it, or just need clarification about something: - -* Open an Issue at https://github.com/npm/libnpmteam/issues -* Provide as much context as you can about what you're running into. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* Someone will try to have a response soon. -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. - -## Report an Error or Bug - -If you run into an error or bug with the project: - -* Open an Issue at https://github.com/npm/libnpmteam/issues -* Include *reproduction steps* that someone else can follow to recreate the bug or error on their own. -* Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* A team member will try to reproduce the issue with your provided steps. If there are no repro steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. -* If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#contribute-code). -* If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made. -* `critical` issues may be left open, depending on perceived immediacy and severity, even past the 30 day deadline. - -## Request a Feature - -If the project doesn't do something you need or want it to do: - -* Open an Issue at https://github.com/npm/libnpmteam/issues -* Provide as much context as you can about what you're running into. -* Please try and be clear about why existing features and alternatives would not work for you. - -Once it's filed: - -* The project team will [label the issue](#label-issues). -* The project team will evaluate the feature request, possibly asking you more questions to understand its purpose and any relevant requirements. If the issue is closed, the team will convey their reasoning and suggest an alternative path forward. -* If the feature request is accepted, it will be marked for implementation with `feature-accepted`, which can then be done by either by a core team member or by anyone in the community who wants to [contribute code](#contribute-code). - -Note: The team is unlikely to be able to accept every single feature request that is filed. Please understand if they need to say no. - -## Project Setup - -So you wanna contribute some code! That's great! This project uses GitHub Pull Requests to manage contributions, so [read up on how to fork a GitHub project and file a PR](https://guides.github.com/activities/forking) if you've never done it before. - -If this seems like a lot or you aren't able to do all this setup, you might also be able to [edit the files directly](https://help.github.com/articles/editing-files-in-another-user-s-repository/) without having to do any of this setup. Yes, [even code](#contribute-code). - -If you want to go the usual route and run the project locally, though: - -* [Install Node.js](https://nodejs.org/en/download/) -* [Fork the project](https://guides.github.com/activities/forking/#fork) - -Then in your terminal: -* `cd path/to/your/clone` -* `npm install` -* `npm test` - -And you should be ready to go! - -## Contribute Documentation - -Documentation is a super important, critical part of this project. Docs are how we keep track of what we're doing, how, and why. It's how we stay on the same page about our policies. And it's how we tell others everything they need in order to be able to use this project -- or contribute to it. So thank you in advance. - -Documentation contributions of any size are welcome! Feel free to file a PR even if you're just rewording a sentence to be more clear, or fixing a spelling mistake! - -To contribute documentation: - -* [Set up the project](#project-setup). -* Edit or add any relevant documentation. -* Make sure your changes are formatted correctly and consistently with the rest of the documentation. -* Re-read what you wrote, and run a spellchecker on it to make sure you didn't miss anything. -* In your commit message(s), begin the first line with `docs: `. For example: `docs: Adding a doc contrib section to CONTRIBUTING.md`. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). Documentation commits should use `docs(): `. -* Go to https://github.com/npm/libnpmteam/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Contribute Code - -We like code commits a lot! They're super handy, and they keep the project going and doing the work it needs to do to be useful to others. - -Code contributions of just about any size are acceptable! - -The main difference between code contributions and documentation contributions is that contributing code requires inclusion of relevant tests for the code being added or changed. Contributions without accompanying tests will be held off until a test is added, unless the maintainers consider the specific tests to be either impossible, or way too much of a burden for such a contribution. - -To contribute code: - -* [Set up the project](#project-setup). -* Make any necessary changes to the source code. -* Include any [additional documentation](#contribute-documentation) the changes might need. -* Write tests that verify that your contribution works as expected. -* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). -* Dependency updates, additions, or removals must be in individual commits, and the message must use the format: `(deps): PKG@VERSION`, where `` is any of the usual `conventional-changelog` prefixes, at your discretion. -* Go to https://github.com/npm/libnpmteam/pulls and open a new pull request with your changes. -* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing. - -Once you've filed the PR: - -* Barring special circumstances, maintainers will not review PRs until all checks pass (Travis, AppVeyor, etc). -* One or more maintainers will use GitHub's review feature to review your PR. -* If the maintainer asks for any changes, edit your changes, push, and ask for another review. Additional tags (such as `needs-tests`) will be added depending on the review. -* If the maintainer decides to pass on your PR, they will thank you for the contribution and explain why they won't be accepting the changes. That's ok! We still really appreciate you taking the time to do it, and we don't take that lightly. πŸ’š -* If your PR gets accepted, it will be marked as such, and merged into the `latest` branch soon after. Your contribution will be distributed to the masses next time the maintainers [tag a release](#tag-a-release) - -## Provide Support on Issues - -[Needs Collaborator](#join-the-project-team): none - -Helping out other users with their questions is a really awesome way of contributing to any community. It's not uncommon for most of the issues on an open source projects being support-related questions by users trying to understand something they ran into, or find their way around a known bug. - -Sometimes, the `support` label will be added to things that turn out to actually be other things, like bugs or feature requests. In that case, suss out the details with the person who filed the original issue, add a comment explaining what the bug is, and change the label from `support` to `bug` or `feature`. If you can't do this yourself, @mention a maintainer so they can do it. - -In order to help other folks out with their questions: - -* Go to the issue tracker and [filter open issues by the `support` label](https://github.com/npm/libnpmteam/issues?q=is%3Aopen+is%3Aissue+label%3Asupport). -* Read through the list until you find something that you're familiar enough with to give an answer to. -* Respond to the issue with whatever details are needed to clarify the question, or get more details about what's going on. -* Once the discussion wraps up and things are clarified, either close the issue, or ask the original issue filer (or a maintainer) to close it for you. - -Some notes on picking up support issues: - -* Avoid responding to issues you don't know you can answer accurately. -* As much as possible, try to refer to past issues with accepted answers. Link to them from your replies with the `#123` format. -* Be kind and patient with users -- often, folks who have run into confusing things might be upset or impatient. This is ok. Try to understand where they're coming from, and if you're too uncomfortable with the tone, feel free to stay away or withdraw from the issue. (note: if the user is outright hostile or is violating the CoC, [refer to the Code of Conduct](CODE_OF_CONDUCT.md) to resolve the conflict). - -## Label Issues - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -One of the most important tasks in handling issues is labeling them usefully and accurately. All other tasks involving issues ultimately rely on the issue being classified in such a way that relevant parties looking to do their own tasks can find them quickly and easily. - -In order to label issues, [open up the list of unlabeled issues](https://github.com/npm/libnpmteam/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and, **from newest to oldest**, read through each one and apply issue labels according to the table below. If you're unsure about what label to apply, skip the issue and try the next one: don't feel obligated to label each and every issue yourself! - -Label | Apply When | Notes ---- | --- | --- -`bug` | Cases where the code (or documentation) is behaving in a way it wasn't intended to. | If something is happening that surprises the *user* but does not go against the way the code is designed, it should use the `enhancement` label. -`critical` | Added to `bug` issues if the problem described makes the code completely unusable in a common situation. | -`documentation` | Added to issues or pull requests that affect any of the documentation for the project. | Can be combined with other labels, such as `bug` or `enhancement`. -`duplicate` | Added to issues or PRs that refer to the exact same issue as another one that's been previously labeled. | Duplicate issues should be marked and closed right away, with a message referencing the issue it's a duplicate of (with `#123`) -`enhancement` | Added to [feature requests](#request-a-feature), PRs, or documentation issues that are purely additive: the code or docs currently work as expected, but a change is being requested or suggested. | -`help wanted` | Applied by [Committers](#join-the-project-team) to issues and PRs that they would like to get outside help for. Generally, this means it's lower priority for the maintainer team to itself implement, but that the community is encouraged to pick up if they so desire | Never applied on first-pass labeling. -`in-progress` | Applied by [Committers](#join-the-project-team) to PRs that are pending some work before they're ready for review. | The original PR submitter should @mention the team member that applied the label once the PR is complete. -`performance` | This issue or PR is directly related to improving performance. | -`refactor` | Added to issues or PRs that deal with cleaning up or modifying the project for the betterment of it. | -`starter` | Applied by [Committers](#join-the-project-team) to issues that they consider good introductions to the project for people who have not contributed before. These are not necessarily "easy", but rather focused around how much context is necessary in order to understand what needs to be done for this project in particular. | Existing project members are expected to stay away from these unless they increase in priority. -`support` | This issue is either asking a question about how to use the project, clarifying the reason for unexpected behavior, or possibly reporting a `bug` but does not have enough detail yet to determine whether it would count as such. | The label should be switched to `bug` if reliable reproduction steps are provided. Issues primarily with unintended configurations of a user's environment are not considered bugs, even if they cause crashes. -`tests` | This issue or PR either requests or adds primarily tests to the project. | If a PR is pending tests, that will be handled through the [PR review process](#review-pull-requests) -`wontfix` | Labelers may apply this label to issues that clearly have nothing at all to do with the project or are otherwise entirely outside of its scope/sphere of influence. [Committers](#join-the-project-team) may apply this label and close an issue or PR if they decide to pass on an otherwise relevant issue. | The issue or PR should be closed as soon as the label is applied, and a clear explanation provided of why the label was used. Contributors are free to contest the labeling, but the decision ultimately falls on committers as to whether to accept something or not. - -## Clean Up Issues and PRs - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -Issues and PRs can go stale after a while. Maybe they're abandoned. Maybe the team will just plain not have time to address them any time soon. - -In these cases, they should be closed until they're brought up again or the interaction starts over. - -To clean up issues and PRs: - -* Search the issue tracker for issues or PRs, and add the term `updated:<=YYYY-MM-DD`, where the date is 30 days before today. -* Go through each issue *from oldest to newest*, and close them if **all of the following are true**: - * not opened by a maintainer - * not marked as `critical` - * not marked as `starter` or `help wanted` (these might stick around for a while, in general, as they're intended to be available) - * no explicit messages in the comments asking for it to be left open - * does not belong to a milestone -* Leave a message when closing saying "Cleaning up stale issue. Please reopen or ping us if and when you're ready to resume this. See https://github.com/npm/libnpmteam/blob/latest/CONTRIBUTING.md#clean-up-issues-and-prs for more details." - -## Review Pull Requests - -[Needs Collaborator](#join-the-project-team): Issue Tracker - -While anyone can comment on a PR, add feedback, etc, PRs are only *approved* by team members with Issue Tracker or higher permissions. - -PR reviews use [GitHub's own review feature](https://help.github.com/articles/about-pull-request-reviews/), which manages comments, approval, and review iteration. - -Some notes: - -* You may ask for minor changes ("nitpicks"), but consider whether they are really blockers to merging: try to err on the side of "approve, with comments". -* *ALL PULL REQUESTS* should be covered by a test: either by a previously-failing test, an existing test that covers the entire functionality of the submitted code, or new tests to verify any new/changed behavior. All tests must also pass and follow established conventions. Test coverage should not drop, unless the specific case is considered reasonable by maintainers. -* Please make sure you're familiar with the code or documentation being updated, unless it's a minor change (spellchecking, minor formatting, etc). You may @mention another project member who you think is better suited for the review, but still provide a non-approving review of your own. -* Be extra kind: people who submit code/doc contributions are putting themselves in a pretty vulnerable position, and have put time and care into what they've done (even if that's not obvious to you!) -- always respond with respect, be understanding, but don't feel like you need to sacrifice your standards for their sake, either. Just don't be a jerk about it? - -## Merge Pull Requests - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. - -## Tag A Release - -[Needs Collaborator](#join-the-project-team): Committer - -TBD - need to hash out a bit more of this process. The most important bit here is probably that all tests must pass, and tags must use [semver](https://semver.org). - -## Join the Project Team - -### Ways to Join - -There are many ways to contribute! Most of them don't require any official status unless otherwise noted. That said, there's a couple of positions that grant special repository abilities, and this section describes how they're granted and what they do. - -All of the below positions are granted based on the project team's needs, as well as their consensus opinion about whether they would like to work with the person and think that they would fit well into that position. The process is relatively informal, and it's likely that people who express interest in participating can just be granted the permissions they'd like. - -You can spot a collaborator on the repo by looking for the `[Collaborator]` or `[Owner]` tags next to their names. - -Permission | Description ---- | --- -Issue Tracker | Granted to contributors who express a strong interest in spending time on the project's issue tracker. These tasks are mainly [labeling issues](#label-issues), [cleaning up old ones](#clean-up-issues-and-prs), and [reviewing pull requests](#review-pull-requests), as well as all the usual things non-team-member contributors can do. Issue handlers should not merge pull requests, tag releases, or directly commit code themselves: that should still be done through the usual pull request process. Becoming an Issue Handler means the project team trusts you to understand enough of the team's process and context to implement it on the issue tracker. -Committer | Granted to contributors who want to handle the actual pull request merges, tagging new versions, etc. Committers should have a good level of familiarity with the codebase, and enough context to understand the implications of various changes, as well as a good sense of the will and expectations of the project team. -Admin/Owner | Granted to people ultimately responsible for the project, its community, etc. - -## Attribution - -This guide was generated using the WeAllJS `CONTRIBUTING.md` generator. [Make your own](https://npm.im/weallcontribute)! diff --git a/deps/npm/node_modules/mkdirp/index.js b/deps/npm/node_modules/mkdirp/index.js index 6ce241b58c100f..2f1287071fc0d6 100644 --- a/deps/npm/node_modules/mkdirp/index.js +++ b/deps/npm/node_modules/mkdirp/index.js @@ -31,6 +31,7 @@ function mkdirP (p, opts, f, made) { } switch (er.code) { case 'ENOENT': + if (path.dirname(p) === p) return cb(er); mkdirP(path.dirname(p), opts, function (er, made) { if (er) cb(er, made); else mkdirP(p, opts, cb, made); diff --git a/deps/npm/node_modules/mkdirp/package.json b/deps/npm/node_modules/mkdirp/package.json index a880e2ef545118..5ff5891b2c06d8 100644 --- a/deps/npm/node_modules/mkdirp/package.json +++ b/deps/npm/node_modules/mkdirp/package.json @@ -1,19 +1,19 @@ { - "_from": "mkdirp@0.5.3", - "_id": "mkdirp@0.5.3", + "_from": "mkdirp@0.5.4", + "_id": "mkdirp@0.5.4", "_inBundle": false, - "_integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "_integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", "_location": "/mkdirp", "_phantomChildren": {}, "_requested": { "type": "version", "registry": true, - "raw": "mkdirp@0.5.3", + "raw": "mkdirp@0.5.4", "name": "mkdirp", "escapedName": "mkdirp", - "rawSpec": "0.5.3", + "rawSpec": "0.5.4", "saveSpec": null, - "fetchSpec": "0.5.3" + "fetchSpec": "0.5.4" }, "_requiredBy": [ "#USER", @@ -32,10 +32,10 @@ "/tar", "/write" ], - "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", - "_shasum": "5a514b7179259287952881e94410ec5465659f8c", - "_spec": "mkdirp@0.5.3", - "_where": "/Users/darcyclarke/Documents/Repos/npm/npm/cli", + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "_shasum": "fd01504a6797ec5c9be81ff43d204961ed64a512", + "_spec": "mkdirp@0.5.4", + "_where": "/Users/ruyadorno/Documents/workspace/cli", "author": { "name": "James Halliday", "email": "mail@substack.net", @@ -79,5 +79,5 @@ "scripts": { "test": "tap test/*.js" }, - "version": "0.5.3" + "version": "0.5.4" } diff --git a/deps/npm/node_modules/node-gyp/CONTRIBUTING.md b/deps/npm/node_modules/node-gyp/CONTRIBUTING.md deleted file mode 100644 index f48786bd84af31..00000000000000 --- a/deps/npm/node_modules/node-gyp/CONTRIBUTING.md +++ /dev/null @@ -1,34 +0,0 @@ -# Contributing to node-gyp - -## Code of Conduct - -Please read the -[Code of Conduct](https://github.com/nodejs/TSC/blob/master/CODE_OF_CONDUCT.md) -which explains the minimum behavior expectations for node-gyp contributors. - - -## Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. diff --git a/deps/npm/node_modules/parallel-transform/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/parallel-transform/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/parallel-transform/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/rc/node_modules/minimist/example/parse.js b/deps/npm/node_modules/rc/node_modules/minimist/example/parse.js index abff3e8ee8f5ef..f7c8d49807f32e 100644 --- a/deps/npm/node_modules/rc/node_modules/minimist/example/parse.js +++ b/deps/npm/node_modules/rc/node_modules/minimist/example/parse.js @@ -1,2 +1,2 @@ var argv = require('../')(process.argv.slice(2)); -console.dir(argv); +console.log(argv); diff --git a/deps/npm/node_modules/rc/node_modules/minimist/index.js b/deps/npm/node_modules/rc/node_modules/minimist/index.js index 6a0559d58133a8..d2afe5e4d4056e 100644 --- a/deps/npm/node_modules/rc/node_modules/minimist/index.js +++ b/deps/npm/node_modules/rc/node_modules/minimist/index.js @@ -68,12 +68,21 @@ module.exports = function (args, opts) { function setKey (obj, keys, value) { var o = obj; - keys.slice(0,-1).forEach(function (key) { + for (var i = 0; i < keys.length-1; i++) { + var key = keys[i]; + if (key === '__proto__') return; if (o[key] === undefined) o[key] = {}; + if (o[key] === Object.prototype || o[key] === Number.prototype + || o[key] === String.prototype) o[key] = {}; + if (o[key] === Array.prototype) o[key] = []; o = o[key]; - }); + } var key = keys[keys.length - 1]; + if (key === '__proto__') return; + if (o === Object.prototype || o === Number.prototype + || o === String.prototype) o = {}; + if (o === Array.prototype) o = []; if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') { o[key] = value; } @@ -171,7 +180,7 @@ module.exports = function (args, opts) { setArg(key, args[i+1], arg); i++; } - else if (args[i+1] && /true|false/.test(args[i+1])) { + else if (args[i+1] && /^(true|false)$/.test(args[i+1])) { setArg(key, args[i+1] === 'true', arg); i++; } diff --git a/deps/npm/node_modules/rc/node_modules/minimist/package.json b/deps/npm/node_modules/rc/node_modules/minimist/package.json index e22b6fc47a309d..86e9c8ee28bd2d 100644 --- a/deps/npm/node_modules/rc/node_modules/minimist/package.json +++ b/deps/npm/node_modules/rc/node_modules/minimist/package.json @@ -1,8 +1,8 @@ { "_from": "minimist@^1.2.0", - "_id": "minimist@1.2.0", + "_id": "minimist@1.2.5", "_inBundle": false, - "_integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "_integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "_location": "/rc/minimist", "_phantomChildren": {}, "_requested": { @@ -18,10 +18,10 @@ "_requiredBy": [ "/rc" ], - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "_shasum": "a35008b20f41383eec1fb914f4cd5df79a264284", + "_resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "_shasum": "67d66014b66a6a8aaa0c083c5fd58df4e4e97602", "_spec": "minimist@^1.2.0", - "_where": "/Users/rebecca/code/npm/node_modules/rc", + "_where": "/Users/ruyadorno/Documents/workspace/cli/node_modules/rc", "author": { "name": "James Halliday", "email": "mail@substack.net", @@ -69,5 +69,5 @@ "opera/12" ] }, - "version": "1.2.0" + "version": "1.2.5" } diff --git a/deps/npm/node_modules/rc/node_modules/minimist/readme.markdown b/deps/npm/node_modules/rc/node_modules/minimist/readme.markdown index 30a74cf8c158d7..5fd97ab11ee9d8 100644 --- a/deps/npm/node_modules/rc/node_modules/minimist/readme.markdown +++ b/deps/npm/node_modules/rc/node_modules/minimist/readme.markdown @@ -5,15 +5,11 @@ parse argument options This module is the guts of optimist's argument parser without all the fanciful decoration. -[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist) - -[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist) - # example ``` js var argv = require('minimist')(process.argv.slice(2)); -console.dir(argv); +console.log(argv); ``` ``` @@ -33,6 +29,13 @@ $ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz beep: 'boop' } ``` +# security + +Previous versions had a prototype pollution bug that could cause privilege +escalation in some circumstances when handling untrusted user input. + +Please use version 1.2.3 or later: https://snyk.io/vuln/SNYK-JS-MINIMIST-559764 + # methods ``` js @@ -65,19 +68,20 @@ argument names to use as aliases first non-option * `opts['--']` - when true, populate `argv._` with everything before the `--` and `argv['--']` with everything after the `--`. Here's an example: + + ``` + > require('./')('one two three -- four five --six'.split(' '), { '--': true }) + { _: [ 'one', 'two', 'three' ], + '--': [ 'four', 'five', '--six' ] } + ``` + + Note that with `opts['--']` set, parsing for arguments still stops after the + `--`. + * `opts.unknown` - a function which is invoked with a command line parameter not defined in the `opts` configuration object. If the function returns `false`, the unknown option is not added to `argv`. -``` -> require('./')('one two three -- four five --six'.split(' '), { '--': true }) -{ _: [ 'one', 'two', 'three' ], - '--': [ 'four', 'five', '--six' ] } -``` - -Note that with `opts['--']` set, parsing for arguments still stops after the -`--`. - # install With [npm](https://npmjs.org) do: diff --git a/deps/npm/node_modules/rc/node_modules/minimist/test/bool.js b/deps/npm/node_modules/rc/node_modules/minimist/test/bool.js index 14b0717cefd5e9..5f7dbde16cc914 100644 --- a/deps/npm/node_modules/rc/node_modules/minimist/test/bool.js +++ b/deps/npm/node_modules/rc/node_modules/minimist/test/bool.js @@ -164,3 +164,15 @@ test('boolean --boool=false', function (t) { t.same(parsed.boool, false); t.end(); }); + +test('boolean using something similar to true', function (t) { + var opts = { boolean: 'h' }; + var result = parse(['-h', 'true.txt'], opts); + var expected = { + h: true, + '_': ['true.txt'] + }; + + t.same(result, expected); + t.end(); +}); \ No newline at end of file diff --git a/deps/npm/node_modules/rc/node_modules/minimist/test/proto.js b/deps/npm/node_modules/rc/node_modules/minimist/test/proto.js new file mode 100644 index 00000000000000..8649107ecba1f0 --- /dev/null +++ b/deps/npm/node_modules/rc/node_modules/minimist/test/proto.js @@ -0,0 +1,44 @@ +var parse = require('../'); +var test = require('tape'); + +test('proto pollution', function (t) { + var argv = parse(['--__proto__.x','123']); + t.equal({}.x, undefined); + t.equal(argv.__proto__.x, undefined); + t.equal(argv.x, undefined); + t.end(); +}); + +test('proto pollution (array)', function (t) { + var argv = parse(['--x','4','--x','5','--x.__proto__.z','789']); + t.equal({}.z, undefined); + t.deepEqual(argv.x, [4,5]); + t.equal(argv.x.z, undefined); + t.equal(argv.x.__proto__.z, undefined); + t.end(); +}); + +test('proto pollution (number)', function (t) { + var argv = parse(['--x','5','--x.__proto__.z','100']); + t.equal({}.z, undefined); + t.equal((4).z, undefined); + t.equal(argv.x, 5); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (string)', function (t) { + var argv = parse(['--x','abc','--x.__proto__.z','def']); + t.equal({}.z, undefined); + t.equal('...'.z, undefined); + t.equal(argv.x, 'abc'); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (constructor)', function (t) { + var argv = parse(['--constructor.prototype.y','123']); + t.equal({}.y, undefined); + t.equal(argv.y, undefined); + t.end(); +}); diff --git a/deps/npm/node_modules/rc/package.json b/deps/npm/node_modules/rc/package.json index ba78e395b45d45..db6599e664b743 100644 --- a/deps/npm/node_modules/rc/package.json +++ b/deps/npm/node_modules/rc/package.json @@ -1,8 +1,8 @@ { "_from": "rc@^1.1.6", - "_id": "rc@1.2.7", + "_id": "rc@1.2.8", "_inBundle": false, - "_integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "_integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "_location": "/rc", "_phantomChildren": {}, "_requested": { @@ -19,17 +19,17 @@ "/registry-auth-token", "/registry-url" ], - "_resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "_shasum": "8a10ca30d588d00464360372b890d06dacd02297", + "_resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "_shasum": "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed", "_spec": "rc@^1.1.6", - "_where": "/Users/rebecca/code/npm/node_modules/registry-auth-token", + "_where": "/Users/ruyadorno/Documents/workspace/cli/node_modules/registry-auth-token", "author": { "name": "Dominic Tarr", "email": "dominic.tarr@gmail.com", "url": "dominictarr.com" }, "bin": { - "rc": "./cli.js" + "rc": "cli.js" }, "browser": "browser.js", "bugs": { @@ -37,7 +37,7 @@ }, "bundleDependencies": false, "dependencies": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -61,5 +61,5 @@ "scripts": { "test": "set -e; node test/test.js; node test/ini.js; node test/nested-env-vars.js" }, - "version": "1.2.7" + "version": "1.2.8" } diff --git a/deps/npm/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/registry-auth-token/.npmignore b/deps/npm/node_modules/registry-auth-token/.npmignore new file mode 100644 index 00000000000000..4196028460bfcb --- /dev/null +++ b/deps/npm/node_modules/registry-auth-token/.npmignore @@ -0,0 +1,6 @@ +.editorconfig +.eslintignore +.eslintrc +.travis.yml +npm-debug.log +coverage diff --git a/deps/npm/node_modules/registry-auth-token/CHANGELOG.md b/deps/npm/node_modules/registry-auth-token/CHANGELOG.md index 75f7b6f2f70713..20e82e870ef454 100644 --- a/deps/npm/node_modules/registry-auth-token/CHANGELOG.md +++ b/deps/npm/node_modules/registry-auth-token/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes will be documented in this file. +## [3.4.0] - 2019-03-20 + +### Changes + +- Enabled legacy auth token to be read from environment variable (Martin Flodin) + ## [3.3.2] - 2018-01-26 ### Changes diff --git a/deps/npm/node_modules/registry-auth-token/index.js b/deps/npm/node_modules/registry-auth-token/index.js index d68f7eeb4bc724..f8c6216eab9cd8 100644 --- a/deps/npm/node_modules/registry-auth-token/index.js +++ b/deps/npm/node_modules/registry-auth-token/index.js @@ -52,10 +52,13 @@ function getRegistryAuthInfo (checkUrl, options) { } function getLegacyAuthInfo (npmrc) { - if (npmrc._auth) { - return {token: npmrc._auth, type: 'Basic'} + if (!npmrc._auth) { + return undefined } - return undefined + + var token = replaceEnvironmentVariable(npmrc._auth) + + return {token: token, type: 'Basic'} } function normalizePath (path) { @@ -80,15 +83,19 @@ function getAuthInfoForUrl (regUrl, npmrc) { return undefined } +function replaceEnvironmentVariable (token) { + return token.replace(/^\$\{?([^}]*)\}?$/, function (fullMatch, envVar) { + return process.env[envVar] + }) +} + function getBearerToken (tok) { if (!tok) { return undefined } - // check if bearer token - var token = tok.replace(/^\$\{?([^}]*)\}?$/, function (fullMatch, envVar) { - return process.env[envVar] - }) + // check if bearer token is set as environment variable + var token = replaceEnvironmentVariable(tok) return {token: token, type: 'Bearer'} } @@ -100,9 +107,7 @@ function getTokenForUsernameAndPassword (username, password) { // passwords are base64 encoded, so we need to decode it // See https://github.com/npm/npm/blob/v3.10.6/lib/config/set-credentials-by-uri.js#L26 - var pass = decodeBase64(password.replace(/^\$\{?([^}]*)\}?$/, function (fullMatch, envVar) { - return process.env[envVar] - })) + var pass = decodeBase64(replaceEnvironmentVariable(password)) // a basic auth token is base64 encoded 'username:password' // See https://github.com/npm/npm/blob/v3.10.6/lib/config/get-credentials-by-uri.js#L70 diff --git a/deps/npm/node_modules/registry-auth-token/package.json b/deps/npm/node_modules/registry-auth-token/package.json index 3be95088b858dd..dd090a836b569a 100644 --- a/deps/npm/node_modules/registry-auth-token/package.json +++ b/deps/npm/node_modules/registry-auth-token/package.json @@ -1,8 +1,8 @@ { "_from": "registry-auth-token@^3.0.1", - "_id": "registry-auth-token@3.3.2", + "_id": "registry-auth-token@3.4.0", "_inBundle": false, - "_integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "_integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", "_location": "/registry-auth-token", "_phantomChildren": {}, "_requested": { @@ -18,10 +18,10 @@ "_requiredBy": [ "/package-json" ], - "_resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "_shasum": "851fd49038eecb586911115af845260eec983f20", + "_resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "_shasum": "d7446815433f5d5ed6431cd5dca21048f66b397e", "_spec": "registry-auth-token@^3.0.1", - "_where": "/Users/rebecca/code/npm/node_modules/package-json", + "_where": "/Users/ruyadorno/Documents/workspace/cli/node_modules/package-json", "author": { "name": "Espen Hovlandsdal", "email": "espen@hovlandsdal.com" @@ -70,5 +70,5 @@ "coverage/**" ] }, - "version": "3.3.2" + "version": "3.4.0" } diff --git a/deps/npm/node_modules/registry-auth-token/test/auth-token.test.js b/deps/npm/node_modules/registry-auth-token/test/auth-token.test.js index 824d1bf92e6de8..5db6f5a192890a 100644 --- a/deps/npm/node_modules/registry-auth-token/test/auth-token.test.js +++ b/deps/npm/node_modules/registry-auth-token/test/auth-token.test.js @@ -50,6 +50,42 @@ describe('auth-token', function () { done() }) }) + + it('should return legacy auth token defined by reference to an environment variable (with curly braces)', function (done) { + var environmentVariable = '__REGISTRY_AUTH_TOKEN_NPM_TOKEN__' + var content = [ + '_auth=${' + environmentVariable + '}', + 'registry=http://registry.foobar.eu/' + ].join('\n') + + process.env[environmentVariable] = 'foobar' + + fs.writeFile(npmRcPath, content, function (err) { + var getAuthToken = requireUncached('../index') + assert(!err, err) + assert.deepEqual(getAuthToken(), {token: 'foobar', type: 'Basic'}) + delete process.env[environmentVariable] + done() + }) + }) + + it('should return legacy auth token defined by reference to an environment variable (without curly braces)', function (done) { + var environmentVariable = '__REGISTRY_AUTH_TOKEN_NPM_TOKEN__' + var content = [ + '_auth=$' + environmentVariable, + 'registry=http://registry.foobar.eu/' + ].join('\n') + + process.env[environmentVariable] = 'foobar' + + fs.writeFile(npmRcPath, content, function (err) { + var getAuthToken = requireUncached('../index') + assert(!err, err) + assert.deepEqual(getAuthToken(), {token: 'foobar', type: 'Basic'}) + delete process.env[environmentVariable] + done() + }) + }) }) describe('bearer token', function () { diff --git a/deps/npm/node_modules/registry-auth-token/yarn.lock b/deps/npm/node_modules/registry-auth-token/yarn.lock index 23f7b13a766811..46c1357274cf6c 100644 --- a/deps/npm/node_modules/registry-auth-token/yarn.lock +++ b/deps/npm/node_modules/registry-auth-token/yarn.lock @@ -234,9 +234,9 @@ decamelize@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" deep-is@~0.1.3: version "0.1.3" @@ -1197,11 +1197,11 @@ progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" -rc@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.4.tgz#a0f606caae2a3b862bbd0ef85482c0125b315fa3" +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: - deep-extend "~0.4.0" + deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" @@ -1290,7 +1290,11 @@ rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" -safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" diff --git a/deps/npm/node_modules/stream-iterate/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/stream-iterate/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/stream-iterate/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/through2/node_modules/readable-stream/CONTRIBUTING.md b/deps/npm/node_modules/through2/node_modules/readable-stream/CONTRIBUTING.md deleted file mode 100644 index f478d58dca85b2..00000000000000 --- a/deps/npm/node_modules/through2/node_modules/readable-stream/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -* (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -* (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -* (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -* (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -## Moderation Policy - -The [Node.js Moderation Policy] applies to this WG. - -## Code of Conduct - -The [Node.js Code of Conduct][] applies to this WG. - -[Node.js Code of Conduct]: -https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md -[Node.js Moderation Policy]: -https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/deps/npm/node_modules/update-notifier/package.json b/deps/npm/node_modules/update-notifier/package.json index 836b3df2540275..c2c81fb3c7d73c 100644 --- a/deps/npm/node_modules/update-notifier/package.json +++ b/deps/npm/node_modules/update-notifier/package.json @@ -1,10 +1,4 @@ { - "_args": [ - [ - "update-notifier@2.5.0", - "/Users/rebecca/code/npm" - ] - ], "_from": "update-notifier@2.5.0", "_id": "update-notifier@2.5.0", "_inBundle": false, @@ -22,12 +16,14 @@ "fetchSpec": "2.5.0" }, "_requiredBy": [ + "#USER", "/", "/libnpx" ], "_resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "_spec": "2.5.0", - "_where": "/Users/rebecca/code/npm", + "_shasum": "d0744593e13f161e406acb1d9408b72cad08aff6", + "_spec": "update-notifier@2.5.0", + "_where": "/Users/ruyadorno/Documents/workspace/cli", "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", @@ -36,6 +32,7 @@ "bugs": { "url": "https://github.com/yeoman/update-notifier/issues" }, + "bundleDependencies": false, "dependencies": { "boxen": "^1.2.1", "chalk": "^2.0.1", @@ -48,6 +45,7 @@ "semver-diff": "^2.0.0", "xdg-basedir": "^3.0.0" }, + "deprecated": false, "description": "Update notifications for your CLI app", "devDependencies": { "ava": "*", diff --git a/deps/npm/node_modules/verror/CONTRIBUTING.md b/deps/npm/node_modules/verror/CONTRIBUTING.md deleted file mode 100644 index 750cef8dfd54a6..00000000000000 --- a/deps/npm/node_modules/verror/CONTRIBUTING.md +++ /dev/null @@ -1,19 +0,0 @@ -# Contributing - -This repository uses [cr.joyent.us](https://cr.joyent.us) (Gerrit) for new -changes. Anyone can submit changes. To get started, see the [cr.joyent.us user -guide](https://github.com/joyent/joyent-gerrit/blob/master/docs/user/README.md). -This repo does not use GitHub pull requests. - -See the [Joyent Engineering -Guidelines](https://github.com/joyent/eng/blob/master/docs/index.md) for general -best practices expected in this repository. - -Contributions should be "make prepush" clean. The "prepush" target runs the -"check" target, which requires these separate tools: - -* https://github.com/davepacheco/jsstyle -* https://github.com/davepacheco/javascriptlint - -If you're changing something non-trivial or user-facing, you may want to submit -an issue first. diff --git a/deps/npm/node_modules/widest-line/index.js b/deps/npm/node_modules/widest-line/index.js index 173cec4f296bb8..a9865d00abd914 100644 --- a/deps/npm/node_modules/widest-line/index.js +++ b/deps/npm/node_modules/widest-line/index.js @@ -1,5 +1,8 @@ 'use strict'; const stringWidth = require('string-width'); -module.exports = input => Math.max.apply(null, input.split('\n').map(x => stringWidth(x))); - +module.exports = input => { + let max = 0; + for (const s of input.split('\n')) max = Math.max(max, stringWidth(s)); + return max; +}; diff --git a/deps/npm/node_modules/widest-line/package.json b/deps/npm/node_modules/widest-line/package.json index 2eb1d53fc9a60f..fc4bcfcbeb83c5 100644 --- a/deps/npm/node_modules/widest-line/package.json +++ b/deps/npm/node_modules/widest-line/package.json @@ -1,8 +1,8 @@ { "_from": "widest-line@^2.0.0", - "_id": "widest-line@2.0.0", + "_id": "widest-line@2.0.1", "_inBundle": false, - "_integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "_integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "_location": "/widest-line", "_phantomChildren": {}, "_requested": { @@ -18,10 +18,10 @@ "_requiredBy": [ "/boxen" ], - "_resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "_shasum": "0142a4e8a243f8882c0233aa0e0281aa76152273", + "_resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "_shasum": "7438764730ec7ef4381ce4df82fb98a53142a3fc", "_spec": "widest-line@^2.0.0", - "_where": "/Users/rebecca/code/npm/node_modules/boxen", + "_where": "/Users/ruyadorno/Documents/workspace/cli/node_modules/boxen", "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", @@ -82,5 +82,5 @@ "scripts": { "test": "xo && ava" }, - "version": "2.0.0" + "version": "2.0.1" } diff --git a/deps/npm/package.json b/deps/npm/package.json index 71c1527eb3285e..d367dc98b5982f 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "6.14.3", + "version": "6.14.4", "name": "npm", "description": "a package manager for JavaScript", "keywords": [ @@ -91,7 +91,7 @@ "lru-cache": "^5.1.1", "meant": "~1.0.1", "mississippi": "^3.0.0", - "mkdirp": "^0.5.3", + "mkdirp": "^0.5.4", "move-concurrently": "^1.0.1", "node-gyp": "^5.1.0", "nopt": "~4.0.1", diff --git a/deps/npm/scripts/dep-update b/deps/npm/scripts/dep-update index 006de17c7203a3..7e56dbba8ef53d 100755 --- a/deps/npm/scripts/dep-update +++ b/deps/npm/scripts/dep-update @@ -1,6 +1,7 @@ #!/usr/bin/env bash node . install --save $1@$2 &&\ node scripts/gen-dev-ignores.js &&\ +rm -f node_modules/{*,*/*}/CODE_OF_CONDUCT.md node_modules/{*,*/*}/CONTRIBUTING.md &&\ git add node_modules package.json package-lock.json &&\ git commit -m"$1@$2" &&\ node . repo $1 &&\ diff --git a/deps/npm/scripts/dev-dep-update b/deps/npm/scripts/dev-dep-update index cb0b783a837f4f..eee2e209cbbda0 100755 --- a/deps/npm/scripts/dev-dep-update +++ b/deps/npm/scripts/dev-dep-update @@ -1,6 +1,7 @@ #!/usr/bin/env bash node . install --save --save-dev $1@$2 &&\ node scripts/gen-dev-ignores.js &&\ +rm -f node_modules/{*,*/*}/CODE_OF_CONDUCT.md node_modules/{*,*/*}/CONTRIBUTING.md &&\ git add package.json package-lock.json &&\ git commit -m"$1@$2" &&\ node . repo $1 &&\ diff --git a/deps/npm/scripts/gen-dev-ignores.js b/deps/npm/scripts/gen-dev-ignores.js index 3f6dcb301bcdbb..f07c2cd7e8c4d4 100644 --- a/deps/npm/scripts/gen-dev-ignores.js +++ b/deps/npm/scripts/gen-dev-ignores.js @@ -2,4 +2,6 @@ const fs = require('fs') const plock = require('../package-lock.json') fs.writeFileSync(`${__dirname}/../node_modules/.gitignore`, '## Automatically generated dev dependency ignores\n' + + 'CODE_OF_CONDUCT.md\n' + + 'CONTRIBUTING.md\n' + Object.keys(plock.dependencies).filter(_ => plock.dependencies[_].dev).map(_ => `/${_}`).join('\n') + '\n') diff --git a/deps/npm/test/fixtures/config/userconfig-with-gc b/deps/npm/test/fixtures/config/userconfig-with-gc new file mode 100644 index 00000000000000..866f78dab61ce5 --- /dev/null +++ b/deps/npm/test/fixtures/config/userconfig-with-gc @@ -0,0 +1,23 @@ +globalconfig = /Users/ruyadorno/Documents/workspace/cli/test/fixtures/config/globalconfig +email = i@izs.me +env-thing = ${random_env_var} +init.author.name = Isaac Z. Schlueter +init.author.email = i@izs.me +init.author.url = http://blog.izs.me/ +init.version = 1.2.3 +npm:publishtest = true +_npmjs.org:couch = https://admin:password@localhost:5984/registry +npm-www:nocache = 1 +nodedir = /Users/isaacs/dev/js/node-v0.8 +sign-git-tag = true +message = v%s +strict-ssl = false +tmp = ~/.tmp +_auth = dXNlcm5hbWU6cGFzc3dvcmQ= + +[_token] +AuthSession = yabba-dabba-doodle +version = 1 +expires = 1345001053415 +path = / +httponly = true diff --git a/deps/npm/test/fixtures/third-party.md b/deps/npm/test/fixtures/third-party.md new file mode 100644 index 00000000000000..d5f33cc1e83155 --- /dev/null +++ b/deps/npm/test/fixtures/third-party.md @@ -0,0 +1,25 @@ +"scoped-underscore-1.3.1.tgz" includes content from the Underscore package, +including code adapted from ES 5.1 section 15.12.3, abstract operation +`JO`, used under the following license: + +Copyright (c) Ecma International 2010 + +DISCLAIMER This document may be copied and furnished to others, and +derivative works that comment on or otherwise explain it or assist in its +implementation may be prepared, copied, published, and distributed, in +whole or in part, without restriction of any kind, provided that the above +copyright notice and this section are included on all such copies and +derivative works. However, this document itself may not be modified in any +way, including by removing the copyright notice or references to Ecma +International, except as needed for the purpose of developing any document +or deliverable produced by Ecma International. + +The limited permissions are granted through the standardization phase and +will not be revoked by Ecma International or its successors or assigns +during this time. + +This document and the information contained herein is provided on an "AS +IS" basis and ECMA INTERNATIONAL DISCLAIMS ALL WARRANTIES, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE +INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED +WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. From 5c5245356bec95c67fef7bc17872410b0b419434 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Wed, 22 Jan 2020 14:38:11 +1100 Subject: [PATCH 6/7] build: macOS package notarization Includes hardened-runtime patch from gdams from https://github.com/nodejs/node/issues/29216#issuecomment-546932966 PR-URL: https://github.com/nodejs/node/pull/31459 Refs: https://github.com/nodejs/node/issues/29216 Reviewed-By: Christian Clauss Reviewed-By: Michael Dawson Reviewed-By: Ash Cripps Signed-off-by: Rod Vagg --- .gitignore | 1 + Makefile | 1 + tools/osx-codesign.sh | 11 +++++++++- tools/osx-entitlements.plist | 16 +++++++++++++++ tools/osx-gon-config.json.tmpl | 12 +++++++++++ tools/osx-notarize.sh | 37 ++++++++++++++++++++++++++++++++++ 6 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 tools/osx-entitlements.plist create mode 100644 tools/osx-gon-config.json.tmpl create mode 100755 tools/osx-notarize.sh diff --git a/.gitignore b/.gitignore index e1703844e5d320..9864e6780b3bbd 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ /doc/api.xml /node /node_g +/gon-config.json /*.exe /*.swp /out diff --git a/Makefile b/Makefile index 9347b7d84b928a..88166da2a84cd8 100644 --- a/Makefile +++ b/Makefile @@ -1010,6 +1010,7 @@ $(PKG): release-only --resources $(MACOSOUTDIR)/installer/productbuild/Resources \ --package-path $(MACOSOUTDIR)/pkgs ./$(PKG) SIGN="$(PRODUCTSIGN_CERT)" PKG="$(PKG)" bash tools/osx-productsign.sh + bash tools/osx-notarize.sh $(FULLVERSION) .PHONY: pkg # Builds the macOS installer for releases. diff --git a/tools/osx-codesign.sh b/tools/osx-codesign.sh index 6a954c737fa4c5..7ca80ca7462c3d 100644 --- a/tools/osx-codesign.sh +++ b/tools/osx-codesign.sh @@ -8,4 +8,13 @@ if [ "X$SIGN" == "X" ]; then exit 0 fi -codesign -s "$SIGN" "$PKGDIR"/bin/node +# All macOS executable binaries in the bundle must be codesigned with the +# hardened runtime enabled. +# See https://github.com/nodejs/node/pull/31459 + +codesign \ + --sign "$SIGN" \ + --entitlements tools/osx-entitlements.plist \ + --options runtime \ + --timestamp \ + "$PKGDIR"/bin/node diff --git a/tools/osx-entitlements.plist b/tools/osx-entitlements.plist new file mode 100644 index 00000000000000..555c10f7ff8607 --- /dev/null +++ b/tools/osx-entitlements.plist @@ -0,0 +1,16 @@ + + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.disable-executable-page-protection + + com.apple.security.cs.allow-dyld-environment-variables + + com.apple.security.cs.disable-library-validation + + + diff --git a/tools/osx-gon-config.json.tmpl b/tools/osx-gon-config.json.tmpl new file mode 100644 index 00000000000000..3ea16465fc1de5 --- /dev/null +++ b/tools/osx-gon-config.json.tmpl @@ -0,0 +1,12 @@ +{ + "notarize": [{ + "path": "node-{{pkgid}}.pkg", + "bundle_id": "org.nodejs.pkg.{{pkgid}}", + "staple": true + }], + + "apple_id": { + "username": "{{appleid}}", + "password": "@env:NOTARIZATION_PASSWORD" + } +} diff --git a/tools/osx-notarize.sh b/tools/osx-notarize.sh new file mode 100755 index 00000000000000..97bb0912722495 --- /dev/null +++ b/tools/osx-notarize.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Uses gon, from https://github.com/mitchellh/gon, to notarize a generated node-.pkg file +# with Apple for installation on macOS Catalina and later as validated by Gatekeeper. + +set -e + +gon_version="0.2.2" +gon_exe="${HOME}/.gon/gon_${gon_version}" + +__dirname="$(CDPATH= cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +pkgid="$1" + +if [ "X${pkgid}" == "X" ]; then + echo "Usage: $0 " + exit 1 +fi + +if [ "X$NOTARIZATION_ID" == "X" ]; then + echo "No NOTARIZATION_ID environment var. Skipping notarization." + exit 0 +fi + +set -x + +mkdir -p "${HOME}/.gon/" + +if [ ! -f "${gon_exe}" ]; then + curl -sL "https://github.com/mitchellh/gon/releases/download/v${gon_version}/gon_${gon_version}_macos.zip" -o "${gon_exe}.zip" + (cd "${HOME}/.gon/" && rm -f gon && unzip "${gon_exe}.zip" && mv gon "${gon_exe}") +fi + +cat tools/osx-gon-config.json.tmpl \ + | sed -e "s/{{appleid}}/${NOTARIZATION_ID}/" -e "s/{{pkgid}}/${pkgid}/" \ + > gon-config.json + +"${gon_exe}" -log-level=info gon-config.json From c5aee86c6667f82e64878d937f7afdbf59f2ae03 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Wed, 4 Mar 2020 12:14:43 +1100 Subject: [PATCH 7/7] doc: official macOS builds now on 10.15 + Xcode 11 PR-URL: https://github.com/nodejs/node/pull/31459 Refs: https://github.com/nodejs/node/issues/29216 Reviewed-By: Christian Clauss Reviewed-By: Michael Dawson Reviewed-By: Ash Cripps Signed-off-by: Rod Vagg --- BUILDING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILDING.md b/BUILDING.md index 3cc173d1f533f3..cb1960db7445cf 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -165,7 +165,7 @@ Binaries at are produced on: | Binary package | Platform and Toolchain | | --------------------- | ------------------------------------------------------------------------ | | aix-ppc64 | AIX 7.1 TL05 on PPC64BE with GCC 6 | -| darwin-x64 (and .pkg) | macOS 10.11, Xcode Command Line Tools 8 with -mmacosx-version-min=10.10 | +| darwin-x64 (and .pkg) | macOS 10.15, Xcode Command Line Tools 11 with -mmacosx-version-min=10.10 | | linux-arm64 | CentOS 7 with devtoolset-6 / GCC 6 | | linux-armv7l | Cross-compiled on Ubuntu 16.04 x64 with [custom GCC toolchain](https://github.com/rvagg/rpi-newer-crosstools) | | linux-ppc64le | CentOS 7 with devtoolset-6 / GCC 6 [7](#fn7) |