summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src')
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/blob.js109
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/body.js411
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/common.js92
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/fetch-error.js35
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/headers.js296
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/index.js214
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/request.js174
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/response.js71
8 files changed, 0 insertions, 1402 deletions
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/blob.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/blob.js
deleted file mode 100644
index 0a4462abd6..0000000000
--- a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/blob.js
+++ /dev/null
@@ -1,109 +0,0 @@
-'use strict'
-// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
-// (MIT licensed)
-
-const Buffer = require('safe-buffer').Buffer
-
-const BUFFER = Symbol('buffer')
-const TYPE = Symbol('type')
-const CLOSED = Symbol('closed')
-
-class Blob {
- constructor () {
- Object.defineProperty(this, Symbol.toStringTag, {
- value: 'Blob',
- writable: false,
- enumerable: false,
- configurable: true
- })
-
- this[CLOSED] = false
- this[TYPE] = ''
-
- const blobParts = arguments[0]
- const options = arguments[1]
-
- const buffers = []
-
- if (blobParts) {
- const a = blobParts
- const length = Number(a.length)
- for (let i = 0; i < length; i++) {
- const element = a[i]
- let buffer
- if (Buffer.isBuffer(element)) {
- buffer = element
- } else if (ArrayBuffer.isView(element)) {
- buffer = Buffer.from(new Uint8Array(element.buffer, element.byteOffset, element.byteLength))
- } else if (element instanceof ArrayBuffer) {
- buffer = Buffer.from(new Uint8Array(element))
- } else if (element instanceof Blob) {
- buffer = element[BUFFER]
- } else {
- buffer = Buffer.from(typeof element === 'string' ? element : String(element))
- }
- buffers.push(buffer)
- }
- }
-
- this[BUFFER] = Buffer.concat(buffers)
-
- let type = options && options.type !== undefined && String(options.type).toLowerCase()
- if (type && !/[^\u0020-\u007E]/.test(type)) {
- this[TYPE] = type
- }
- }
- get size () {
- return this[CLOSED] ? 0 : this[BUFFER].length
- }
- get type () {
- return this[TYPE]
- }
- get isClosed () {
- return this[CLOSED]
- }
- slice () {
- const size = this.size
-
- const start = arguments[0]
- const end = arguments[1]
- let relativeStart, relativeEnd
- if (start === undefined) {
- relativeStart = 0
- } else if (start < 0) {
- relativeStart = Math.max(size + start, 0)
- } else {
- relativeStart = Math.min(start, size)
- }
- if (end === undefined) {
- relativeEnd = size
- } else if (end < 0) {
- relativeEnd = Math.max(size + end, 0)
- } else {
- relativeEnd = Math.min(end, size)
- }
- const span = Math.max(relativeEnd - relativeStart, 0)
-
- const buffer = this[BUFFER]
- const slicedBuffer = buffer.slice(
- relativeStart,
- relativeStart + span
- )
- const blob = new Blob([], { type: arguments[2] })
- blob[BUFFER] = slicedBuffer
- blob[CLOSED] = this[CLOSED]
- return blob
- }
- close () {
- this[CLOSED] = true
- }
-}
-exports = module.exports = Blob
-exports.BUFFER = BUFFER
-
-Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
- value: 'BlobPrototype',
- writable: false,
- enumerable: false,
- configurable: true
-})
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/body.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/body.js
deleted file mode 100644
index 9e7481857a..0000000000
--- a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/body.js
+++ /dev/null
@@ -1,411 +0,0 @@
-'use strict'
-
-/**
- * body.js
- *
- * Body interface provides common methods for Request and Response
- */
-
-const Buffer = require('safe-buffer').Buffer
-
-const Blob = require('./blob.js')
-const BUFFER = Blob.BUFFER
-const convert = require('encoding').convert
-const parseJson = require('json-parse-better-errors')
-const FetchError = require('./fetch-error.js')
-const Stream = require('stream')
-
-const PassThrough = Stream.PassThrough
-const DISTURBED = Symbol('disturbed')
-
-/**
- * Body class
- *
- * Cannot use ES6 class because Body must be called with .call().
- *
- * @param Stream body Readable stream
- * @param Object opts Response options
- * @return Void
- */
-exports = module.exports = Body
-
-function Body (body, opts) {
- if (!opts) opts = {}
- const size = opts.size == null ? 0 : opts.size
- const timeout = opts.timeout == null ? 0 : opts.timeout
- if (body == null) {
- // body is undefined or null
- body = null
- } else if (typeof body === 'string') {
- // body is string
- } else if (body instanceof Blob) {
- // body is blob
- } else if (Buffer.isBuffer(body)) {
- // body is buffer
- } else if (body instanceof Stream) {
- // body is stream
- } else {
- // none of the above
- // coerce to string
- body = String(body)
- }
- this.body = body
- this[DISTURBED] = false
- this.size = size
- this.timeout = timeout
-}
-
-Body.prototype = {
- get bodyUsed () {
- return this[DISTURBED]
- },
-
- /**
- * Decode response as ArrayBuffer
- *
- * @return Promise
- */
- arrayBuffer () {
- return consumeBody.call(this).then(buf => buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength))
- },
-
- /**
- * Return raw response as Blob
- *
- * @return Promise
- */
- blob () {
- let ct = (this.headers && this.headers.get('content-type')) || ''
- return consumeBody.call(this).then(buf => Object.assign(
- // Prevent copying
- new Blob([], {
- type: ct.toLowerCase()
- }),
- {
- [BUFFER]: buf
- }
- ))
- },
-
- /**
- * Decode response as json
- *
- * @return Promise
- */
- json () {
- return consumeBody.call(this).then(buffer => parseJson(buffer.toString()))
- },
-
- /**
- * Decode response as text
- *
- * @return Promise
- */
- text () {
- return consumeBody.call(this).then(buffer => buffer.toString())
- },
-
- /**
- * Decode response as buffer (non-spec api)
- *
- * @return Promise
- */
- buffer () {
- return consumeBody.call(this)
- },
-
- /**
- * Decode response as text, while automatically detecting the encoding and
- * trying to decode to UTF-8 (non-spec api)
- *
- * @return Promise
- */
- textConverted () {
- return consumeBody.call(this).then(buffer => convertBody(buffer, this.headers))
- }
-
-}
-
-Body.mixIn = function (proto) {
- for (const name of Object.getOwnPropertyNames(Body.prototype)) {
- // istanbul ignore else: future proof
- if (!(name in proto)) {
- const desc = Object.getOwnPropertyDescriptor(Body.prototype, name)
- Object.defineProperty(proto, name, desc)
- }
- }
-}
-
-/**
- * Decode buffers into utf-8 string
- *
- * @return Promise
- */
-function consumeBody (body) {
- if (this[DISTURBED]) {
- return Body.Promise.reject(new Error(`body used already for: ${this.url}`))
- }
-
- this[DISTURBED] = true
-
- // body is null
- if (this.body === null) {
- return Body.Promise.resolve(Buffer.alloc(0))
- }
-
- // body is string
- if (typeof this.body === 'string') {
- return Body.Promise.resolve(Buffer.from(this.body))
- }
-
- // body is blob
- if (this.body instanceof Blob) {
- return Body.Promise.resolve(this.body[BUFFER])
- }
-
- // body is buffer
- if (Buffer.isBuffer(this.body)) {
- return Body.Promise.resolve(this.body)
- }
-
- // istanbul ignore if: should never happen
- if (!(this.body instanceof Stream)) {
- return Body.Promise.resolve(Buffer.alloc(0))
- }
-
- // body is stream
- // get ready to actually consume the body
- let accum = []
- let accumBytes = 0
- let abort = false
-
- return new Body.Promise((resolve, reject) => {
- let resTimeout
-
- // allow timeout on slow response body
- if (this.timeout) {
- resTimeout = setTimeout(() => {
- abort = true
- reject(new FetchError(`Response timeout while trying to fetch ${this.url} (over ${this.timeout}ms)`, 'body-timeout'))
- }, this.timeout)
- }
-
- // handle stream error, such as incorrect content-encoding
- this.body.on('error', err => {
- reject(new FetchError(`Invalid response body while trying to fetch ${this.url}: ${err.message}`, 'system', err))
- })
-
- this.body.on('data', chunk => {
- if (abort || chunk === null) {
- return
- }
-
- if (this.size && accumBytes + chunk.length > this.size) {
- abort = true
- reject(new FetchError(`content size at ${this.url} over limit: ${this.size}`, 'max-size'))
- return
- }
-
- accumBytes += chunk.length
- accum.push(chunk)
- })
-
- this.body.on('end', () => {
- if (abort) {
- return
- }
-
- clearTimeout(resTimeout)
- resolve(Buffer.concat(accum))
- })
- })
-}
-
-/**
- * Detect buffer encoding and convert to target encoding
- * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
- *
- * @param Buffer buffer Incoming buffer
- * @param String encoding Target encoding
- * @return String
- */
-function convertBody (buffer, headers) {
- const ct = headers.get('content-type')
- let charset = 'utf-8'
- let res, str
-
- // header
- if (ct) {
- res = /charset=([^;]*)/i.exec(ct)
- }
-
- // no charset in content type, peek at response body for at most 1024 bytes
- str = buffer.slice(0, 1024).toString()
-
- // html5
- if (!res && str) {
- res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str)
- }
-
- // html4
- if (!res && str) {
- res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str)
-
- if (res) {
- res = /charset=(.*)/i.exec(res.pop())
- }
- }
-
- // xml
- if (!res && str) {
- res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str)
- }
-
- // found charset
- if (res) {
- charset = res.pop()
-
- // prevent decode issues when sites use incorrect encoding
- // ref: https://hsivonen.fi/encoding-menu/
- if (charset === 'gb2312' || charset === 'gbk') {
- charset = 'gb18030'
- }
- }
-
- // turn raw buffers into a single utf-8 buffer
- return convert(
- buffer
- , 'UTF-8'
- , charset
- ).toString()
-}
-
-/**
- * Clone body given Res/Req instance
- *
- * @param Mixed instance Response or Request instance
- * @return Mixed
- */
-exports.clone = function clone (instance) {
- let p1, p2
- let body = instance.body
-
- // don't allow cloning a used body
- if (instance.bodyUsed) {
- throw new Error('cannot clone body after it is used')
- }
-
- // check that body is a stream and not form-data object
- // note: we can't clone the form-data object without having it as a dependency
- if ((body instanceof Stream) && (typeof body.getBoundary !== 'function')) {
- // tee instance body
- p1 = new PassThrough()
- p2 = new PassThrough()
- body.pipe(p1)
- body.pipe(p2)
- // set instance body to teed body and return the other teed body
- instance.body = p1
- body = p2
- }
-
- return body
-}
-
-/**
- * Performs the operation "extract a `Content-Type` value from |object|" as
- * specified in the specification:
- * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
- *
- * This function assumes that instance.body is present and non-null.
- *
- * @param Mixed instance Response or Request instance
- */
-exports.extractContentType = function extractContentType (instance) {
- const body = instance.body
-
- // istanbul ignore if: Currently, because of a guard in Request, body
- // can never be null. Included here for completeness.
- if (body === null) {
- // body is null
- return null
- } else if (typeof body === 'string') {
- // body is string
- return 'text/plain;charset=UTF-8'
- } else if (body instanceof Blob) {
- // body is blob
- return body.type || null
- } else if (Buffer.isBuffer(body)) {
- // body is buffer
- return null
- } else if (typeof body.getBoundary === 'function') {
- // detect form data input from form-data module
- return `multipart/form-data;boundary=${body.getBoundary()}`
- } else {
- // body is stream
- // can't really do much about this
- return null
- }
-}
-
-exports.getTotalBytes = function getTotalBytes (instance) {
- const body = instance.body
-
- // istanbul ignore if: included for completion
- if (body === null) {
- // body is null
- return 0
- } else if (typeof body === 'string') {
- // body is string
- return Buffer.byteLength(body)
- } else if (body instanceof Blob) {
- // body is blob
- return body.size
- } else if (Buffer.isBuffer(body)) {
- // body is buffer
- return body.length
- } else if (body && typeof body.getLengthSync === 'function') {
- // detect form data input from form-data module
- if ((
- // 1.x
- body._lengthRetrievers &&
- body._lengthRetrievers.length === 0
- ) || (
- // 2.x
- body.hasKnownLength && body.hasKnownLength()
- )) {
- return body.getLengthSync()
- }
- return null
- } else {
- // body is stream
- // can't really do much about this
- return null
- }
-}
-
-exports.writeToStream = function writeToStream (dest, instance) {
- const body = instance.body
-
- if (body === null) {
- // body is null
- dest.end()
- } else if (typeof body === 'string') {
- // body is string
- dest.write(body)
- dest.end()
- } else if (body instanceof Blob) {
- // body is blob
- dest.write(body[BUFFER])
- dest.end()
- } else if (Buffer.isBuffer(body)) {
- // body is buffer
- dest.write(body)
- dest.end()
- } else {
- // body is stream
- body.pipe(dest)
- }
-}
-
-// expose Promise
-Body.Promise = global.Promise
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/common.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/common.js
deleted file mode 100644
index 47b57c794c..0000000000
--- a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/common.js
+++ /dev/null
@@ -1,92 +0,0 @@
-'use strict'
-/**
- * A set of utilities borrowed from Node.js' _http_common.js
- */
-
-/**
- * Verifies that the given val is a valid HTTP token
- * per the rules defined in RFC 7230
- * See https://tools.ietf.org/html/rfc7230#section-3.2.6
- *
- * Allowed characters in an HTTP token:
- * ^_`a-z 94-122
- * A-Z 65-90
- * - 45
- * 0-9 48-57
- * ! 33
- * #$%&' 35-39
- * *+ 42-43
- * . 46
- * | 124
- * ~ 126
- *
- * This implementation of checkIsHttpToken() loops over the string instead of
- * using a regular expression since the former is up to 180% faster with v8 4.9
- * depending on the string length (the shorter the string, the larger the
- * performance difference)
- *
- * Additionally, checkIsHttpToken() is currently designed to be inlinable by v8,
- * so take care when making changes to the implementation so that the source
- * code size does not exceed v8's default max_inlined_source_size setting.
- **/
-/* istanbul ignore next */
-function isValidTokenChar (ch) {
- if (ch >= 94 && ch <= 122) { return true }
- if (ch >= 65 && ch <= 90) { return true }
- if (ch === 45) { return true }
- if (ch >= 48 && ch <= 57) { return true }
- if (ch === 34 || ch === 40 || ch === 41 || ch === 44) { return false }
- if (ch >= 33 && ch <= 46) { return true }
- if (ch === 124 || ch === 126) { return true }
- return false
-}
-/* istanbul ignore next */
-function checkIsHttpToken (val) {
- if (typeof val !== 'string' || val.length === 0) { return false }
- if (!isValidTokenChar(val.charCodeAt(0))) { return false }
- const len = val.length
- if (len > 1) {
- if (!isValidTokenChar(val.charCodeAt(1))) { return false }
- if (len > 2) {
- if (!isValidTokenChar(val.charCodeAt(2))) { return false }
- if (len > 3) {
- if (!isValidTokenChar(val.charCodeAt(3))) { return false }
- for (var i = 4; i < len; i++) {
- if (!isValidTokenChar(val.charCodeAt(i))) { return false }
- }
- }
- }
- }
- return true
-}
-exports.checkIsHttpToken = checkIsHttpToken
-
-/**
- * True if val contains an invalid field-vchar
- * field-value = *( field-content / obs-fold )
- * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
- * field-vchar = VCHAR / obs-text
- *
- * checkInvalidHeaderChar() is currently designed to be inlinable by v8,
- * so take care when making changes to the implementation so that the source
- * code size does not exceed v8's default max_inlined_source_size setting.
- **/
-/* istanbul ignore next */
-function checkInvalidHeaderChar (val) {
- val += ''
- if (val.length < 1) { return false }
- var c = val.charCodeAt(0)
- if ((c <= 31 && c !== 9) || c > 255 || c === 127) { return true }
- if (val.length < 2) { return false }
- c = val.charCodeAt(1)
- if ((c <= 31 && c !== 9) || c > 255 || c === 127) { return true }
- if (val.length < 3) { return false }
- c = val.charCodeAt(2)
- if ((c <= 31 && c !== 9) || c > 255 || c === 127) { return true }
- for (var i = 3; i < val.length; ++i) {
- c = val.charCodeAt(i)
- if ((c <= 31 && c !== 9) || c > 255 || c === 127) { return true }
- }
- return false
-}
-exports.checkInvalidHeaderChar = checkInvalidHeaderChar
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/fetch-error.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/fetch-error.js
deleted file mode 100644
index 338e1e2729..0000000000
--- a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/fetch-error.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict'
-
-/**
- * fetch-error.js
- *
- * FetchError interface for operational errors
- */
-
-/**
- * Create FetchError instance
- *
- * @param String message Error message for human
- * @param String type Error type for machine
- * @param String systemError For Node.js system error
- * @return FetchError
- */
-module.exports = FetchError
-function FetchError (message, type, systemError) {
- Error.call(this, message)
-
- this.message = message
- this.type = type
-
- // when err.type is `system`, err.code contains system error code
- if (systemError) {
- this.code = this.errno = systemError.code
- }
-
- // hide custom error implementation details from end-users
- Error.captureStackTrace(this, this.constructor)
-}
-
-FetchError.prototype = Object.create(Error.prototype)
-FetchError.prototype.constructor = FetchError
-FetchError.prototype.name = 'FetchError'
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/headers.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/headers.js
deleted file mode 100644
index 28f71cd9b8..0000000000
--- a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/headers.js
+++ /dev/null
@@ -1,296 +0,0 @@
-'use strict'
-
-/**
- * headers.js
- *
- * Headers class offers convenient helpers
- */
-
-const common = require('./common.js')
-const checkInvalidHeaderChar = common.checkInvalidHeaderChar
-const checkIsHttpToken = common.checkIsHttpToken
-
-function sanitizeName (name) {
- name += ''
- if (!checkIsHttpToken(name)) {
- throw new TypeError(`${name} is not a legal HTTP header name`)
- }
- return name.toLowerCase()
-}
-
-function sanitizeValue (value) {
- value += ''
- if (checkInvalidHeaderChar(value)) {
- throw new TypeError(`${value} is not a legal HTTP header value`)
- }
- return value
-}
-
-const MAP = Symbol('map')
-class Headers {
- /**
- * Headers class
- *
- * @param Object headers Response headers
- * @return Void
- */
- constructor (init) {
- this[MAP] = Object.create(null)
-
- if (init instanceof Headers) {
- const rawHeaders = init.raw()
- const headerNames = Object.keys(rawHeaders)
-
- for (const headerName of headerNames) {
- for (const value of rawHeaders[headerName]) {
- this.append(headerName, value)
- }
- }
-
- return
- }
-
- // We don't worry about converting prop to ByteString here as append()
- // will handle it.
- if (init == null) {
- // no op
- } else if (typeof init === 'object') {
- const method = init[Symbol.iterator]
- if (method != null) {
- if (typeof method !== 'function') {
- throw new TypeError('Header pairs must be iterable')
- }
-
- // sequence<sequence<ByteString>>
- // Note: per spec we have to first exhaust the lists then process them
- const pairs = []
- for (const pair of init) {
- if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
- throw new TypeError('Each header pair must be iterable')
- }
- pairs.push(Array.from(pair))
- }
-
- for (const pair of pairs) {
- if (pair.length !== 2) {
- throw new TypeError('Each header pair must be a name/value tuple')
- }
- this.append(pair[0], pair[1])
- }
- } else {
- // record<ByteString, ByteString>
- for (const key of Object.keys(init)) {
- const value = init[key]
- this.append(key, value)
- }
- }
- } else {
- throw new TypeError('Provided initializer must be an object')
- }
-
- Object.defineProperty(this, Symbol.toStringTag, {
- value: 'Headers',
- writable: false,
- enumerable: false,
- configurable: true
- })
- }
-
- /**
- * Return first header value given name
- *
- * @param String name Header name
- * @return Mixed
- */
- get (name) {
- const list = this[MAP][sanitizeName(name)]
- if (!list) {
- return null
- }
-
- return list.join(', ')
- }
-
- /**
- * Iterate over all headers
- *
- * @param Function callback Executed for each item with parameters (value, name, thisArg)
- * @param Boolean thisArg `this` context for callback function
- * @return Void
- */
- forEach (callback, thisArg) {
- let pairs = getHeaderPairs(this)
- let i = 0
- while (i < pairs.length) {
- const name = pairs[i][0]
- const value = pairs[i][1]
- callback.call(thisArg, value, name, this)
- pairs = getHeaderPairs(this)
- i++
- }
- }
-
- /**
- * Overwrite header values given name
- *
- * @param String name Header name
- * @param String value Header value
- * @return Void
- */
- set (name, value) {
- this[MAP][sanitizeName(name)] = [sanitizeValue(value)]
- }
-
- /**
- * Append a value onto existing header
- *
- * @param String name Header name
- * @param String value Header value
- * @return Void
- */
- append (name, value) {
- if (!this.has(name)) {
- this.set(name, value)
- return
- }
-
- this[MAP][sanitizeName(name)].push(sanitizeValue(value))
- }
-
- /**
- * Check for header name existence
- *
- * @param String name Header name
- * @return Boolean
- */
- has (name) {
- return !!this[MAP][sanitizeName(name)]
- }
-
- /**
- * Delete all header values given name
- *
- * @param String name Header name
- * @return Void
- */
- delete (name) {
- delete this[MAP][sanitizeName(name)]
- };
-
- /**
- * Return raw headers (non-spec api)
- *
- * @return Object
- */
- raw () {
- return this[MAP]
- }
-
- /**
- * Get an iterator on keys.
- *
- * @return Iterator
- */
- keys () {
- return createHeadersIterator(this, 'key')
- }
-
- /**
- * Get an iterator on values.
- *
- * @return Iterator
- */
- values () {
- return createHeadersIterator(this, 'value')
- }
-
- /**
- * Get an iterator on entries.
- *
- * This is the default iterator of the Headers object.
- *
- * @return Iterator
- */
- [Symbol.iterator] () {
- return createHeadersIterator(this, 'key+value')
- }
-}
-Headers.prototype.entries = Headers.prototype[Symbol.iterator]
-
-Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
- value: 'HeadersPrototype',
- writable: false,
- enumerable: false,
- configurable: true
-})
-
-function getHeaderPairs (headers, kind) {
- const keys = Object.keys(headers[MAP]).sort()
- return keys.map(
- kind === 'key'
- ? k => [k]
- : k => [k, headers.get(k)]
- )
-}
-
-const INTERNAL = Symbol('internal')
-
-function createHeadersIterator (target, kind) {
- const iterator = Object.create(HeadersIteratorPrototype)
- iterator[INTERNAL] = {
- target,
- kind,
- index: 0
- }
- return iterator
-}
-
-const HeadersIteratorPrototype = Object.setPrototypeOf({
- next () {
- // istanbul ignore if
- if (!this ||
- Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
- throw new TypeError('Value of `this` is not a HeadersIterator')
- }
-
- const target = this[INTERNAL].target
- const kind = this[INTERNAL].kind
- const index = this[INTERNAL].index
- const values = getHeaderPairs(target, kind)
- const len = values.length
- if (index >= len) {
- return {
- value: undefined,
- done: true
- }
- }
-
- const pair = values[index]
- this[INTERNAL].index = index + 1
-
- let result
- if (kind === 'key') {
- result = pair[0]
- } else if (kind === 'value') {
- result = pair[1]
- } else {
- result = pair
- }
-
- return {
- value: result,
- done: false
- }
- }
-}, Object.getPrototypeOf(
- Object.getPrototypeOf([][Symbol.iterator]())
-))
-
-Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
- value: 'HeadersIterator',
- writable: false,
- enumerable: false,
- configurable: true
-})
-
-module.exports = Headers
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/index.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/index.js
deleted file mode 100644
index b2cf80f9ec..0000000000
--- a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/index.js
+++ /dev/null
@@ -1,214 +0,0 @@
-'use strict'
-
-/**
- * index.js
- *
- * a request API compatible with window.fetch
- */
-
-const url = require('url')
-const http = require('http')
-const https = require('https')
-const zlib = require('zlib')
-const PassThrough = require('stream').PassThrough
-
-const Body = require('./body.js')
-const writeToStream = Body.writeToStream
-const Response = require('./response')
-const Headers = require('./headers')
-const Request = require('./request')
-const getNodeRequestOptions = Request.getNodeRequestOptions
-const FetchError = require('./fetch-error')
-const isURL = /^https?:/
-
-/**
- * Fetch function
- *
- * @param Mixed url Absolute url or Request instance
- * @param Object opts Fetch options
- * @return Promise
- */
-exports = module.exports = fetch
-function fetch (uri, opts) {
- // allow custom promise
- if (!fetch.Promise) {
- throw new Error('native promise missing, set fetch.Promise to your favorite alternative')
- }
-
- Body.Promise = fetch.Promise
-
- // wrap http.request into fetch
- return new fetch.Promise((resolve, reject) => {
- // build request object
- const request = new Request(uri, opts)
- const options = getNodeRequestOptions(request)
-
- const send = (options.protocol === 'https:' ? https : http).request
-
- // http.request only support string as host header, this hack make custom host header possible
- if (options.headers.host) {
- options.headers.host = options.headers.host[0]
- }
-
- // send request
- const req = send(options)
- let reqTimeout
-
- if (request.timeout) {
- req.once('socket', socket => {
- reqTimeout = setTimeout(() => {
- req.abort()
- reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'))
- }, request.timeout)
- })
- }
-
- req.on('error', err => {
- clearTimeout(reqTimeout)
- reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err))
- })
-
- req.on('response', res => {
- clearTimeout(reqTimeout)
-
- // handle redirect
- if (fetch.isRedirect(res.statusCode) && request.redirect !== 'manual') {
- if (request.redirect === 'error') {
- reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect'))
- return
- }
-
- if (request.counter >= request.follow) {
- reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'))
- return
- }
-
- if (!res.headers.location) {
- reject(new FetchError(`redirect location header missing at: ${request.url}`, 'invalid-redirect'))
- return
- }
- // Remove authorization if changing hostnames (but not if just
- // changing ports or protocols). This matches the behavior of request:
- // https://github.com/request/request/blob/b12a6245/lib/redirect.js#L134-L138
- const resolvedUrl = url.resolve(request.url, res.headers.location)
- let redirectURL = ''
- if (!isURL.test(res.headers.location)) {
- redirectURL = url.parse(resolvedUrl)
- } else {
- redirectURL = url.parse(res.headers.location)
- }
- if (url.parse(request.url).hostname !== redirectURL.hostname) {
- request.headers.delete('authorization')
- }
-
- // per fetch spec, for POST request with 301/302 response, or any request with 303 response, use GET when following redirect
- if (res.statusCode === 303 ||
- ((res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST')) {
- request.method = 'GET'
- request.body = null
- request.headers.delete('content-length')
- }
-
- request.counter++
-
- resolve(fetch(resolvedUrl, request))
- return
- }
-
- // normalize location header for manual redirect mode
- const headers = new Headers()
- for (const name of Object.keys(res.headers)) {
- if (Array.isArray(res.headers[name])) {
- for (const val of res.headers[name]) {
- headers.append(name, val)
- }
- } else {
- headers.append(name, res.headers[name])
- }
- }
- if (request.redirect === 'manual' && headers.has('location')) {
- headers.set('location', url.resolve(request.url, headers.get('location')))
- }
-
- // prepare response
- let body = res.pipe(new PassThrough())
- const responseOptions = {
- url: request.url,
- status: res.statusCode,
- statusText: res.statusMessage,
- headers: headers,
- size: request.size,
- timeout: request.timeout
- }
-
- // HTTP-network fetch step 16.1.2
- const codings = headers.get('Content-Encoding')
-
- // HTTP-network fetch step 16.1.3: handle content codings
-
- // in following scenarios we ignore compression support
- // 1. compression support is disabled
- // 2. HEAD request
- // 3. no Content-Encoding header
- // 4. no content response (204)
- // 5. content not modified response (304)
- if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
- resolve(new Response(body, responseOptions))
- return
- }
-
- // Be less strict when decoding compressed responses, since sometimes
- // servers send slightly invalid responses that are still accepted
- // by common browsers.
- // Always using Z_SYNC_FLUSH is what cURL does.
- const zlibOptions = {
- flush: zlib.Z_SYNC_FLUSH,
- finishFlush: zlib.Z_SYNC_FLUSH
- }
-
- // for gzip
- if (codings === 'gzip' || codings === 'x-gzip') {
- body = body.pipe(zlib.createGunzip(zlibOptions))
- resolve(new Response(body, responseOptions))
- return
- }
-
- // for deflate
- if (codings === 'deflate' || codings === 'x-deflate') {
- // handle the infamous raw deflate response from old servers
- // a hack for old IIS and Apache servers
- const raw = res.pipe(new PassThrough())
- raw.once('data', chunk => {
- // see http://stackoverflow.com/questions/37519828
- if ((chunk[0] & 0x0F) === 0x08) {
- body = body.pipe(zlib.createInflate(zlibOptions))
- } else {
- body = body.pipe(zlib.createInflateRaw(zlibOptions))
- }
- resolve(new Response(body, responseOptions))
- })
- return
- }
-
- // otherwise, use response as-is
- resolve(new Response(body, responseOptions))
- })
-
- writeToStream(req, request)
- })
-};
-
-/**
- * Redirect code matching
- *
- * @param Number code Status code
- * @return Boolean
- */
-fetch.isRedirect = code => code === 301 || code === 302 || code === 303 || code === 307 || code === 308
-
-// expose Promise
-fetch.Promise = global.Promise
-exports.Headers = Headers
-exports.Request = Request
-exports.Response = Response
-exports.FetchError = FetchError
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/request.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/request.js
deleted file mode 100644
index 326dc4606f..0000000000
--- a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/request.js
+++ /dev/null
@@ -1,174 +0,0 @@
-'use strict'
-
-/**
- * request.js
- *
- * Request class contains server only options
- */
-
-const url = require('url')
-const Headers = require('./headers.js')
-const Body = require('./body.js')
-const clone = Body.clone
-const extractContentType = Body.extractContentType
-const getTotalBytes = Body.getTotalBytes
-
-const PARSED_URL = Symbol('url')
-
-/**
- * Request class
- *
- * @param Mixed input Url or Request instance
- * @param Object init Custom options
- * @return Void
- */
-class Request {
- constructor (input, init) {
- if (!init) init = {}
- let parsedURL
-
- // normalize input
- if (!(input instanceof Request)) {
- if (input && input.href) {
- // in order to support Node.js' Url objects; though WHATWG's URL objects
- // will fall into this branch also (since their `toString()` will return
- // `href` property anyway)
- parsedURL = url.parse(input.href)
- } else {
- // coerce input to a string before attempting to parse
- parsedURL = url.parse(`${input}`)
- }
- input = {}
- } else {
- parsedURL = url.parse(input.url)
- }
-
- let method = init.method || input.method || 'GET'
-
- if ((init.body != null || (input instanceof Request && input.body !== null)) &&
- (method === 'GET' || method === 'HEAD')) {
- throw new TypeError('Request with GET/HEAD method cannot have body')
- }
-
- let inputBody = init.body != null
- ? init.body
- : input instanceof Request && input.body !== null
- ? clone(input)
- : null
-
- Body.call(this, inputBody, {
- timeout: init.timeout || input.timeout || 0,
- size: init.size || input.size || 0
- })
-
- // fetch spec options
- this.method = method.toUpperCase()
- this.redirect = init.redirect || input.redirect || 'follow'
- this.headers = new Headers(init.headers || input.headers || {})
-
- if (init.body != null) {
- const contentType = extractContentType(this)
- if (contentType !== null && !this.headers.has('Content-Type')) {
- this.headers.append('Content-Type', contentType)
- }
- }
-
- // server only options
- this.follow = init.follow !== undefined
- ? init.follow : input.follow !== undefined
- ? input.follow : 20
- this.compress = init.compress !== undefined
- ? init.compress : input.compress !== undefined
- ? input.compress : true
- this.counter = init.counter || input.counter || 0
- this.agent = init.agent || input.agent
-
- this[PARSED_URL] = parsedURL
- Object.defineProperty(this, Symbol.toStringTag, {
- value: 'Request',
- writable: false,
- enumerable: false,
- configurable: true
- })
- }
-
- get url () {
- return url.format(this[PARSED_URL])
- }
-
- /**
- * Clone this request
- *
- * @return Request
- */
- clone () {
- return new Request(this)
- }
-}
-
-Body.mixIn(Request.prototype)
-
-Object.defineProperty(Request.prototype, Symbol.toStringTag, {
- value: 'RequestPrototype',
- writable: false,
- enumerable: false,
- configurable: true
-})
-
-exports = module.exports = Request
-
-exports.getNodeRequestOptions = function getNodeRequestOptions (request) {
- const parsedURL = request[PARSED_URL]
- const headers = new Headers(request.headers)
-
- // fetch step 3
- if (!headers.has('Accept')) {
- headers.set('Accept', '*/*')
- }
-
- // Basic fetch
- if (!parsedURL.protocol || !parsedURL.hostname) {
- throw new TypeError('Only absolute URLs are supported')
- }
-
- if (!/^https?:$/.test(parsedURL.protocol)) {
- throw new TypeError('Only HTTP(S) protocols are supported')
- }
-
- // HTTP-network-or-cache fetch steps 5-9
- let contentLengthValue = null
- if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
- contentLengthValue = '0'
- }
- if (request.body != null) {
- const totalBytes = getTotalBytes(request)
- if (typeof totalBytes === 'number') {
- contentLengthValue = String(totalBytes)
- }
- }
- if (contentLengthValue) {
- headers.set('Content-Length', contentLengthValue)
- }
-
- // HTTP-network-or-cache fetch step 12
- if (!headers.has('User-Agent')) {
- headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)')
- }
-
- // HTTP-network-or-cache fetch step 16
- if (request.compress) {
- headers.set('Accept-Encoding', 'gzip,deflate')
- }
- if (!headers.has('Connection') && !request.agent) {
- headers.set('Connection', 'close')
- }
-
- // HTTP-network fetch step 4
- // chunked encoding is handled by Node.js
-
- return Object.assign({}, parsedURL, {
- method: request.method,
- headers: headers.raw(),
- agent: request.agent
- })
-}
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/response.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/response.js
deleted file mode 100644
index 6fb050d74c..0000000000
--- a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/response.js
+++ /dev/null
@@ -1,71 +0,0 @@
-'use strict'
-
-/**
- * response.js
- *
- * Response class provides content decoding
- */
-
-const STATUS_CODES = require('http').STATUS_CODES
-const Headers = require('./headers.js')
-const Body = require('./body.js')
-const clone = Body.clone
-
-/**
- * Response class
- *
- * @param Stream body Readable stream
- * @param Object opts Response options
- * @return Void
- */
-class Response {
- constructor (body, opts) {
- if (!opts) opts = {}
- Body.call(this, body, opts)
-
- this.url = opts.url
- this.status = opts.status || 200
- this.statusText = opts.statusText || STATUS_CODES[this.status]
-
- this.headers = new Headers(opts.headers)
-
- Object.defineProperty(this, Symbol.toStringTag, {
- value: 'Response',
- writable: false,
- enumerable: false,
- configurable: true
- })
- }
-
- /**
- * Convenience property representing if the request ended normally
- */
- get ok () {
- return this.status >= 200 && this.status < 300
- }
-
- /**
- * Clone this response
- *
- * @return Response
- */
- clone () {
- return new Response(clone(this), {
- url: this.url,
- status: this.status,
- statusText: this.statusText,
- headers: this.headers,
- ok: this.ok
- })
- }
-}
-
-Body.mixIn(Response.prototype)
-
-Object.defineProperty(Response.prototype, Symbol.toStringTag, {
- value: 'ResponsePrototype',
- writable: false,
- enumerable: false,
- configurable: true
-})
-module.exports = Response