summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/libnpmhook
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/libnpmhook')
-rw-r--r--deps/npm/node_modules/libnpmhook/CHANGELOG.md30
-rw-r--r--deps/npm/node_modules/libnpmhook/README.md254
-rw-r--r--deps/npm/node_modules/libnpmhook/config.js13
-rw-r--r--deps/npm/node_modules/libnpmhook/index.js107
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/CHANGELOG.md104
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/LICENSE.md16
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/README.md549
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/auth.js48
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/check-response.js99
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/config.js90
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/errors.js58
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/index.js160
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/package.json90
-rw-r--r--deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/silentlog.js14
-rw-r--r--deps/npm/node_modules/libnpmhook/package.json52
15 files changed, 375 insertions, 1309 deletions
diff --git a/deps/npm/node_modules/libnpmhook/CHANGELOG.md b/deps/npm/node_modules/libnpmhook/CHANGELOG.md
index 6fe3e05b5e..251d1f996d 100644
--- a/deps/npm/node_modules/libnpmhook/CHANGELOG.md
+++ b/deps/npm/node_modules/libnpmhook/CHANGELOG.md
@@ -2,6 +2,36 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+<a name="5.0.2"></a>
+## [5.0.2](https://github.com/npm/libnpmhook/compare/v5.0.1...v5.0.2) (2018-08-24)
+
+
+
+<a name="5.0.1"></a>
+## [5.0.1](https://github.com/npm/libnpmhook/compare/v5.0.0...v5.0.1) (2018-08-23)
+
+
+### Bug Fixes
+
+* **deps:** move JSONStream to prod deps ([bb63594](https://github.com/npm/libnpmhook/commit/bb63594))
+
+
+
+<a name="5.0.0"></a>
+# [5.0.0](https://github.com/npm/libnpmhook/compare/v4.0.1...v5.0.0) (2018-08-21)
+
+
+### Features
+
+* **api:** overhauled API ([46b271b](https://github.com/npm/libnpmhook/commit/46b271b))
+
+
+### BREAKING CHANGES
+
+* **api:** the API for ls() has changed, and rm() no longer errors on 404
+
+
+
<a name="4.0.1"></a>
## [4.0.1](https://github.com/npm/libnpmhook/compare/v4.0.0...v4.0.1) (2018-04-09)
diff --git a/deps/npm/node_modules/libnpmhook/README.md b/deps/npm/node_modules/libnpmhook/README.md
index 0e2f018f2a..9a13d05531 100644
--- a/deps/npm/node_modules/libnpmhook/README.md
+++ b/deps/npm/node_modules/libnpmhook/README.md
@@ -1,8 +1,20 @@
-# libnpmhook [![npm version](https://img.shields.io/npm/v/libnpmhook.svg)](https://npm.im/libnpmhook) [![license](https://img.shields.io/npm/l/libnpmhook.svg)](https://npm.im/libnpmhook) [![Travis](https://img.shields.io/travis/npm/libnpmhook.svg)](https://travis-ci.org/npm/libnpmhook) [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/npm/libnpmhook?svg=true)](https://ci.appveyor.com/project/npm/libnpmhook) [![Coverage Status](https://coveralls.io/repos/github/npm/libnpmhook/badge.svg?branch=latest)](https://coveralls.io/github/npm/libnpmhook?branch=latest)
+# libnpmhook [![npm version](https://img.shields.io/npm/v/libnpmhook.svg)](https://npm.im/libnpmhook) [![license](https://img.shields.io/npm/l/libnpmhook.svg)](https://npm.im/libnpmhook) [![Travis](https://img.shields.io/travis/npm/libnpmhook.svg)](https://travis-ci.org/npm/libnpmhook) [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/zkat/libnpmhook?svg=true)](https://ci.appveyor.com/project/zkat/libnpmhook) [![Coverage Status](https://coveralls.io/repos/github/npm/libnpmhook/badge.svg?branch=latest)](https://coveralls.io/github/npm/libnpmhook?branch=latest)
[`libnpmhook`](https://github.com/npm/libnpmhook) is a Node.js library for
programmatically managing the npm registry's server-side hooks.
+For a more general introduction to managing hooks, see [the introductory blog
+post](https://blog.npmjs.org/post/145260155635/introducing-hooks-get-notifications-of-npm).
+
+## Example
+
+```js
+const hooks = require('libnpmhook')
+
+console.log(await hooks.ls('mypkg', {token: 'deadbeef'}))
+// array of hook objects on `mypkg`.
+```
+
## Install
`$ npm install libnpmhook`
@@ -10,14 +22,246 @@ programmatically managing the npm registry's server-side hooks.
## Table of Contents
* [Example](#example)
-* [Features](#features)
+* [Install](#install)
* [API](#api)
+ * [hook opts](#opts)
+ * [`add()`](#add)
+ * [`rm()`](#rm)
+ * [`ls()`](#ls)
+ * [`ls.stream()`](#ls-stream)
+ * [`update()`](#update)
+
+### API
+
+#### <a name="opts"></a> `opts` for `libnpmhook` commands
+
+`libnpmhook` uses [`npm-registry-fetch`](https://npm.im/npm-registry-fetch).
+All options are passed through directly to that library, so please refer to [its
+own `opts`
+documentation](https://www.npmjs.com/package/npm-registry-fetch#fetch-options)
+for options that can be passed in.
-### Example
+A couple of options of note for those in a hurry:
+
+* `opts.token` - can be passed in and will be used as the authentication token for the registry. For other ways to pass in auth details, see the n-r-f docs.
+* `opts.otp` - certain operations will require an OTP token to be passed in. If a `libnpmhook` command fails with `err.code === EOTP`, please retry the request with `{otp: <2fa token>}`
+* `opts.Promise` - If you pass this in, the Promises returned by `libnpmhook` commands will use this Promise class instead. For example: `{Promise: require('bluebird')}`
+
+#### <a name="add"></a> `> hooks.add(name, endpoint, secret, [opts]) -> Promise`
+
+`name` is the name of the package, org, or user/org scope to watch. The type is
+determined by the name syntax: `'@foo/bar'` and `'foo'` are treated as packages,
+`@foo` is treated as a scope, and `~user` is treated as an org name or scope.
+Each type will attach to different events.
+
+The `endpoint` should be a fully-qualified http URL for the endpoint the hook
+will send its payload to when it fires. `secret` is a shared secret that the
+hook will send to that endpoint to verify that it's actually coming from the
+registry hook.
+
+The returned Promise resolves to the full hook object that was created,
+including its generated `id`.
+
+See also: [`POST
+/v1/hooks/hook`](https://github.com/npm/registry/blob/master/docs/hooks/endpoints.md#post-v1hookshook)
+
+##### Example
```javascript
+await hooks.add('~zkat', 'https://zkat.tech/api/added', 'supersekrit', {
+ token: 'myregistrytoken',
+ otp: '694207'
+})
+
+=>
+
+{ id: '16f7xoal',
+ username: 'zkat',
+ name: 'zkat',
+ endpoint: 'https://zkat.tech/api/added',
+ secret: 'supersekrit',
+ type: 'owner',
+ created: '2018-08-21T20:05:25.125Z',
+ updated: '2018-08-21T20:05:25.125Z',
+ deleted: false,
+ delivered: false,
+ last_delivery: null,
+ response_code: 0,
+ status: 'active' }
```
-### Features
+#### <a name="find"></a> `> hooks.find(id, [opts]) -> Promise`
-### API
+Returns the hook identified by `id`.
+
+The returned Promise resolves to the full hook object that was found, or error
+with `err.code` of `'E404'` if it didn't exist.
+
+See also: [`GET
+/v1/hooks/hook/:id`](https://github.com/npm/registry/blob/master/docs/hooks/endpoints.md#get-v1hookshookid)
+
+##### Example
+
+```javascript
+await hooks.find('16f7xoal', {token: 'myregistrytoken'})
+
+=>
+
+{ id: '16f7xoal',
+ username: 'zkat',
+ name: 'zkat',
+ endpoint: 'https://zkat.tech/api/added',
+ secret: 'supersekrit',
+ type: 'owner',
+ created: '2018-08-21T20:05:25.125Z',
+ updated: '2018-08-21T20:05:25.125Z',
+ deleted: false,
+ delivered: false,
+ last_delivery: null,
+ response_code: 0,
+ status: 'active' }
+```
+
+#### <a name="rm"></a> `> hooks.rm(id, [opts]) -> Promise`
+
+Removes the hook identified by `id`.
+
+The returned Promise resolves to the full hook object that was removed, if it
+existed, or `null` if no such hook was there (instead of erroring).
+
+See also: [`DELETE
+/v1/hooks/hook/:id`](https://github.com/npm/registry/blob/master/docs/hooks/endpoints.md#delete-v1hookshookid)
+
+##### Example
+
+```javascript
+await hooks.rm('16f7xoal', {
+ token: 'myregistrytoken',
+ otp: '694207'
+})
+
+=>
+
+{ id: '16f7xoal',
+ username: 'zkat',
+ name: 'zkat',
+ endpoint: 'https://zkat.tech/api/added',
+ secret: 'supersekrit',
+ type: 'owner',
+ created: '2018-08-21T20:05:25.125Z',
+ updated: '2018-08-21T20:05:25.125Z',
+ deleted: true,
+ delivered: false,
+ last_delivery: null,
+ response_code: 0,
+ status: 'active' }
+
+// Repeat it...
+await hooks.rm('16f7xoal', {
+ token: 'myregistrytoken',
+ otp: '694207'
+})
+
+=> null
+```
+
+#### <a name="update"></a> `> hooks.update(id, endpoint, secret, [opts]) -> Promise`
+
+The `id` should be a hook ID from a previously-created hook.
+
+The `endpoint` should be a fully-qualified http URL for the endpoint the hook
+will send its payload to when it fires. `secret` is a shared secret that the
+hook will send to that endpoint to verify that it's actually coming from the
+registry hook.
+
+The returned Promise resolves to the full hook object that was updated, if it
+existed. Otherwise, it will error with an `'E404'` error code.
+
+See also: [`PUT
+/v1/hooks/hook/:id`](https://github.com/npm/registry/blob/master/docs/hooks/endpoints.md#put-v1hookshookid)
+
+##### Example
+
+```javascript
+await hooks.update('16fxoal', 'https://zkat.tech/api/other', 'newsekrit', {
+ token: 'myregistrytoken',
+ otp: '694207'
+})
+
+=>
+
+{ id: '16f7xoal',
+ username: 'zkat',
+ name: 'zkat',
+ endpoint: 'https://zkat.tech/api/other',
+ secret: 'newsekrit',
+ type: 'owner',
+ created: '2018-08-21T20:05:25.125Z',
+ updated: '2018-08-21T20:14:41.964Z',
+ deleted: false,
+ delivered: false,
+ last_delivery: null,
+ response_code: 0,
+ status: 'active' }
+```
+
+#### <a name="ls"></a> `> hooks.ls([opts]) -> Promise`
+
+Resolves to an array of hook objects associated with the account you're
+authenticated as.
+
+Results can be further filtered with three values that can be passed in through
+`opts`:
+
+* `opts.package` - filter results by package name
+* `opts.limit` - maximum number of hooks to return
+* `opts.offset` - pagination offset for results (use with `opts.limit`)
+
+See also:
+ * [`hooks.ls.stream()`](#ls-stream)
+ * [`GET
+/v1/hooks`](https://github.com/npm/registry/blob/master/docs/hooks/endpoints.md#get-v1hooks)
+
+##### Example
+
+```javascript
+await hooks.ls({token: 'myregistrytoken'})
+
+=>
+[
+ { id: '16f7xoal', ... },
+ { id: 'wnyf98a1', ... },
+ ...
+]
+```
+
+#### <a name="ls-stream"></a> `> hooks.ls.stream([opts]) -> Stream`
+
+Returns a stream of hook objects associated with the account you're
+authenticated as. The returned stream is a valid `Symbol.asyncIterator` on
+`node@>=10`.
+
+Results can be further filtered with three values that can be passed in through
+`opts`:
+
+* `opts.package` - filter results by package name
+* `opts.limit` - maximum number of hooks to return
+* `opts.offset` - pagination offset for results (use with `opts.limit`)
+
+See also:
+ * [`hooks.ls()`](#ls)
+ * [`GET
+/v1/hooks`](https://github.com/npm/registry/blob/master/docs/hooks/endpoints.md#get-v1hooks)
+
+##### Example
+
+```javascript
+for await (let hook of hooks.ls.stream({token: 'myregistrytoken'})) {
+ console.log('found hook:', hook.id)
+}
+
+=>
+// outputs:
+// found hook: 16f7xoal
+// found hook: wnyf98a1
+```
diff --git a/deps/npm/node_modules/libnpmhook/config.js b/deps/npm/node_modules/libnpmhook/config.js
deleted file mode 100644
index 864e1ede6a..0000000000
--- a/deps/npm/node_modules/libnpmhook/config.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-const pudding = require('figgy-pudding')
-
-const NpmHooksConfig = pudding()
-
-module.exports = config
-function config (opts) {
- return NpmHooksConfig.apply(
- null,
- [opts, opts.config].concat([].slice.call(arguments, 1))
- )
-}
diff --git a/deps/npm/node_modules/libnpmhook/index.js b/deps/npm/node_modules/libnpmhook/index.js
index b59ff842e2..b489294951 100644
--- a/deps/npm/node_modules/libnpmhook/index.js
+++ b/deps/npm/node_modules/libnpmhook/index.js
@@ -1,41 +1,80 @@
'use strict'
-const config = require('./config')
const fetch = require('npm-registry-fetch')
+const figgyPudding = require('figgy-pudding')
+const getStream = require('get-stream')
+const validate = require('aproba')
-module.exports = {
- add (name, endpoint, secret, opts) {
- let type = 'package'
- if (name && name.match(/^@[^/]+$/)) {
- type = 'scope'
- }
- if (name && name[0] === '~') {
- type = 'owner'
- name = name.substr(1)
- }
+const HooksConfig = figgyPudding({
+ package: {},
+ limit: {},
+ offset: {},
+ Promise: {default: () => Promise}
+})
- opts = config({
- method: 'POST',
- body: { type, name, endpoint, secret }
- }, opts)
- return fetch.json('/-/npm/v1/hooks/hook', opts)
- },
-
- rm (id, opts) {
- return fetch.json(`/-/npm/v1/hooks/hook/${encodeURIComponent(id)}`, config({
- method: 'DELETE'
- }, opts))
- },
-
- ls (pkg, opts) {
- return fetch.json('/-/npm/v1/hooks', config({query: pkg && {package: pkg}}, opts))
- .then(json => json.objects)
- },
-
- update (id, endpoint, secret, opts) {
- return fetch.json(`/-/npm/v1/hooks/hook/${encodeURIComponent(id)}`, config({
- method: 'PUT',
- body: {endpoint, secret}
- }, opts))
+const eu = encodeURIComponent
+const cmd = module.exports = {}
+cmd.add = (name, endpoint, secret, opts) => {
+ opts = HooksConfig(opts)
+ validate('SSSO', [name, endpoint, secret, opts])
+ let type = 'package'
+ if (name.match(/^@[^/]+$/)) {
+ type = 'scope'
}
+ if (name[0] === '~') {
+ type = 'owner'
+ name = name.substr(1)
+ }
+ return fetch.json('/-/npm/v1/hooks/hook', opts.concat({
+ method: 'POST',
+ body: { type, name, endpoint, secret }
+ }))
+}
+
+cmd.rm = (id, opts) => {
+ opts = HooksConfig(opts)
+ validate('SO', [id, opts])
+ return fetch.json(`/-/npm/v1/hooks/hook/${eu(id)}`, opts.concat({
+ method: 'DELETE'
+ }, opts)).catch(err => {
+ if (err.code === 'E404') {
+ return null
+ } else {
+ throw err
+ }
+ })
+}
+
+cmd.update = (id, endpoint, secret, opts) => {
+ opts = HooksConfig(opts)
+ validate('SSSO', [id, endpoint, secret, opts])
+ return fetch.json(`/-/npm/v1/hooks/hook/${eu(id)}`, opts.concat({
+ method: 'PUT',
+ body: {endpoint, secret}
+ }, opts))
+}
+
+cmd.find = (id, opts) => {
+ opts = HooksConfig(opts)
+ validate('SO', [id, opts])
+ return fetch.json(`/-/npm/v1/hooks/hook/${eu(id)}`, opts)
+}
+
+cmd.ls = (opts) => {
+ return getStream.array(cmd.ls.stream(opts))
+}
+
+cmd.ls.stream = (opts) => {
+ opts = HooksConfig(opts)
+ const {package: pkg, limit, offset} = opts
+ validate('S|Z', [pkg])
+ validate('N|Z', [limit])
+ validate('N|Z', [offset])
+ return fetch.json.stream('/-/npm/v1/hooks', 'objects.*', opts.concat({
+ query: {
+ package: pkg,
+ limit,
+ offset
+ }
+ }))
}
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/CHANGELOG.md b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/CHANGELOG.md
deleted file mode 100644
index 8f9366551f..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/CHANGELOG.md
+++ /dev/null
@@ -1,104 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-<a name="3.1.1"></a>
-## [3.1.1](https://github.com/npm/registry-fetch/compare/v3.1.0...v3.1.1) (2018-04-09)
-
-
-
-<a name="3.1.0"></a>
-# [3.1.0](https://github.com/npm/registry-fetch/compare/v3.0.0...v3.1.0) (2018-04-09)
-
-
-### Features
-
-* **config:** support no-proxy and https-proxy options ([9aa906b](https://github.com/npm/registry-fetch/commit/9aa906b))
-
-
-
-<a name="3.0.0"></a>
-# [3.0.0](https://github.com/npm/registry-fetch/compare/v2.1.0...v3.0.0) (2018-04-09)
-
-
-### Bug Fixes
-
-* **api:** pacote integration-related fixes ([a29de4f](https://github.com/npm/registry-fetch/commit/a29de4f))
-* **config:** stop caring about opts.config ([5856a6f](https://github.com/npm/registry-fetch/commit/5856a6f))
-
-
-### BREAKING CHANGES
-
-* **config:** opts.config is no longer supported. Pass the options down in opts itself.
-
-
-
-<a name="2.1.0"></a>
-# [2.1.0](https://github.com/npm/registry-fetch/compare/v2.0.0...v2.1.0) (2018-04-08)
-
-
-### Features
-
-* **token:** accept opts.token for opts._authToken ([108c9f0](https://github.com/npm/registry-fetch/commit/108c9f0))
-
-
-
-<a name="2.0.0"></a>
-# [2.0.0](https://github.com/npm/registry-fetch/compare/v1.1.1...v2.0.0) (2018-04-08)
-
-
-### meta
-
-* drop support for node@4 ([758536e](https://github.com/npm/registry-fetch/commit/758536e))
-
-
-### BREAKING CHANGES
-
-* node@4 is no longer supported
-
-
-
-<a name="1.1.1"></a>
-## [1.1.1](https://github.com/npm/registry-fetch/compare/v1.1.0...v1.1.1) (2018-04-06)
-
-
-
-<a name="1.1.0"></a>
-# [1.1.0](https://github.com/npm/registry-fetch/compare/v1.0.1...v1.1.0) (2018-03-16)
-
-
-### Features
-
-* **specs:** can use opts.spec to trigger pickManifest ([85c4ac9](https://github.com/npm/registry-fetch/commit/85c4ac9))
-
-
-
-<a name="1.0.1"></a>
-## [1.0.1](https://github.com/npm/registry-fetch/compare/v1.0.0...v1.0.1) (2018-03-16)
-
-
-### Bug Fixes
-
-* **query:** oops console.log ([870e4f5](https://github.com/npm/registry-fetch/commit/870e4f5))
-
-
-
-<a name="1.0.0"></a>
-# 1.0.0 (2018-03-16)
-
-
-### Bug Fixes
-
-* **auth:** get auth working with all the little details ([84b94ba](https://github.com/npm/registry-fetch/commit/84b94ba))
-* **deps:** add bluebird as an actual dep ([1286e31](https://github.com/npm/registry-fetch/commit/1286e31))
-* **errors:** Unknown auth errors use default code ([#1](https://github.com/npm/registry-fetch/issues/1)) ([3d91b93](https://github.com/npm/registry-fetch/commit/3d91b93))
-* **standard:** remove args from invocation ([9620a0a](https://github.com/npm/registry-fetch/commit/9620a0a))
-
-
-### Features
-
-* **api:** baseline kinda-working API impl ([bf91f9f](https://github.com/npm/registry-fetch/commit/bf91f9f))
-* **body:** automatic handling of different opts.body values ([f3b97db](https://github.com/npm/registry-fetch/commit/f3b97db))
-* **config:** nicer input config input handling ([b9ce21d](https://github.com/npm/registry-fetch/commit/b9ce21d))
-* **opts:** use figgy-pudding for opts handling ([0abd527](https://github.com/npm/registry-fetch/commit/0abd527))
-* **query:** add query utility support ([65ea8b1](https://github.com/npm/registry-fetch/commit/65ea8b1))
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/LICENSE.md b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/LICENSE.md
deleted file mode 100644
index 8d28acf866..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/LICENSE.md
+++ /dev/null
@@ -1,16 +0,0 @@
-ISC License
-
-Copyright (c) npm, Inc.
-
-Permission to use, copy, modify, and/or distribute this software for
-any purpose with or without fee is hereby granted, provided that the
-above copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE COPYRIGHT HOLDER DISCLAIMS
-ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
-USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/README.md b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/README.md
deleted file mode 100644
index 3d55eef6de..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/README.md
+++ /dev/null
@@ -1,549 +0,0 @@
-# npm-registry-fetch [![npm version](https://img.shields.io/npm/v/npm-registry-fetch.svg)](https://npm.im/npm-registry-fetch) [![license](https://img.shields.io/npm/l/npm-registry-fetch.svg)](https://npm.im/npm-registry-fetch) [![Travis](https://img.shields.io/travis/npm/npm-registry-fetch/latest.svg)](https://travis-ci.org/npm/npm-registry-fetch) [![AppVeyor](https://img.shields.io/appveyor/ci/zkat/npm-registry-fetch/latest.svg)](https://ci.appveyor.com/project/npm/npm-registry-fetch) [![Coverage Status](https://coveralls.io/repos/github/npm/npm-registry-fetch/badge.svg?branch=latest)](https://coveralls.io/github/npm/npm-registry-fetch?branch=latest)
-
-[`npm-registry-fetch`](https://github.com/npm/npm-registry-fetch) is a Node.js
-library that implements a `fetch`-like API for accessing npm registry APIs
-consistently. It's able to consume npm-style configuration values and has all
-the necessary logic for picking registries, handling scopes, and dealing with
-authentication details built-in.
-
-This package is meant to replace the older
-[`npm-registry-client`](https://npm.im/npm-registry-client).
-
-## Example
-
-```javascript
-const npmFetch = require('npm-registry-fetch')
-
-console.log(
- await npmFetch.json('/-/ping')
-)
-```
-
-## Table of Contents
-
-* [Installing](#install)
-* [Example](#example)
-* [Contributing](#contributing)
-* [API](#api)
- * [`fetch`](#fetch)
- * [`fetch.json`](#fetch-json)
- * [`fetch` options](#fetch-opts)
-
-### Install
-
-`$ npm install npm-registry-fetch`
-
-### Contributing
-
-The npm team enthusiastically welcomes contributions and project participation!
-There's a bunch of things you can do if you want to contribute! The [Contributor
-Guide](CONTRIBUTING.md) has all the information you need for everything from
-reporting bugs to contributing entire new features. Please don't hesitate to
-jump in if you'd like to, or even ask us questions if something isn't clear.
-
-All participants and maintainers in this project are expected to follow [Code of
-Conduct](CODE_OF_CONDUCT.md), and just generally be excellent to each other.
-
-Please refer to the [Changelog](CHANGELOG.md) for project history details, too.
-
-Happy hacking!
-
-### API
-
-#### <a name="fetch"></a> `> fetch(url, [opts]) -> Promise<Response>`
-
-Performs a request to a given URL.
-
-The URL can be either a full URL, or a path to one. The appropriate registry
-will be automatically picked if only a URL path is given.
-
-For available options, please see the section on [`fetch` options](#fetch-opts).
-
-##### Example
-
-```javascript
-const res = await fetch('/-/ping')
-console.log(res.headers)
-res.on('data', d => console.log(d.toString('utf8')))
-```
-
-#### <a name="fetch-json"></a> `> fetch.json(url, [opts]) -> Promise<ResponseJSON>`
-
-Performs a request to a given registry URL, parses the body of the response as
-JSON, and returns it as its final value. This is a utility shorthand for
-`fetch(url).then(res => res.json())`.
-
-For available options, please see the section on [`fetch` options](#fetch-opts).
-
-##### Example
-
-```javascript
-const res = await fetch.json('/-/ping')
-console.log(res) // Body parsed as JSON
-```
-
-#### <a name="fetch-opts"></a> `fetch` Options
-
-Fetch options are optional, and can be passed in as either a Map-like object
-(one with a `.get()` method), a plain javascript object, or a
-[`figgy-pudding`](https://npm.im/figgy-pudding) instance.
-
-##### <a name="opts-agent"></a> `opts.agent`
-
-* Type: http.Agent
-* Default: an appropriate agent based on URL protocol and proxy settings
-
-An [`Agent`](https://nodejs.org/api/http.html#http_class_http_agent) instance to
-be shared across requests. This allows multiple concurrent `fetch` requests to
-happen on the same socket.
-
-You do _not_ need to provide this option unless you want something particularly
-specialized, since proxy configurations and http/https agents are already
-automatically managed internally when this option is not passed through.
-
-##### <a name="opts-body"></a> `opts.body`
-
-* Type: Buffer | Stream | Object
-* Default: null
-
-Request body to send through the outgoing request. Buffers and Streams will be
-passed through as-is, with a default `content-type` of
-`application/octet-stream`. Plain JavaScript objects will be `JSON.stringify`ed
-and the `content-type` will default to `application/json`.
-
-Use [`opts.headers`](#opts-headers) to set the content-type to something else.
-
-##### <a name="opts-ca"></a> `opts.ca`
-
-* Type: String, Array, or null
-* Default: null
-
-The Certificate Authority signing certificate that is trusted for SSL
-connections to the registry. Values should be in PEM format (Windows calls it
-"Base-64 encoded X.509 (.CER)") with newlines replaced by the string `'\n'`. For
-example:
-
-```
-{
- ca: '-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----'
-}
-```
-
-Set to `null` to only allow "known" registrars, or to a specific CA cert
-to trust only that specific signing authority.
-
-Multiple CAs can be trusted by specifying an array of certificates instead of a
-single string.
-
-See also [`opts.strict-ssl`](#opts-strict-ssl), [`opts.ca`](#opts-ca) and
-[`opts.key`](#opts-key)
-
-##### <a name="opts-cache"></a> `opts.cache`
-
-* Type: path
-* Default: null
-
-The location of the http cache directory. If provided, certain cachable requests
-will be cached according to [IETF RFC 7234](https://tools.ietf.org/html/rfc7234)
-rules. This will speed up future requests, as well as make the cached data
-available offline if necessary/requested.
-
-See also [`offline`](#opts-offline), [`prefer-offline`](#opts-prefer-offline),
-and [`prefer-online`](#opts-prefer-online).
-
-##### <a name="opts-cert"></a> `opts.cert`
-
-* Type: String
-* Default: null
-
-A client certificate to pass when accessing the registry. Values should be in
-PEM format (Windows calls it "Base-64 encoded X.509 (.CER)") with newlines
-replaced by the string `'\n'`. For example:
-
-```
-{
- cert: '-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----'
-}
-```
-
-It is _not_ the path to a certificate file (and there is no "certfile" option).
-
-See also: [`opts.ca`](#opts-ca) and [`opts.key`](#opts-key)
-
-##### <a name="opts-fetch-retries"></a> `opts.fetch-retries`
-
-* Type: Number
-* Default: 2
-
-The "retries" config for [`retry`](https://npm.im/retry) to use when fetching
-packages from the registry.
-
-See also [`opts.retry`](#opts-retry) to provide all retry options as a single
-object.
-
-##### <a name="opts-fetch-retry-factor"></a> `opts.fetch-retry-factor`
-
-* Type: Number
-* Default: 10
-
-The "factor" config for [`retry`](https://npm.im/retry) to use when fetching
-packages.
-
-See also [`opts.retry`](#opts-retry) to provide all retry options as a single
-object.
-
-##### <a name="opts-fetch-retry-mintimeout"></a> `opts.fetch-retry-mintimeout`
-
-* Type: Number
-* Default: 10000 (10 seconds)
-
-The "minTimeout" config for [`retry`](https://npm.im/retry) to use when fetching
-packages.
-
-See also [`opts.retry`](#opts-retry) to provide all retry options as a single
-object.
-
-##### <a name="opts-fetch-retry-maxtimeout"></a> `opts.fetch-retry-maxtimeout`
-
-* Type: Number
-* Default: 60000 (1 minute)
-
-The "maxTimeout" config for [`retry`](https://npm.im/retry) to use when fetching
-packages.
-
-See also [`opts.retry`](#opts-retry) to provide all retry options as a single
-object.
-
-##### <a name="opts-headers"></a> `opts.headers`
-
-* Type: Object
-* Default: null
-
-Additional headers for the outgoing request. This option can also be used to
-override headers automatically generated by `npm-registry-fetch`, such as
-`Content-Type`.
-
-##### <a name="opts-integrity"></a> `opts.integrity`
-
-* Type: String | [SRI object](https://npm.im/ssri)
-* Default: null
-
-If provided, the response body's will be verified against this integrity string,
-using [`ssri`](https://npm.im/ssri). If verification succeeds, the response will
-complete as normal. If verification fails, the response body will error with an
-`EINTEGRITY` error.
-
-Body integrity is only verified if the body is actually consumed to completion --
-that is, if you use `res.json()`/`res.buffer()`, or if you consume the default
-`res` stream data to its end.
-
-Cached data will have its integrity automatically verified using the
-previously-generated integrity hash for the saved request information, so
-`EINTEGRITY` errors can happen if [`opts.cache`](#opts-cache) is used, even if
-`opts.integrity` is not passed in.
-
-##### <a name='opts-is-from-ci'></a> `opts.is-from-ci`
-
-* Alias: `opts.isFromCI`
-* Type: Boolean
-* Default: Based on environment variables
-
-This is used to populate the `npm-in-ci` request header sent to the registry.
-
-##### <a name="opts-key"></a> `opts.key`
-
-* Type: String
-* Default: null
-
-A client key to pass when accessing the registry. Values should be in PEM
-format with newlines replaced by the string `'\n'`. For example:
-
-```
-{
- key: '-----BEGIN PRIVATE KEY-----\nXXXX\nXXXX\n-----END PRIVATE KEY-----'
-}
-```
-
-It is _not_ the path to a key file (and there is no "keyfile" option).
-
-See also: [`opts.ca`](#opts-ca) and [`opts.cert`](#opts-cert)
-
-##### <a name="opts-local-address"></a> `opts.local-address`
-
-* Type: IP Address String
-* Default: null
-
-The IP address of the local interface to use when making connections
-to the registry.
-
-See also [`opts.proxy`](#opts-proxy)
-
-##### <a name="opts-log"></a> `opts.log`
-
-* Type: [`npmlog`](https://npm.im/npmlog)-like
-* Default: null
-
-Logger object to use for logging operation details. Must have the same methods
-as `npmlog`.
-
-##### <a name="opts-maxsockets"></a> `opts.maxsockets`
-
-* Alias: `opts.max-sockets`
-* Type: Integer
-* Default: 12
-
-Maximum number of sockets to keep open during requests. Has no effect if
-[`opts.agent`](#opts-agent) is used.
-
-##### <a name="opts-method"></a> `opts.method`
-
-* Type: String
-* Default: 'GET'
-
-HTTP method to use for the outgoing request. Case-insensitive.
-
-##### <a name="opts-noproxy"></a> `opts.noproxy`
-
-* Type: Boolean
-* Default: process.env.NOPROXY
-
-If true, proxying will be disabled even if [`opts.proxy`](#opts-proxy) is used.
-
-##### <a name="opts-npm-session"></a> `opts.npm-session`
-
-* Alias: `opts.npmSession`
-* Type: String
-* Default: null
-
-If provided, will be sent in the `npm-session` header. This header is used by
-the npm registry to identify individual user sessions (usually individual
-invocations of the CLI).
-
-##### <a name="opts-offline"></a> `opts.offline`
-
-* Type: Boolean
-* Default: false
-
-Force offline mode: no network requests will be done during install. To allow
-`npm-registry-fetch` to fill in missing cache data, see
-[`opts.prefer-offline`](#opts-prefer-offline).
-
-This option is only really useful if you're also using
-[`opts.cache`](#opts-cache).
-
-##### <a name="opts-otp"></a> `opts.otp`
-
-* Type: Number | String
-* Default: null
-
-This is a one-time password from a two-factor authenticator. It is required for
-certain registry interactions when two-factor auth is enabled for a user
-account.
-
-##### <a name="opts-password"></a> `opts.password`
-
-* Alias: _password
-* Type: String
-* Default: null
-
-Password used for basic authentication. For the more modern authentication
-method, please use the (more secure) [`opts.token`](#opts-token)
-
-Can optionally be scoped to a registry by using a "nerf dart" for that registry.
-That is:
-
-```
-{
- '//registry.npmjs.org/:password': 't0k3nH34r'
-}
-```
-
-See also [`opts.username`](#opts-username)
-
-##### <a name="opts-prefer-offline"></a> `opts.prefer-offline`
-
-* Type: Boolean
-* Default: false
-
-If true, staleness checks for cached data will be bypassed, but missing data
-will be requested from the server. To force full offline mode, use
-[`opts.offline`](#opts-offline).
-
-This option is generally only useful if you're also using
-[`opts.cache`](#opts-cache).
-
-##### <a name="opts-prefer-online"></a> `opts.prefer-online`
-
-* Type: Boolean
-* Default: false
-
-If true, staleness checks for cached data will be forced, making the CLI look
-for updates immediately even for fresh package data.
-
-This option is generally only useful if you're also using
-[`opts.cache`](#opts-cache).
-
-
-##### <a name="opts-project-scope"></a> `opts.project-scope`
-
-* Alias: `opts.projectScope`
-* Type: String
-* Default: null
-
-If provided, will be sent in the `npm-scope` header. This header is used by the
-npm registry to identify the toplevel package scope that a particular project
-installation is using.
-
-##### <a name="opts-proxy"></a> `opts.proxy`
-
-* Type: url
-* Default: null
-
-A proxy to use for outgoing http requests. If not passed in, the `HTTP(S)_PROXY`
-environment variable will be used.
-
-##### <a name="opts-query"></a> `opts.query`
-
-* Type: String | Object
-* Default: null
-
-If provided, the request URI will have a query string appended to it using this
-query. If `opts.query` is an object, it will be converted to a query string
-using
-[`querystring.stringify()`](https://nodejs.org/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options).
-
-If the request URI already has a query string, it will be merged with
-`opts.query`, preferring `opts.query` values.
-
-##### <a name="opts-refer"></a> `opts.refer`
-
-* Alias: `opts.referer`
-* Type: String
-* Default: null
-
-Value to use for the `Referer` header. The npm CLI itself uses this to serialize
-the npm command line using the given request.
-
-##### <a name="opts-registry"></a> `opts.registry`
-
-* Type: URL
-* Default: `'https://registry.npmjs.org'`
-
-Registry configuration for a request. If a request URL only includes the URL
-path, this registry setting will be prepended. This configuration is also used
-to determine authentication details, so even if the request URL references a
-completely different host, `opts.registry` will be used to find the auth details
-for that request.
-
-See also [`opts.scope`](#opts-scope), [`opts.spec`](#opts-spec), and
-[`opts.<scope>:registry`](#opts-scope-registry) which can all affect the actual
-registry URL used by the outgoing request.
-
-##### <a name="opts-retry"></a> `opts.retry`
-
-* Type: Object
-* Default: null
-
-Single-object configuration for request retry settings. If passed in, will
-override individually-passed `fetch-retry-*` settings.
-
-##### <a name="opts-scope"></a> `opts.scope`
-
-* Type: String
-* Default: null
-
-Associate an operation with a scope for a scoped registry. This option can force
-lookup of scope-specific registries and authentication.
-
-See also [`opts.<scope>:registry`](#opts-scope-registry) and
-[`opts.spec`](#opts-spec) for interactions with this option.
-
-##### <a name="opts-scope-registry"></a> `opts.<scope>:registry`
-
-* Type: String
-* Default: null
-
-This option type can be used to configure the registry used for requests
-involving a particular scope. For example, `opts['@myscope:registry'] =
-'https://scope-specific.registry/'` will make it so requests go out to this
-registry instead of [`opts.registry`](#opts-registry) when
-[`opts.scope`](#opts-scope) is used, or when [`opts.spec`](#opts-spec) is a
-scoped package spec.
-
-The `@` before the scope name is optional, but recommended.
-
-##### <a name="opts-spec"></a> `opts.spec`
-
-* Type: String | [`npm-registry-arg`](https://npm.im/npm-registry-arg) object.
-* Default: null
-
-If provided, can be used to automatically configure [`opts.scope`](#opts-scope)
-based on a specific package name. Non-registry package specs will throw an
-error.
-
-##### <a name="opts-strict-ssl"></a> `opts.strict-ssl`
-
-* Type: Boolean
-* Default: true
-
-Whether or not to do SSL key validation when making requests to the
-registry via https.
-
-See also [`opts.ca`](#opts-ca).
-
-##### <a name="opts-timeout"></a> `opts.timeout`
-
-* Type: Milliseconds
-* Default: 30000 (30 seconds)
-
-Time before a hanging request times out.
-
-##### <a name="opts-token"></a> `opts.token`
-
-* Alias: `opts._authToken`
-* Type: String
-* Default: null
-
-Authentication token string.
-
-Can be scoped to a registry by using a "nerf dart" for that registry. That is:
-
-```
-{
- '//registry.npmjs.org/:token': 't0k3nH34r'
-}
-```
-
-##### <a name="opts-user-agent"></a> `opts.user-agent`
-
-* Type: String
-* Default: `'npm-registry-fetch@<version>/node@<node-version>+<arch> (<platform>)'`
-
-User agent string to send in the `User-Agent` header.
-
-##### <a name="opts-username"></a> `opts.username`
-
-* Type: String
-* Default: null
-
-Username used for basic authentication. For the more modern authentication
-method, please use the (more secure) [`opts.token`](#opts-token)
-
-Can optionally be scoped to a registry by using a "nerf dart" for that registry.
-That is:
-
-```
-{
- '//registry.npmjs.org/:username': 't0k3nH34r'
-}
-```
-
-See also [`opts.password`](#opts-password)
-
-##### <a name="opts-auth"></a> `opts._auth`
-
-* Type: String
-* Default: null
-
-** DEPRECATED ** This is a legacy authentication token supported only for
-*compatibility. Please use [`opts.token`](#opts-token) instead.
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/auth.js b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/auth.js
deleted file mode 100644
index 9532341db1..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/auth.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict'
-
-const config = require('./config.js')
-const url = require('url')
-
-module.exports = getAuth
-function getAuth (registry, opts) {
- if (!registry) { throw new Error('registry is required') }
- opts = config(opts)
- let AUTH = {}
- const regKey = registry && registryKey(registry)
- const doKey = (key, alias) => addKey(opts, AUTH, regKey, key, alias)
- doKey('token')
- doKey('_authToken', 'token')
- doKey('username')
- doKey('password')
- doKey('_password', 'password')
- doKey('email')
- doKey('_auth')
- doKey('otp')
- doKey('always-auth', 'alwaysAuth')
- if (AUTH.password) {
- AUTH.password = Buffer.from(AUTH.password, 'base64').toString('utf8')
- }
- AUTH.alwaysAuth = AUTH.alwaysAuth === 'false' ? false : !!AUTH.alwaysAuth
- return AUTH
-}
-
-function addKey (opts, obj, scope, key, objKey) {
- if (opts.get(key)) {
- obj[objKey || key] = opts.get(key)
- }
- if (scope && opts.get(`${scope}:${key}`)) {
- obj[objKey || key] = opts.get(`${scope}:${key}`)
- }
-}
-
-// Called a nerf dart in the main codebase. Used as a "safe"
-// key when fetching registry info from config.
-function registryKey (registry) {
- const parsed = url.parse(registry)
- const formatted = url.format({
- host: parsed.host,
- pathname: parsed.pathname,
- slashes: parsed.slashes
- })
- return url.resolve(formatted, '.')
-}
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/check-response.js b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/check-response.js
deleted file mode 100644
index 407a80e4ce..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/check-response.js
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict'
-
-const config = require('./config.js')
-const errors = require('./errors.js')
-const LRU = require('lru-cache')
-
-module.exports = checkResponse
-function checkResponse (method, res, registry, startTime, opts) {
- opts = config(opts)
- if (res.headers.has('npm-notice') && !res.headers.has('x-local-cache')) {
- opts.get('log').notice('', res.headers.get('npm-notice'))
- }
- checkWarnings(res, registry, opts)
- if (res.status >= 400) {
- logRequest(method, res, startTime, opts)
- return checkErrors(method, res, startTime, opts)
- } else {
- res.body.on('end', () => logRequest(method, res, startTime, opts))
- return res
- }
-}
-
-function logRequest (method, res, startTime, opts) {
- const elapsedTime = Date.now() - startTime
- const attempt = res.headers.get('x-fetch-attempts')
- const attemptStr = attempt && attempt > 1 ? ` attempt #${attempt}` : ''
- const cacheStr = res.headers.get('x-local-cache') ? ' (from cache)' : ''
- opts.get('log').http(
- 'fetch',
- `${method.toUpperCase()} ${res.status} ${res.url} ${elapsedTime}ms${attemptStr}${cacheStr}`
- )
-}
-
-const WARNING_REGEXP = /^\s*(\d{3})\s+(\S+)\s+"(.*)"\s+"([^"]+)"/
-const BAD_HOSTS = new LRU({ max: 50 })
-
-function checkWarnings (res, registry, opts) {
- if (res.headers.has('warning') && !BAD_HOSTS.has(registry)) {
- const warnings = {}
- res.headers.raw()['warning'].forEach(w => {
- const match = w.match(WARNING_REGEXP)
- if (match) {
- warnings[match[1]] = {
- code: match[1],
- host: match[2],
- message: match[3],
- date: new Date(match[4])
- }
- }
- })
- BAD_HOSTS.set(registry, true)
- if (warnings['199']) {
- if (warnings['199'].message.match(/ENOTFOUND/)) {
- opts.get('log').warn('registry', `Using stale data from ${registry} because the host is inaccessible -- are you offline?`)
- } else {
- opts.get('log').warn('registry', `Unexpected warning for ${registry}: ${warnings['199'].message}`)
- }
- }
- if (warnings['111']) {
- // 111 Revalidation failed -- we're using stale data
- opts.get('log').warn(
- 'registry',
- `Using stale data from ${registry} due to a request error during revalidation.`
- )
- }
- }
-}
-
-function checkErrors (method, res, startTime, opts) {
- return res.buffer()
- .catch(() => null)
- .then(body => {
- try {
- body = JSON.parse(body.toString('utf8'))
- } catch (e) {}
- if (res.status === 401 && res.headers.get('www-authenticate')) {
- const auth = res.headers.get('www-authenticate')
- .split(/,\s*/)
- .map(s => s.toLowerCase())
- if (auth.indexOf('ipaddress') !== -1) {
- throw new errors.HttpErrorAuthIPAddress(
- method, res, body, opts.spec
- )
- } else if (auth.indexOf('otp') !== -1) {
- throw new errors.HttpErrorAuthOTP(
- method, res, body, opts.spec
- )
- } else {
- throw new errors.HttpErrorAuthUnknown(
- method, res, body, opts.spec
- )
- }
- } else {
- throw new errors.HttpErrorGeneral(
- method, res, body, opts.spec
- )
- }
- })
-}
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/config.js b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/config.js
deleted file mode 100644
index db08c1e470..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/config.js
+++ /dev/null
@@ -1,90 +0,0 @@
-'use strict'
-
-const pkg = require('./package.json')
-const figgyPudding = require('figgy-pudding')
-const silentLog = require('./silentlog.js')
-
-const AUTH_REGEX = /^(?:.*:)?(token|_authToken|username|_password|password|email|always-auth|_auth|otp)$/
-const SCOPE_REGISTRY_REGEX = /@.*:registry$/gi
-module.exports = figgyPudding({
- 'agent': {},
- 'algorithms': {},
- 'body': {},
- 'ca': {},
- 'cache': {},
- 'cert': {},
- 'fetch-retries': {},
- 'fetch-retry-factor': {},
- 'fetch-retry-maxtimeout': {},
- 'fetch-retry-mintimeout': {},
- 'gid': {},
- 'headers': {},
- 'https-proxy': {},
- 'integrity': {},
- 'is-from-ci': 'isFromCI',
- 'isFromCI': {
- default () {
- return (
- process.env['CI'] === 'true' ||
- process.env['TDDIUM'] ||
- process.env['JENKINS_URL'] ||
- process.env['bamboo.buildKey'] ||
- process.env['GO_PIPELINE_NAME']
- )
- }
- },
- 'key': {},
- 'local-address': {},
- 'log': {
- default: silentLog
- },
- 'max-sockets': 'maxsockets',
- 'maxsockets': {
- default: 12
- },
- 'memoize': {},
- 'method': {
- default: 'GET'
- },
- 'no-proxy': {},
- 'noproxy': {},
- 'npm-session': 'npmSession',
- 'npmSession': {},
- 'offline': {},
- 'otp': {},
- 'prefer-offline': {},
- 'prefer-online': {},
- 'projectScope': {},
- 'project-scope': 'projectScope',
- 'Promise': {},
- 'proxy': {},
- 'query': {},
- 'refer': {},
- 'referer': 'refer',
- 'registry': {
- default: 'https://registry.npmjs.org/'
- },
- 'retry': {},
- 'scope': {},
- 'spec': {},
- 'strict-ssl': {},
- 'timeout': {},
- 'uid': {},
- 'user-agent': {
- default: `${
- pkg.name
- }@${
- pkg.version
- }/node@${
- process.version
- }+${
- process.arch
- } (${
- process.platform
- })`
- }
-}, {
- other (key) {
- return key.match(AUTH_REGEX) || key.match(SCOPE_REGISTRY_REGEX)
- }
-})
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/errors.js b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/errors.js
deleted file mode 100644
index 217f46f977..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/errors.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict'
-
-class HttpErrorBase extends Error {
- constructor (method, res, body, spec) {
- super()
- this.headers = res.headers.raw()
- this.statusCode = res.status
- this.code = `E${res.status}`
- this.method = method
- this.uri = res.url
- this.body = body
- }
-}
-module.exports.HttpErrorBase = HttpErrorBase
-
-class HttpErrorGeneral extends HttpErrorBase {
- constructor (method, res, body, spec) {
- super(method, res, body, spec)
- this.message = `${res.status} ${res.statusText} - ${
- this.method.toUpperCase()
- } ${
- this.spec || this.uri
- }${
- (body && body.error) ? ' - ' + body.error : ''
- }`
- Error.captureStackTrace(this, HttpErrorGeneral)
- }
-}
-module.exports.HttpErrorGeneral = HttpErrorGeneral
-
-class HttpErrorAuthOTP extends HttpErrorBase {
- constructor (method, res, body, spec) {
- super(method, res, body, spec)
- this.message = 'OTP required for authentication'
- this.code = 'EOTP'
- Error.captureStackTrace(this, HttpErrorAuthOTP)
- }
-}
-module.exports.HttpErrorAuthOTP = HttpErrorAuthOTP
-
-class HttpErrorAuthIPAddress extends HttpErrorBase {
- constructor (method, res, body, spec) {
- super(method, res, body, spec)
- this.message = 'Login is not allowed from your IP address'
- this.code = 'EAUTHIP'
- Error.captureStackTrace(this, HttpErrorAuthIPAddress)
- }
-}
-module.exports.HttpErrorAuthIPAddress = HttpErrorAuthIPAddress
-
-class HttpErrorAuthUnknown extends HttpErrorBase {
- constructor (method, res, body, spec) {
- super(method, res, body, spec)
- this.message = 'Unable to authenticate, need: ' + res.headers.get('www-authenticate')
- Error.captureStackTrace(this, HttpErrorAuthUnknown)
- }
-}
-module.exports.HttpErrorAuthUnknown = HttpErrorAuthUnknown
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/index.js b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/index.js
deleted file mode 100644
index bb6ddeaee0..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/index.js
+++ /dev/null
@@ -1,160 +0,0 @@
-'use strict'
-
-const Buffer = require('safe-buffer').Buffer
-
-const checkResponse = require('./check-response.js')
-const config = require('./config.js')
-const getAuth = require('./auth.js')
-const fetch = require('make-fetch-happen')
-const npa = require('npm-package-arg')
-const qs = require('querystring')
-const url = require('url')
-
-module.exports = regFetch
-function regFetch (uri, opts) {
- opts = config(opts)
- const registry = (
- (opts.get('spec') && pickRegistry(opts.get('spec'), opts)) ||
- opts.get('registry') ||
- 'https://registry.npmjs.org/'
- )
- uri = url.parse(uri).protocol
- ? uri
- : `${
- registry.trim().replace(/\/?$/g, '')
- }/${
- uri.trim().replace(/^\//, '')
- }`
- // through that takes into account the scope, the prefix of `uri`, etc
- const startTime = Date.now()
- const headers = getHeaders(registry, uri, opts)
- let body = opts.get('body')
- const bodyIsStream = body &&
- typeof body === 'object' &&
- typeof body.pipe === 'function'
- if (body && !bodyIsStream && typeof body !== 'string' && !Buffer.isBuffer(body)) {
- headers['content-type'] = headers['content-type'] || 'application/json'
- body = JSON.stringify(body)
- } else if (body && !headers['content-type']) {
- headers['content-type'] = 'application/octet-stream'
- }
- if (opts.get('query')) {
- let q = opts.get('query')
- if (typeof q === 'string') {
- q = qs.parse(q)
- }
- const parsed = url.parse(uri)
- parsed.search = '?' + qs.stringify(
- parsed.query
- ? Object.assign(qs.parse(parsed.query), q)
- : q
- )
- uri = url.format(parsed)
- }
- return fetch(uri, {
- agent: opts.get('agent'),
- algorithms: opts.get('algorithms'),
- body,
- cache: getCacheMode(opts),
- cacheManager: opts.get('cache'),
- ca: opts.get('ca'),
- cert: opts.get('cert'),
- headers,
- integrity: opts.get('integrity'),
- key: opts.get('key'),
- localAddress: opts.get('local-address'),
- maxSockets: opts.get('maxsockets'),
- memoize: opts.get('memoize'),
- method: opts.get('method') || 'GET',
- noProxy: opts.get('no-proxy') || opts.get('noproxy'),
- Promise: opts.get('Promise'),
- proxy: opts.get('https-proxy') || opts.get('proxy'),
- referer: opts.get('refer'),
- retry: opts.get('retry') || {
- retries: opts.get('fetch-retries'),
- factor: opts.get('fetch-retry-factor'),
- minTimeout: opts.get('fetch-retry-mintimeout'),
- maxTimeout: opts.get('fetch-retry-maxtimeout')
- },
- strictSSL: !!opts.get('strict-ssl'),
- timeout: opts.get('timeout'),
- uid: opts.get('uid'),
- gid: opts.get('gid')
- }).then(res => checkResponse(
- opts.get('method') || 'GET', res, registry, startTime, opts
- ))
-}
-
-module.exports.json = fetchJSON
-function fetchJSON (uri, opts) {
- return regFetch(uri, opts).then(res => res.json())
-}
-
-module.exports.pickRegistry = pickRegistry
-function pickRegistry (spec, opts) {
- spec = npa(spec)
- opts = config(opts)
- let registry = spec.scope &&
- opts.get(spec.scope.replace(/^@?/, '@') + ':registry')
-
- if (!registry && opts.get('scope')) {
- registry = opts.get(
- opts.get('scope').replace(/^@?/, '@') + ':registry'
- )
- }
-
- if (!registry) {
- registry = opts.get('registry') || 'https://registry.npmjs.org/'
- }
-
- return registry
-}
-
-function getCacheMode (opts) {
- return opts.get('offline')
- ? 'only-if-cached'
- : opts.get('prefer-offline')
- ? 'force-cache'
- : opts.get('prefer-online')
- ? 'no-cache'
- : 'default'
-}
-
-function getHeaders (registry, uri, opts) {
- const headers = Object.assign({
- 'npm-in-ci': !!(
- opts.get('is-from-ci') ||
- process.env['CI'] === 'true' ||
- process.env['TDDIUM'] ||
- process.env['JENKINS_URL'] ||
- process.env['bamboo.buildKey'] ||
- process.env['GO_PIPELINE_NAME']
- ),
- 'npm-scope': opts.get('project-scope'),
- 'npm-session': opts.get('npm-session'),
- 'user-agent': opts.get('user-agent'),
- 'referer': opts.get('refer')
- }, opts.get('headers'))
-
- const auth = getAuth(registry, opts)
- // If a tarball is hosted on a different place than the manifest, only send
- // credentials on `alwaysAuth`
- const shouldAuth = (
- auth.alwaysAuth ||
- url.parse(uri).host === url.parse(registry).host
- )
- if (shouldAuth && auth.token) {
- headers.authorization = `Bearer ${auth.token}`
- } else if (shouldAuth && auth.username && auth.password) {
- const encoded = Buffer.from(
- `${auth.username}:${auth.password}`, 'utf8'
- ).toString('base64')
- headers.authorization = `Basic ${encoded}`
- } else if (shouldAuth && auth._auth) {
- headers.authorization = `Basic ${auth._auth}`
- }
- if (shouldAuth && auth.otp) {
- headers['npm-otp'] = auth.otp
- }
- return headers
-}
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/package.json b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/package.json
deleted file mode 100644
index f17636c6cf..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/package.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
- "_from": "npm-registry-fetch@^3.0.0",
- "_id": "npm-registry-fetch@3.1.1",
- "_inBundle": false,
- "_integrity": "sha512-xBobENeenvjIG8PgQ1dy77AXTI25IbYhmA3DusMIfw/4EL5BaQ5e1V9trkPrqHvyjR3/T0cnH6o0Wt/IzcI5Ag==",
- "_location": "/libnpmhook/npm-registry-fetch",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "npm-registry-fetch@^3.0.0",
- "name": "npm-registry-fetch",
- "escapedName": "npm-registry-fetch",
- "rawSpec": "^3.0.0",
- "saveSpec": null,
- "fetchSpec": "^3.0.0"
- },
- "_requiredBy": [
- "/libnpmhook"
- ],
- "_resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.1.1.tgz",
- "_shasum": "e96bae698afdd45d4a01aca29e881fc0bc55206c",
- "_spec": "npm-registry-fetch@^3.0.0",
- "_where": "/Users/rebecca/code/npm/node_modules/libnpmhook",
- "author": {
- "name": "Kat Marchán",
- "email": "kzm@sykosomatic.org"
- },
- "bugs": {
- "url": "https://github.com/npm/registry-fetch/issues"
- },
- "bundleDependencies": false,
- "config": {
- "nyc": {
- "exclude": [
- "node_modules/**",
- "test/**"
- ]
- }
- },
- "dependencies": {
- "bluebird": "^3.5.1",
- "figgy-pudding": "^3.1.0",
- "lru-cache": "^4.1.2",
- "make-fetch-happen": "^4.0.0",
- "npm-package-arg": "^6.0.0"
- },
- "deprecated": false,
- "description": "Fetch-based http client for use with npm registry APIs",
- "devDependencies": {
- "cacache": "^11.0.0",
- "mkdirp": "^0.5.1",
- "nock": "^9.2.3",
- "npmlog": "^4.1.2",
- "rimraf": "^2.6.2",
- "ssri": "^6.0.0",
- "standard": "^11.0.1",
- "standard-version": "^4.2.0",
- "tap": "^11.1.3",
- "weallbehave": "^1.2.0",
- "weallcontribute": "^1.0.8"
- },
- "files": [
- "*.js",
- "lib"
- ],
- "homepage": "https://github.com/npm/registry-fetch#readme",
- "keywords": [
- "npm",
- "registry",
- "fetch"
- ],
- "license": "ISC",
- "main": "index.js",
- "name": "npm-registry-fetch",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/npm/registry-fetch.git"
- },
- "scripts": {
- "postrelease": "npm publish && git push --follow-tags",
- "prerelease": "npm t",
- "pretest": "standard",
- "release": "standard-version -s",
- "test": "tap -J --coverage test/*.js",
- "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
- "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
- },
- "version": "3.1.1"
-}
diff --git a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/silentlog.js b/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/silentlog.js
deleted file mode 100644
index 886c5d55b2..0000000000
--- a/deps/npm/node_modules/libnpmhook/node_modules/npm-registry-fetch/silentlog.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-const noop = Function.prototype
-module.exports = {
- error: noop,
- warn: noop,
- notice: noop,
- info: noop,
- verbose: noop,
- silly: noop,
- http: noop,
- pause: noop,
- resume: noop
-}
diff --git a/deps/npm/node_modules/libnpmhook/package.json b/deps/npm/node_modules/libnpmhook/package.json
index 2f06e7a6b5..ebcc752a3c 100644
--- a/deps/npm/node_modules/libnpmhook/package.json
+++ b/deps/npm/node_modules/libnpmhook/package.json
@@ -1,38 +1,28 @@
{
- "_args": [
- [
- "libnpmhook@4.0.1",
- "/Users/rebecca/code/npm"
- ]
- ],
- "_from": "libnpmhook@4.0.1",
- "_id": "libnpmhook@4.0.1",
+ "_from": "libnpmhook@5.0.2",
+ "_id": "libnpmhook@5.0.2",
"_inBundle": false,
- "_integrity": "sha512-3qqpfqvBD1712WA6iGe0stkG40WwAeoWcujA6BlC0Be1JArQbqwabnEnZ0CRcD05Tf1fPYJYdCbSfcfedEJCOg==",
+ "_integrity": "sha512-vLenmdFWhRfnnZiNFPNMog6CK7Ujofy2TWiM2CrpZUjBRIhHkJeDaAbJdYCT6W4lcHtyrJR8yXW8KFyq6UAp1g==",
"_location": "/libnpmhook",
- "_phantomChildren": {
- "bluebird": "3.5.1",
- "figgy-pudding": "3.1.0",
- "lru-cache": "4.1.3",
- "make-fetch-happen": "4.0.1",
- "npm-package-arg": "6.1.0"
- },
+ "_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
- "raw": "libnpmhook@4.0.1",
+ "raw": "libnpmhook@5.0.2",
"name": "libnpmhook",
"escapedName": "libnpmhook",
- "rawSpec": "4.0.1",
+ "rawSpec": "5.0.2",
"saveSpec": null,
- "fetchSpec": "4.0.1"
+ "fetchSpec": "5.0.2"
},
"_requiredBy": [
+ "#USER",
"/"
],
- "_resolved": "https://registry.npmjs.org/libnpmhook/-/libnpmhook-4.0.1.tgz",
- "_spec": "4.0.1",
- "_where": "/Users/rebecca/code/npm",
+ "_resolved": "https://registry.npmjs.org/libnpmhook/-/libnpmhook-5.0.2.tgz",
+ "_shasum": "d12817b0fb893f36f1d5be20017f2aea25825d94",
+ "_spec": "libnpmhook@5.0.2",
+ "_where": "/Users/aeschright/code/cli",
"author": {
"name": "Kat Marchán",
"email": "kzm@sykosomatic.org"
@@ -40,16 +30,20 @@
"bugs": {
"url": "https://github.com/npm/libnpmhook/issues"
},
+ "bundleDependencies": false,
"dependencies": {
- "figgy-pudding": "^3.1.0",
- "npm-registry-fetch": "^3.0.0"
+ "aproba": "^2.0.0",
+ "figgy-pudding": "^3.4.1",
+ "get-stream": "^4.0.0",
+ "npm-registry-fetch": "^3.8.0"
},
+ "deprecated": false,
"description": "programmatic API for managing npm registry hooks",
"devDependencies": {
- "nock": "^9.2.3",
+ "nock": "^9.6.1",
"standard": "^11.0.1",
- "standard-version": "^4.3.0",
- "tap": "^11.1.3",
+ "standard-version": "^4.4.0",
+ "tap": "^12.0.1",
"weallbehave": "^1.2.0",
"weallcontribute": "^1.0.8"
},
@@ -76,9 +70,9 @@
"prerelease": "npm t",
"pretest": "standard",
"release": "standard-version -s",
- "test": "tap -J --coverage test/*.js",
+ "test": "tap -J --100 --coverage test/*.js",
"update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
"update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
},
- "version": "4.0.1"
+ "version": "5.0.2"
}