{
  "version": 3,
  "sources": ["../src/package.ts", "../node_modules/node-fetch/lib/index.mjs", "../src/cdn.ts", "../src/util.ts", "../src/skypack-resolver.ts"],
  "sourcesContent": ["import { readFile } from 'fs/promises';\n\ninterface PackageDependencies {\n    [id: string]: {\n        dev: boolean;\n        version: string;\n    };\n}\n\ninterface Dependencies {\n    [id: string]: string;\n}\n\n/**\n * Gets dependencies id and version from package lock file\n */\nexport async function getDependencies(file: string): Promise<Dependencies> {\n    const { dependencies }: { dependencies: PackageDependencies } = JSON.parse((await readFile(file)).toString());\n\n    return Object.fromEntries(\n        Object.entries(dependencies)\n            .filter(([, { dev }]) => !dev)\n            .map(([id, { version }]) => [id, version]),\n    );\n}\n", "import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param   String      message      Error message for human\n * @param   String      type         Error type for machine\n * @param   String      systemError  For Node.js system error\n * @return  FetchError\n */\nfunction FetchError(message, type, systemError) {\n  Error.call(this, message);\n\n  this.message = message;\n  this.type = type;\n\n  // when err.type is `system`, err.code contains system error code\n  if (systemError) {\n    this.code = this.errno = systemError.code;\n  }\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t    _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n  * Decode response as ArrayBuffer\n  *\n  * @return  Promise\n  */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n  * Return raw response as Blob\n  *\n  * @return Promise\n  */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n  * Decode response as json\n  *\n  * @return  Promise\n  */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n  * Decode response as text\n  *\n  * @return  Promise\n  */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n  * Decode response as buffer (non-spec api)\n  *\n  * @return  Promise\n  */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n  * Decode response as text, while automatically detecting the encoding and\n  * trying to decode to UTF-8 (non-spec api)\n  *\n  * @return  Promise\n  */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return  Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param   Buffer  buffer    Incoming buffer\n * @param   String  encoding  Target encoding\n * @return  String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param   Object  obj     Object to detect by type or brand\n * @return  String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param  {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param   Mixed  instance  Response or Request instance\n * @return  Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param   Mixed  instance  Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param   Body    instance   Instance of Body\n * @return  Number?            Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param   Body    instance   Instance of Body\n * @return  Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param   String  name  Header name\n * @return  String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n  * Headers class\n  *\n  * @param   Object  headers  Response headers\n  * @return  Void\n  */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n  * Return combined header value given name\n  *\n  * @param   String  name  Header name\n  * @return  Mixed\n  */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n  * Iterate over all headers\n  *\n  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)\n  * @param   Boolean   thisArg   `this` context for callback function\n  * @return  Void\n  */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t      value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n  * Overwrite header values given name\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n  * Append a value onto existing header\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n  * Check for header name existence\n  *\n  * @param   String   name  Header name\n  * @return  Boolean\n  */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n  * Delete all header values given name\n  *\n  * @param   String  name  Header name\n  * @return  Void\n  */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n  * Return raw headers (non-spec api)\n  *\n  * @return  Object\n  */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n  * Get an iterator on keys.\n  *\n  * @return  Iterator\n  */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n  * Get an iterator on values.\n  *\n  * @return  Iterator\n  */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n  * Get an iterator on entries.\n  *\n  * This is the default iterator of the Headers object.\n  *\n  * @return  Iterator\n  */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t      kind = _INTERNAL.kind,\n\t\t      index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param   Headers  headers\n * @return  Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param   Object  obj  Object of headers\n * @return  Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n  * Convenience property representing if the request ended normally\n  */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n  * Clone this response\n  *\n  * @return  Response\n  */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param   Mixed   input\n * @return  Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param   Mixed   input  Url or Request instance\n * @param   Object  init   Custom options\n * @return  Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parse_url(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parse_url(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parse_url(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n  * Clone this request\n  *\n  * @return  Request\n  */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param   Request  A Request instance\n * @return  Object   The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param   String      message      Error message for human\n * @return  AbortError\n */\nfunction AbortError(message) {\n  Error.call(this, message);\n\n  this.type = 'aborted';\n  this.message = message;\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\nconst resolve_url = Url.resolve;\n\n/**\n * Fetch function\n *\n * @param   Mixed    url   Absolute url or Request instance\n * @param   Object   opts  Fetch options\n * @return  Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tconst locationURL = location === null ? null : resolve_url(request.url, location);\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param   Number   code  Status code\n * @return  Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n", "import fetch from 'node-fetch';\n\nconst MINIFIED_URL_REGEX = /Minified: (.+)/m;\nconst CDN_HOST = 'https://cdn.skypack.dev';\n\n/**\n * Gets Skypack pinned URL for package id and version\n */\nasync function getUrl(id: string, version: string): Promise<string> {\n    const body = await (await fetch(`${CDN_HOST}/${id}@${version}`)).text();\n    const matches = body.match(MINIFIED_URL_REGEX);\n\n    if (!matches) {\n        throw new Error(`Skypack pinned URL not found for package ${id}@${version}`);\n    }\n\n    const [, url] = matches;\n    return url;\n}\n\nexport const cdn = {\n    getUrl,\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface PromiseResolve {\n    promise: Promise<any>;\n    resolve: (value: any) => void;\n}\n\n/**\n * Creates new promise with external resolve\n */\nexport function newPromiseResolve(): PromiseResolve {\n    let resolve = (_: any) => {}; // eslint-disable-line\n    const promise = new Promise((_resolve) => {\n        resolve = _resolve;\n    });\n\n    return { promise, resolve };\n}\n", "// @ts-ignore\nimport { getDependencies } from './package.ts';\n// @ts-ignore\nimport { cdn } from './cdn.ts';\n// @ts-ignore\nimport { newPromiseResolve, PromiseResolve } from './util.ts';\nimport { OnResolveResult, Plugin, PluginBuild } from 'esbuild';\n\nconst PACKAGE_LOCK_FILE = `${process.cwd()}/package-lock.json`;\nconst PACKAGE_ID_REGEX = /^@?(([a-z0-9]+-?)+\\/?)+$/;\n\ninterface Pending {\n    [path: string]: PromiseResolve;\n}\n\ninterface Cache {\n    [path: string]: string;\n}\n\n/**\n * Creates new Skypack resolver plugin\n */\nexport function skypackResolver(packageLockFile = PACKAGE_LOCK_FILE): Plugin {\n    const pending: Pending = {};\n    const cache: Cache = {};\n\n    return {\n        name: 'skypack-resolver',\n        async setup(build: PluginBuild) {\n            const dependencies = await getDependencies(packageLockFile);\n\n            build.onResolve({ filter: PACKAGE_ID_REGEX }, async ({ path }): Promise<OnResolveResult> => {\n                if (pending[path]) {\n                    await pending[path].promise;\n                }\n\n                if (path in cache) {\n                    return { path: cache[path], external: true };\n                }\n\n                pending[path] = newPromiseResolve();\n\n                const version = dependencies[path];\n                const url = await cdn.getUrl(path, version);\n\n                cache[path] = url;\n                pending[path].resolve(null);\n\n                return { path: url, external: true };\n            });\n        },\n    };\n}\n"],
  "mappings": "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",
  "names": []
}
