immosquare-cleaner 0.1.31 → 0.1.32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/lib/immosquare-cleaner/version.rb +1 -1
  3. data/lib/immosquare-cleaner.rb +1 -0
  4. data/node_modules/@eslint/js/package.json +1 -1
  5. data/node_modules/eslint/lib/api.js +29 -1
  6. data/node_modules/eslint/lib/config/flat-config-schema.js +35 -20
  7. data/node_modules/eslint/lib/eslint/eslint.js +7 -0
  8. data/node_modules/eslint/lib/eslint/flat-eslint.js +17 -4
  9. data/node_modules/eslint/lib/options.js +1 -1
  10. data/node_modules/eslint/lib/rule-tester/flat-rule-tester.js +10 -1
  11. data/node_modules/eslint/package.json +4 -4
  12. data/node_modules/npm-check-updates/README.md +8 -4
  13. data/node_modules/npm-check-updates/build/cli.d.ts +1 -0
  14. data/node_modules/npm-check-updates/build/cli.js +28 -0
  15. data/node_modules/npm-check-updates/build/cli.js.map +1 -0
  16. data/node_modules/npm-check-updates/build/index-BnIU43YD.js +2 -0
  17. data/node_modules/npm-check-updates/build/index-BnIU43YD.js.map +1 -0
  18. data/node_modules/npm-check-updates/build/index-CI_x-D21.js +593 -0
  19. data/node_modules/npm-check-updates/build/index-CI_x-D21.js.map +1 -0
  20. data/node_modules/npm-check-updates/build/index-Ci8A2QXv.js +6 -0
  21. data/node_modules/npm-check-updates/build/index-Ci8A2QXv.js.map +1 -0
  22. data/node_modules/npm-check-updates/build/index-DgVn3Gax.js +36 -0
  23. data/node_modules/npm-check-updates/build/index-DgVn3Gax.js.map +1 -0
  24. data/node_modules/npm-check-updates/build/index-_DliZFxU.js +5 -0
  25. data/node_modules/npm-check-updates/build/index-_DliZFxU.js.map +1 -0
  26. data/node_modules/npm-check-updates/build/index.d.ts +209 -0
  27. data/node_modules/npm-check-updates/build/index.js +2 -0
  28. data/node_modules/npm-check-updates/build/index.js.map +1 -0
  29. data/node_modules/npm-check-updates/build/package.json +1 -1
  30. data/node_modules/npm-check-updates/build/src/cli-options.js +10 -4
  31. data/node_modules/npm-check-updates/build/src/cli-options.js.map +1 -1
  32. data/node_modules/npm-check-updates/build/src/lib/upgradePackageDefinitions.js +2 -1
  33. data/node_modules/npm-check-updates/build/src/lib/upgradePackageDefinitions.js.map +1 -1
  34. data/node_modules/npm-check-updates/build/src/package-managers/gitTags.d.ts +2 -0
  35. data/node_modules/npm-check-updates/build/src/package-managers/gitTags.js +10 -3
  36. data/node_modules/npm-check-updates/build/src/package-managers/gitTags.js.map +1 -1
  37. data/node_modules/npm-check-updates/build/src/package-managers/npm.js +1 -5
  38. data/node_modules/npm-check-updates/build/src/package-managers/npm.js.map +1 -1
  39. data/node_modules/npm-check-updates/package.json +1 -1
  40. data/package.json +2 -2
  41. metadata +20 -7
  42. data/node_modules/npm-check-updates/build/src/lib/queryVersions.d.mts +0 -13
  43. data/node_modules/npm-check-updates/build/src/lib/queryVersions.mjs +0 -111
  44. data/node_modules/npm-check-updates/build/src/lib/queryVersions.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DgVn3Gax.js","sources":["../node_modules/graceful-fs/polyfills.js","../node_modules/graceful-fs/legacy-streams.js","../node_modules/graceful-fs/clone.js","../node_modules/graceful-fs/graceful-fs.js","../node_modules/xdg-basedir/index.js","../node_modules/signal-exit/signals.js","../node_modules/signal-exit/index.js","../node_modules/is-typedarray/index.js","../node_modules/typedarray-to-buffer/index.js","../node_modules/write-file-atomic/index.js","../node_modules/is-obj/index.js","../node_modules/dot-prop/index.js","../node_modules/crypto-random-string/index.js","../node_modules/unique-string/index.js","../node_modules/configstore/index.js","../node_modules/semver-diff/index.js","../node_modules/@sindresorhus/is/dist/index.js","../node_modules/p-cancelable/index.js","../node_modules/got/dist/source/core/errors.js","../node_modules/defer-to-connect/dist/source/index.js","../node_modules/@szmarczak/http-timer/dist/source/index.js","../node_modules/normalize-url/index.js","../node_modules/get-stream/buffer-stream.js","../node_modules/get-stream/index.js","../node_modules/lowercase-keys/index.js","../node_modules/responselike/index.js","../node_modules/json-buffer/index.js","../node_modules/keyv/src/index.js","../node_modules/mimic-response/index.js","../node_modules/cacheable-request/dist/types.js","../node_modules/cacheable-request/dist/index.js","../node_modules/decompress-response/node_modules/mimic-response/index.js","../node_modules/decompress-response/index.js","../node_modules/form-data-encoder/lib/util/isFunction.js","../node_modules/form-data-encoder/lib/util/getStreamIterator.js","../node_modules/form-data-encoder/lib/util/createBoundary.js","../node_modules/form-data-encoder/lib/util/normalizeValue.js","../node_modules/form-data-encoder/lib/util/isPlainObject.js","../node_modules/form-data-encoder/lib/util/proxyHeaders.js","../node_modules/form-data-encoder/lib/util/isFormData.js","../node_modules/form-data-encoder/lib/util/escapeName.js","../node_modules/form-data-encoder/lib/util/isFile.js","../node_modules/form-data-encoder/lib/FormDataEncoder.js","../node_modules/got/dist/source/core/utils/is-form-data.js","../node_modules/got/dist/source/core/utils/get-body-size.js","../node_modules/got/dist/source/core/utils/proxy-events.js","../node_modules/got/dist/source/core/utils/unhandle.js","../node_modules/got/dist/source/core/timed-out.js","../node_modules/got/dist/source/core/utils/url-to-options.js","../node_modules/got/dist/source/core/utils/weakable-map.js","../node_modules/got/dist/source/core/calculate-retry-delay.js","../node_modules/cacheable-lookup/source/index.js","../node_modules/quick-lru/index.js","../node_modules/http2-wrapper/source/utils/delay-async-destroy.js","../node_modules/http2-wrapper/source/agent.js","../node_modules/http2-wrapper/source/incoming-message.js","../node_modules/http2-wrapper/source/utils/proxy-events.js","../node_modules/http2-wrapper/source/utils/errors.js","../node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js","../node_modules/http2-wrapper/source/utils/validate-header-name.js","../node_modules/http2-wrapper/source/utils/validate-header-value.js","../node_modules/http2-wrapper/source/utils/proxy-socket-handler.js","../node_modules/http2-wrapper/source/client-request.js","../node_modules/resolve-alpn/index.js","../node_modules/http2-wrapper/source/utils/calculate-server-name.js","../node_modules/http2-wrapper/source/auto.js","../node_modules/http2-wrapper/source/utils/js-stream-socket.js","../node_modules/http2-wrapper/source/proxies/unexpected-status-code-error.js","../node_modules/http2-wrapper/source/utils/check-type.js","../node_modules/http2-wrapper/source/proxies/initialize.js","../node_modules/http2-wrapper/source/proxies/get-auth-headers.js","../node_modules/http2-wrapper/source/proxies/h1-over-h2.js","../node_modules/http2-wrapper/source/proxies/h2-over-hx.js","../node_modules/http2-wrapper/source/proxies/h2-over-h2.js","../node_modules/http2-wrapper/source/proxies/h2-over-h1.js","../node_modules/http2-wrapper/source/index.js","../node_modules/got/dist/source/core/parse-link-header.js","../node_modules/got/dist/source/core/options.js","../node_modules/got/dist/source/core/response.js","../node_modules/got/dist/source/core/utils/is-client-request.js","../node_modules/got/dist/source/core/utils/is-unix-socket-url.js","../node_modules/got/dist/source/core/index.js","../node_modules/got/dist/source/as-promise/types.js","../node_modules/got/dist/source/as-promise/index.js","../node_modules/got/dist/source/create.js","../node_modules/got/dist/source/index.js","../node_modules/rc/browser.js","../node_modules/registry-url/index.js","../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js","../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/legacy-streams.js","../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/clone.js","../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/graceful-fs.js","../node_modules/@pnpm/network.ca-file/dist/ca-file.js","../node_modules/@pnpm/network.ca-file/dist/index.js","../node_modules/proto-list/proto-list.js","../node_modules/config-chain/node_modules/ini/ini.js","../node_modules/config-chain/index.js","../node_modules/@pnpm/npm-conf/lib/envKeyToSetting.js","../node_modules/@pnpm/config.env-replace/dist/env-replace.js","../node_modules/@pnpm/config.env-replace/dist/index.js","../node_modules/@pnpm/npm-conf/lib/util.js","../node_modules/@pnpm/npm-conf/lib/types.js","../node_modules/@pnpm/npm-conf/lib/conf.js","../node_modules/@pnpm/npm-conf/lib/defaults.js","../node_modules/@pnpm/npm-conf/index.js","../node_modules/registry-auth-token/index.js","../node_modules/package-json/index.js","../node_modules/latest-version/index.js","../node_modules/is-npm/index.js","../node_modules/global-dirs/node_modules/ini/ini.js","../node_modules/global-dirs/index.js","../node_modules/is-path-inside/index.js","../node_modules/is-installed-globally/index.js","../node_modules/eastasianwidth/eastasianwidth.js","../node_modules/emoji-regex/index.js","../node_modules/string-width/index.js","../node_modules/widest-line/index.js","../node_modules/cli-boxes/index.js","../node_modules/camelcase/index.js","../node_modules/ansi-align/node_modules/ansi-regex/index.js","../node_modules/ansi-align/node_modules/strip-ansi/index.js","../node_modules/ansi-align/node_modules/emoji-regex/index.js","../node_modules/ansi-align/node_modules/string-width/index.js","../node_modules/ansi-align/index.js","../node_modules/wrap-ansi/node_modules/ansi-styles/index.js","../node_modules/wrap-ansi/index.js","../node_modules/boxen/index.js","../node_modules/is-in-ci/index.js","../node_modules/escape-goat/index.js","../node_modules/pupa/index.js","../node_modules/update-notifier/update-notifier.js","../node_modules/update-notifier/index.js"],"sourcesContent":["var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","import os from 'os';\nimport path from 'path';\n\nconst homeDirectory = os.homedir();\nconst {env} = process;\n\nexport const xdgData = env.XDG_DATA_HOME ||\n\t(homeDirectory ? path.join(homeDirectory, '.local', 'share') : undefined);\n\nexport const xdgConfig = env.XDG_CONFIG_HOME ||\n\t(homeDirectory ? path.join(homeDirectory, '.config') : undefined);\n\nexport const xdgState = env.XDG_STATE_HOME ||\n\t(homeDirectory ? path.join(homeDirectory, '.local', 'state') : undefined);\n\nexport const xdgCache = env.XDG_CACHE_HOME || (homeDirectory ? path.join(homeDirectory, '.cache') : undefined);\n\nexport const xdgRuntime = env.XDG_RUNTIME_DIR || undefined;\n\nexport const xdgDataDirectories = (env.XDG_DATA_DIRS || '/usr/local/share/:/usr/share/').split(':');\n\nif (xdgData) {\n\txdgDataDirectories.unshift(xdgData);\n}\n\nexport const xdgConfigDirectories = (env.XDG_CONFIG_DIRS || '/etc/xdg').split(':');\n\nif (xdgConfig) {\n\txdgConfigDirectories.unshift(xdgConfig);\n}\n","// This is not the set of all possible signals.\n//\n// It IS, however, the set of all signals that trigger\n// an exit on either Linux or BSD systems. Linux is a\n// superset of the signal names supported on BSD, and\n// the unknown signals just fail to register, so we can\n// catch that easily enough.\n//\n// Don't bother with SIGKILL. It's uncatchable, which\n// means that we can't fire any callbacks anyway.\n//\n// If a user does happen to register a handler on a non-\n// fatal signal like SIGWINCH or something, and then\n// exit, it'll end up firing `process.emit('exit')`, so\n// the handler will be fired anyway.\n//\n// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n// artificially, inherently leave the process in a\n// state from which it is not safe to try and enter JS\n// listeners.\nmodule.exports = [\n 'SIGABRT',\n 'SIGALRM',\n 'SIGHUP',\n 'SIGINT',\n 'SIGTERM'\n]\n\nif (process.platform !== 'win32') {\n module.exports.push(\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n module.exports.push(\n 'SIGIO',\n 'SIGPOLL',\n 'SIGPWR',\n 'SIGSTKFLT',\n 'SIGUNUSED'\n )\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nvar process = global.process\n\nconst processOk = function (process) {\n return process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n}\n\n// some kind of non-node environment, just no-op\n/* istanbul ignore if */\nif (!processOk(process)) {\n module.exports = function () {\n return function () {}\n }\n} else {\n var assert = require('assert')\n var signals = require('./signals.js')\n var isWin = /^win/i.test(process.platform)\n\n var EE = require('events')\n /* istanbul ignore if */\n if (typeof EE !== 'function') {\n EE = EE.EventEmitter\n }\n\n var emitter\n if (process.__signal_exit_emitter__) {\n emitter = process.__signal_exit_emitter__\n } else {\n emitter = process.__signal_exit_emitter__ = new EE()\n emitter.count = 0\n emitter.emitted = {}\n }\n\n // Because this emitter is a global, we have to check to see if a\n // previous version of this library failed to enable infinite listeners.\n // I know what you're about to say. But literally everything about\n // signal-exit is a compromise with evil. Get used to it.\n if (!emitter.infinite) {\n emitter.setMaxListeners(Infinity)\n emitter.infinite = true\n }\n\n module.exports = function (cb, opts) {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return function () {}\n }\n assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')\n\n if (loaded === false) {\n load()\n }\n\n var ev = 'exit'\n if (opts && opts.alwaysLast) {\n ev = 'afterexit'\n }\n\n var remove = function () {\n emitter.removeListener(ev, cb)\n if (emitter.listeners('exit').length === 0 &&\n emitter.listeners('afterexit').length === 0) {\n unload()\n }\n }\n emitter.on(ev, cb)\n\n return remove\n }\n\n var unload = function unload () {\n if (!loaded || !processOk(global.process)) {\n return\n }\n loaded = false\n\n signals.forEach(function (sig) {\n try {\n process.removeListener(sig, sigListeners[sig])\n } catch (er) {}\n })\n process.emit = originalProcessEmit\n process.reallyExit = originalProcessReallyExit\n emitter.count -= 1\n }\n module.exports.unload = unload\n\n var emit = function emit (event, code, signal) {\n /* istanbul ignore if */\n if (emitter.emitted[event]) {\n return\n }\n emitter.emitted[event] = true\n emitter.emit(event, code, signal)\n }\n\n // { <signal>: <listener fn>, ... }\n var sigListeners = {}\n signals.forEach(function (sig) {\n sigListeners[sig] = function listener () {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return\n }\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n var listeners = process.listeners(sig)\n if (listeners.length === emitter.count) {\n unload()\n emit('exit', null, sig)\n /* istanbul ignore next */\n emit('afterexit', null, sig)\n /* istanbul ignore next */\n if (isWin && sig === 'SIGHUP') {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n sig = 'SIGINT'\n }\n /* istanbul ignore next */\n process.kill(process.pid, sig)\n }\n }\n })\n\n module.exports.signals = function () {\n return signals\n }\n\n var loaded = false\n\n var load = function load () {\n if (loaded || !processOk(global.process)) {\n return\n }\n loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n emitter.count += 1\n\n signals = signals.filter(function (sig) {\n try {\n process.on(sig, sigListeners[sig])\n return true\n } catch (er) {\n return false\n }\n })\n\n process.emit = processEmit\n process.reallyExit = processReallyExit\n }\n module.exports.load = load\n\n var originalProcessReallyExit = process.reallyExit\n var processReallyExit = function processReallyExit (code) {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return\n }\n process.exitCode = code || /* istanbul ignore next */ 0\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n /* istanbul ignore next */\n originalProcessReallyExit.call(process, process.exitCode)\n }\n\n var originalProcessEmit = process.emit\n var processEmit = function processEmit (ev, arg) {\n if (ev === 'exit' && processOk(global.process)) {\n /* istanbul ignore else */\n if (arg !== undefined) {\n process.exitCode = arg\n }\n var ret = originalProcessEmit.apply(this, arguments)\n /* istanbul ignore next */\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n /* istanbul ignore next */\n return ret\n } else {\n return originalProcessEmit.apply(this, arguments)\n }\n }\n}\n","module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n","/**\n * Convert a typed array to a Buffer without a copy\n *\n * Author: Feross Aboukhadijeh <https://feross.org>\n * License: MIT\n *\n * `npm install typedarray-to-buffer`\n */\n\nvar isTypedArray = require('is-typedarray').strict\n\nmodule.exports = function typedarrayToBuffer (arr) {\n if (isTypedArray(arr)) {\n // To avoid a copy, use the typed array's underlying ArrayBuffer to back new Buffer\n var buf = Buffer.from(arr.buffer)\n if (arr.byteLength !== arr.buffer.byteLength) {\n // Respect the \"view\", i.e. byteOffset and byteLength, without doing a copy\n buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)\n }\n return buf\n } else {\n // Pass through all other types to `Buffer.from`\n return Buffer.from(arr)\n }\n}\n","'use strict'\nmodule.exports = writeFile\nmodule.exports.sync = writeFileSync\nmodule.exports._getTmpname = getTmpname // for testing\nmodule.exports._cleanupOnExit = cleanupOnExit\n\nconst fs = require('fs')\nconst MurmurHash3 = require('imurmurhash')\nconst onExit = require('signal-exit')\nconst path = require('path')\nconst isTypedArray = require('is-typedarray')\nconst typedArrayToBuffer = require('typedarray-to-buffer')\nconst { promisify } = require('util')\nconst activeFiles = {}\n\n// if we run inside of a worker_thread, `process.pid` is not unique\n/* istanbul ignore next */\nconst threadId = (function getId () {\n try {\n const workerThreads = require('worker_threads')\n\n /// if we are in main thread, this is set to `0`\n return workerThreads.threadId\n } catch (e) {\n // worker_threads are not available, fallback to 0\n return 0\n }\n})()\n\nlet invocations = 0\nfunction getTmpname (filename) {\n return filename + '.' +\n MurmurHash3(__filename)\n .hash(String(process.pid))\n .hash(String(threadId))\n .hash(String(++invocations))\n .result()\n}\n\nfunction cleanupOnExit (tmpfile) {\n return () => {\n try {\n fs.unlinkSync(typeof tmpfile === 'function' ? tmpfile() : tmpfile)\n } catch (_) {}\n }\n}\n\nfunction serializeActiveFile (absoluteName) {\n return new Promise(resolve => {\n // make a queue if it doesn't already exist\n if (!activeFiles[absoluteName]) activeFiles[absoluteName] = []\n\n activeFiles[absoluteName].push(resolve) // add this job to the queue\n if (activeFiles[absoluteName].length === 1) resolve() // kick off the first one\n })\n}\n\n// https://github.com/isaacs/node-graceful-fs/blob/master/polyfills.js#L315-L342\nfunction isChownErrOk (err) {\n if (err.code === 'ENOSYS') {\n return true\n }\n\n const nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (err.code === 'EINVAL' || err.code === 'EPERM') {\n return true\n }\n }\n\n return false\n}\n\nasync function writeFileAsync (filename, data, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n let fd\n let tmpfile\n /* istanbul ignore next -- The closure only gets called when onExit triggers */\n const removeOnExitHandler = onExit(cleanupOnExit(() => tmpfile))\n const absoluteName = path.resolve(filename)\n\n try {\n await serializeActiveFile(absoluteName)\n const truename = await promisify(fs.realpath)(filename).catch(() => filename)\n tmpfile = getTmpname(truename)\n\n if (!options.mode || !options.chown) {\n // Either mode or chown is not explicitly set\n // Default behavior is to copy it from original file\n const stats = await promisify(fs.stat)(truename).catch(() => {})\n if (stats) {\n if (options.mode == null) {\n options.mode = stats.mode\n }\n\n if (options.chown == null && process.getuid) {\n options.chown = { uid: stats.uid, gid: stats.gid }\n }\n }\n }\n\n fd = await promisify(fs.open)(tmpfile, 'w', options.mode)\n if (options.tmpfileCreated) {\n await options.tmpfileCreated(tmpfile)\n }\n if (isTypedArray(data)) {\n data = typedArrayToBuffer(data)\n }\n if (Buffer.isBuffer(data)) {\n await promisify(fs.write)(fd, data, 0, data.length, 0)\n } else if (data != null) {\n await promisify(fs.write)(fd, String(data), 0, String(options.encoding || 'utf8'))\n }\n\n if (options.fsync !== false) {\n await promisify(fs.fsync)(fd)\n }\n\n await promisify(fs.close)(fd)\n fd = null\n\n if (options.chown) {\n await promisify(fs.chown)(tmpfile, options.chown.uid, options.chown.gid).catch(err => {\n if (!isChownErrOk(err)) {\n throw err\n }\n })\n }\n\n if (options.mode) {\n await promisify(fs.chmod)(tmpfile, options.mode).catch(err => {\n if (!isChownErrOk(err)) {\n throw err\n }\n })\n }\n\n await promisify(fs.rename)(tmpfile, truename)\n } finally {\n if (fd) {\n await promisify(fs.close)(fd).catch(\n /* istanbul ignore next */\n () => {}\n )\n }\n removeOnExitHandler()\n await promisify(fs.unlink)(tmpfile).catch(() => {})\n activeFiles[absoluteName].shift() // remove the element added by serializeSameFile\n if (activeFiles[absoluteName].length > 0) {\n activeFiles[absoluteName][0]() // start next job if one is pending\n } else delete activeFiles[absoluteName]\n }\n}\n\nfunction writeFile (filename, data, options, callback) {\n if (options instanceof Function) {\n callback = options\n options = {}\n }\n\n const promise = writeFileAsync(filename, data, options)\n if (callback) {\n promise.then(callback, callback)\n }\n\n return promise\n}\n\nfunction writeFileSync (filename, data, options) {\n if (typeof options === 'string') options = { encoding: options }\n else if (!options) options = {}\n try {\n filename = fs.realpathSync(filename)\n } catch (ex) {\n // it's ok, it'll happen on a not yet existing file\n }\n const tmpfile = getTmpname(filename)\n\n if (!options.mode || !options.chown) {\n // Either mode or chown is not explicitly set\n // Default behavior is to copy it from original file\n try {\n const stats = fs.statSync(filename)\n options = Object.assign({}, options)\n if (!options.mode) {\n options.mode = stats.mode\n }\n if (!options.chown && process.getuid) {\n options.chown = { uid: stats.uid, gid: stats.gid }\n }\n } catch (ex) {\n // ignore stat errors\n }\n }\n\n let fd\n const cleanup = cleanupOnExit(tmpfile)\n const removeOnExitHandler = onExit(cleanup)\n\n let threw = true\n try {\n fd = fs.openSync(tmpfile, 'w', options.mode || 0o666)\n if (options.tmpfileCreated) {\n options.tmpfileCreated(tmpfile)\n }\n if (isTypedArray(data)) {\n data = typedArrayToBuffer(data)\n }\n if (Buffer.isBuffer(data)) {\n fs.writeSync(fd, data, 0, data.length, 0)\n } else if (data != null) {\n fs.writeSync(fd, String(data), 0, String(options.encoding || 'utf8'))\n }\n if (options.fsync !== false) {\n fs.fsyncSync(fd)\n }\n\n fs.closeSync(fd)\n fd = null\n\n if (options.chown) {\n try {\n fs.chownSync(tmpfile, options.chown.uid, options.chown.gid)\n } catch (err) {\n if (!isChownErrOk(err)) {\n throw err\n }\n }\n }\n\n if (options.mode) {\n try {\n fs.chmodSync(tmpfile, options.mode)\n } catch (err) {\n if (!isChownErrOk(err)) {\n throw err\n }\n }\n }\n\n fs.renameSync(tmpfile, filename)\n threw = false\n } finally {\n if (fd) {\n try {\n fs.closeSync(fd)\n } catch (ex) {\n // ignore close errors at this stage, error may have closed fd already.\n }\n }\n removeOnExitHandler()\n if (threw) {\n cleanup()\n }\n }\n}\n","'use strict';\n\nmodule.exports = value => {\n\tconst type = typeof value;\n\treturn value !== null && (type === 'object' || type === 'function');\n};\n","'use strict';\nconst isObj = require('is-obj');\n\nconst disallowedKeys = new Set([\n\t'__proto__',\n\t'prototype',\n\t'constructor'\n]);\n\nconst isValidPath = pathSegments => !pathSegments.some(segment => disallowedKeys.has(segment));\n\nfunction getPathSegments(path) {\n\tconst pathArray = path.split('.');\n\tconst parts = [];\n\n\tfor (let i = 0; i < pathArray.length; i++) {\n\t\tlet p = pathArray[i];\n\n\t\twhile (p[p.length - 1] === '\\\\' && pathArray[i + 1] !== undefined) {\n\t\t\tp = p.slice(0, -1) + '.';\n\t\t\tp += pathArray[++i];\n\t\t}\n\n\t\tparts.push(p);\n\t}\n\n\tif (!isValidPath(parts)) {\n\t\treturn [];\n\t}\n\n\treturn parts;\n}\n\nmodule.exports = {\n\tget(object, path, value) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn value === undefined ? object : value;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\t\tif (pathArray.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tobject = object[pathArray[i]];\n\n\t\t\tif (object === undefined || object === null) {\n\t\t\t\t// `object` is either `undefined` or `null` so we want to stop the loop, and\n\t\t\t\t// if this is not the last bit of the path, and\n\t\t\t\t// if it did't return `undefined`\n\t\t\t\t// it would return `null` if `object` is `null`\n\t\t\t\t// but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`\n\t\t\t\tif (i !== pathArray.length - 1) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn object === undefined ? value : object;\n\t},\n\n\tset(object, path, value) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn object;\n\t\t}\n\n\t\tconst root = object;\n\t\tconst pathArray = getPathSegments(path);\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tconst p = pathArray[i];\n\n\t\t\tif (!isObj(object[p])) {\n\t\t\t\tobject[p] = {};\n\t\t\t}\n\n\t\t\tif (i === pathArray.length - 1) {\n\t\t\t\tobject[p] = value;\n\t\t\t}\n\n\t\t\tobject = object[p];\n\t\t}\n\n\t\treturn root;\n\t},\n\n\tdelete(object, path) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tconst p = pathArray[i];\n\n\t\t\tif (i === pathArray.length - 1) {\n\t\t\t\tdelete object[p];\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tobject = object[p];\n\n\t\t\tif (!isObj(object)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\thas(object, path) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\t\tif (pathArray.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line unicorn/no-for-loop\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tif (isObj(object)) {\n\t\t\t\tif (!(pathArray[i] in object)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tobject = object[pathArray[i]];\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n};\n","import {promisify} from 'util';\nimport crypto from 'crypto';\n\nconst randomBytesAsync = promisify(crypto.randomBytes);\n\nconst urlSafeCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~'.split('');\nconst numericCharacters = '0123456789'.split('');\nconst distinguishableCharacters = 'CDEHKMPRTUWXY012458'.split('');\nconst asciiPrintableCharacters = '!\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.split('');\nconst alphanumericCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split('');\n\nconst generateForCustomCharacters = (length, characters) => {\n\t// Generating entropy is faster than complex math operations, so we use the simplest way\n\tconst characterCount = characters.length;\n\tconst maxValidSelector = (Math.floor(0x10000 / characterCount) * characterCount) - 1; // Using values above this will ruin distribution when using modular division\n\tconst entropyLength = 2 * Math.ceil(1.1 * length); // Generating a bit more than required so chances we need more than one pass will be really low\n\tlet string = '';\n\tlet stringLength = 0;\n\n\twhile (stringLength < length) { // In case we had many bad values, which may happen for character sets of size above 0x8000 but close to it\n\t\tconst entropy = crypto.randomBytes(entropyLength);\n\t\tlet entropyPosition = 0;\n\n\t\twhile (entropyPosition < entropyLength && stringLength < length) {\n\t\t\tconst entropyValue = entropy.readUInt16LE(entropyPosition);\n\t\t\tentropyPosition += 2;\n\t\t\tif (entropyValue > maxValidSelector) { // Skip values which will ruin distribution when using modular division\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tstring += characters[entropyValue % characterCount];\n\t\t\tstringLength++;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst generateForCustomCharactersAsync = async (length, characters) => {\n\t// Generating entropy is faster than complex math operations, so we use the simplest way\n\tconst characterCount = characters.length;\n\tconst maxValidSelector = (Math.floor(0x10000 / characterCount) * characterCount) - 1; // Using values above this will ruin distribution when using modular division\n\tconst entropyLength = 2 * Math.ceil(1.1 * length); // Generating a bit more than required so chances we need more than one pass will be really low\n\tlet string = '';\n\tlet stringLength = 0;\n\n\twhile (stringLength < length) { // In case we had many bad values, which may happen for character sets of size above 0x8000 but close to it\n\t\tconst entropy = await randomBytesAsync(entropyLength); // eslint-disable-line no-await-in-loop\n\t\tlet entropyPosition = 0;\n\n\t\twhile (entropyPosition < entropyLength && stringLength < length) {\n\t\t\tconst entropyValue = entropy.readUInt16LE(entropyPosition);\n\t\t\tentropyPosition += 2;\n\t\t\tif (entropyValue > maxValidSelector) { // Skip values which will ruin distribution when using modular division\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tstring += characters[entropyValue % characterCount];\n\t\t\tstringLength++;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst generateRandomBytes = (byteLength, type, length) => crypto.randomBytes(byteLength).toString(type).slice(0, length);\n\nconst generateRandomBytesAsync = async (byteLength, type, length) => {\n\tconst buffer = await randomBytesAsync(byteLength);\n\treturn buffer.toString(type).slice(0, length);\n};\n\nconst allowedTypes = new Set([\n\tundefined,\n\t'hex',\n\t'base64',\n\t'url-safe',\n\t'numeric',\n\t'distinguishable',\n\t'ascii-printable',\n\t'alphanumeric'\n]);\n\nconst createGenerator = (generateForCustomCharacters, generateRandomBytes) => ({length, type, characters}) => {\n\tif (!(length >= 0 && Number.isFinite(length))) {\n\t\tthrow new TypeError('Expected a `length` to be a non-negative finite number');\n\t}\n\n\tif (type !== undefined && characters !== undefined) {\n\t\tthrow new TypeError('Expected either `type` or `characters`');\n\t}\n\n\tif (characters !== undefined && typeof characters !== 'string') {\n\t\tthrow new TypeError('Expected `characters` to be string');\n\t}\n\n\tif (!allowedTypes.has(type)) {\n\t\tthrow new TypeError(`Unknown type: ${type}`);\n\t}\n\n\tif (type === undefined && characters === undefined) {\n\t\ttype = 'hex';\n\t}\n\n\tif (type === 'hex' || (type === undefined && characters === undefined)) {\n\t\treturn generateRandomBytes(Math.ceil(length * 0.5), 'hex', length); // Need 0.5 byte entropy per character\n\t}\n\n\tif (type === 'base64') {\n\t\treturn generateRandomBytes(Math.ceil(length * 0.75), 'base64', length); // Need 0.75 byte of entropy per character\n\t}\n\n\tif (type === 'url-safe') {\n\t\treturn generateForCustomCharacters(length, urlSafeCharacters);\n\t}\n\n\tif (type === 'numeric') {\n\t\treturn generateForCustomCharacters(length, numericCharacters);\n\t}\n\n\tif (type === 'distinguishable') {\n\t\treturn generateForCustomCharacters(length, distinguishableCharacters);\n\t}\n\n\tif (type === 'ascii-printable') {\n\t\treturn generateForCustomCharacters(length, asciiPrintableCharacters);\n\t}\n\n\tif (type === 'alphanumeric') {\n\t\treturn generateForCustomCharacters(length, alphanumericCharacters);\n\t}\n\n\tif (characters.length === 0) {\n\t\tthrow new TypeError('Expected `characters` string length to be greater than or equal to 1');\n\t}\n\n\tif (characters.length > 0x10000) {\n\t\tthrow new TypeError('Expected `characters` string length to be less or equal to 65536');\n\t}\n\n\treturn generateForCustomCharacters(length, characters.split(''));\n};\n\nconst cryptoRandomString = createGenerator(generateForCustomCharacters, generateRandomBytes);\n\ncryptoRandomString.async = createGenerator(generateForCustomCharactersAsync, generateRandomBytesAsync);\n\nexport default cryptoRandomString;\n","import cryptoRandomString from 'crypto-random-string';\n\nexport default function uniqueString() {\n\treturn cryptoRandomString({length: 32});\n}\n","import path from 'path';\nimport os from 'os';\nimport fs from 'graceful-fs';\nimport {xdgConfig} from 'xdg-basedir';\nimport writeFileAtomic from 'write-file-atomic';\nimport dotProp from 'dot-prop';\nimport uniqueString from 'unique-string';\n\nconst configDirectory = xdgConfig || path.join(os.tmpdir(), uniqueString());\nconst permissionError = 'You don\\'t have access to this file.';\nconst mkdirOptions = {mode: 0o0700, recursive: true};\nconst writeFileOptions = {mode: 0o0600};\n\nexport default class Configstore {\n\tconstructor(id, defaults, options = {}) {\n\t\tconst pathPrefix = options.globalConfigPath ?\n\t\t\tpath.join(id, 'config.json') :\n\t\t\tpath.join('configstore', `${id}.json`);\n\n\t\tthis._path = options.configPath || path.join(configDirectory, pathPrefix);\n\n\t\tif (defaults) {\n\t\t\tthis.all = {\n\t\t\t\t...defaults,\n\t\t\t\t...this.all\n\t\t\t};\n\t\t}\n\t}\n\n\tget all() {\n\t\ttry {\n\t\t\treturn JSON.parse(fs.readFileSync(this._path, 'utf8'));\n\t\t} catch (error) {\n\t\t\t// Create directory if it doesn't exist\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\t// Improve the message of permission errors\n\t\t\tif (error.code === 'EACCES') {\n\t\t\t\terror.message = `${error.message}\\n${permissionError}\\n`;\n\t\t\t}\n\n\t\t\t// Empty the file if it encounters invalid JSON\n\t\t\tif (error.name === 'SyntaxError') {\n\t\t\t\twriteFileAtomic.sync(this._path, '', writeFileOptions);\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tset all(value) {\n\t\ttry {\n\t\t\t// Make sure the folder exists as it could have been deleted in the meantime\n\t\t\tfs.mkdirSync(path.dirname(this._path), mkdirOptions);\n\n\t\t\twriteFileAtomic.sync(this._path, JSON.stringify(value, undefined, '\\t'), writeFileOptions);\n\t\t} catch (error) {\n\t\t\t// Improve the message of permission errors\n\t\t\tif (error.code === 'EACCES') {\n\t\t\t\terror.message = `${error.message}\\n${permissionError}\\n`;\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tget size() {\n\t\treturn Object.keys(this.all || {}).length;\n\t}\n\n\tget(key) {\n\t\treturn dotProp.get(this.all, key);\n\t}\n\n\tset(key, value) {\n\t\tconst config = this.all;\n\n\t\tif (arguments.length === 1) {\n\t\t\tfor (const k of Object.keys(key)) {\n\t\t\t\tdotProp.set(config, k, key[k]);\n\t\t\t}\n\t\t} else {\n\t\t\tdotProp.set(config, key, value);\n\t\t}\n\n\t\tthis.all = config;\n\t}\n\n\thas(key) {\n\t\treturn dotProp.has(this.all, key);\n\t}\n\n\tdelete(key) {\n\t\tconst config = this.all;\n\t\tdotProp.delete(config, key);\n\t\tthis.all = config;\n\t}\n\n\tclear() {\n\t\tthis.all = {};\n\t}\n\n\tget path() {\n\t\treturn this._path;\n\t}\n}\n","import semver from 'semver';\n\nexport default function semverDiff(versionA, versionB) {\n\tversionA = semver.parse(versionA);\n\tversionB = semver.parse(versionB);\n\n\tif (semver.compareBuild(versionA, versionB) >= 0) {\n\t\treturn;\n\t}\n\n\treturn semver.diff(versionA, versionB) || 'build';\n}\n","const typedArrayTypeNames = [\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array',\n];\nfunction isTypedArrayName(name) {\n return typedArrayTypeNames.includes(name);\n}\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Blob',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'WeakRef',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'FormData',\n 'URLSearchParams',\n 'HTMLElement',\n 'NaN',\n ...typedArrayTypeNames,\n];\nfunction isObjectTypeName(name) {\n return objectTypeNames.includes(name);\n}\nconst primitiveTypeNames = [\n 'null',\n 'undefined',\n 'string',\n 'number',\n 'bigint',\n 'boolean',\n 'symbol',\n];\nfunction isPrimitiveTypeName(name) {\n return primitiveTypeNames.includes(name);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isOfType(type) {\n return (value) => typeof value === type;\n}\nconst { toString } = Object.prototype;\nconst getObjectType = (value) => {\n const objectTypeName = toString.call(value).slice(8, -1);\n if (/HTML\\w+Element/.test(objectTypeName) && is.domElement(value)) {\n return 'HTMLElement';\n }\n if (isObjectTypeName(objectTypeName)) {\n return objectTypeName;\n }\n return undefined;\n};\nconst isObjectOfType = (type) => (value) => getObjectType(value) === type;\nfunction is(value) {\n if (value === null) {\n return 'null';\n }\n switch (typeof value) {\n case 'undefined': {\n return 'undefined';\n }\n case 'string': {\n return 'string';\n }\n case 'number': {\n return Number.isNaN(value) ? 'NaN' : 'number';\n }\n case 'boolean': {\n return 'boolean';\n }\n case 'function': {\n return 'Function';\n }\n case 'bigint': {\n return 'bigint';\n }\n case 'symbol': {\n return 'symbol';\n }\n default:\n }\n if (is.observable(value)) {\n return 'Observable';\n }\n if (is.array(value)) {\n return 'Array';\n }\n if (is.buffer(value)) {\n return 'Buffer';\n }\n const tagType = getObjectType(value);\n if (tagType) {\n return tagType;\n }\n if (value instanceof String || value instanceof Boolean || value instanceof Number) {\n throw new TypeError('Please don\\'t use object wrappers for primitive types');\n }\n return 'Object';\n}\nis.undefined = isOfType('undefined');\nis.string = isOfType('string');\nconst isNumberType = isOfType('number');\nis.number = (value) => isNumberType(value) && !is.nan(value);\nis.positiveNumber = (value) => is.number(value) && value > 0;\nis.negativeNumber = (value) => is.number(value) && value < 0;\nis.bigint = isOfType('bigint');\n// eslint-disable-next-line @typescript-eslint/ban-types\nis.function_ = isOfType('function');\n// eslint-disable-next-line @typescript-eslint/ban-types\nis.null_ = (value) => value === null;\nis.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');\nis.boolean = (value) => value === true || value === false;\nis.symbol = isOfType('symbol');\nis.numericString = (value) => is.string(value) && !is.emptyStringOrWhitespace(value) && !Number.isNaN(Number(value));\nis.array = (value, assertion) => {\n if (!Array.isArray(value)) {\n return false;\n }\n if (!is.function_(assertion)) {\n return true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return value.every(element => assertion(element));\n};\n// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\nis.buffer = (value) => value?.constructor?.isBuffer?.(value) ?? false;\nis.blob = (value) => isObjectOfType('Blob')(value);\nis.nullOrUndefined = (value) => is.null_(value) || is.undefined(value); // eslint-disable-line @typescript-eslint/ban-types\nis.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value)); // eslint-disable-line @typescript-eslint/ban-types\nis.iterable = (value) => is.function_(value?.[Symbol.iterator]);\nis.asyncIterable = (value) => is.function_(value?.[Symbol.asyncIterator]);\nis.generator = (value) => is.iterable(value) && is.function_(value?.next) && is.function_(value?.throw);\nis.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);\nis.nativePromise = (value) => isObjectOfType('Promise')(value);\nconst hasPromiseApi = (value) => is.function_(value?.then)\n && is.function_(value?.catch);\nis.promise = (value) => is.nativePromise(value) || hasPromiseApi(value);\nis.generatorFunction = isObjectOfType('GeneratorFunction');\nis.asyncGeneratorFunction = (value) => getObjectType(value) === 'AsyncGeneratorFunction';\nis.asyncFunction = (value) => getObjectType(value) === 'AsyncFunction';\n// eslint-disable-next-line no-prototype-builtins, @typescript-eslint/ban-types\nis.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');\nis.regExp = isObjectOfType('RegExp');\nis.date = isObjectOfType('Date');\nis.error = isObjectOfType('Error');\nis.map = (value) => isObjectOfType('Map')(value);\nis.set = (value) => isObjectOfType('Set')(value);\nis.weakMap = (value) => isObjectOfType('WeakMap')(value); // eslint-disable-line @typescript-eslint/ban-types\nis.weakSet = (value) => isObjectOfType('WeakSet')(value); // eslint-disable-line @typescript-eslint/ban-types\nis.weakRef = (value) => isObjectOfType('WeakRef')(value); // eslint-disable-line @typescript-eslint/ban-types\nis.int8Array = isObjectOfType('Int8Array');\nis.uint8Array = isObjectOfType('Uint8Array');\nis.uint8ClampedArray = isObjectOfType('Uint8ClampedArray');\nis.int16Array = isObjectOfType('Int16Array');\nis.uint16Array = isObjectOfType('Uint16Array');\nis.int32Array = isObjectOfType('Int32Array');\nis.uint32Array = isObjectOfType('Uint32Array');\nis.float32Array = isObjectOfType('Float32Array');\nis.float64Array = isObjectOfType('Float64Array');\nis.bigInt64Array = isObjectOfType('BigInt64Array');\nis.bigUint64Array = isObjectOfType('BigUint64Array');\nis.arrayBuffer = isObjectOfType('ArrayBuffer');\nis.sharedArrayBuffer = isObjectOfType('SharedArrayBuffer');\nis.dataView = isObjectOfType('DataView');\n// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\nis.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);\nis.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;\nis.urlInstance = (value) => isObjectOfType('URL')(value);\nis.urlString = (value) => {\n if (!is.string(value)) {\n return false;\n }\n try {\n new URL(value); // eslint-disable-line no-new\n return true;\n }\n catch {\n return false;\n }\n};\n// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`\nis.truthy = (value) => Boolean(value); // eslint-disable-line unicorn/prefer-native-coercion-functions\n// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`\nis.falsy = (value) => !value;\nis.nan = (value) => Number.isNaN(value);\nis.primitive = (value) => is.null_(value) || isPrimitiveTypeName(typeof value);\nis.integer = (value) => Number.isInteger(value);\nis.safeInteger = (value) => Number.isSafeInteger(value);\nis.plainObject = (value) => {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const prototype = Object.getPrototypeOf(value);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n};\nis.typedArray = (value) => isTypedArrayName(getObjectType(value));\nconst isValidLength = (value) => is.safeInteger(value) && value >= 0;\nis.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);\nis.tupleLike = (value, guards) => {\n if (is.array(guards) && is.array(value) && guards.length === value.length) {\n return guards.every((guard, index) => guard(value[index]));\n }\n return false;\n};\nis.inRange = (value, range) => {\n if (is.number(range)) {\n return value >= Math.min(0, range) && value <= Math.max(range, 0);\n }\n if (is.array(range) && range.length === 2) {\n return value >= Math.min(...range) && value <= Math.max(...range);\n }\n throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);\n};\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst NODE_TYPE_ELEMENT = 1;\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst DOM_PROPERTIES_TO_CHECK = [\n 'innerHTML',\n 'ownerDocument',\n 'style',\n 'attributes',\n 'nodeValue',\n];\nis.domElement = (value) => is.object(value)\n && value.nodeType === NODE_TYPE_ELEMENT\n && is.string(value.nodeName)\n && !is.plainObject(value)\n && DOM_PROPERTIES_TO_CHECK.every(property => property in value);\nis.observable = (value) => {\n if (!value) {\n return false;\n }\n // eslint-disable-next-line no-use-extend-native/no-use-extend-native, @typescript-eslint/no-unsafe-call\n if (value === value[Symbol.observable]?.()) {\n return true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (value === value['@@observable']?.()) {\n return true;\n }\n return false;\n};\nis.nodeStream = (value) => is.object(value) && is.function_(value.pipe) && !is.observable(value);\nis.infinite = (value) => value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY;\nconst isAbsoluteMod2 = (remainder) => (value) => is.integer(value) && Math.abs(value % 2) === remainder;\nis.evenInteger = isAbsoluteMod2(0);\nis.oddInteger = isAbsoluteMod2(1);\nis.emptyArray = (value) => is.array(value) && value.length === 0;\nis.nonEmptyArray = (value) => is.array(value) && value.length > 0;\nis.emptyString = (value) => is.string(value) && value.length === 0;\nconst isWhiteSpaceString = (value) => is.string(value) && !/\\S/.test(value);\nis.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);\n// TODO: Use `not ''` when the `not` operator is available.\nis.nonEmptyString = (value) => is.string(value) && value.length > 0;\n// TODO: Use `not ''` when the `not` operator is available.\nis.nonEmptyStringAndNotWhitespace = (value) => is.string(value) && !is.emptyStringOrWhitespace(value);\n// eslint-disable-next-line unicorn/no-array-callback-reference\nis.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;\n// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:\n// - https://github.com/Microsoft/TypeScript/pull/29317\n// eslint-disable-next-line unicorn/no-array-callback-reference\nis.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;\nis.emptySet = (value) => is.set(value) && value.size === 0;\nis.nonEmptySet = (value) => is.set(value) && value.size > 0;\n// eslint-disable-next-line unicorn/no-array-callback-reference\nis.emptyMap = (value) => is.map(value) && value.size === 0;\n// eslint-disable-next-line unicorn/no-array-callback-reference\nis.nonEmptyMap = (value) => is.map(value) && value.size > 0;\n// `PropertyKey` is any value that can be used as an object key (string, number, or symbol)\nis.propertyKey = (value) => is.any([is.string, is.number, is.symbol], value);\nis.formData = (value) => isObjectOfType('FormData')(value);\nis.urlSearchParams = (value) => isObjectOfType('URLSearchParams')(value);\nconst predicateOnArray = (method, predicate, values) => {\n if (!is.function_(predicate)) {\n throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);\n }\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n return method.call(values, predicate);\n};\nis.any = (predicate, ...values) => {\n const predicates = is.array(predicate) ? predicate : [predicate];\n return predicates.some(singlePredicate => predicateOnArray(Array.prototype.some, singlePredicate, values));\n};\nis.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);\nconst assertType = (condition, description, value, options = {}) => {\n if (!condition) {\n const { multipleValues } = options;\n const valuesMessage = multipleValues\n ? `received values of types ${[\n ...new Set(value.map(singleValue => `\\`${is(singleValue)}\\``)),\n ].join(', ')}`\n : `received value of type \\`${is(value)}\\``;\n throw new TypeError(`Expected value which is \\`${description}\\`, ${valuesMessage}.`);\n }\n};\n/* eslint-disable @typescript-eslint/no-confusing-void-expression */\nexport const assert = {\n // Unknowns.\n undefined: (value) => assertType(is.undefined(value), 'undefined', value),\n string: (value) => assertType(is.string(value), 'string', value),\n number: (value) => assertType(is.number(value), 'number', value),\n positiveNumber: (value) => assertType(is.positiveNumber(value), \"positive number\" /* AssertionTypeDescription.positiveNumber */, value),\n negativeNumber: (value) => assertType(is.negativeNumber(value), \"negative number\" /* AssertionTypeDescription.negativeNumber */, value),\n bigint: (value) => assertType(is.bigint(value), 'bigint', value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n function_: (value) => assertType(is.function_(value), 'Function', value),\n null_: (value) => assertType(is.null_(value), 'null', value),\n class_: (value) => assertType(is.class_(value), \"Class\" /* AssertionTypeDescription.class_ */, value),\n boolean: (value) => assertType(is.boolean(value), 'boolean', value),\n symbol: (value) => assertType(is.symbol(value), 'symbol', value),\n numericString: (value) => assertType(is.numericString(value), \"string with a number\" /* AssertionTypeDescription.numericString */, value),\n array: (value, assertion) => {\n const assert = assertType;\n assert(is.array(value), 'Array', value);\n if (assertion) {\n // eslint-disable-next-line unicorn/no-array-for-each, unicorn/no-array-callback-reference\n value.forEach(assertion);\n }\n },\n buffer: (value) => assertType(is.buffer(value), 'Buffer', value),\n blob: (value) => assertType(is.blob(value), 'Blob', value),\n nullOrUndefined: (value) => assertType(is.nullOrUndefined(value), \"null or undefined\" /* AssertionTypeDescription.nullOrUndefined */, value),\n object: (value) => assertType(is.object(value), 'Object', value),\n iterable: (value) => assertType(is.iterable(value), \"Iterable\" /* AssertionTypeDescription.iterable */, value),\n asyncIterable: (value) => assertType(is.asyncIterable(value), \"AsyncIterable\" /* AssertionTypeDescription.asyncIterable */, value),\n generator: (value) => assertType(is.generator(value), 'Generator', value),\n asyncGenerator: (value) => assertType(is.asyncGenerator(value), 'AsyncGenerator', value),\n nativePromise: (value) => assertType(is.nativePromise(value), \"native Promise\" /* AssertionTypeDescription.nativePromise */, value),\n promise: (value) => assertType(is.promise(value), 'Promise', value),\n generatorFunction: (value) => assertType(is.generatorFunction(value), 'GeneratorFunction', value),\n asyncGeneratorFunction: (value) => assertType(is.asyncGeneratorFunction(value), 'AsyncGeneratorFunction', value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n asyncFunction: (value) => assertType(is.asyncFunction(value), 'AsyncFunction', value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n boundFunction: (value) => assertType(is.boundFunction(value), 'Function', value),\n regExp: (value) => assertType(is.regExp(value), 'RegExp', value),\n date: (value) => assertType(is.date(value), 'Date', value),\n error: (value) => assertType(is.error(value), 'Error', value),\n map: (value) => assertType(is.map(value), 'Map', value),\n set: (value) => assertType(is.set(value), 'Set', value),\n weakMap: (value) => assertType(is.weakMap(value), 'WeakMap', value),\n weakSet: (value) => assertType(is.weakSet(value), 'WeakSet', value),\n weakRef: (value) => assertType(is.weakRef(value), 'WeakRef', value),\n int8Array: (value) => assertType(is.int8Array(value), 'Int8Array', value),\n uint8Array: (value) => assertType(is.uint8Array(value), 'Uint8Array', value),\n uint8ClampedArray: (value) => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),\n int16Array: (value) => assertType(is.int16Array(value), 'Int16Array', value),\n uint16Array: (value) => assertType(is.uint16Array(value), 'Uint16Array', value),\n int32Array: (value) => assertType(is.int32Array(value), 'Int32Array', value),\n uint32Array: (value) => assertType(is.uint32Array(value), 'Uint32Array', value),\n float32Array: (value) => assertType(is.float32Array(value), 'Float32Array', value),\n float64Array: (value) => assertType(is.float64Array(value), 'Float64Array', value),\n bigInt64Array: (value) => assertType(is.bigInt64Array(value), 'BigInt64Array', value),\n bigUint64Array: (value) => assertType(is.bigUint64Array(value), 'BigUint64Array', value),\n arrayBuffer: (value) => assertType(is.arrayBuffer(value), 'ArrayBuffer', value),\n sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), 'SharedArrayBuffer', value),\n dataView: (value) => assertType(is.dataView(value), 'DataView', value),\n enumCase: (value, targetEnum) => assertType(is.enumCase(value, targetEnum), 'EnumCase', value),\n urlInstance: (value) => assertType(is.urlInstance(value), 'URL', value),\n urlString: (value) => assertType(is.urlString(value), \"string with a URL\" /* AssertionTypeDescription.urlString */, value),\n truthy: (value) => assertType(is.truthy(value), \"truthy\" /* AssertionTypeDescription.truthy */, value),\n falsy: (value) => assertType(is.falsy(value), \"falsy\" /* AssertionTypeDescription.falsy */, value),\n nan: (value) => assertType(is.nan(value), \"NaN\" /* AssertionTypeDescription.nan */, value),\n primitive: (value) => assertType(is.primitive(value), \"primitive\" /* AssertionTypeDescription.primitive */, value),\n integer: (value) => assertType(is.integer(value), \"integer\" /* AssertionTypeDescription.integer */, value),\n safeInteger: (value) => assertType(is.safeInteger(value), \"integer\" /* AssertionTypeDescription.safeInteger */, value),\n plainObject: (value) => assertType(is.plainObject(value), \"plain object\" /* AssertionTypeDescription.plainObject */, value),\n typedArray: (value) => assertType(is.typedArray(value), \"TypedArray\" /* AssertionTypeDescription.typedArray */, value),\n arrayLike: (value) => assertType(is.arrayLike(value), \"array-like\" /* AssertionTypeDescription.arrayLike */, value),\n tupleLike: (value, guards) => assertType(is.tupleLike(value, guards), \"tuple-like\" /* AssertionTypeDescription.tupleLike */, value),\n domElement: (value) => assertType(is.domElement(value), \"HTMLElement\" /* AssertionTypeDescription.domElement */, value),\n observable: (value) => assertType(is.observable(value), 'Observable', value),\n nodeStream: (value) => assertType(is.nodeStream(value), \"Node.js Stream\" /* AssertionTypeDescription.nodeStream */, value),\n infinite: (value) => assertType(is.infinite(value), \"infinite number\" /* AssertionTypeDescription.infinite */, value),\n emptyArray: (value) => assertType(is.emptyArray(value), \"empty array\" /* AssertionTypeDescription.emptyArray */, value),\n nonEmptyArray: (value) => assertType(is.nonEmptyArray(value), \"non-empty array\" /* AssertionTypeDescription.nonEmptyArray */, value),\n emptyString: (value) => assertType(is.emptyString(value), \"empty string\" /* AssertionTypeDescription.emptyString */, value),\n emptyStringOrWhitespace: (value) => assertType(is.emptyStringOrWhitespace(value), \"empty string or whitespace\" /* AssertionTypeDescription.emptyStringOrWhitespace */, value),\n nonEmptyString: (value) => assertType(is.nonEmptyString(value), \"non-empty string\" /* AssertionTypeDescription.nonEmptyString */, value),\n nonEmptyStringAndNotWhitespace: (value) => assertType(is.nonEmptyStringAndNotWhitespace(value), \"non-empty string and not whitespace\" /* AssertionTypeDescription.nonEmptyStringAndNotWhitespace */, value),\n emptyObject: (value) => assertType(is.emptyObject(value), \"empty object\" /* AssertionTypeDescription.emptyObject */, value),\n nonEmptyObject: (value) => assertType(is.nonEmptyObject(value), \"non-empty object\" /* AssertionTypeDescription.nonEmptyObject */, value),\n emptySet: (value) => assertType(is.emptySet(value), \"empty set\" /* AssertionTypeDescription.emptySet */, value),\n nonEmptySet: (value) => assertType(is.nonEmptySet(value), \"non-empty set\" /* AssertionTypeDescription.nonEmptySet */, value),\n emptyMap: (value) => assertType(is.emptyMap(value), \"empty map\" /* AssertionTypeDescription.emptyMap */, value),\n nonEmptyMap: (value) => assertType(is.nonEmptyMap(value), \"non-empty map\" /* AssertionTypeDescription.nonEmptyMap */, value),\n propertyKey: (value) => assertType(is.propertyKey(value), 'PropertyKey', value),\n formData: (value) => assertType(is.formData(value), 'FormData', value),\n urlSearchParams: (value) => assertType(is.urlSearchParams(value), 'URLSearchParams', value),\n // Numbers.\n evenInteger: (value) => assertType(is.evenInteger(value), \"even integer\" /* AssertionTypeDescription.evenInteger */, value),\n oddInteger: (value) => assertType(is.oddInteger(value), \"odd integer\" /* AssertionTypeDescription.oddInteger */, value),\n // Two arguments.\n directInstanceOf: (instance, class_) => assertType(is.directInstanceOf(instance, class_), \"T\" /* AssertionTypeDescription.directInstanceOf */, instance),\n inRange: (value, range) => assertType(is.inRange(value, range), \"in range\" /* AssertionTypeDescription.inRange */, value),\n // Variadic functions.\n any: (predicate, ...values) => assertType(is.any(predicate, ...values), \"predicate returns truthy for any value\" /* AssertionTypeDescription.any */, values, { multipleValues: true }),\n all: (predicate, ...values) => assertType(is.all(predicate, ...values), \"predicate returns truthy for all values\" /* AssertionTypeDescription.all */, values, { multipleValues: true }),\n};\n/* eslint-enable @typescript-eslint/no-confusing-void-expression */\n// Some few keywords are reserved, but we'll populate them for Node.js users\n// See https://github.com/Microsoft/TypeScript/issues/2536\nObject.defineProperties(is, {\n class: {\n value: is.class_,\n },\n function: {\n value: is.function_,\n },\n null: {\n value: is.null_,\n },\n});\nObject.defineProperties(assert, {\n class: {\n value: assert.class_,\n },\n function: {\n value: assert.function_,\n },\n null: {\n value: assert.null_,\n },\n});\nexport default is;\n","export class CancelError extends Error {\n\tconstructor(reason) {\n\t\tsuper(reason || 'Promise was canceled');\n\t\tthis.name = 'CancelError';\n\t}\n\n\tget isCanceled() {\n\t\treturn true;\n\t}\n}\n\n// TODO: Use private class fields when ESLint 8 is out.\n\nexport default class PCancelable {\n\tstatic fn(userFunction) {\n\t\treturn (...arguments_) => {\n\t\t\treturn new PCancelable((resolve, reject, onCancel) => {\n\t\t\t\targuments_.push(onCancel);\n\t\t\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\t\t\tuserFunction(...arguments_).then(resolve, reject);\n\t\t\t});\n\t\t};\n\t}\n\n\tconstructor(executor) {\n\t\tthis._cancelHandlers = [];\n\t\tthis._isPending = true;\n\t\tthis._isCanceled = false;\n\t\tthis._rejectOnCancel = true;\n\n\t\tthis._promise = new Promise((resolve, reject) => {\n\t\t\tthis._reject = reject;\n\n\t\t\tconst onResolve = value => {\n\t\t\t\tif (!this._isCanceled || !onCancel.shouldReject) {\n\t\t\t\t\tthis._isPending = false;\n\t\t\t\t\tresolve(value);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst onReject = error => {\n\t\t\t\tthis._isPending = false;\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tconst onCancel = handler => {\n\t\t\t\tif (!this._isPending) {\n\t\t\t\t\tthrow new Error('The `onCancel` handler was attached after the promise settled.');\n\t\t\t\t}\n\n\t\t\t\tthis._cancelHandlers.push(handler);\n\t\t\t};\n\n\t\t\tObject.defineProperties(onCancel, {\n\t\t\t\tshouldReject: {\n\t\t\t\t\tget: () => this._rejectOnCancel,\n\t\t\t\t\tset: boolean => {\n\t\t\t\t\t\tthis._rejectOnCancel = boolean;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\texecutor(onResolve, onReject, onCancel);\n\t\t});\n\t}\n\n\tthen(onFulfilled, onRejected) {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\treturn this._promise.then(onFulfilled, onRejected);\n\t}\n\n\tcatch(onRejected) {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\treturn this._promise.catch(onRejected);\n\t}\n\n\tfinally(onFinally) {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\treturn this._promise.finally(onFinally);\n\t}\n\n\tcancel(reason) {\n\t\tif (!this._isPending || this._isCanceled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isCanceled = true;\n\n\t\tif (this._cancelHandlers.length > 0) {\n\t\t\ttry {\n\t\t\t\tfor (const handler of this._cancelHandlers) {\n\t\t\t\t\thandler();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis._reject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this._rejectOnCancel) {\n\t\t\tthis._reject(new CancelError(reason));\n\t\t}\n\t}\n\n\tget isCanceled() {\n\t\treturn this._isCanceled;\n\t}\n}\n\nObject.setPrototypeOf(PCancelable.prototype, Promise.prototype);\n","import is from '@sindresorhus/is';\n// A hacky check to prevent circular references.\nfunction isRequest(x) {\n return is.object(x) && '_onResponse' in x;\n}\n/**\nAn error to be thrown when a request fails.\nContains a `code` property with error class code, like `ECONNREFUSED`.\n*/\nexport class RequestError extends Error {\n constructor(message, error, self) {\n super(message);\n Object.defineProperty(this, \"input\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"stack\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"response\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"timings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Error.captureStackTrace(this, this.constructor);\n this.name = 'RequestError';\n this.code = error.code ?? 'ERR_GOT_REQUEST_ERROR';\n this.input = error.input;\n if (isRequest(self)) {\n Object.defineProperty(this, 'request', {\n enumerable: false,\n value: self,\n });\n Object.defineProperty(this, 'response', {\n enumerable: false,\n value: self.response,\n });\n this.options = self.options;\n }\n else {\n this.options = self;\n }\n this.timings = this.request?.timings;\n // Recover the original stacktrace\n if (is.string(error.stack) && is.string(this.stack)) {\n const indexOfMessage = this.stack.indexOf(this.message) + this.message.length;\n const thisStackTrace = this.stack.slice(indexOfMessage).split('\\n').reverse();\n const errorStackTrace = error.stack.slice(error.stack.indexOf(error.message) + error.message.length).split('\\n').reverse();\n // Remove duplicated traces\n while (errorStackTrace.length > 0 && errorStackTrace[0] === thisStackTrace[0]) {\n thisStackTrace.shift();\n }\n this.stack = `${this.stack.slice(0, indexOfMessage)}${thisStackTrace.reverse().join('\\n')}${errorStackTrace.reverse().join('\\n')}`;\n }\n }\n}\n/**\nAn error to be thrown when the server redirects you more than ten times.\nIncludes a `response` property.\n*/\nexport class MaxRedirectsError extends RequestError {\n constructor(request) {\n super(`Redirected ${request.options.maxRedirects} times. Aborting.`, {}, request);\n this.name = 'MaxRedirectsError';\n this.code = 'ERR_TOO_MANY_REDIRECTS';\n }\n}\n/**\nAn error to be thrown when the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304.\nIncludes a `response` property.\n*/\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class HTTPError extends RequestError {\n constructor(response) {\n super(`Response code ${response.statusCode} (${response.statusMessage})`, {}, response.request);\n this.name = 'HTTPError';\n this.code = 'ERR_NON_2XX_3XX_RESPONSE';\n }\n}\n/**\nAn error to be thrown when a cache method fails.\nFor example, if the database goes down or there's a filesystem error.\n*/\nexport class CacheError extends RequestError {\n constructor(error, request) {\n super(error.message, error, request);\n this.name = 'CacheError';\n this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_CACHE_ACCESS' : this.code;\n }\n}\n/**\nAn error to be thrown when the request body is a stream and an error occurs while reading from that stream.\n*/\nexport class UploadError extends RequestError {\n constructor(error, request) {\n super(error.message, error, request);\n this.name = 'UploadError';\n this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_UPLOAD' : this.code;\n }\n}\n/**\nAn error to be thrown when the request is aborted due to a timeout.\nIncludes an `event` and `timings` property.\n*/\nexport class TimeoutError extends RequestError {\n constructor(error, timings, request) {\n super(error.message, error, request);\n Object.defineProperty(this, \"timings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"event\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'TimeoutError';\n this.event = error.event;\n this.timings = timings;\n }\n}\n/**\nAn error to be thrown when reading from response stream fails.\n*/\nexport class ReadError extends RequestError {\n constructor(error, request) {\n super(error.message, error, request);\n this.name = 'ReadError';\n this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_READING_RESPONSE_STREAM' : this.code;\n }\n}\n/**\nAn error which always triggers a new retry when thrown.\n*/\nexport class RetryError extends RequestError {\n constructor(request) {\n super('Retrying', {}, request);\n this.name = 'RetryError';\n this.code = 'ERR_RETRYING';\n }\n}\n/**\nAn error to be thrown when the request is aborted by AbortController.\n*/\nexport class AbortError extends RequestError {\n constructor(request) {\n super('This operation was aborted.', {}, request);\n this.code = 'ERR_ABORTED';\n this.name = 'AbortError';\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isTLSSocket(socket) {\n return socket.encrypted;\n}\nconst deferToConnect = (socket, fn) => {\n let listeners;\n if (typeof fn === 'function') {\n const connect = fn;\n listeners = { connect };\n }\n else {\n listeners = fn;\n }\n const hasConnectListener = typeof listeners.connect === 'function';\n const hasSecureConnectListener = typeof listeners.secureConnect === 'function';\n const hasCloseListener = typeof listeners.close === 'function';\n const onConnect = () => {\n if (hasConnectListener) {\n listeners.connect();\n }\n if (isTLSSocket(socket) && hasSecureConnectListener) {\n if (socket.authorized) {\n listeners.secureConnect();\n }\n else if (!socket.authorizationError) {\n socket.once('secureConnect', listeners.secureConnect);\n }\n }\n if (hasCloseListener) {\n socket.once('close', listeners.close);\n }\n };\n if (socket.writable && !socket.connecting) {\n onConnect();\n }\n else if (socket.connecting) {\n socket.once('connect', onConnect);\n }\n else if (socket.destroyed && hasCloseListener) {\n listeners.close(socket._hadError);\n }\n};\nexports.default = deferToConnect;\n// For CommonJS default export support\nmodule.exports = deferToConnect;\nmodule.exports.default = deferToConnect;\n","import { errorMonitor } from 'events';\nimport { types } from 'util';\nimport deferToConnect from 'defer-to-connect';\nconst timer = (request) => {\n if (request.timings) {\n return request.timings;\n }\n const timings = {\n start: Date.now(),\n socket: undefined,\n lookup: undefined,\n connect: undefined,\n secureConnect: undefined,\n upload: undefined,\n response: undefined,\n end: undefined,\n error: undefined,\n abort: undefined,\n phases: {\n wait: undefined,\n dns: undefined,\n tcp: undefined,\n tls: undefined,\n request: undefined,\n firstByte: undefined,\n download: undefined,\n total: undefined,\n },\n };\n request.timings = timings;\n const handleError = (origin) => {\n origin.once(errorMonitor, () => {\n timings.error = Date.now();\n timings.phases.total = timings.error - timings.start;\n });\n };\n handleError(request);\n const onAbort = () => {\n timings.abort = Date.now();\n timings.phases.total = timings.abort - timings.start;\n };\n request.prependOnceListener('abort', onAbort);\n const onSocket = (socket) => {\n timings.socket = Date.now();\n timings.phases.wait = timings.socket - timings.start;\n if (types.isProxy(socket)) {\n return;\n }\n const lookupListener = () => {\n timings.lookup = Date.now();\n timings.phases.dns = timings.lookup - timings.socket;\n };\n socket.prependOnceListener('lookup', lookupListener);\n deferToConnect(socket, {\n connect: () => {\n timings.connect = Date.now();\n if (timings.lookup === undefined) {\n socket.removeListener('lookup', lookupListener);\n timings.lookup = timings.connect;\n timings.phases.dns = timings.lookup - timings.socket;\n }\n timings.phases.tcp = timings.connect - timings.lookup;\n },\n secureConnect: () => {\n timings.secureConnect = Date.now();\n timings.phases.tls = timings.secureConnect - timings.connect;\n },\n });\n };\n if (request.socket) {\n onSocket(request.socket);\n }\n else {\n request.prependOnceListener('socket', onSocket);\n }\n const onUpload = () => {\n timings.upload = Date.now();\n timings.phases.request = timings.upload - (timings.secureConnect ?? timings.connect);\n };\n if (request.writableFinished) {\n onUpload();\n }\n else {\n request.prependOnceListener('finish', onUpload);\n }\n request.prependOnceListener('response', (response) => {\n timings.response = Date.now();\n timings.phases.firstByte = timings.response - timings.upload;\n response.timings = timings;\n handleError(response);\n response.prependOnceListener('end', () => {\n request.off('abort', onAbort);\n response.off('aborted', onAbort);\n if (timings.phases.total) {\n // Aborted or errored\n return;\n }\n timings.end = Date.now();\n timings.phases.download = timings.end - timings.response;\n timings.phases.total = timings.end - timings.start;\n });\n response.prependOnceListener('aborted', onAbort);\n });\n return timings;\n};\nexport default timer;\n","// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\nconst DATA_URL_DEFAULT_MIME_TYPE = 'text/plain';\nconst DATA_URL_DEFAULT_CHARSET = 'us-ascii';\n\nconst testParameter = (name, filters) => filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);\n\nconst supportedProtocols = new Set([\n\t'https:',\n\t'http:',\n\t'file:',\n]);\n\nconst hasCustomProtocol = urlString => {\n\ttry {\n\t\tconst {protocol} = new URL(urlString);\n\t\treturn protocol.endsWith(':') && !supportedProtocols.has(protocol);\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst normalizeDataURL = (urlString, {stripHash}) => {\n\tconst match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString);\n\n\tif (!match) {\n\t\tthrow new Error(`Invalid URL: ${urlString}`);\n\t}\n\n\tlet {type, data, hash} = match.groups;\n\tconst mediaType = type.split(';');\n\thash = stripHash ? '' : hash;\n\n\tlet isBase64 = false;\n\tif (mediaType[mediaType.length - 1] === 'base64') {\n\t\tmediaType.pop();\n\t\tisBase64 = true;\n\t}\n\n\t// Lowercase MIME type\n\tconst mimeType = mediaType.shift()?.toLowerCase() ?? '';\n\tconst attributes = mediaType\n\t\t.map(attribute => {\n\t\t\tlet [key, value = ''] = attribute.split('=').map(string => string.trim());\n\n\t\t\t// Lowercase `charset`\n\t\t\tif (key === 'charset') {\n\t\t\t\tvalue = value.toLowerCase();\n\n\t\t\t\tif (value === DATA_URL_DEFAULT_CHARSET) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn `${key}${value ? `=${value}` : ''}`;\n\t\t})\n\t\t.filter(Boolean);\n\n\tconst normalizedMediaType = [\n\t\t...attributes,\n\t];\n\n\tif (isBase64) {\n\t\tnormalizedMediaType.push('base64');\n\t}\n\n\tif (normalizedMediaType.length > 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) {\n\t\tnormalizedMediaType.unshift(mimeType);\n\t}\n\n\treturn `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`;\n};\n\nexport default function normalizeUrl(urlString, options) {\n\toptions = {\n\t\tdefaultProtocol: 'http',\n\t\tnormalizeProtocol: true,\n\t\tforceHttp: false,\n\t\tforceHttps: false,\n\t\tstripAuthentication: true,\n\t\tstripHash: false,\n\t\tstripTextFragment: true,\n\t\tstripWWW: true,\n\t\tremoveQueryParameters: [/^utm_\\w+/i],\n\t\tremoveTrailingSlash: true,\n\t\tremoveSingleSlash: true,\n\t\tremoveDirectoryIndex: false,\n\t\tremoveExplicitPort: false,\n\t\tsortQueryParameters: true,\n\t\t...options,\n\t};\n\n\t// Legacy: Append `:` to the protocol if missing.\n\tif (typeof options.defaultProtocol === 'string' && !options.defaultProtocol.endsWith(':')) {\n\t\toptions.defaultProtocol = `${options.defaultProtocol}:`;\n\t}\n\n\turlString = urlString.trim();\n\n\t// Data URL\n\tif (/^data:/i.test(urlString)) {\n\t\treturn normalizeDataURL(urlString, options);\n\t}\n\n\tif (hasCustomProtocol(urlString)) {\n\t\treturn urlString;\n\t}\n\n\tconst hasRelativeProtocol = urlString.startsWith('//');\n\tconst isRelativeUrl = !hasRelativeProtocol && /^\\.*\\//.test(urlString);\n\n\t// Prepend protocol\n\tif (!isRelativeUrl) {\n\t\turlString = urlString.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//, options.defaultProtocol);\n\t}\n\n\tconst urlObject = new URL(urlString);\n\n\tif (options.forceHttp && options.forceHttps) {\n\t\tthrow new Error('The `forceHttp` and `forceHttps` options cannot be used together');\n\t}\n\n\tif (options.forceHttp && urlObject.protocol === 'https:') {\n\t\turlObject.protocol = 'http:';\n\t}\n\n\tif (options.forceHttps && urlObject.protocol === 'http:') {\n\t\turlObject.protocol = 'https:';\n\t}\n\n\t// Remove auth\n\tif (options.stripAuthentication) {\n\t\turlObject.username = '';\n\t\turlObject.password = '';\n\t}\n\n\t// Remove hash\n\tif (options.stripHash) {\n\t\turlObject.hash = '';\n\t} else if (options.stripTextFragment) {\n\t\turlObject.hash = urlObject.hash.replace(/#?:~:text.*?$/i, '');\n\t}\n\n\t// Remove duplicate slashes if not preceded by a protocol\n\t// NOTE: This could be implemented using a single negative lookbehind\n\t// regex, but we avoid that to maintain compatibility with older js engines\n\t// which do not have support for that feature.\n\tif (urlObject.pathname) {\n\t\t// TODO: Replace everything below with `urlObject.pathname = urlObject.pathname.replace(/(?<!\\b[a-z][a-z\\d+\\-.]{1,50}:)\\/{2,}/g, '/');` when Safari supports negative lookbehind.\n\n\t\t// Split the string by occurrences of this protocol regex, and perform\n\t\t// duplicate-slash replacement on the strings between those occurrences\n\t\t// (if any).\n\t\tconst protocolRegex = /\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g;\n\n\t\tlet lastIndex = 0;\n\t\tlet result = '';\n\t\tfor (;;) {\n\t\t\tconst match = protocolRegex.exec(urlObject.pathname);\n\t\t\tif (!match) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst protocol = match[0];\n\t\t\tconst protocolAtIndex = match.index;\n\t\t\tconst intermediate = urlObject.pathname.slice(lastIndex, protocolAtIndex);\n\n\t\t\tresult += intermediate.replace(/\\/{2,}/g, '/');\n\t\t\tresult += protocol;\n\t\t\tlastIndex = protocolAtIndex + protocol.length;\n\t\t}\n\n\t\tconst remnant = urlObject.pathname.slice(lastIndex, urlObject.pathname.length);\n\t\tresult += remnant.replace(/\\/{2,}/g, '/');\n\n\t\turlObject.pathname = result;\n\t}\n\n\t// Decode URI octets\n\tif (urlObject.pathname) {\n\t\ttry {\n\t\t\turlObject.pathname = decodeURI(urlObject.pathname);\n\t\t} catch {}\n\t}\n\n\t// Remove directory index\n\tif (options.removeDirectoryIndex === true) {\n\t\toptions.removeDirectoryIndex = [/^index\\.[a-z]+$/];\n\t}\n\n\tif (Array.isArray(options.removeDirectoryIndex) && options.removeDirectoryIndex.length > 0) {\n\t\tlet pathComponents = urlObject.pathname.split('/');\n\t\tconst lastComponent = pathComponents[pathComponents.length - 1];\n\n\t\tif (testParameter(lastComponent, options.removeDirectoryIndex)) {\n\t\t\tpathComponents = pathComponents.slice(0, -1);\n\t\t\turlObject.pathname = pathComponents.slice(1).join('/') + '/';\n\t\t}\n\t}\n\n\tif (urlObject.hostname) {\n\t\t// Remove trailing dot\n\t\turlObject.hostname = urlObject.hostname.replace(/\\.$/, '');\n\n\t\t// Remove `www.`\n\t\tif (options.stripWWW && /^www\\.(?!www\\.)[a-z\\-\\d]{1,63}\\.[a-z.\\-\\d]{2,63}$/.test(urlObject.hostname)) {\n\t\t\t// Each label should be max 63 at length (min: 1).\n\t\t\t// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names\n\t\t\t// Each TLD should be up to 63 characters long (min: 2).\n\t\t\t// It is technically possible to have a single character TLD, but none currently exist.\n\t\t\turlObject.hostname = urlObject.hostname.replace(/^www\\./, '');\n\t\t}\n\t}\n\n\t// Remove query unwanted parameters\n\tif (Array.isArray(options.removeQueryParameters)) {\n\t\t// eslint-disable-next-line unicorn/no-useless-spread -- We are intentionally spreading to get a copy.\n\t\tfor (const key of [...urlObject.searchParams.keys()]) {\n\t\t\tif (testParameter(key, options.removeQueryParameters)) {\n\t\t\t\turlObject.searchParams.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!Array.isArray(options.keepQueryParameters) && options.removeQueryParameters === true) {\n\t\turlObject.search = '';\n\t}\n\n\t// Keep wanted query parameters\n\tif (Array.isArray(options.keepQueryParameters) && options.keepQueryParameters.length > 0) {\n\t\t// eslint-disable-next-line unicorn/no-useless-spread -- We are intentionally spreading to get a copy.\n\t\tfor (const key of [...urlObject.searchParams.keys()]) {\n\t\t\tif (!testParameter(key, options.keepQueryParameters)) {\n\t\t\t\turlObject.searchParams.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort query parameters\n\tif (options.sortQueryParameters) {\n\t\turlObject.searchParams.sort();\n\n\t\t// Calling `.sort()` encodes the search parameters, so we need to decode them again.\n\t\ttry {\n\t\t\turlObject.search = decodeURIComponent(urlObject.search);\n\t\t} catch {}\n\t}\n\n\tif (options.removeTrailingSlash) {\n\t\turlObject.pathname = urlObject.pathname.replace(/\\/$/, '');\n\t}\n\n\t// Remove an explicit port number, excluding a default port number, if applicable\n\tif (options.removeExplicitPort && urlObject.port) {\n\t\turlObject.port = '';\n\t}\n\n\tconst oldUrlString = urlString;\n\n\t// Take advantage of many of the Node `url` normalizations\n\turlString = urlObject.toString();\n\n\tif (!options.removeSingleSlash && urlObject.pathname === '/' && !oldUrlString.endsWith('/') && urlObject.hash === '') {\n\t\turlString = urlString.replace(/\\/$/, '');\n\t}\n\n\t// Remove ending `/` unless removeSingleSlash is false\n\tif ((options.removeTrailingSlash || urlObject.pathname === '/') && urlObject.hash === '' && options.removeSingleSlash) {\n\t\turlString = urlString.replace(/\\/$/, '');\n\t}\n\n\t// Restore relative protocol, if applicable\n\tif (hasRelativeProtocol && !options.normalizeProtocol) {\n\t\turlString = urlString.replace(/^http:\\/\\//, '//');\n\t}\n\n\t// Remove http/https\n\tif (options.stripProtocol) {\n\t\turlString = urlString.replace(/^(?:https?:)?\\/\\//, '');\n\t}\n\n\treturn urlString;\n}\n","'use strict';\nconst {PassThrough: PassThroughStream} = require('stream');\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n","'use strict';\nconst {constants: BufferConstants} = require('buffer');\nconst stream = require('stream');\nconst {promisify} = require('util');\nconst bufferStream = require('./buffer-stream');\n\nconst streamPipelinePromisified = promisify(stream.pipeline);\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\tthrow new Error('Expected a stream');\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\tconst stream = bufferStream(options);\n\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait streamPipelinePromisified(inputStream, stream);\n\t\t\t\tresolve();\n\t\t\t} catch (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t}\n\t\t})();\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n","export default function lowercaseKeys(object) {\n\treturn Object.fromEntries(Object.entries(object).map(([key, value]) => [key.toLowerCase(), value]));\n}\n","import {Readable as ReadableStream} from 'node:stream';\nimport lowercaseKeys from 'lowercase-keys';\n\nexport default class Response extends ReadableStream {\n\tstatusCode;\n\theaders;\n\tbody;\n\turl;\n\n\tconstructor({statusCode, headers, body, url}) {\n\t\tif (typeof statusCode !== 'number') {\n\t\t\tthrow new TypeError('Argument `statusCode` should be a number');\n\t\t}\n\n\t\tif (typeof headers !== 'object') {\n\t\t\tthrow new TypeError('Argument `headers` should be an object');\n\t\t}\n\n\t\tif (!(body instanceof Uint8Array)) {\n\t\t\tthrow new TypeError('Argument `body` should be a buffer');\n\t\t}\n\n\t\tif (typeof url !== 'string') {\n\t\t\tthrow new TypeError('Argument `url` should be a string');\n\t\t}\n\n\t\tsuper({\n\t\t\tread() {\n\t\t\t\tthis.push(body);\n\t\t\t\tthis.push(null);\n\t\t\t},\n\t\t});\n\n\t\tthis.statusCode = statusCode;\n\t\tthis.headers = lowercaseKeys(headers);\n\t\tthis.body = body;\n\t\tthis.url = url;\n\t}\n}\n","//TODO: handle reviver/dehydrate function like normal\n//and handle indentation, like normal.\n//if anyone needs this... please send pull request.\n\nexports.stringify = function stringify (o) {\n if('undefined' == typeof o) return o\n\n if(o && Buffer.isBuffer(o))\n return JSON.stringify(':base64:' + o.toString('base64'))\n\n if(o && o.toJSON)\n o = o.toJSON()\n\n if(o && 'object' === typeof o) {\n var s = ''\n var array = Array.isArray(o)\n s = array ? '[' : '{'\n var first = true\n\n for(var k in o) {\n var ignore = 'function' == typeof o[k] || (!array && 'undefined' === typeof o[k])\n if(Object.hasOwnProperty.call(o, k) && !ignore) {\n if(!first)\n s += ','\n first = false\n if (array) {\n if(o[k] == undefined)\n s += 'null'\n else\n s += stringify(o[k])\n } else if (o[k] !== void(0)) {\n s += stringify(k) + ':' + stringify(o[k])\n }\n }\n }\n\n s += array ? ']' : '}'\n\n return s\n } else if ('string' === typeof o) {\n return JSON.stringify(/^:/.test(o) ? ':' + o : o)\n } else if ('undefined' === typeof o) {\n return 'null';\n } else\n return JSON.stringify(o)\n}\n\nexports.parse = function (s) {\n return JSON.parse(s, function (key, value) {\n if('string' === typeof value) {\n if(/^:base64:/.test(value))\n return Buffer.from(value.substring(8), 'base64')\n else\n return /^:/.test(value) ? value.substring(1) : value \n }\n return value\n })\n}\n","'use strict';\n\nconst EventEmitter = require('events');\nconst JSONB = require('json-buffer');\n\nconst loadStore = options => {\n\tconst adapters = {\n\t\tredis: '@keyv/redis',\n\t\trediss: '@keyv/redis',\n\t\tmongodb: '@keyv/mongo',\n\t\tmongo: '@keyv/mongo',\n\t\tsqlite: '@keyv/sqlite',\n\t\tpostgresql: '@keyv/postgres',\n\t\tpostgres: '@keyv/postgres',\n\t\tmysql: '@keyv/mysql',\n\t\tetcd: '@keyv/etcd',\n\t\toffline: '@keyv/offline',\n\t\ttiered: '@keyv/tiered',\n\t};\n\tif (options.adapter || options.uri) {\n\t\tconst adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];\n\t\treturn new (require(adapters[adapter]))(options);\n\t}\n\n\treturn new Map();\n};\n\nconst iterableAdapters = [\n\t'sqlite',\n\t'postgres',\n\t'mysql',\n\t'mongo',\n\t'redis',\n\t'tiered',\n];\n\nclass Keyv extends EventEmitter {\n\tconstructor(uri, {emitErrors = true, ...options} = {}) {\n\t\tsuper();\n\t\tthis.opts = {\n\t\t\tnamespace: 'keyv',\n\t\t\tserialize: JSONB.stringify,\n\t\t\tdeserialize: JSONB.parse,\n\t\t\t...((typeof uri === 'string') ? {uri} : uri),\n\t\t\t...options,\n\t\t};\n\n\t\tif (!this.opts.store) {\n\t\t\tconst adapterOptions = {...this.opts};\n\t\t\tthis.opts.store = loadStore(adapterOptions);\n\t\t}\n\n\t\tif (this.opts.compression) {\n\t\t\tconst compression = this.opts.compression;\n\t\t\tthis.opts.serialize = compression.serialize.bind(compression);\n\t\t\tthis.opts.deserialize = compression.deserialize.bind(compression);\n\t\t}\n\n\t\tif (typeof this.opts.store.on === 'function' && emitErrors) {\n\t\t\tthis.opts.store.on('error', error => this.emit('error', error));\n\t\t}\n\n\t\tthis.opts.store.namespace = this.opts.namespace;\n\n\t\tconst generateIterator = iterator => async function * () {\n\t\t\tfor await (const [key, raw] of typeof iterator === 'function'\n\t\t\t\t? iterator(this.opts.store.namespace)\n\t\t\t\t: iterator) {\n\t\t\t\tconst data = await this.opts.deserialize(raw);\n\t\t\t\tif (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (typeof data.expires === 'number' && Date.now() > data.expires) {\n\t\t\t\t\tthis.delete(key);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tyield [this._getKeyUnprefix(key), data.value];\n\t\t\t}\n\t\t};\n\n\t\t// Attach iterators\n\t\tif (typeof this.opts.store[Symbol.iterator] === 'function' && this.opts.store instanceof Map) {\n\t\t\tthis.iterator = generateIterator(this.opts.store);\n\t\t} else if (typeof this.opts.store.iterator === 'function' && this.opts.store.opts\n\t\t\t&& this._checkIterableAdaptar()) {\n\t\t\tthis.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));\n\t\t}\n\t}\n\n\t_checkIterableAdaptar() {\n\t\treturn iterableAdapters.includes(this.opts.store.opts.dialect)\n\t\t\t|| iterableAdapters.findIndex(element => this.opts.store.opts.url.includes(element)) >= 0;\n\t}\n\n\t_getKeyPrefix(key) {\n\t\treturn `${this.opts.namespace}:${key}`;\n\t}\n\n\t_getKeyPrefixArray(keys) {\n\t\treturn keys.map(key => `${this.opts.namespace}:${key}`);\n\t}\n\n\t_getKeyUnprefix(key) {\n\t\treturn key\n\t\t\t.split(':')\n\t\t\t.splice(1)\n\t\t\t.join(':');\n\t}\n\n\tget(key, options) {\n\t\tconst {store} = this.opts;\n\t\tconst isArray = Array.isArray(key);\n\t\tconst keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);\n\t\tif (isArray && store.getMany === undefined) {\n\t\t\tconst promises = [];\n\t\t\tfor (const key of keyPrefixed) {\n\t\t\t\tpromises.push(Promise.resolve()\n\t\t\t\t\t.then(() => store.get(key))\n\t\t\t\t\t.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))\n\t\t\t\t\t.then(data => {\n\t\t\t\t\t\tif (data === undefined || data === null) {\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof data.expires === 'number' && Date.now() > data.expires) {\n\t\t\t\t\t\t\treturn this.delete(key).then(() => undefined);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (options && options.raw) ? data : data.value;\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn Promise.allSettled(promises)\n\t\t\t\t.then(values => {\n\t\t\t\t\tconst data = [];\n\t\t\t\t\tfor (const value of values) {\n\t\t\t\t\t\tdata.push(value.value);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}\n\n\t\treturn Promise.resolve()\n\t\t\t.then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed))\n\t\t\t.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))\n\t\t\t.then(data => {\n\t\t\t\tif (data === undefined || data === null) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tif (isArray) {\n\t\t\t\t\tconst result = [];\n\n\t\t\t\t\tfor (let row of data) {\n\t\t\t\t\t\tif ((typeof row === 'string')) {\n\t\t\t\t\t\t\trow = this.opts.deserialize(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (row === undefined || row === null) {\n\t\t\t\t\t\t\tresult.push(undefined);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof row.expires === 'number' && Date.now() > row.expires) {\n\t\t\t\t\t\t\tthis.delete(key).then(() => undefined);\n\t\t\t\t\t\t\tresult.push(undefined);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.push((options && options.raw) ? row : row.value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (typeof data.expires === 'number' && Date.now() > data.expires) {\n\t\t\t\t\treturn this.delete(key).then(() => undefined);\n\t\t\t\t}\n\n\t\t\t\treturn (options && options.raw) ? data : data.value;\n\t\t\t});\n\t}\n\n\tset(key, value, ttl) {\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\tif (typeof ttl === 'undefined') {\n\t\t\tttl = this.opts.ttl;\n\t\t}\n\n\t\tif (ttl === 0) {\n\t\t\tttl = undefined;\n\t\t}\n\n\t\tconst {store} = this.opts;\n\n\t\treturn Promise.resolve()\n\t\t\t.then(() => {\n\t\t\t\tconst expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;\n\t\t\t\tif (typeof value === 'symbol') {\n\t\t\t\t\tthis.emit('error', 'symbol cannot be serialized');\n\t\t\t\t}\n\n\t\t\t\tvalue = {value, expires};\n\t\t\t\treturn this.opts.serialize(value);\n\t\t\t})\n\t\t\t.then(value => store.set(keyPrefixed, value, ttl))\n\t\t\t.then(() => true);\n\t}\n\n\tdelete(key) {\n\t\tconst {store} = this.opts;\n\t\tif (Array.isArray(key)) {\n\t\t\tconst keyPrefixed = this._getKeyPrefixArray(key);\n\t\t\tif (store.deleteMany === undefined) {\n\t\t\t\tconst promises = [];\n\t\t\t\tfor (const key of keyPrefixed) {\n\t\t\t\t\tpromises.push(store.delete(key));\n\t\t\t\t}\n\n\t\t\t\treturn Promise.allSettled(promises)\n\t\t\t\t\t.then(values => values.every(x => x.value === true));\n\t\t\t}\n\n\t\t\treturn Promise.resolve()\n\t\t\t\t.then(() => store.deleteMany(keyPrefixed));\n\t\t}\n\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\treturn Promise.resolve()\n\t\t\t.then(() => store.delete(keyPrefixed));\n\t}\n\n\tclear() {\n\t\tconst {store} = this.opts;\n\t\treturn Promise.resolve()\n\t\t\t.then(() => store.clear());\n\t}\n\n\thas(key) {\n\t\tconst keyPrefixed = this._getKeyPrefix(key);\n\t\tconst {store} = this.opts;\n\t\treturn Promise.resolve()\n\t\t\t.then(async () => {\n\t\t\t\tif (typeof store.has === 'function') {\n\t\t\t\t\treturn store.has(keyPrefixed);\n\t\t\t\t}\n\n\t\t\t\tconst value = await store.get(keyPrefixed);\n\t\t\t\treturn value !== undefined;\n\t\t\t});\n\t}\n\n\tdisconnect() {\n\t\tconst {store} = this.opts;\n\t\tif (typeof store.disconnect === 'function') {\n\t\t\treturn store.disconnect();\n\t\t}\n\t}\n}\n\nmodule.exports = Keyv;\n","// We define these manually to ensure they're always copied\n// even if they would move up the prototype chain\n// https://nodejs.org/api/http.html#http_class_http_incomingmessage\nconst knownProperties = [\n\t'aborted',\n\t'complete',\n\t'headers',\n\t'httpVersion',\n\t'httpVersionMinor',\n\t'httpVersionMajor',\n\t'method',\n\t'rawHeaders',\n\t'rawTrailers',\n\t'setTimeout',\n\t'socket',\n\t'statusCode',\n\t'statusMessage',\n\t'trailers',\n\t'url',\n];\n\nexport default function mimicResponse(fromStream, toStream) {\n\tif (toStream._readableState.autoDestroy) {\n\t\tthrow new Error('The second stream must have the `autoDestroy` option set to `false`');\n\t}\n\n\tconst fromProperties = new Set([...Object.keys(fromStream), ...knownProperties]);\n\n\tconst properties = {};\n\n\tfor (const property of fromProperties) {\n\t\t// Don't overwrite existing properties.\n\t\tif (property in toStream) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tproperties[property] = {\n\t\t\tget() {\n\t\t\t\tconst value = fromStream[property];\n\t\t\t\tconst isFunction = typeof value === 'function';\n\n\t\t\t\treturn isFunction ? value.bind(fromStream) : value;\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tfromStream[property] = value;\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t};\n\t}\n\n\tObject.defineProperties(toStream, properties);\n\n\tfromStream.once('aborted', () => {\n\t\ttoStream.destroy();\n\n\t\ttoStream.emit('aborted');\n\t});\n\n\tfromStream.once('close', () => {\n\t\tif (fromStream.complete) {\n\t\t\tif (toStream.readable) {\n\t\t\t\ttoStream.once('end', () => {\n\t\t\t\t\ttoStream.emit('close');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttoStream.emit('close');\n\t\t\t}\n\t\t} else {\n\t\t\ttoStream.emit('close');\n\t\t}\n\t});\n\n\treturn toStream;\n}\n","// Type definitions for cacheable-request 6.0\n// Project: https://github.com/lukechilds/cacheable-request#readme\n// Definitions by: BendingBender <https://github.com/BendingBender>\n// Paul Melnikow <https://github.com/paulmelnikow>\n// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\n// TypeScript Version: 2.3\nexport class RequestError extends Error {\n constructor(error) {\n super(error.message);\n Object.assign(this, error);\n }\n}\nexport class CacheError extends Error {\n constructor(error) {\n super(error.message);\n Object.assign(this, error);\n }\n}\n//# sourceMappingURL=types.js.map","import EventEmitter from 'node:events';\nimport urlLib from 'node:url';\nimport crypto from 'node:crypto';\nimport stream, { PassThrough as PassThroughStream } from 'node:stream';\nimport normalizeUrl from 'normalize-url';\nimport getStream from 'get-stream';\nimport CachePolicy from 'http-cache-semantics';\nimport Response from 'responselike';\nimport Keyv from 'keyv';\nimport mimicResponse from 'mimic-response';\nimport { CacheError, RequestError } from './types.js';\nclass CacheableRequest {\n constructor(cacheRequest, cacheAdapter) {\n this.hooks = new Map();\n this.request = () => (options, cb) => {\n let url;\n if (typeof options === 'string') {\n url = normalizeUrlObject(urlLib.parse(options));\n options = {};\n }\n else if (options instanceof urlLib.URL) {\n url = normalizeUrlObject(urlLib.parse(options.toString()));\n options = {};\n }\n else {\n const [pathname, ...searchParts] = (options.path ?? '').split('?');\n const search = searchParts.length > 0\n ? `?${searchParts.join('?')}`\n : '';\n url = normalizeUrlObject({ ...options, pathname, search });\n }\n options = {\n headers: {},\n method: 'GET',\n cache: true,\n strictTtl: false,\n automaticFailover: false,\n ...options,\n ...urlObjectToRequestOptions(url),\n };\n options.headers = Object.fromEntries(entries(options.headers).map(([key, value]) => [key.toLowerCase(), value]));\n const ee = new EventEmitter();\n const normalizedUrlString = normalizeUrl(urlLib.format(url), {\n stripWWW: false,\n removeTrailingSlash: false,\n stripAuthentication: false,\n });\n let key = `${options.method}:${normalizedUrlString}`;\n // POST, PATCH, and PUT requests may be cached, depending on the response\n // cache-control headers. As a result, the body of the request should be\n // added to the cache key in order to avoid collisions.\n if (options.body && options.method !== undefined && ['POST', 'PATCH', 'PUT'].includes(options.method)) {\n if (options.body instanceof stream.Readable) {\n // Streamed bodies should completely skip the cache because they may\n // or may not be hashable and in either case the stream would need to\n // close before the cache key could be generated.\n options.cache = false;\n }\n else {\n key += `:${crypto.createHash('md5').update(options.body).digest('hex')}`;\n }\n }\n let revalidate = false;\n let madeRequest = false;\n const makeRequest = (options_) => {\n madeRequest = true;\n let requestErrored = false;\n let requestErrorCallback = () => { };\n const requestErrorPromise = new Promise(resolve => {\n requestErrorCallback = () => {\n if (!requestErrored) {\n requestErrored = true;\n resolve();\n }\n };\n });\n const handler = async (response) => {\n if (revalidate) {\n response.status = response.statusCode;\n const revalidatedPolicy = CachePolicy.fromObject(revalidate.cachePolicy).revalidatedPolicy(options_, response);\n if (!revalidatedPolicy.modified) {\n response.resume();\n await new Promise(resolve => {\n // Skipping 'error' handler cause 'error' event should't be emitted for 304 response\n response\n .once('end', resolve);\n });\n const headers = convertHeaders(revalidatedPolicy.policy.responseHeaders());\n response = new Response({ statusCode: revalidate.statusCode, headers, body: revalidate.body, url: revalidate.url });\n response.cachePolicy = revalidatedPolicy.policy;\n response.fromCache = true;\n }\n }\n if (!response.fromCache) {\n response.cachePolicy = new CachePolicy(options_, response, options_);\n response.fromCache = false;\n }\n let clonedResponse;\n if (options_.cache && response.cachePolicy.storable()) {\n clonedResponse = cloneResponse(response);\n (async () => {\n try {\n const bodyPromise = getStream.buffer(response);\n await Promise.race([\n requestErrorPromise,\n new Promise(resolve => response.once('end', resolve)),\n new Promise(resolve => response.once('close', resolve)), // eslint-disable-line no-promise-executor-return\n ]);\n const body = await bodyPromise;\n let value = {\n url: response.url,\n statusCode: response.fromCache ? revalidate.statusCode : response.statusCode,\n body,\n cachePolicy: response.cachePolicy.toObject(),\n };\n let ttl = options_.strictTtl ? response.cachePolicy.timeToLive() : undefined;\n if (options_.maxTtl) {\n ttl = ttl ? Math.min(ttl, options_.maxTtl) : options_.maxTtl;\n }\n if (this.hooks.size > 0) {\n /* eslint-disable no-await-in-loop */\n for (const key_ of this.hooks.keys()) {\n value = await this.runHook(key_, value, response);\n }\n /* eslint-enable no-await-in-loop */\n }\n await this.cache.set(key, value, ttl);\n }\n catch (error) {\n ee.emit('error', new CacheError(error));\n }\n })();\n }\n else if (options_.cache && revalidate) {\n (async () => {\n try {\n await this.cache.delete(key);\n }\n catch (error) {\n ee.emit('error', new CacheError(error));\n }\n })();\n }\n ee.emit('response', clonedResponse ?? response);\n if (typeof cb === 'function') {\n cb(clonedResponse ?? response);\n }\n };\n try {\n const request_ = this.cacheRequest(options_, handler);\n request_.once('error', requestErrorCallback);\n request_.once('abort', requestErrorCallback);\n request_.once('destroy', requestErrorCallback);\n ee.emit('request', request_);\n }\n catch (error) {\n ee.emit('error', new RequestError(error));\n }\n };\n (async () => {\n const get = async (options_) => {\n await Promise.resolve();\n const cacheEntry = options_.cache ? await this.cache.get(key) : undefined;\n if (cacheEntry === undefined && !options_.forceRefresh) {\n makeRequest(options_);\n return;\n }\n const policy = CachePolicy.fromObject(cacheEntry.cachePolicy);\n if (policy.satisfiesWithoutRevalidation(options_) && !options_.forceRefresh) {\n const headers = convertHeaders(policy.responseHeaders());\n const response = new Response({ statusCode: cacheEntry.statusCode, headers, body: cacheEntry.body, url: cacheEntry.url });\n response.cachePolicy = policy;\n response.fromCache = true;\n ee.emit('response', response);\n if (typeof cb === 'function') {\n cb(response);\n }\n }\n else if (policy.satisfiesWithoutRevalidation(options_) && Date.now() >= policy.timeToLive() && options_.forceRefresh) {\n await this.cache.delete(key);\n options_.headers = policy.revalidationHeaders(options_);\n makeRequest(options_);\n }\n else {\n revalidate = cacheEntry;\n options_.headers = policy.revalidationHeaders(options_);\n makeRequest(options_);\n }\n };\n const errorHandler = (error) => ee.emit('error', new CacheError(error));\n if (this.cache instanceof Keyv) {\n const cachek = this.cache;\n cachek.once('error', errorHandler);\n ee.on('error', () => cachek.removeListener('error', errorHandler));\n ee.on('response', () => cachek.removeListener('error', errorHandler));\n }\n try {\n await get(options);\n }\n catch (error) {\n if (options.automaticFailover && !madeRequest) {\n makeRequest(options);\n }\n ee.emit('error', new CacheError(error));\n }\n })();\n return ee;\n };\n this.addHook = (name, fn) => {\n if (!this.hooks.has(name)) {\n this.hooks.set(name, fn);\n }\n };\n this.removeHook = (name) => this.hooks.delete(name);\n this.getHook = (name) => this.hooks.get(name);\n this.runHook = async (name, ...args) => this.hooks.get(name)?.(...args);\n if (cacheAdapter instanceof Keyv) {\n this.cache = cacheAdapter;\n }\n else if (typeof cacheAdapter === 'string') {\n this.cache = new Keyv({\n uri: cacheAdapter,\n namespace: 'cacheable-request',\n });\n }\n else {\n this.cache = new Keyv({\n store: cacheAdapter,\n namespace: 'cacheable-request',\n });\n }\n this.request = this.request.bind(this);\n this.cacheRequest = cacheRequest;\n }\n}\nconst entries = Object.entries;\nconst cloneResponse = (response) => {\n const clone = new PassThroughStream({ autoDestroy: false });\n mimicResponse(response, clone);\n return response.pipe(clone);\n};\nconst urlObjectToRequestOptions = (url) => {\n const options = { ...url };\n options.path = `${url.pathname || '/'}${url.search || ''}`;\n delete options.pathname;\n delete options.search;\n return options;\n};\nconst normalizeUrlObject = (url) => \n// If url was parsed by url.parse or new URL:\n// - hostname will be set\n// - host will be hostname[:port]\n// - port will be set if it was explicit in the parsed string\n// Otherwise, url was from request options:\n// - hostname or host may be set\n// - host shall not have port encoded\n({\n protocol: url.protocol,\n auth: url.auth,\n hostname: url.hostname || url.host || 'localhost',\n port: url.port,\n pathname: url.pathname,\n search: url.search,\n});\nconst convertHeaders = (headers) => {\n const result = [];\n for (const name of Object.keys(headers)) {\n result[name.toLowerCase()] = headers[name];\n }\n return result;\n};\nexport default CacheableRequest;\nexport * from './types.js';\nexport const onResponse = 'onResponse';\n//# sourceMappingURL=index.js.map","'use strict';\n\n// We define these manually to ensure they're always copied\n// even if they would move up the prototype chain\n// https://nodejs.org/api/http.html#http_class_http_incomingmessage\nconst knownProperties = [\n\t'aborted',\n\t'complete',\n\t'headers',\n\t'httpVersion',\n\t'httpVersionMinor',\n\t'httpVersionMajor',\n\t'method',\n\t'rawHeaders',\n\t'rawTrailers',\n\t'setTimeout',\n\t'socket',\n\t'statusCode',\n\t'statusMessage',\n\t'trailers',\n\t'url'\n];\n\nmodule.exports = (fromStream, toStream) => {\n\tif (toStream._readableState.autoDestroy) {\n\t\tthrow new Error('The second stream must have the `autoDestroy` option set to `false`');\n\t}\n\n\tconst fromProperties = new Set(Object.keys(fromStream).concat(knownProperties));\n\n\tconst properties = {};\n\n\tfor (const property of fromProperties) {\n\t\t// Don't overwrite existing properties.\n\t\tif (property in toStream) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tproperties[property] = {\n\t\t\tget() {\n\t\t\t\tconst value = fromStream[property];\n\t\t\t\tconst isFunction = typeof value === 'function';\n\n\t\t\t\treturn isFunction ? value.bind(fromStream) : value;\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tfromStream[property] = value;\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false\n\t\t};\n\t}\n\n\tObject.defineProperties(toStream, properties);\n\n\tfromStream.once('aborted', () => {\n\t\ttoStream.destroy();\n\n\t\ttoStream.emit('aborted');\n\t});\n\n\tfromStream.once('close', () => {\n\t\tif (fromStream.complete) {\n\t\t\tif (toStream.readable) {\n\t\t\t\ttoStream.once('end', () => {\n\t\t\t\t\ttoStream.emit('close');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttoStream.emit('close');\n\t\t\t}\n\t\t} else {\n\t\t\ttoStream.emit('close');\n\t\t}\n\t});\n\n\treturn toStream;\n};\n","'use strict';\nconst {Transform, PassThrough} = require('stream');\nconst zlib = require('zlib');\nconst mimicResponse = require('mimic-response');\n\nmodule.exports = response => {\n\tconst contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();\n\n\tif (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {\n\t\treturn response;\n\t}\n\n\t// TODO: Remove this when targeting Node.js 12.\n\tconst isBrotli = contentEncoding === 'br';\n\tif (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {\n\t\tresponse.destroy(new Error('Brotli is not supported on Node.js < 12'));\n\t\treturn response;\n\t}\n\n\tlet isEmpty = true;\n\n\tconst checker = new Transform({\n\t\ttransform(data, _encoding, callback) {\n\t\t\tisEmpty = false;\n\n\t\t\tcallback(null, data);\n\t\t},\n\n\t\tflush(callback) {\n\t\t\tcallback();\n\t\t}\n\t});\n\n\tconst finalStream = new PassThrough({\n\t\tautoDestroy: false,\n\t\tdestroy(error, callback) {\n\t\t\tresponse.destroy();\n\n\t\t\tcallback(error);\n\t\t}\n\t});\n\n\tconst decompressStream = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();\n\n\tdecompressStream.once('error', error => {\n\t\tif (isEmpty && !response.readable) {\n\t\t\tfinalStream.end();\n\t\t\treturn;\n\t\t}\n\n\t\tfinalStream.destroy(error);\n\t});\n\n\tmimicResponse(response, finalStream);\n\tresponse.pipe(checker).pipe(decompressStream).pipe(finalStream);\n\n\treturn finalStream;\n};\n","export const isFunction = (value) => (typeof value === \"function\");\n","import { isFunction } from \"./isFunction.js\";\nconst isAsyncIterable = (value) => (isFunction(value[Symbol.asyncIterator]));\nasync function* readStream(readable) {\n const reader = readable.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n}\nexport const getStreamIterator = (source) => {\n if (isAsyncIterable(source)) {\n return source;\n }\n if (isFunction(source.getReader)) {\n return readStream(source);\n }\n throw new TypeError(\"Unsupported data source: Expected either ReadableStream or async iterable.\");\n};\n","const alphabet = \"abcdefghijklmnopqrstuvwxyz0123456789\";\nexport function createBoundary() {\n let size = 16;\n let res = \"\";\n while (size--) {\n res += alphabet[(Math.random() * alphabet.length) << 0];\n }\n return res;\n}\n","export const normalizeValue = (value) => String(value)\n .replace(/\\r|\\n/g, (match, i, str) => {\n if ((match === \"\\r\" && str[i + 1] !== \"\\n\")\n || (match === \"\\n\" && str[i - 1] !== \"\\r\")) {\n return \"\\r\\n\";\n }\n return match;\n});\n","const getType = (value) => (Object.prototype.toString.call(value).slice(8, -1).toLowerCase());\nexport function isPlainObject(value) {\n if (getType(value) !== \"object\") {\n return false;\n }\n const pp = Object.getPrototypeOf(value);\n if (pp === null || pp === undefined) {\n return true;\n }\n const Ctor = pp.constructor && pp.constructor.toString();\n return Ctor === Object.toString();\n}\n","function getProperty(target, prop) {\n if (typeof prop === \"string\") {\n for (const [name, value] of Object.entries(target)) {\n if (prop.toLowerCase() === name.toLowerCase()) {\n return value;\n }\n }\n }\n return undefined;\n}\nexport const proxyHeaders = (object) => new Proxy(object, {\n get: (target, prop) => getProperty(target, prop),\n has: (target, prop) => getProperty(target, prop) !== undefined\n});\n","import { isFunction } from \"./isFunction.js\";\nexport const isFormData = (value) => Boolean(value\n && isFunction(value.constructor)\n && value[Symbol.toStringTag] === \"FormData\"\n && isFunction(value.append)\n && isFunction(value.getAll)\n && isFunction(value.entries)\n && isFunction(value[Symbol.iterator]));\n","export const escapeName = (name) => String(name)\n .replace(/\\r/g, \"%0D\")\n .replace(/\\n/g, \"%0A\")\n .replace(/\"/g, \"%22\");\n","import { isFunction } from \"./isFunction.js\";\nexport const isFile = (value) => Boolean(value\n && typeof value === \"object\"\n && isFunction(value.constructor)\n && value[Symbol.toStringTag] === \"File\"\n && isFunction(value.stream)\n && value.name != null);\nexport const isFileLike = isFile;\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FormDataEncoder_instances, _FormDataEncoder_CRLF, _FormDataEncoder_CRLF_BYTES, _FormDataEncoder_CRLF_BYTES_LENGTH, _FormDataEncoder_DASHES, _FormDataEncoder_encoder, _FormDataEncoder_footer, _FormDataEncoder_form, _FormDataEncoder_options, _FormDataEncoder_getFieldHeader, _FormDataEncoder_getContentLength;\nimport { getStreamIterator } from \"./util/getStreamIterator.js\";\nimport { createBoundary } from \"./util/createBoundary.js\";\nimport { normalizeValue } from \"./util/normalizeValue.js\";\nimport { isPlainObject } from \"./util/isPlainObject.js\";\nimport { proxyHeaders } from \"./util/proxyHeaders.js\";\nimport { isFormData } from \"./util/isFormData.js\";\nimport { escapeName } from \"./util/escapeName.js\";\nimport { isFile } from \"./util/isFile.js\";\nconst defaultOptions = {\n enableAdditionalHeaders: false\n};\nconst readonlyProp = { writable: false, configurable: false };\nexport class FormDataEncoder {\n constructor(form, boundaryOrOptions, options) {\n _FormDataEncoder_instances.add(this);\n _FormDataEncoder_CRLF.set(this, \"\\r\\n\");\n _FormDataEncoder_CRLF_BYTES.set(this, void 0);\n _FormDataEncoder_CRLF_BYTES_LENGTH.set(this, void 0);\n _FormDataEncoder_DASHES.set(this, \"-\".repeat(2));\n _FormDataEncoder_encoder.set(this, new TextEncoder());\n _FormDataEncoder_footer.set(this, void 0);\n _FormDataEncoder_form.set(this, void 0);\n _FormDataEncoder_options.set(this, void 0);\n if (!isFormData(form)) {\n throw new TypeError(\"Expected first argument to be a FormData instance.\");\n }\n let boundary;\n if (isPlainObject(boundaryOrOptions)) {\n options = boundaryOrOptions;\n }\n else {\n boundary = boundaryOrOptions;\n }\n if (!boundary) {\n boundary = createBoundary();\n }\n if (typeof boundary !== \"string\") {\n throw new TypeError(\"Expected boundary argument to be a string.\");\n }\n if (options && !isPlainObject(options)) {\n throw new TypeError(\"Expected options argument to be an object.\");\n }\n __classPrivateFieldSet(this, _FormDataEncoder_form, Array.from(form.entries()), \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_options, { ...defaultOptions, ...options }, \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES, __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")), \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, \"f\").byteLength, \"f\");\n this.boundary = `form-data-boundary-${boundary}`;\n this.contentType = `multipart/form-data; boundary=${this.boundary}`;\n __classPrivateFieldSet(this, _FormDataEncoder_footer, __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(`${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\").repeat(2)}`), \"f\");\n const headers = {\n \"Content-Type\": this.contentType\n };\n const contentLength = __classPrivateFieldGet(this, _FormDataEncoder_instances, \"m\", _FormDataEncoder_getContentLength).call(this);\n if (contentLength) {\n this.contentLength = contentLength;\n headers[\"Content-Length\"] = contentLength;\n }\n this.headers = proxyHeaders(Object.freeze(headers));\n Object.defineProperties(this, {\n boundary: readonlyProp,\n contentType: readonlyProp,\n contentLength: readonlyProp,\n headers: readonlyProp\n });\n }\n getContentLength() {\n return this.contentLength == null ? undefined : Number(this.contentLength);\n }\n *values() {\n for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, \"f\")) {\n const value = isFile(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(normalizeValue(raw));\n yield __classPrivateFieldGet(this, _FormDataEncoder_instances, \"m\", _FormDataEncoder_getFieldHeader).call(this, name, value);\n yield value;\n yield __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, \"f\");\n }\n yield __classPrivateFieldGet(this, _FormDataEncoder_footer, \"f\");\n }\n async *encode() {\n for (const part of this.values()) {\n if (isFile(part)) {\n yield* getStreamIterator(part.stream());\n }\n else {\n yield part;\n }\n }\n }\n [(_FormDataEncoder_CRLF = new WeakMap(), _FormDataEncoder_CRLF_BYTES = new WeakMap(), _FormDataEncoder_CRLF_BYTES_LENGTH = new WeakMap(), _FormDataEncoder_DASHES = new WeakMap(), _FormDataEncoder_encoder = new WeakMap(), _FormDataEncoder_footer = new WeakMap(), _FormDataEncoder_form = new WeakMap(), _FormDataEncoder_options = new WeakMap(), _FormDataEncoder_instances = new WeakSet(), _FormDataEncoder_getFieldHeader = function _FormDataEncoder_getFieldHeader(name, value) {\n let header = \"\";\n header += `${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}`;\n header += `Content-Disposition: form-data; name=\"${escapeName(name)}\"`;\n if (isFile(value)) {\n header += `; filename=\"${escapeName(value.name)}\"${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}`;\n header += `Content-Type: ${value.type || \"application/octet-stream\"}`;\n }\n const size = isFile(value) ? value.size : value.byteLength;\n if (__classPrivateFieldGet(this, _FormDataEncoder_options, \"f\").enableAdditionalHeaders === true\n && size != null\n && !isNaN(size)) {\n header += `${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}Content-Length: ${isFile(value) ? value.size : value.byteLength}`;\n }\n return __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(`${header}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\").repeat(2)}`);\n }, _FormDataEncoder_getContentLength = function _FormDataEncoder_getContentLength() {\n let length = 0;\n for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, \"f\")) {\n const value = isFile(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(normalizeValue(raw));\n const size = isFile(value) ? value.size : value.byteLength;\n if (size == null || isNaN(size)) {\n return undefined;\n }\n length += __classPrivateFieldGet(this, _FormDataEncoder_instances, \"m\", _FormDataEncoder_getFieldHeader).call(this, name, value).byteLength;\n length += size;\n length += __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, \"f\");\n }\n return String(length + __classPrivateFieldGet(this, _FormDataEncoder_footer, \"f\").byteLength);\n }, Symbol.iterator)]() {\n return this.values();\n }\n [Symbol.asyncIterator]() {\n return this.encode();\n }\n}\n","import is from '@sindresorhus/is';\nexport default function isFormData(body) {\n return is.nodeStream(body) && is.function_(body.getBoundary);\n}\n","import { Buffer } from 'node:buffer';\nimport { promisify } from 'node:util';\nimport is from '@sindresorhus/is';\nimport isFormData from './is-form-data.js';\nexport default async function getBodySize(body, headers) {\n if (headers && 'content-length' in headers) {\n return Number(headers['content-length']);\n }\n if (!body) {\n return 0;\n }\n if (is.string(body)) {\n return Buffer.byteLength(body);\n }\n if (is.buffer(body)) {\n return body.length;\n }\n if (isFormData(body)) {\n return promisify(body.getLength.bind(body))();\n }\n return undefined;\n}\n","export default function proxyEvents(from, to, events) {\n const eventFunctions = {};\n for (const event of events) {\n const eventFunction = (...args) => {\n to.emit(event, ...args);\n };\n eventFunctions[event] = eventFunction;\n from.on(event, eventFunction);\n }\n return () => {\n for (const [event, eventFunction] of Object.entries(eventFunctions)) {\n from.off(event, eventFunction);\n }\n };\n}\n","// When attaching listeners, it's very easy to forget about them.\n// Especially if you do error handling and set timeouts.\n// So instead of checking if it's proper to throw an error on every timeout ever,\n// use this simple tool which will remove all listeners you have attached.\nexport default function unhandle() {\n const handlers = [];\n return {\n once(origin, event, fn) {\n origin.once(event, fn);\n handlers.push({ origin, event, fn });\n },\n unhandleAll() {\n for (const handler of handlers) {\n const { origin, event, fn } = handler;\n origin.removeListener(event, fn);\n }\n handlers.length = 0;\n },\n };\n}\n","import net from 'node:net';\nimport unhandler from './utils/unhandle.js';\nconst reentry = Symbol('reentry');\nconst noop = () => { };\nexport class TimeoutError extends Error {\n constructor(threshold, event) {\n super(`Timeout awaiting '${event}' for ${threshold}ms`);\n Object.defineProperty(this, \"event\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: event\n });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'TimeoutError';\n this.code = 'ETIMEDOUT';\n }\n}\nexport default function timedOut(request, delays, options) {\n if (reentry in request) {\n return noop;\n }\n request[reentry] = true;\n const cancelers = [];\n const { once, unhandleAll } = unhandler();\n const addTimeout = (delay, callback, event) => {\n const timeout = setTimeout(callback, delay, delay, event);\n timeout.unref?.();\n const cancel = () => {\n clearTimeout(timeout);\n };\n cancelers.push(cancel);\n return cancel;\n };\n const { host, hostname } = options;\n const timeoutHandler = (delay, event) => {\n request.destroy(new TimeoutError(delay, event));\n };\n const cancelTimeouts = () => {\n for (const cancel of cancelers) {\n cancel();\n }\n unhandleAll();\n };\n request.once('error', error => {\n cancelTimeouts();\n // Save original behavior\n /* istanbul ignore next */\n if (request.listenerCount('error') === 0) {\n throw error;\n }\n });\n if (typeof delays.request !== 'undefined') {\n const cancelTimeout = addTimeout(delays.request, timeoutHandler, 'request');\n once(request, 'response', (response) => {\n once(response, 'end', cancelTimeout);\n });\n }\n if (typeof delays.socket !== 'undefined') {\n const { socket } = delays;\n const socketTimeoutHandler = () => {\n timeoutHandler(socket, 'socket');\n };\n request.setTimeout(socket, socketTimeoutHandler);\n // `request.setTimeout(0)` causes a memory leak.\n // We can just remove the listener and forget about the timer - it's unreffed.\n // See https://github.com/sindresorhus/got/issues/690\n cancelers.push(() => {\n request.removeListener('timeout', socketTimeoutHandler);\n });\n }\n const hasLookup = typeof delays.lookup !== 'undefined';\n const hasConnect = typeof delays.connect !== 'undefined';\n const hasSecureConnect = typeof delays.secureConnect !== 'undefined';\n const hasSend = typeof delays.send !== 'undefined';\n if (hasLookup || hasConnect || hasSecureConnect || hasSend) {\n once(request, 'socket', (socket) => {\n const { socketPath } = request;\n /* istanbul ignore next: hard to test */\n if (socket.connecting) {\n const hasPath = Boolean(socketPath ?? net.isIP(hostname ?? host ?? '') !== 0);\n if (hasLookup && !hasPath && typeof socket.address().address === 'undefined') {\n const cancelTimeout = addTimeout(delays.lookup, timeoutHandler, 'lookup');\n once(socket, 'lookup', cancelTimeout);\n }\n if (hasConnect) {\n const timeConnect = () => addTimeout(delays.connect, timeoutHandler, 'connect');\n if (hasPath) {\n once(socket, 'connect', timeConnect());\n }\n else {\n once(socket, 'lookup', (error) => {\n if (error === null) {\n once(socket, 'connect', timeConnect());\n }\n });\n }\n }\n if (hasSecureConnect && options.protocol === 'https:') {\n once(socket, 'connect', () => {\n const cancelTimeout = addTimeout(delays.secureConnect, timeoutHandler, 'secureConnect');\n once(socket, 'secureConnect', cancelTimeout);\n });\n }\n }\n if (hasSend) {\n const timeRequest = () => addTimeout(delays.send, timeoutHandler, 'send');\n /* istanbul ignore next: hard to test */\n if (socket.connecting) {\n once(socket, 'connect', () => {\n once(request, 'upload-complete', timeRequest());\n });\n }\n else {\n once(request, 'upload-complete', timeRequest());\n }\n }\n });\n }\n if (typeof delays.response !== 'undefined') {\n once(request, 'upload-complete', () => {\n const cancelTimeout = addTimeout(delays.response, timeoutHandler, 'response');\n once(request, 'response', cancelTimeout);\n });\n }\n if (typeof delays.read !== 'undefined') {\n once(request, 'response', (response) => {\n const cancelTimeout = addTimeout(delays.read, timeoutHandler, 'read');\n once(response, 'end', cancelTimeout);\n });\n }\n return cancelTimeouts;\n}\n","import is from '@sindresorhus/is';\nexport default function urlToOptions(url) {\n // Cast to URL\n url = url;\n const options = {\n protocol: url.protocol,\n hostname: is.string(url.hostname) && url.hostname.startsWith('[') ? url.hostname.slice(1, -1) : url.hostname,\n host: url.host,\n hash: url.hash,\n search: url.search,\n pathname: url.pathname,\n href: url.href,\n path: `${url.pathname || ''}${url.search || ''}`,\n };\n if (is.string(url.port) && url.port.length > 0) {\n options.port = Number(url.port);\n }\n if (url.username || url.password) {\n options.auth = `${url.username || ''}:${url.password || ''}`;\n }\n return options;\n}\n","export default class WeakableMap {\n constructor() {\n Object.defineProperty(this, \"weakMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"map\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.weakMap = new WeakMap();\n this.map = new Map();\n }\n set(key, value) {\n if (typeof key === 'object') {\n this.weakMap.set(key, value);\n }\n else {\n this.map.set(key, value);\n }\n }\n get(key) {\n if (typeof key === 'object') {\n return this.weakMap.get(key);\n }\n return this.map.get(key);\n }\n has(key) {\n if (typeof key === 'object') {\n return this.weakMap.has(key);\n }\n return this.map.has(key);\n }\n}\n","const calculateRetryDelay = ({ attemptCount, retryOptions, error, retryAfter, computedValue, }) => {\n if (error.name === 'RetryError') {\n return 1;\n }\n if (attemptCount > retryOptions.limit) {\n return 0;\n }\n const hasMethod = retryOptions.methods.includes(error.options.method);\n const hasErrorCode = retryOptions.errorCodes.includes(error.code);\n const hasStatusCode = error.response && retryOptions.statusCodes.includes(error.response.statusCode);\n if (!hasMethod || (!hasErrorCode && !hasStatusCode)) {\n return 0;\n }\n if (error.response) {\n if (retryAfter) {\n // In this case `computedValue` is `options.request.timeout`\n if (retryAfter > computedValue) {\n return 0;\n }\n return retryAfter;\n }\n if (error.response.statusCode === 413) {\n return 0;\n }\n }\n const noise = Math.random() * retryOptions.noise;\n return Math.min(((2 ** (attemptCount - 1)) * 1000), retryOptions.backoffLimit) + noise;\n};\nexport default calculateRetryDelay;\n","import {\n\tV4MAPPED,\n\tADDRCONFIG,\n\tALL,\n\tpromises as dnsPromises,\n\tlookup as dnsLookup\n} from 'node:dns';\nimport {promisify} from 'node:util';\nimport os from 'node:os';\n\nconst {Resolver: AsyncResolver} = dnsPromises;\n\nconst kCacheableLookupCreateConnection = Symbol('cacheableLookupCreateConnection');\nconst kCacheableLookupInstance = Symbol('cacheableLookupInstance');\nconst kExpires = Symbol('expires');\n\nconst supportsALL = typeof ALL === 'number';\n\nconst verifyAgent = agent => {\n\tif (!(agent && typeof agent.createConnection === 'function')) {\n\t\tthrow new Error('Expected an Agent instance as the first argument');\n\t}\n};\n\nconst map4to6 = entries => {\n\tfor (const entry of entries) {\n\t\tif (entry.family === 6) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tentry.address = `::ffff:${entry.address}`;\n\t\tentry.family = 6;\n\t}\n};\n\nconst getIfaceInfo = () => {\n\tlet has4 = false;\n\tlet has6 = false;\n\n\tfor (const device of Object.values(os.networkInterfaces())) {\n\t\tfor (const iface of device) {\n\t\t\tif (iface.internal) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (iface.family === 'IPv6') {\n\t\t\t\thas6 = true;\n\t\t\t} else {\n\t\t\t\thas4 = true;\n\t\t\t}\n\n\t\t\tif (has4 && has6) {\n\t\t\t\treturn {has4, has6};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {has4, has6};\n};\n\nconst isIterable = map => {\n\treturn Symbol.iterator in map;\n};\n\nconst ignoreNoResultErrors = dnsPromise => {\n\treturn dnsPromise.catch(error => {\n\t\tif (\n\t\t\terror.code === 'ENODATA' ||\n\t\t\terror.code === 'ENOTFOUND' ||\n\t\t\terror.code === 'ENOENT' // Windows: name exists, but not this record type\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\n\t\tthrow error;\n\t});\n};\n\nconst ttl = {ttl: true};\nconst all = {all: true};\nconst all4 = {all: true, family: 4};\nconst all6 = {all: true, family: 6};\n\nexport default class CacheableLookup {\n\tconstructor({\n\t\tcache = new Map(),\n\t\tmaxTtl = Infinity,\n\t\tfallbackDuration = 3600,\n\t\terrorTtl = 0.15,\n\t\tresolver = new AsyncResolver(),\n\t\tlookup = dnsLookup\n\t} = {}) {\n\t\tthis.maxTtl = maxTtl;\n\t\tthis.errorTtl = errorTtl;\n\n\t\tthis._cache = cache;\n\t\tthis._resolver = resolver;\n\t\tthis._dnsLookup = lookup && promisify(lookup);\n\t\tthis.stats = {\n\t\t\tcache: 0,\n\t\t\tquery: 0\n\t\t};\n\n\t\tif (this._resolver instanceof AsyncResolver) {\n\t\t\tthis._resolve4 = this._resolver.resolve4.bind(this._resolver);\n\t\t\tthis._resolve6 = this._resolver.resolve6.bind(this._resolver);\n\t\t} else {\n\t\t\tthis._resolve4 = promisify(this._resolver.resolve4.bind(this._resolver));\n\t\t\tthis._resolve6 = promisify(this._resolver.resolve6.bind(this._resolver));\n\t\t}\n\n\t\tthis._iface = getIfaceInfo();\n\n\t\tthis._pending = {};\n\t\tthis._nextRemovalTime = false;\n\t\tthis._hostnamesToFallback = new Set();\n\n\t\tthis.fallbackDuration = fallbackDuration;\n\n\t\tif (fallbackDuration > 0) {\n\t\t\tconst interval = setInterval(() => {\n\t\t\t\tthis._hostnamesToFallback.clear();\n\t\t\t}, fallbackDuration * 1000);\n\n\t\t\t/* istanbul ignore next: There is no `interval.unref()` when running inside an Electron renderer */\n\t\t\tif (interval.unref) {\n\t\t\t\tinterval.unref();\n\t\t\t}\n\n\t\t\tthis._fallbackInterval = interval;\n\t\t}\n\n\t\tthis.lookup = this.lookup.bind(this);\n\t\tthis.lookupAsync = this.lookupAsync.bind(this);\n\t}\n\n\tset servers(servers) {\n\t\tthis.clear();\n\n\t\tthis._resolver.setServers(servers);\n\t}\n\n\tget servers() {\n\t\treturn this._resolver.getServers();\n\t}\n\n\tlookup(hostname, options, callback) {\n\t\tif (typeof options === 'function') {\n\t\t\tcallback = options;\n\t\t\toptions = {};\n\t\t} else if (typeof options === 'number') {\n\t\t\toptions = {\n\t\t\t\tfamily: options\n\t\t\t};\n\t\t}\n\n\t\tif (!callback) {\n\t\t\tthrow new Error('Callback must be a function.');\n\t\t}\n\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\tthis.lookupAsync(hostname, options).then(result => {\n\t\t\tif (options.all) {\n\t\t\t\tcallback(null, result);\n\t\t\t} else {\n\t\t\t\tcallback(null, result.address, result.family, result.expires, result.ttl, result.source);\n\t\t\t}\n\t\t}, callback);\n\t}\n\n\tasync lookupAsync(hostname, options = {}) {\n\t\tif (typeof options === 'number') {\n\t\t\toptions = {\n\t\t\t\tfamily: options\n\t\t\t};\n\t\t}\n\n\t\tlet cached = await this.query(hostname);\n\n\t\tif (options.family === 6) {\n\t\t\tconst filtered = cached.filter(entry => entry.family === 6);\n\n\t\t\tif (options.hints & V4MAPPED) {\n\t\t\t\tif ((supportsALL && options.hints & ALL) || filtered.length === 0) {\n\t\t\t\t\tmap4to6(cached);\n\t\t\t\t} else {\n\t\t\t\t\tcached = filtered;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcached = filtered;\n\t\t\t}\n\t\t} else if (options.family === 4) {\n\t\t\tcached = cached.filter(entry => entry.family === 4);\n\t\t}\n\n\t\tif (options.hints & ADDRCONFIG) {\n\t\t\tconst {_iface} = this;\n\t\t\tcached = cached.filter(entry => entry.family === 6 ? _iface.has6 : _iface.has4);\n\t\t}\n\n\t\tif (cached.length === 0) {\n\t\t\tconst error = new Error(`cacheableLookup ENOTFOUND ${hostname}`);\n\t\t\terror.code = 'ENOTFOUND';\n\t\t\terror.hostname = hostname;\n\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (options.all) {\n\t\t\treturn cached;\n\t\t}\n\n\t\treturn cached[0];\n\t}\n\n\tasync query(hostname) {\n\t\tlet source = 'cache';\n\t\tlet cached = await this._cache.get(hostname);\n\n\t\tif (cached) {\n\t\t\tthis.stats.cache++;\n\t\t}\n\n\t\tif (!cached) {\n\t\t\tconst pending = this._pending[hostname];\n\t\t\tif (pending) {\n\t\t\t\tthis.stats.cache++;\n\t\t\t\tcached = await pending;\n\t\t\t} else {\n\t\t\t\tsource = 'query';\n\t\t\t\tconst newPromise = this.queryAndCache(hostname);\n\t\t\t\tthis._pending[hostname] = newPromise;\n\t\t\t\tthis.stats.query++;\n\t\t\t\ttry {\n\t\t\t\t\tcached = await newPromise;\n\t\t\t\t} finally {\n\t\t\t\t\tdelete this._pending[hostname];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcached = cached.map(entry => {\n\t\t\treturn {...entry, source};\n\t\t});\n\n\t\treturn cached;\n\t}\n\n\tasync _resolve(hostname) {\n\t\t// ANY is unsafe as it doesn't trigger new queries in the underlying server.\n\t\tconst [A, AAAA] = await Promise.all([\n\t\t\tignoreNoResultErrors(this._resolve4(hostname, ttl)),\n\t\t\tignoreNoResultErrors(this._resolve6(hostname, ttl))\n\t\t]);\n\n\t\tlet aTtl = 0;\n\t\tlet aaaaTtl = 0;\n\t\tlet cacheTtl = 0;\n\n\t\tconst now = Date.now();\n\n\t\tfor (const entry of A) {\n\t\t\tentry.family = 4;\n\t\t\tentry.expires = now + (entry.ttl * 1000);\n\n\t\t\taTtl = Math.max(aTtl, entry.ttl);\n\t\t}\n\n\t\tfor (const entry of AAAA) {\n\t\t\tentry.family = 6;\n\t\t\tentry.expires = now + (entry.ttl * 1000);\n\n\t\t\taaaaTtl = Math.max(aaaaTtl, entry.ttl);\n\t\t}\n\n\t\tif (A.length > 0) {\n\t\t\tif (AAAA.length > 0) {\n\t\t\t\tcacheTtl = Math.min(aTtl, aaaaTtl);\n\t\t\t} else {\n\t\t\t\tcacheTtl = aTtl;\n\t\t\t}\n\t\t} else {\n\t\t\tcacheTtl = aaaaTtl;\n\t\t}\n\n\t\treturn {\n\t\t\tentries: [\n\t\t\t\t...A,\n\t\t\t\t...AAAA\n\t\t\t],\n\t\t\tcacheTtl\n\t\t};\n\t}\n\n\tasync _lookup(hostname) {\n\t\ttry {\n\t\t\tconst [A, AAAA] = await Promise.all([\n\t\t\t\t// Passing {all: true} doesn't return all IPv4 and IPv6 entries.\n\t\t\t\t// See https://github.com/szmarczak/cacheable-lookup/issues/42\n\t\t\t\tignoreNoResultErrors(this._dnsLookup(hostname, all4)),\n\t\t\t\tignoreNoResultErrors(this._dnsLookup(hostname, all6))\n\t\t\t]);\n\n\t\t\treturn {\n\t\t\t\tentries: [\n\t\t\t\t\t...A,\n\t\t\t\t\t...AAAA\n\t\t\t\t],\n\t\t\t\tcacheTtl: 0\n\t\t\t};\n\t\t} catch {\n\t\t\treturn {\n\t\t\t\tentries: [],\n\t\t\t\tcacheTtl: 0\n\t\t\t};\n\t\t}\n\t}\n\n\tasync _set(hostname, data, cacheTtl) {\n\t\tif (this.maxTtl > 0 && cacheTtl > 0) {\n\t\t\tcacheTtl = Math.min(cacheTtl, this.maxTtl) * 1000;\n\t\t\tdata[kExpires] = Date.now() + cacheTtl;\n\n\t\t\ttry {\n\t\t\t\tawait this._cache.set(hostname, data, cacheTtl);\n\t\t\t} catch (error) {\n\t\t\t\tthis.lookupAsync = async () => {\n\t\t\t\t\tconst cacheError = new Error('Cache Error. Please recreate the CacheableLookup instance.');\n\t\t\t\t\tcacheError.cause = error;\n\n\t\t\t\t\tthrow cacheError;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (isIterable(this._cache)) {\n\t\t\t\tthis._tick(cacheTtl);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync queryAndCache(hostname) {\n\t\tif (this._hostnamesToFallback.has(hostname)) {\n\t\t\treturn this._dnsLookup(hostname, all);\n\t\t}\n\n\t\tlet query = await this._resolve(hostname);\n\n\t\tif (query.entries.length === 0 && this._dnsLookup) {\n\t\t\tquery = await this._lookup(hostname);\n\n\t\t\tif (query.entries.length !== 0 && this.fallbackDuration > 0) {\n\t\t\t\t// Use `dns.lookup(...)` for that particular hostname\n\t\t\t\tthis._hostnamesToFallback.add(hostname);\n\t\t\t}\n\t\t}\n\n\t\tconst cacheTtl = query.entries.length === 0 ? this.errorTtl : query.cacheTtl;\n\t\tawait this._set(hostname, query.entries, cacheTtl);\n\n\t\treturn query.entries;\n\t}\n\n\t_tick(ms) {\n\t\tconst nextRemovalTime = this._nextRemovalTime;\n\n\t\tif (!nextRemovalTime || ms < nextRemovalTime) {\n\t\t\tclearTimeout(this._removalTimeout);\n\n\t\t\tthis._nextRemovalTime = ms;\n\n\t\t\tthis._removalTimeout = setTimeout(() => {\n\t\t\t\tthis._nextRemovalTime = false;\n\n\t\t\t\tlet nextExpiry = Infinity;\n\n\t\t\t\tconst now = Date.now();\n\n\t\t\t\tfor (const [hostname, entries] of this._cache) {\n\t\t\t\t\tconst expires = entries[kExpires];\n\n\t\t\t\t\tif (now >= expires) {\n\t\t\t\t\t\tthis._cache.delete(hostname);\n\t\t\t\t\t} else if (expires < nextExpiry) {\n\t\t\t\t\t\tnextExpiry = expires;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (nextExpiry !== Infinity) {\n\t\t\t\t\tthis._tick(nextExpiry - now);\n\t\t\t\t}\n\t\t\t}, ms);\n\n\t\t\t/* istanbul ignore next: There is no `timeout.unref()` when running inside an Electron renderer */\n\t\t\tif (this._removalTimeout.unref) {\n\t\t\t\tthis._removalTimeout.unref();\n\t\t\t}\n\t\t}\n\t}\n\n\tinstall(agent) {\n\t\tverifyAgent(agent);\n\n\t\tif (kCacheableLookupCreateConnection in agent) {\n\t\t\tthrow new Error('CacheableLookup has been already installed');\n\t\t}\n\n\t\tagent[kCacheableLookupCreateConnection] = agent.createConnection;\n\t\tagent[kCacheableLookupInstance] = this;\n\n\t\tagent.createConnection = (options, callback) => {\n\t\t\tif (!('lookup' in options)) {\n\t\t\t\toptions.lookup = this.lookup;\n\t\t\t}\n\n\t\t\treturn agent[kCacheableLookupCreateConnection](options, callback);\n\t\t};\n\t}\n\n\tuninstall(agent) {\n\t\tverifyAgent(agent);\n\n\t\tif (agent[kCacheableLookupCreateConnection]) {\n\t\t\tif (agent[kCacheableLookupInstance] !== this) {\n\t\t\t\tthrow new Error('The agent is not owned by this CacheableLookup instance');\n\t\t\t}\n\n\t\t\tagent.createConnection = agent[kCacheableLookupCreateConnection];\n\n\t\t\tdelete agent[kCacheableLookupCreateConnection];\n\t\t\tdelete agent[kCacheableLookupInstance];\n\t\t}\n\t}\n\n\tupdateInterfaceInfo() {\n\t\tconst {_iface} = this;\n\n\t\tthis._iface = getIfaceInfo();\n\n\t\tif ((_iface.has4 && !this._iface.has4) || (_iface.has6 && !this._iface.has6)) {\n\t\t\tthis._cache.clear();\n\t\t}\n\t}\n\n\tclear(hostname) {\n\t\tif (hostname) {\n\t\t\tthis._cache.delete(hostname);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._cache.clear();\n\t}\n}\n","'use strict';\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.onEviction = options.onEviction;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\n\t\t\tif (typeof this.onEviction === 'function') {\n\t\t\t\tfor (const [key, value] of this.oldCache.entries()) {\n\t\t\t\t\tthis.onEviction(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this._size + oldCacheSize, this.maxSize);\n\t}\n}\n\nmodule.exports = QuickLRU;\n","'use strict';\n\nmodule.exports = stream => {\n\tif (stream.listenerCount('error') !== 0) {\n\t\treturn stream;\n\t}\n\n\tstream.__destroy = stream._destroy;\n\tstream._destroy = (...args) => {\n\t\tconst callback = args.pop();\n\n\t\tstream.__destroy(...args, async error => {\n\t\t\tawait Promise.resolve();\n\t\t\tcallback(error);\n\t\t});\n\t};\n\n\tconst onError = error => {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\tPromise.resolve().then(() => {\n\t\t\tstream.emit('error', error);\n\t\t});\n\t};\n\n\tstream.once('error', onError);\n\n\t// eslint-disable-next-line promise/prefer-await-to-then\n\tPromise.resolve().then(() => {\n\t\tstream.off('error', onError);\n\t});\n\n\treturn stream;\n};\n","'use strict';\n// See https://github.com/facebook/jest/issues/2549\n// eslint-disable-next-line node/prefer-global/url\nconst {URL} = require('url');\nconst EventEmitter = require('events');\nconst tls = require('tls');\nconst http2 = require('http2');\nconst QuickLRU = require('quick-lru');\nconst delayAsyncDestroy = require('./utils/delay-async-destroy.js');\n\nconst kCurrentStreamCount = Symbol('currentStreamCount');\nconst kRequest = Symbol('request');\nconst kOriginSet = Symbol('cachedOriginSet');\nconst kGracefullyClosing = Symbol('gracefullyClosing');\nconst kLength = Symbol('length');\n\nconst nameKeys = [\n\t// Not an Agent option actually\n\t'createConnection',\n\n\t// `http2.connect()` options\n\t'maxDeflateDynamicTableSize',\n\t'maxSettings',\n\t'maxSessionMemory',\n\t'maxHeaderListPairs',\n\t'maxOutstandingPings',\n\t'maxReservedRemoteStreams',\n\t'maxSendHeaderBlockLength',\n\t'paddingStrategy',\n\t'peerMaxConcurrentStreams',\n\t'settings',\n\n\t// `tls.connect()` source options\n\t'family',\n\t'localAddress',\n\t'rejectUnauthorized',\n\n\t// `tls.connect()` secure context options\n\t'pskCallback',\n\t'minDHSize',\n\n\t// `tls.connect()` destination options\n\t// - `servername` is automatically validated, skip it\n\t// - `host` and `port` just describe the destination server,\n\t'path',\n\t'socket',\n\n\t// `tls.createSecureContext()` options\n\t'ca',\n\t'cert',\n\t'sigalgs',\n\t'ciphers',\n\t'clientCertEngine',\n\t'crl',\n\t'dhparam',\n\t'ecdhCurve',\n\t'honorCipherOrder',\n\t'key',\n\t'privateKeyEngine',\n\t'privateKeyIdentifier',\n\t'maxVersion',\n\t'minVersion',\n\t'pfx',\n\t'secureOptions',\n\t'secureProtocol',\n\t'sessionIdContext',\n\t'ticketKeys'\n];\n\nconst getSortedIndex = (array, value, compare) => {\n\tlet low = 0;\n\tlet high = array.length;\n\n\twhile (low < high) {\n\t\tconst mid = (low + high) >>> 1;\n\n\t\tif (compare(array[mid], value)) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\thigh = mid;\n\t\t}\n\t}\n\n\treturn low;\n};\n\nconst compareSessions = (a, b) => a.remoteSettings.maxConcurrentStreams > b.remoteSettings.maxConcurrentStreams;\n\n// See https://tools.ietf.org/html/rfc8336\nconst closeCoveredSessions = (where, session) => {\n\t// Clients SHOULD NOT emit new requests on any connection whose Origin\n\t// Set is a proper subset of another connection's Origin Set, and they\n\t// SHOULD close it once all outstanding requests are satisfied.\n\tfor (let index = 0; index < where.length; index++) {\n\t\tconst coveredSession = where[index];\n\n\t\tif (\n\t\t\t// Unfortunately `.every()` returns true for an empty array\n\t\t\tcoveredSession[kOriginSet].length > 0\n\n\t\t\t// The set is a proper subset when its length is less than the other set.\n\t\t\t&& coveredSession[kOriginSet].length < session[kOriginSet].length\n\n\t\t\t// And the other set includes all elements of the subset.\n\t\t\t&& coveredSession[kOriginSet].every(origin => session[kOriginSet].includes(origin))\n\n\t\t\t// Makes sure that the session can handle all requests from the covered session.\n\t\t\t&& (coveredSession[kCurrentStreamCount] + session[kCurrentStreamCount]) <= session.remoteSettings.maxConcurrentStreams\n\t\t) {\n\t\t\t// This allows pending requests to finish and prevents making new requests.\n\t\t\tgracefullyClose(coveredSession);\n\t\t}\n\t}\n};\n\n// This is basically inverted `closeCoveredSessions(...)`.\nconst closeSessionIfCovered = (where, coveredSession) => {\n\tfor (let index = 0; index < where.length; index++) {\n\t\tconst session = where[index];\n\n\t\tif (\n\t\t\tcoveredSession[kOriginSet].length > 0\n\t\t\t&& coveredSession[kOriginSet].length < session[kOriginSet].length\n\t\t\t&& coveredSession[kOriginSet].every(origin => session[kOriginSet].includes(origin))\n\t\t\t&& (coveredSession[kCurrentStreamCount] + session[kCurrentStreamCount]) <= session.remoteSettings.maxConcurrentStreams\n\t\t) {\n\t\t\tgracefullyClose(coveredSession);\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nconst gracefullyClose = session => {\n\tsession[kGracefullyClosing] = true;\n\n\tif (session[kCurrentStreamCount] === 0) {\n\t\tsession.close();\n\t}\n};\n\nclass Agent extends EventEmitter {\n\tconstructor({timeout = 0, maxSessions = Number.POSITIVE_INFINITY, maxEmptySessions = 10, maxCachedTlsSessions = 100} = {}) {\n\t\tsuper();\n\n\t\t// SESSIONS[NORMALIZED_OPTIONS] = [];\n\t\tthis.sessions = {};\n\n\t\t// The queue for creating new sessions. It looks like this:\n\t\t// QUEUE[NORMALIZED_OPTIONS][NORMALIZED_ORIGIN] = ENTRY_FUNCTION\n\t\t//\n\t\t// It's faster when there are many origins. If there's only one, then QUEUE[`${options}:${origin}`] is faster.\n\t\t// I guess object creation / deletion is causing the slowdown.\n\t\t//\n\t\t// The entry function has `listeners`, `completed` and `destroyed` properties.\n\t\t// `listeners` is an array of objects containing `resolve` and `reject` functions.\n\t\t// `completed` is a boolean. It's set to true after ENTRY_FUNCTION is executed.\n\t\t// `destroyed` is a boolean. If it's set to true, the session will be destroyed if hasn't connected yet.\n\t\tthis.queue = {};\n\n\t\t// Each session will use this timeout value.\n\t\tthis.timeout = timeout;\n\n\t\t// Max sessions in total\n\t\tthis.maxSessions = maxSessions;\n\n\t\t// Max empty sessions in total\n\t\tthis.maxEmptySessions = maxEmptySessions;\n\n\t\tthis._emptySessionCount = 0;\n\t\tthis._sessionCount = 0;\n\n\t\t// We don't support push streams by default.\n\t\tthis.settings = {\n\t\t\tenablePush: false,\n\t\t\tinitialWindowSize: 1024 * 1024 * 32 // 32MB, see https://github.com/nodejs/node/issues/38426\n\t\t};\n\n\t\t// Reusing TLS sessions increases performance.\n\t\tthis.tlsSessionCache = new QuickLRU({maxSize: maxCachedTlsSessions});\n\t}\n\n\tget protocol() {\n\t\treturn 'https:';\n\t}\n\n\tnormalizeOptions(options) {\n\t\tlet normalized = '';\n\n\t\tfor (let index = 0; index < nameKeys.length; index++) {\n\t\t\tconst key = nameKeys[index];\n\n\t\t\tnormalized += ':';\n\n\t\t\tif (options && options[key] !== undefined) {\n\t\t\t\tnormalized += options[key];\n\t\t\t}\n\t\t}\n\n\t\treturn normalized;\n\t}\n\n\t_processQueue() {\n\t\tif (this._sessionCount >= this.maxSessions) {\n\t\t\tthis.closeEmptySessions(this.maxSessions - this._sessionCount + 1);\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line guard-for-in\n\t\tfor (const normalizedOptions in this.queue) {\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (const normalizedOrigin in this.queue[normalizedOptions]) {\n\t\t\t\tconst item = this.queue[normalizedOptions][normalizedOrigin];\n\n\t\t\t\t// The entry function can be run only once.\n\t\t\t\tif (!item.completed) {\n\t\t\t\t\titem.completed = true;\n\n\t\t\t\t\titem();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_isBetterSession(thisStreamCount, thatStreamCount) {\n\t\treturn thisStreamCount > thatStreamCount;\n\t}\n\n\t_accept(session, listeners, normalizedOrigin, options) {\n\t\tlet index = 0;\n\n\t\twhile (index < listeners.length && session[kCurrentStreamCount] < session.remoteSettings.maxConcurrentStreams) {\n\t\t\t// We assume `resolve(...)` calls `request(...)` *directly*,\n\t\t\t// otherwise the session will get overloaded.\n\t\t\tlisteners[index].resolve(session);\n\n\t\t\tindex++;\n\t\t}\n\n\t\tlisteners.splice(0, index);\n\n\t\tif (listeners.length > 0) {\n\t\t\tthis.getSession(normalizedOrigin, options, listeners);\n\t\t\tlisteners.length = 0;\n\t\t}\n\t}\n\n\tgetSession(origin, options, listeners) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (Array.isArray(listeners) && listeners.length > 0) {\n\t\t\t\tlisteners = [...listeners];\n\n\t\t\t\t// Resolve the current promise ASAP, we're just moving the listeners.\n\t\t\t\t// They will be executed at a different time.\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\tlisteners = [{resolve, reject}];\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Parse origin\n\t\t\t\tif (typeof origin === 'string') {\n\t\t\t\t\torigin = new URL(origin);\n\t\t\t\t} else if (!(origin instanceof URL)) {\n\t\t\t\t\tthrow new TypeError('The `origin` argument needs to be a string or an URL object');\n\t\t\t\t}\n\n\t\t\t\tif (options) {\n\t\t\t\t\t// Validate servername\n\t\t\t\t\tconst {servername} = options;\n\t\t\t\t\tconst {hostname} = origin;\n\t\t\t\t\tif (servername && hostname !== servername) {\n\t\t\t\t\t\tthrow new Error(`Origin ${hostname} differs from servername ${servername}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tfor (let index = 0; index < listeners.length; index++) {\n\t\t\t\t\tlisteners[index].reject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst normalizedOptions = this.normalizeOptions(options);\n\t\t\tconst normalizedOrigin = origin.origin;\n\n\t\t\tif (normalizedOptions in this.sessions) {\n\t\t\t\tconst sessions = this.sessions[normalizedOptions];\n\n\t\t\t\tlet maxConcurrentStreams = -1;\n\t\t\t\tlet currentStreamsCount = -1;\n\t\t\t\tlet optimalSession;\n\n\t\t\t\t// We could just do this.sessions[normalizedOptions].find(...) but that isn't optimal.\n\t\t\t\t// Additionally, we are looking for session which has biggest current pending streams count.\n\t\t\t\t//\n\t\t\t\t// |------------| |------------| |------------| |------------|\n\t\t\t\t// | Session: A | | Session: B | | Session: C | | Session: D |\n\t\t\t\t// | Pending: 5 |-| Pending: 8 |-| Pending: 9 |-| Pending: 4 |\n\t\t\t\t// | Max: 10 | | Max: 10 | | Max: 9 | | Max: 5 |\n\t\t\t\t// |------------| |------------| |------------| |------------|\n\t\t\t\t// ^\n\t\t\t\t// |\n\t\t\t\t// pick this one --\n\t\t\t\t//\n\t\t\t\tfor (let index = 0; index < sessions.length; index++) {\n\t\t\t\t\tconst session = sessions[index];\n\n\t\t\t\t\tconst sessionMaxConcurrentStreams = session.remoteSettings.maxConcurrentStreams;\n\n\t\t\t\t\tif (sessionMaxConcurrentStreams < maxConcurrentStreams) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!session[kOriginSet].includes(normalizedOrigin)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst sessionCurrentStreamsCount = session[kCurrentStreamCount];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tsessionCurrentStreamsCount >= sessionMaxConcurrentStreams\n\t\t\t\t\t\t|| session[kGracefullyClosing]\n\t\t\t\t\t\t// Unfortunately the `close` event isn't called immediately,\n\t\t\t\t\t\t// so `session.destroyed` is `true`, but `session.closed` is `false`.\n\t\t\t\t\t\t|| session.destroyed\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// We only need set this once.\n\t\t\t\t\tif (!optimalSession) {\n\t\t\t\t\t\tmaxConcurrentStreams = sessionMaxConcurrentStreams;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Either get the session which has biggest current stream count or the lowest.\n\t\t\t\t\tif (this._isBetterSession(sessionCurrentStreamsCount, currentStreamsCount)) {\n\t\t\t\t\t\toptimalSession = session;\n\t\t\t\t\t\tcurrentStreamsCount = sessionCurrentStreamsCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (optimalSession) {\n\t\t\t\t\tthis._accept(optimalSession, listeners, normalizedOrigin, options);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (normalizedOptions in this.queue) {\n\t\t\t\tif (normalizedOrigin in this.queue[normalizedOptions]) {\n\t\t\t\t\t// There's already an item in the queue, just attach ourselves to it.\n\t\t\t\t\tthis.queue[normalizedOptions][normalizedOrigin].listeners.push(...listeners);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.queue[normalizedOptions] = {\n\t\t\t\t\t[kLength]: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// The entry must be removed from the queue IMMEDIATELY when:\n\t\t\t// 1. the session connects successfully,\n\t\t\t// 2. an error occurs.\n\t\t\tconst removeFromQueue = () => {\n\t\t\t\t// Our entry can be replaced. We cannot remove the new one.\n\t\t\t\tif (normalizedOptions in this.queue && this.queue[normalizedOptions][normalizedOrigin] === entry) {\n\t\t\t\t\tdelete this.queue[normalizedOptions][normalizedOrigin];\n\n\t\t\t\t\tif (--this.queue[normalizedOptions][kLength] === 0) {\n\t\t\t\t\t\tdelete this.queue[normalizedOptions];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// The main logic is here\n\t\t\tconst entry = async () => {\n\t\t\t\tthis._sessionCount++;\n\n\t\t\t\tconst name = `${normalizedOrigin}:${normalizedOptions}`;\n\t\t\t\tlet receivedSettings = false;\n\t\t\t\tlet socket;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst computedOptions = {...options};\n\n\t\t\t\t\tif (computedOptions.settings === undefined) {\n\t\t\t\t\t\tcomputedOptions.settings = this.settings;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (computedOptions.session === undefined) {\n\t\t\t\t\t\tcomputedOptions.session = this.tlsSessionCache.get(name);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst createConnection = computedOptions.createConnection || this.createConnection;\n\n\t\t\t\t\t// A hacky workaround to enable async `createConnection`\n\t\t\t\t\tsocket = await createConnection.call(this, origin, computedOptions);\n\t\t\t\t\tcomputedOptions.createConnection = () => socket;\n\n\t\t\t\t\tconst session = http2.connect(origin, computedOptions);\n\t\t\t\t\tsession[kCurrentStreamCount] = 0;\n\t\t\t\t\tsession[kGracefullyClosing] = false;\n\n\t\t\t\t\t// Node.js return https://false:443 instead of https://1.1.1.1:443\n\t\t\t\t\tconst getOriginSet = () => {\n\t\t\t\t\t\tconst {socket} = session;\n\n\t\t\t\t\t\tlet originSet;\n\t\t\t\t\t\tif (socket.servername === false) {\n\t\t\t\t\t\t\tsocket.servername = socket.remoteAddress;\n\t\t\t\t\t\t\toriginSet = session.originSet;\n\t\t\t\t\t\t\tsocket.servername = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\toriginSet = session.originSet;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn originSet;\n\t\t\t\t\t};\n\n\t\t\t\t\tconst isFree = () => session[kCurrentStreamCount] < session.remoteSettings.maxConcurrentStreams;\n\n\t\t\t\t\tsession.socket.once('session', tlsSession => {\n\t\t\t\t\t\tthis.tlsSessionCache.set(name, tlsSession);\n\t\t\t\t\t});\n\n\t\t\t\t\tsession.once('error', error => {\n\t\t\t\t\t\t// Listeners are empty when the session successfully connected.\n\t\t\t\t\t\tfor (let index = 0; index < listeners.length; index++) {\n\t\t\t\t\t\t\tlisteners[index].reject(error);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// The connection got broken, purge the cache.\n\t\t\t\t\t\tthis.tlsSessionCache.delete(name);\n\t\t\t\t\t});\n\n\t\t\t\t\tsession.setTimeout(this.timeout, () => {\n\t\t\t\t\t\t// Terminates all streams owned by this session.\n\t\t\t\t\t\tsession.destroy();\n\t\t\t\t\t});\n\n\t\t\t\t\tsession.once('close', () => {\n\t\t\t\t\t\tthis._sessionCount--;\n\n\t\t\t\t\t\tif (receivedSettings) {\n\t\t\t\t\t\t\t// Assumes session `close` is emitted after request `close`\n\t\t\t\t\t\t\tthis._emptySessionCount--;\n\n\t\t\t\t\t\t\t// This cannot be moved to the stream logic,\n\t\t\t\t\t\t\t// because there may be a session that hadn't made a single request.\n\t\t\t\t\t\t\tconst where = this.sessions[normalizedOptions];\n\n\t\t\t\t\t\t\tif (where.length === 1) {\n\t\t\t\t\t\t\t\tdelete this.sessions[normalizedOptions];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twhere.splice(where.indexOf(session), 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Broken connection\n\t\t\t\t\t\t\tremoveFromQueue();\n\n\t\t\t\t\t\t\tconst error = new Error('Session closed without receiving a SETTINGS frame');\n\t\t\t\t\t\t\terror.code = 'HTTP2WRAPPER_NOSETTINGS';\n\n\t\t\t\t\t\t\tfor (let index = 0; index < listeners.length; index++) {\n\t\t\t\t\t\t\t\tlisteners[index].reject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// There may be another session awaiting.\n\t\t\t\t\t\tthis._processQueue();\n\t\t\t\t\t});\n\n\t\t\t\t\t// Iterates over the queue and processes listeners.\n\t\t\t\t\tconst processListeners = () => {\n\t\t\t\t\t\tconst queue = this.queue[normalizedOptions];\n\t\t\t\t\t\tif (!queue) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst originSet = session[kOriginSet];\n\n\t\t\t\t\t\tfor (let index = 0; index < originSet.length; index++) {\n\t\t\t\t\t\t\tconst origin = originSet[index];\n\n\t\t\t\t\t\t\tif (origin in queue) {\n\t\t\t\t\t\t\t\tconst {listeners, completed} = queue[origin];\n\n\t\t\t\t\t\t\t\tlet index = 0;\n\n\t\t\t\t\t\t\t\t// Prevents session overloading.\n\t\t\t\t\t\t\t\twhile (index < listeners.length && isFree()) {\n\t\t\t\t\t\t\t\t\t// We assume `resolve(...)` calls `request(...)` *directly*,\n\t\t\t\t\t\t\t\t\t// otherwise the session will get overloaded.\n\t\t\t\t\t\t\t\t\tlisteners[index].resolve(session);\n\n\t\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tqueue[origin].listeners.splice(0, index);\n\n\t\t\t\t\t\t\t\tif (queue[origin].listeners.length === 0 && !completed) {\n\t\t\t\t\t\t\t\t\tdelete queue[origin];\n\n\t\t\t\t\t\t\t\t\tif (--queue[kLength] === 0) {\n\t\t\t\t\t\t\t\t\t\tdelete this.queue[normalizedOptions];\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// We're no longer free, no point in continuing.\n\t\t\t\t\t\t\t\tif (!isFree()) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// The Origin Set cannot shrink. No need to check if it suddenly became covered by another one.\n\t\t\t\t\tsession.on('origin', () => {\n\t\t\t\t\t\tsession[kOriginSet] = getOriginSet() || [];\n\t\t\t\t\t\tsession[kGracefullyClosing] = false;\n\t\t\t\t\t\tcloseSessionIfCovered(this.sessions[normalizedOptions], session);\n\n\t\t\t\t\t\tif (session[kGracefullyClosing] || !isFree()) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tprocessListeners();\n\n\t\t\t\t\t\tif (!isFree()) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Close covered sessions (if possible).\n\t\t\t\t\t\tcloseCoveredSessions(this.sessions[normalizedOptions], session);\n\t\t\t\t\t});\n\n\t\t\t\t\tsession.once('remoteSettings', () => {\n\t\t\t\t\t\t// The Agent could have been destroyed already.\n\t\t\t\t\t\tif (entry.destroyed) {\n\t\t\t\t\t\t\tconst error = new Error('Agent has been destroyed');\n\n\t\t\t\t\t\t\tfor (let index = 0; index < listeners.length; index++) {\n\t\t\t\t\t\t\t\tlisteners[index].reject(error);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsession.destroy();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// See https://github.com/nodejs/node/issues/38426\n\t\t\t\t\t\tif (session.setLocalWindowSize) {\n\t\t\t\t\t\t\tsession.setLocalWindowSize(1024 * 1024 * 4); // 4 MB\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsession[kOriginSet] = getOriginSet() || [];\n\n\t\t\t\t\t\tif (session.socket.encrypted) {\n\t\t\t\t\t\t\tconst mainOrigin = session[kOriginSet][0];\n\t\t\t\t\t\t\tif (mainOrigin !== normalizedOrigin) {\n\t\t\t\t\t\t\t\tconst error = new Error(`Requested origin ${normalizedOrigin} does not match server ${mainOrigin}`);\n\n\t\t\t\t\t\t\t\tfor (let index = 0; index < listeners.length; index++) {\n\t\t\t\t\t\t\t\t\tlisteners[index].reject(error);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsession.destroy();\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tremoveFromQueue();\n\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst where = this.sessions;\n\n\t\t\t\t\t\t\tif (normalizedOptions in where) {\n\t\t\t\t\t\t\t\tconst sessions = where[normalizedOptions];\n\t\t\t\t\t\t\t\tsessions.splice(getSortedIndex(sessions, session, compareSessions), 0, session);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twhere[normalizedOptions] = [session];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treceivedSettings = true;\n\t\t\t\t\t\tthis._emptySessionCount++;\n\n\t\t\t\t\t\tthis.emit('session', session);\n\t\t\t\t\t\tthis._accept(session, listeners, normalizedOrigin, options);\n\n\t\t\t\t\t\tif (session[kCurrentStreamCount] === 0 && this._emptySessionCount > this.maxEmptySessions) {\n\t\t\t\t\t\t\tthis.closeEmptySessions(this._emptySessionCount - this.maxEmptySessions);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// `session.remoteSettings.maxConcurrentStreams` might get increased\n\t\t\t\t\t\tsession.on('remoteSettings', () => {\n\t\t\t\t\t\t\tif (!isFree()) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tprocessListeners();\n\n\t\t\t\t\t\t\tif (!isFree()) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// In case the Origin Set changes\n\t\t\t\t\t\t\tcloseCoveredSessions(this.sessions[normalizedOptions], session);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t// Shim `session.request()` in order to catch all streams\n\t\t\t\t\tsession[kRequest] = session.request;\n\t\t\t\t\tsession.request = (headers, streamOptions) => {\n\t\t\t\t\t\tif (session[kGracefullyClosing]) {\n\t\t\t\t\t\t\tthrow new Error('The session is gracefully closing. No new streams are allowed.');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst stream = session[kRequest](headers, streamOptions);\n\n\t\t\t\t\t\t// The process won't exit until the session is closed or all requests are gone.\n\t\t\t\t\t\tsession.ref();\n\n\t\t\t\t\t\tif (session[kCurrentStreamCount]++ === 0) {\n\t\t\t\t\t\t\tthis._emptySessionCount--;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstream.once('close', () => {\n\t\t\t\t\t\t\tif (--session[kCurrentStreamCount] === 0) {\n\t\t\t\t\t\t\t\tthis._emptySessionCount++;\n\t\t\t\t\t\t\t\tsession.unref();\n\n\t\t\t\t\t\t\t\tif (this._emptySessionCount > this.maxEmptySessions || session[kGracefullyClosing]) {\n\t\t\t\t\t\t\t\t\tsession.close();\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (session.destroyed || session.closed) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (isFree() && !closeSessionIfCovered(this.sessions[normalizedOptions], session)) {\n\t\t\t\t\t\t\t\tcloseCoveredSessions(this.sessions[normalizedOptions], session);\n\t\t\t\t\t\t\t\tprocessListeners();\n\n\t\t\t\t\t\t\t\tif (session[kCurrentStreamCount] === 0) {\n\t\t\t\t\t\t\t\t\tthis._processQueue();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn stream;\n\t\t\t\t\t};\n\t\t\t\t} catch (error) {\n\t\t\t\t\tremoveFromQueue();\n\t\t\t\t\tthis._sessionCount--;\n\n\t\t\t\t\tfor (let index = 0; index < listeners.length; index++) {\n\t\t\t\t\t\tlisteners[index].reject(error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tentry.listeners = listeners;\n\t\t\tentry.completed = false;\n\t\t\tentry.destroyed = false;\n\n\t\t\tthis.queue[normalizedOptions][normalizedOrigin] = entry;\n\t\t\tthis.queue[normalizedOptions][kLength]++;\n\t\t\tthis._processQueue();\n\t\t});\n\t}\n\n\trequest(origin, options, headers, streamOptions) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.getSession(origin, options, [{\n\t\t\t\treject,\n\t\t\t\tresolve: session => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst stream = session.request(headers, streamOptions);\n\n\t\t\t\t\t\t// Do not throw before `request(...)` has been awaited\n\t\t\t\t\t\tdelayAsyncDestroy(stream);\n\n\t\t\t\t\t\tresolve(stream);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}]);\n\t\t});\n\t}\n\n\tasync createConnection(origin, options) {\n\t\treturn Agent.connect(origin, options);\n\t}\n\n\tstatic connect(origin, options) {\n\t\toptions.ALPNProtocols = ['h2'];\n\n\t\tconst port = origin.port || 443;\n\t\tconst host = origin.hostname;\n\n\t\tif (typeof options.servername === 'undefined') {\n\t\t\toptions.servername = host;\n\t\t}\n\n\t\tconst socket = tls.connect(port, host, options);\n\n\t\tif (options.socket) {\n\t\t\tsocket._peername = {\n\t\t\t\tfamily: undefined,\n\t\t\t\taddress: undefined,\n\t\t\t\tport\n\t\t\t};\n\t\t}\n\n\t\treturn socket;\n\t}\n\n\tcloseEmptySessions(maxCount = Number.POSITIVE_INFINITY) {\n\t\tlet closedCount = 0;\n\n\t\tconst {sessions} = this;\n\n\t\t// eslint-disable-next-line guard-for-in\n\t\tfor (const key in sessions) {\n\t\t\tconst thisSessions = sessions[key];\n\n\t\t\tfor (let index = 0; index < thisSessions.length; index++) {\n\t\t\t\tconst session = thisSessions[index];\n\n\t\t\t\tif (session[kCurrentStreamCount] === 0) {\n\t\t\t\t\tclosedCount++;\n\t\t\t\t\tsession.close();\n\n\t\t\t\t\tif (closedCount >= maxCount) {\n\t\t\t\t\t\treturn closedCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn closedCount;\n\t}\n\n\tdestroy(reason) {\n\t\tconst {sessions, queue} = this;\n\n\t\t// eslint-disable-next-line guard-for-in\n\t\tfor (const key in sessions) {\n\t\t\tconst thisSessions = sessions[key];\n\n\t\t\tfor (let index = 0; index < thisSessions.length; index++) {\n\t\t\t\tthisSessions[index].destroy(reason);\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line guard-for-in\n\t\tfor (const normalizedOptions in queue) {\n\t\t\tconst entries = queue[normalizedOptions];\n\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (const normalizedOrigin in entries) {\n\t\t\t\tentries[normalizedOrigin].destroyed = true;\n\t\t\t}\n\t\t}\n\n\t\t// New requests should NOT attach to destroyed sessions\n\t\tthis.queue = {};\n\t\tthis.tlsSessionCache.clear();\n\t}\n\n\tget emptySessionCount() {\n\t\treturn this._emptySessionCount;\n\t}\n\n\tget pendingSessionCount() {\n\t\treturn this._sessionCount - this._emptySessionCount;\n\t}\n\n\tget sessionCount() {\n\t\treturn this._sessionCount;\n\t}\n}\n\nAgent.kCurrentStreamCount = kCurrentStreamCount;\nAgent.kGracefullyClosing = kGracefullyClosing;\n\nmodule.exports = {\n\tAgent,\n\tglobalAgent: new Agent()\n};\n","'use strict';\nconst {Readable} = require('stream');\n\nclass IncomingMessage extends Readable {\n\tconstructor(socket, highWaterMark) {\n\t\tsuper({\n\t\t\temitClose: false,\n\t\t\tautoDestroy: true,\n\t\t\thighWaterMark\n\t\t});\n\n\t\tthis.statusCode = null;\n\t\tthis.statusMessage = '';\n\t\tthis.httpVersion = '2.0';\n\t\tthis.httpVersionMajor = 2;\n\t\tthis.httpVersionMinor = 0;\n\t\tthis.headers = {};\n\t\tthis.trailers = {};\n\t\tthis.req = null;\n\n\t\tthis.aborted = false;\n\t\tthis.complete = false;\n\t\tthis.upgrade = null;\n\n\t\tthis.rawHeaders = [];\n\t\tthis.rawTrailers = [];\n\n\t\tthis.socket = socket;\n\n\t\tthis._dumped = false;\n\t}\n\n\tget connection() {\n\t\treturn this.socket;\n\t}\n\n\tset connection(value) {\n\t\tthis.socket = value;\n\t}\n\n\t_destroy(error, callback) {\n\t\tif (!this.readableEnded) {\n\t\t\tthis.aborted = true;\n\t\t}\n\n\t\t// See https://github.com/nodejs/node/issues/35303\n\t\tcallback();\n\n\t\tthis.req._request.destroy(error);\n\t}\n\n\tsetTimeout(ms, callback) {\n\t\tthis.req.setTimeout(ms, callback);\n\t\treturn this;\n\t}\n\n\t_dump() {\n\t\tif (!this._dumped) {\n\t\t\tthis._dumped = true;\n\n\t\t\tthis.removeAllListeners('data');\n\t\t\tthis.resume();\n\t\t}\n\t}\n\n\t_read() {\n\t\tif (this.req) {\n\t\t\tthis.req._request.resume();\n\t\t}\n\t}\n}\n\nmodule.exports = IncomingMessage;\n","'use strict';\n\nmodule.exports = (from, to, events) => {\n\tfor (const event of events) {\n\t\tfrom.on(event, (...args) => to.emit(event, ...args));\n\t}\n};\n","'use strict';\n/* istanbul ignore file: https://github.com/nodejs/node/blob/master/lib/internal/errors.js */\n\nconst makeError = (Base, key, getMessage) => {\n\tmodule.exports[key] = class NodeError extends Base {\n\t\tconstructor(...args) {\n\t\t\tsuper(typeof getMessage === 'string' ? getMessage : getMessage(args));\n\t\t\tthis.name = `${super.name} [${key}]`;\n\t\t\tthis.code = key;\n\t\t}\n\t};\n};\n\nmakeError(TypeError, 'ERR_INVALID_ARG_TYPE', args => {\n\tconst type = args[0].includes('.') ? 'property' : 'argument';\n\n\tlet valid = args[1];\n\tconst isManyTypes = Array.isArray(valid);\n\n\tif (isManyTypes) {\n\t\tvalid = `${valid.slice(0, -1).join(', ')} or ${valid.slice(-1)}`;\n\t}\n\n\treturn `The \"${args[0]}\" ${type} must be ${isManyTypes ? 'one of' : 'of'} type ${valid}. Received ${typeof args[2]}`;\n});\n\nmakeError(TypeError, 'ERR_INVALID_PROTOCOL', args =>\n\t`Protocol \"${args[0]}\" not supported. Expected \"${args[1]}\"`\n);\n\nmakeError(Error, 'ERR_HTTP_HEADERS_SENT', args =>\n\t`Cannot ${args[0]} headers after they are sent to the client`\n);\n\nmakeError(TypeError, 'ERR_INVALID_HTTP_TOKEN', args =>\n\t`${args[0]} must be a valid HTTP token [${args[1]}]`\n);\n\nmakeError(TypeError, 'ERR_HTTP_INVALID_HEADER_VALUE', args =>\n\t`Invalid value \"${args[0]} for header \"${args[1]}\"`\n);\n\nmakeError(TypeError, 'ERR_INVALID_CHAR', args =>\n\t`Invalid character in ${args[0]} [${args[1]}]`\n);\n\nmakeError(\n\tError,\n\t'ERR_HTTP2_NO_SOCKET_MANIPULATION',\n\t'HTTP/2 sockets should not be directly manipulated (e.g. read and written)'\n);\n","'use strict';\n\nmodule.exports = header => {\n\tswitch (header) {\n\t\tcase ':method':\n\t\tcase ':scheme':\n\t\tcase ':authority':\n\t\tcase ':path':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n","'use strict';\nconst {ERR_INVALID_HTTP_TOKEN} = require('./errors.js');\nconst isRequestPseudoHeader = require('./is-request-pseudo-header.js');\n\nconst isValidHttpToken = /^[\\^`\\-\\w!#$%&*+.|~]+$/;\n\nmodule.exports = name => {\n\tif (typeof name !== 'string' || (!isValidHttpToken.test(name) && !isRequestPseudoHeader(name))) {\n\t\tthrow new ERR_INVALID_HTTP_TOKEN('Header name', name);\n\t}\n};\n","'use strict';\nconst {\n\tERR_HTTP_INVALID_HEADER_VALUE,\n\tERR_INVALID_CHAR\n} = require('./errors.js');\n\nconst isInvalidHeaderValue = /[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/;\n\nmodule.exports = (name, value) => {\n\tif (typeof value === 'undefined') {\n\t\tthrow new ERR_HTTP_INVALID_HEADER_VALUE(value, name);\n\t}\n\n\tif (isInvalidHeaderValue.test(value)) {\n\t\tthrow new ERR_INVALID_CHAR('header content', name);\n\t}\n};\n","'use strict';\nconst {ERR_HTTP2_NO_SOCKET_MANIPULATION} = require('./errors.js');\n\n/* istanbul ignore file */\n/* https://github.com/nodejs/node/blob/6eec858f34a40ffa489c1ec54bb24da72a28c781/lib/internal/http2/compat.js#L195-L272 */\n\nconst proxySocketHandler = {\n\thas(stream, property) {\n\t\t// Replaced [kSocket] with .socket\n\t\tconst reference = stream.session === undefined ? stream : stream.session.socket;\n\t\treturn (property in stream) || (property in reference);\n\t},\n\n\tget(stream, property) {\n\t\tswitch (property) {\n\t\t\tcase 'on':\n\t\t\tcase 'once':\n\t\t\tcase 'end':\n\t\t\tcase 'emit':\n\t\t\tcase 'destroy':\n\t\t\t\treturn stream[property].bind(stream);\n\t\t\tcase 'writable':\n\t\t\tcase 'destroyed':\n\t\t\t\treturn stream[property];\n\t\t\tcase 'readable':\n\t\t\t\tif (stream.destroyed) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn stream.readable;\n\t\t\tcase 'setTimeout': {\n\t\t\t\tconst {session} = stream;\n\t\t\t\tif (session !== undefined) {\n\t\t\t\t\treturn session.setTimeout.bind(session);\n\t\t\t\t}\n\n\t\t\t\treturn stream.setTimeout.bind(stream);\n\t\t\t}\n\n\t\t\tcase 'write':\n\t\t\tcase 'read':\n\t\t\tcase 'pause':\n\t\t\tcase 'resume':\n\t\t\t\tthrow new ERR_HTTP2_NO_SOCKET_MANIPULATION();\n\t\t\tdefault: {\n\t\t\t\t// Replaced [kSocket] with .socket\n\t\t\t\tconst reference = stream.session === undefined ? stream : stream.session.socket;\n\t\t\t\tconst value = reference[property];\n\n\t\t\t\treturn typeof value === 'function' ? value.bind(reference) : value;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetPrototypeOf(stream) {\n\t\tif (stream.session !== undefined) {\n\t\t\t// Replaced [kSocket] with .socket\n\t\t\treturn Reflect.getPrototypeOf(stream.session.socket);\n\t\t}\n\n\t\treturn Reflect.getPrototypeOf(stream);\n\t},\n\n\tset(stream, property, value) {\n\t\tswitch (property) {\n\t\t\tcase 'writable':\n\t\t\tcase 'readable':\n\t\t\tcase 'destroyed':\n\t\t\tcase 'on':\n\t\t\tcase 'once':\n\t\t\tcase 'end':\n\t\t\tcase 'emit':\n\t\t\tcase 'destroy':\n\t\t\t\tstream[property] = value;\n\t\t\t\treturn true;\n\t\t\tcase 'setTimeout': {\n\t\t\t\tconst {session} = stream;\n\t\t\t\tif (session === undefined) {\n\t\t\t\t\tstream.setTimeout = value;\n\t\t\t\t} else {\n\t\t\t\t\tsession.setTimeout = value;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase 'write':\n\t\t\tcase 'read':\n\t\t\tcase 'pause':\n\t\t\tcase 'resume':\n\t\t\t\tthrow new ERR_HTTP2_NO_SOCKET_MANIPULATION();\n\t\t\tdefault: {\n\t\t\t\t// Replaced [kSocket] with .socket\n\t\t\t\tconst reference = stream.session === undefined ? stream : stream.session.socket;\n\t\t\t\treference[property] = value;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n};\n\nmodule.exports = proxySocketHandler;\n","'use strict';\n// See https://github.com/facebook/jest/issues/2549\n// eslint-disable-next-line node/prefer-global/url\nconst {URL, urlToHttpOptions} = require('url');\nconst http2 = require('http2');\nconst {Writable} = require('stream');\nconst {Agent, globalAgent} = require('./agent.js');\nconst IncomingMessage = require('./incoming-message.js');\nconst proxyEvents = require('./utils/proxy-events.js');\nconst {\n\tERR_INVALID_ARG_TYPE,\n\tERR_INVALID_PROTOCOL,\n\tERR_HTTP_HEADERS_SENT\n} = require('./utils/errors.js');\nconst validateHeaderName = require('./utils/validate-header-name.js');\nconst validateHeaderValue = require('./utils/validate-header-value.js');\nconst proxySocketHandler = require('./utils/proxy-socket-handler.js');\n\nconst {\n\tHTTP2_HEADER_STATUS,\n\tHTTP2_HEADER_METHOD,\n\tHTTP2_HEADER_PATH,\n\tHTTP2_HEADER_AUTHORITY,\n\tHTTP2_METHOD_CONNECT\n} = http2.constants;\n\nconst kHeaders = Symbol('headers');\nconst kOrigin = Symbol('origin');\nconst kSession = Symbol('session');\nconst kOptions = Symbol('options');\nconst kFlushedHeaders = Symbol('flushedHeaders');\nconst kJobs = Symbol('jobs');\nconst kPendingAgentPromise = Symbol('pendingAgentPromise');\n\nclass ClientRequest extends Writable {\n\tconstructor(input, options, callback) {\n\t\tsuper({\n\t\t\tautoDestroy: false,\n\t\t\temitClose: false\n\t\t});\n\n\t\tif (typeof input === 'string') {\n\t\t\tinput = urlToHttpOptions(new URL(input));\n\t\t} else if (input instanceof URL) {\n\t\t\tinput = urlToHttpOptions(input);\n\t\t} else {\n\t\t\tinput = {...input};\n\t\t}\n\n\t\tif (typeof options === 'function' || options === undefined) {\n\t\t\t// (options, callback)\n\t\t\tcallback = options;\n\t\t\toptions = input;\n\t\t} else {\n\t\t\t// (input, options, callback)\n\t\t\toptions = Object.assign(input, options);\n\t\t}\n\n\t\tif (options.h2session) {\n\t\t\tthis[kSession] = options.h2session;\n\n\t\t\tif (this[kSession].destroyed) {\n\t\t\t\tthrow new Error('The session has been closed already');\n\t\t\t}\n\n\t\t\tthis.protocol = this[kSession].socket.encrypted ? 'https:' : 'http:';\n\t\t} else if (options.agent === false) {\n\t\t\tthis.agent = new Agent({maxEmptySessions: 0});\n\t\t} else if (typeof options.agent === 'undefined' || options.agent === null) {\n\t\t\tthis.agent = globalAgent;\n\t\t} else if (typeof options.agent.request === 'function') {\n\t\t\tthis.agent = options.agent;\n\t\t} else {\n\t\t\tthrow new ERR_INVALID_ARG_TYPE('options.agent', ['http2wrapper.Agent-like Object', 'undefined', 'false'], options.agent);\n\t\t}\n\n\t\tif (this.agent) {\n\t\t\tthis.protocol = this.agent.protocol;\n\t\t}\n\n\t\tif (options.protocol && options.protocol !== this.protocol) {\n\t\t\tthrow new ERR_INVALID_PROTOCOL(options.protocol, this.protocol);\n\t\t}\n\n\t\tif (!options.port) {\n\t\t\toptions.port = options.defaultPort || (this.agent && this.agent.defaultPort) || 443;\n\t\t}\n\n\t\toptions.host = options.hostname || options.host || 'localhost';\n\n\t\t// Unused\n\t\tdelete options.hostname;\n\n\t\tconst {timeout} = options;\n\t\toptions.timeout = undefined;\n\n\t\tthis[kHeaders] = Object.create(null);\n\t\tthis[kJobs] = [];\n\n\t\tthis[kPendingAgentPromise] = undefined;\n\n\t\tthis.socket = null;\n\t\tthis.connection = null;\n\n\t\tthis.method = options.method || 'GET';\n\n\t\tif (!(this.method === 'CONNECT' && (options.path === '/' || options.path === undefined))) {\n\t\t\tthis.path = options.path;\n\t\t}\n\n\t\tthis.res = null;\n\t\tthis.aborted = false;\n\t\tthis.reusedSocket = false;\n\n\t\tconst {headers} = options;\n\t\tif (headers) {\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (const header in headers) {\n\t\t\t\tthis.setHeader(header, headers[header]);\n\t\t\t}\n\t\t}\n\n\t\tif (options.auth && !('authorization' in this[kHeaders])) {\n\t\t\tthis[kHeaders].authorization = 'Basic ' + Buffer.from(options.auth).toString('base64');\n\t\t}\n\n\t\toptions.session = options.tlsSession;\n\t\toptions.path = options.socketPath;\n\n\t\tthis[kOptions] = options;\n\n\t\t// Clients that generate HTTP/2 requests directly SHOULD use the :authority pseudo-header field instead of the Host header field.\n\t\tthis[kOrigin] = new URL(`${this.protocol}//${options.servername || options.host}:${options.port}`);\n\n\t\t// A socket is being reused\n\t\tconst reuseSocket = options._reuseSocket;\n\t\tif (reuseSocket) {\n\t\t\toptions.createConnection = (...args) => {\n\t\t\t\tif (reuseSocket.destroyed) {\n\t\t\t\t\treturn this.agent.createConnection(...args);\n\t\t\t\t}\n\n\t\t\t\treturn reuseSocket;\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\t\tthis.agent.getSession(this[kOrigin], this[kOptions]).catch(() => {});\n\t\t}\n\n\t\tif (timeout) {\n\t\t\tthis.setTimeout(timeout);\n\t\t}\n\n\t\tif (callback) {\n\t\t\tthis.once('response', callback);\n\t\t}\n\n\t\tthis[kFlushedHeaders] = false;\n\t}\n\n\tget method() {\n\t\treturn this[kHeaders][HTTP2_HEADER_METHOD];\n\t}\n\n\tset method(value) {\n\t\tif (value) {\n\t\t\tthis[kHeaders][HTTP2_HEADER_METHOD] = value.toUpperCase();\n\t\t}\n\t}\n\n\tget path() {\n\t\tconst header = this.method === 'CONNECT' ? HTTP2_HEADER_AUTHORITY : HTTP2_HEADER_PATH;\n\n\t\treturn this[kHeaders][header];\n\t}\n\n\tset path(value) {\n\t\tif (value) {\n\t\t\tconst header = this.method === 'CONNECT' ? HTTP2_HEADER_AUTHORITY : HTTP2_HEADER_PATH;\n\n\t\t\tthis[kHeaders][header] = value;\n\t\t}\n\t}\n\n\tget host() {\n\t\treturn this[kOrigin].hostname;\n\t}\n\n\tset host(_value) {\n\t\t// Do nothing as this is read only.\n\t}\n\n\tget _mustNotHaveABody() {\n\t\treturn this.method === 'GET' || this.method === 'HEAD' || this.method === 'DELETE';\n\t}\n\n\t_write(chunk, encoding, callback) {\n\t\t// https://github.com/nodejs/node/blob/654df09ae0c5e17d1b52a900a545f0664d8c7627/lib/internal/http2/util.js#L148-L156\n\t\tif (this._mustNotHaveABody) {\n\t\t\tcallback(new Error('The GET, HEAD and DELETE methods must NOT have a body'));\n\t\t\t/* istanbul ignore next: Node.js 12 throws directly */\n\t\t\treturn;\n\t\t}\n\n\t\tthis.flushHeaders();\n\n\t\tconst callWrite = () => this._request.write(chunk, encoding, callback);\n\t\tif (this._request) {\n\t\t\tcallWrite();\n\t\t} else {\n\t\t\tthis[kJobs].push(callWrite);\n\t\t}\n\t}\n\n\t_final(callback) {\n\t\tthis.flushHeaders();\n\n\t\tconst callEnd = () => {\n\t\t\t// For GET, HEAD and DELETE and CONNECT\n\t\t\tif (this._mustNotHaveABody || this.method === 'CONNECT') {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._request.end(callback);\n\t\t};\n\n\t\tif (this._request) {\n\t\t\tcallEnd();\n\t\t} else {\n\t\t\tthis[kJobs].push(callEnd);\n\t\t}\n\t}\n\n\tabort() {\n\t\tif (this.res && this.res.complete) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.aborted) {\n\t\t\tprocess.nextTick(() => this.emit('abort'));\n\t\t}\n\n\t\tthis.aborted = true;\n\n\t\tthis.destroy();\n\t}\n\n\tasync _destroy(error, callback) {\n\t\tif (this.res) {\n\t\t\tthis.res._dump();\n\t\t}\n\n\t\tif (this._request) {\n\t\t\tthis._request.destroy();\n\t\t} else {\n\t\t\tprocess.nextTick(() => {\n\t\t\t\tthis.emit('close');\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tawait this[kPendingAgentPromise];\n\t\t} catch (internalError) {\n\t\t\tif (this.aborted) {\n\t\t\t\terror = internalError;\n\t\t\t}\n\t\t}\n\n\t\tcallback(error);\n\t}\n\n\tasync flushHeaders() {\n\t\tif (this[kFlushedHeaders] || this.destroyed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis[kFlushedHeaders] = true;\n\n\t\tconst isConnectMethod = this.method === HTTP2_METHOD_CONNECT;\n\n\t\t// The real magic is here\n\t\tconst onStream = stream => {\n\t\t\tthis._request = stream;\n\n\t\t\tif (this.destroyed) {\n\t\t\t\tstream.destroy();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Forwards `timeout`, `continue`, `close` and `error` events to this instance.\n\t\t\tif (!isConnectMethod) {\n\t\t\t\t// TODO: Should we proxy `close` here?\n\t\t\t\tproxyEvents(stream, this, ['timeout', 'continue']);\n\t\t\t}\n\n\t\t\tstream.once('error', error => {\n\t\t\t\tthis.destroy(error);\n\t\t\t});\n\n\t\t\tstream.once('aborted', () => {\n\t\t\t\tconst {res} = this;\n\t\t\t\tif (res) {\n\t\t\t\t\tres.aborted = true;\n\t\t\t\t\tres.emit('aborted');\n\t\t\t\t\tres.destroy();\n\t\t\t\t} else {\n\t\t\t\t\tthis.destroy(new Error('The server aborted the HTTP/2 stream'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst onResponse = (headers, flags, rawHeaders) => {\n\t\t\t\t// If we were to emit raw request stream, it would be as fast as the native approach.\n\t\t\t\t// Note that wrapping the raw stream in a Proxy instance won't improve the performance (already tested it).\n\t\t\t\tconst response = new IncomingMessage(this.socket, stream.readableHighWaterMark);\n\t\t\t\tthis.res = response;\n\n\t\t\t\t// Undocumented, but it is used by `cacheable-request`\n\t\t\t\tresponse.url = `${this[kOrigin].origin}${this.path}`;\n\n\t\t\t\tresponse.req = this;\n\t\t\t\tresponse.statusCode = headers[HTTP2_HEADER_STATUS];\n\t\t\t\tresponse.headers = headers;\n\t\t\t\tresponse.rawHeaders = rawHeaders;\n\n\t\t\t\tresponse.once('end', () => {\n\t\t\t\t\tresponse.complete = true;\n\n\t\t\t\t\t// Has no effect, just be consistent with the Node.js behavior\n\t\t\t\t\tresponse.socket = null;\n\t\t\t\t\tresponse.connection = null;\n\t\t\t\t});\n\n\t\t\t\tif (isConnectMethod) {\n\t\t\t\t\tresponse.upgrade = true;\n\n\t\t\t\t\t// The HTTP1 API says the socket is detached here,\n\t\t\t\t\t// but we can't do that so we pass the original HTTP2 request.\n\t\t\t\t\tif (this.emit('connect', response, stream, Buffer.alloc(0))) {\n\t\t\t\t\t\tthis.emit('close');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No listeners attached, destroy the original request.\n\t\t\t\t\t\tstream.destroy();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Forwards data\n\t\t\t\t\tstream.on('data', chunk => {\n\t\t\t\t\t\tif (!response._dumped && !response.push(chunk)) {\n\t\t\t\t\t\t\tstream.pause();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tstream.once('end', () => {\n\t\t\t\t\t\tif (!this.aborted) {\n\t\t\t\t\t\t\tresponse.push(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!this.emit('response', response)) {\n\t\t\t\t\t\t// No listeners attached, dump the response.\n\t\t\t\t\t\tresponse._dump();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// This event tells we are ready to listen for the data.\n\t\t\tstream.once('response', onResponse);\n\n\t\t\t// Emits `information` event\n\t\t\tstream.once('headers', headers => this.emit('information', {statusCode: headers[HTTP2_HEADER_STATUS]}));\n\n\t\t\tstream.once('trailers', (trailers, flags, rawTrailers) => {\n\t\t\t\tconst {res} = this;\n\n\t\t\t\t// https://github.com/nodejs/node/issues/41251\n\t\t\t\tif (res === null) {\n\t\t\t\t\tonResponse(trailers, flags, rawTrailers);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Assigns trailers to the response object.\n\t\t\t\tres.trailers = trailers;\n\t\t\t\tres.rawTrailers = rawTrailers;\n\t\t\t});\n\n\t\t\tstream.once('close', () => {\n\t\t\t\tconst {aborted, res} = this;\n\t\t\t\tif (res) {\n\t\t\t\t\tif (aborted) {\n\t\t\t\t\t\tres.aborted = true;\n\t\t\t\t\t\tres.emit('aborted');\n\t\t\t\t\t\tres.destroy();\n\t\t\t\t\t}\n\n\t\t\t\t\tconst finish = () => {\n\t\t\t\t\t\tres.emit('close');\n\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t\tthis.emit('close');\n\t\t\t\t\t};\n\n\t\t\t\t\tif (res.readable) {\n\t\t\t\t\t\tres.once('end', finish);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfinish();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!this.destroyed) {\n\t\t\t\t\tthis.destroy(new Error('The HTTP/2 stream has been early terminated'));\n\t\t\t\t\tthis.emit('close');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.destroy();\n\t\t\t\tthis.emit('close');\n\t\t\t});\n\n\t\t\tthis.socket = new Proxy(stream, proxySocketHandler);\n\n\t\t\tfor (const job of this[kJobs]) {\n\t\t\t\tjob();\n\t\t\t}\n\n\t\t\tthis[kJobs].length = 0;\n\n\t\t\tthis.emit('socket', this.socket);\n\t\t};\n\n\t\tif (!(HTTP2_HEADER_AUTHORITY in this[kHeaders]) && !isConnectMethod) {\n\t\t\tthis[kHeaders][HTTP2_HEADER_AUTHORITY] = this[kOrigin].host;\n\t\t}\n\n\t\t// Makes a HTTP2 request\n\t\tif (this[kSession]) {\n\t\t\ttry {\n\t\t\t\tonStream(this[kSession].request(this[kHeaders]));\n\t\t\t} catch (error) {\n\t\t\t\tthis.destroy(error);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.reusedSocket = true;\n\n\t\t\ttry {\n\t\t\t\tconst promise = this.agent.request(this[kOrigin], this[kOptions], this[kHeaders]);\n\t\t\t\tthis[kPendingAgentPromise] = promise;\n\n\t\t\t\tonStream(await promise);\n\n\t\t\t\tthis[kPendingAgentPromise] = false;\n\t\t\t} catch (error) {\n\t\t\t\tthis[kPendingAgentPromise] = false;\n\n\t\t\t\tthis.destroy(error);\n\t\t\t}\n\t\t}\n\t}\n\n\tget connection() {\n\t\treturn this.socket;\n\t}\n\n\tset connection(value) {\n\t\tthis.socket = value;\n\t}\n\n\tgetHeaderNames() {\n\t\treturn Object.keys(this[kHeaders]);\n\t}\n\n\thasHeader(name) {\n\t\tif (typeof name !== 'string') {\n\t\t\tthrow new ERR_INVALID_ARG_TYPE('name', 'string', name);\n\t\t}\n\n\t\treturn Boolean(this[kHeaders][name.toLowerCase()]);\n\t}\n\n\tgetHeader(name) {\n\t\tif (typeof name !== 'string') {\n\t\t\tthrow new ERR_INVALID_ARG_TYPE('name', 'string', name);\n\t\t}\n\n\t\treturn this[kHeaders][name.toLowerCase()];\n\t}\n\n\tget headersSent() {\n\t\treturn this[kFlushedHeaders];\n\t}\n\n\tremoveHeader(name) {\n\t\tif (typeof name !== 'string') {\n\t\t\tthrow new ERR_INVALID_ARG_TYPE('name', 'string', name);\n\t\t}\n\n\t\tif (this.headersSent) {\n\t\t\tthrow new ERR_HTTP_HEADERS_SENT('remove');\n\t\t}\n\n\t\tdelete this[kHeaders][name.toLowerCase()];\n\t}\n\n\tsetHeader(name, value) {\n\t\tif (this.headersSent) {\n\t\t\tthrow new ERR_HTTP_HEADERS_SENT('set');\n\t\t}\n\n\t\tvalidateHeaderName(name);\n\t\tvalidateHeaderValue(name, value);\n\n\t\tconst lowercased = name.toLowerCase();\n\n\t\tif (lowercased === 'connection') {\n\t\t\tif (value.toLowerCase() === 'keep-alive') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthrow new Error(`Invalid 'connection' header: ${value}`);\n\t\t}\n\n\t\tif (lowercased === 'host' && this.method === 'CONNECT') {\n\t\t\tthis[kHeaders][HTTP2_HEADER_AUTHORITY] = value;\n\t\t} else {\n\t\t\tthis[kHeaders][lowercased] = value;\n\t\t}\n\t}\n\n\tsetNoDelay() {\n\t\t// HTTP2 sockets cannot be malformed, do nothing.\n\t}\n\n\tsetSocketKeepAlive() {\n\t\t// HTTP2 sockets cannot be malformed, do nothing.\n\t}\n\n\tsetTimeout(ms, callback) {\n\t\tconst applyTimeout = () => this._request.setTimeout(ms, callback);\n\n\t\tif (this._request) {\n\t\t\tapplyTimeout();\n\t\t} else {\n\t\t\tthis[kJobs].push(applyTimeout);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tget maxHeadersCount() {\n\t\tif (!this.destroyed && this._request) {\n\t\t\treturn this._request.session.localSettings.maxHeaderListSize;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tset maxHeadersCount(_value) {\n\t\t// Updating HTTP2 settings would affect all requests, do nothing.\n\t}\n}\n\nmodule.exports = ClientRequest;\n","'use strict';\nconst tls = require('tls');\n\nmodule.exports = (options = {}, connect = tls.connect) => new Promise((resolve, reject) => {\n\tlet timeout = false;\n\n\tlet socket;\n\n\tconst callback = async () => {\n\t\tawait socketPromise;\n\n\t\tsocket.off('timeout', onTimeout);\n\t\tsocket.off('error', reject);\n\n\t\tif (options.resolveSocket) {\n\t\t\tresolve({alpnProtocol: socket.alpnProtocol, socket, timeout});\n\n\t\t\tif (timeout) {\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tsocket.emit('timeout');\n\t\t\t}\n\t\t} else {\n\t\t\tsocket.destroy();\n\t\t\tresolve({alpnProtocol: socket.alpnProtocol, timeout});\n\t\t}\n\t};\n\n\tconst onTimeout = async () => {\n\t\ttimeout = true;\n\t\tcallback();\n\t};\n\n\tconst socketPromise = (async () => {\n\t\ttry {\n\t\t\tsocket = await connect(options, callback);\n\n\t\t\tsocket.on('error', reject);\n\t\t\tsocket.once('timeout', onTimeout);\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t})();\n});\n","'use strict';\nconst {isIP} = require('net');\nconst assert = require('assert');\n\nconst getHost = host => {\n\tif (host[0] === '[') {\n\t\tconst idx = host.indexOf(']');\n\n\t\tassert(idx !== -1);\n\t\treturn host.slice(1, idx);\n\t}\n\n\tconst idx = host.indexOf(':');\n\tif (idx === -1) {\n\t\treturn host;\n\t}\n\n\treturn host.slice(0, idx);\n};\n\nmodule.exports = host => {\n\tconst servername = getHost(host);\n\n\tif (isIP(servername)) {\n\t\treturn '';\n\t}\n\n\treturn servername;\n};\n","'use strict';\n// See https://github.com/facebook/jest/issues/2549\n// eslint-disable-next-line node/prefer-global/url\nconst {URL, urlToHttpOptions} = require('url');\nconst http = require('http');\nconst https = require('https');\nconst resolveALPN = require('resolve-alpn');\nconst QuickLRU = require('quick-lru');\nconst {Agent, globalAgent} = require('./agent.js');\nconst Http2ClientRequest = require('./client-request.js');\nconst calculateServerName = require('./utils/calculate-server-name.js');\nconst delayAsyncDestroy = require('./utils/delay-async-destroy.js');\n\nconst cache = new QuickLRU({maxSize: 100});\nconst queue = new Map();\n\nconst installSocket = (agent, socket, options) => {\n\tsocket._httpMessage = {shouldKeepAlive: true};\n\n\tconst onFree = () => {\n\t\tagent.emit('free', socket, options);\n\t};\n\n\tsocket.on('free', onFree);\n\n\tconst onClose = () => {\n\t\tagent.removeSocket(socket, options);\n\t};\n\n\tsocket.on('close', onClose);\n\n\tconst onTimeout = () => {\n\t\tconst {freeSockets} = agent;\n\n\t\tfor (const sockets of Object.values(freeSockets)) {\n\t\t\tif (sockets.includes(socket)) {\n\t\t\t\tsocket.destroy();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\n\tsocket.on('timeout', onTimeout);\n\n\tconst onRemove = () => {\n\t\tagent.removeSocket(socket, options);\n\t\tsocket.off('close', onClose);\n\t\tsocket.off('free', onFree);\n\t\tsocket.off('timeout', onTimeout);\n\t\tsocket.off('agentRemove', onRemove);\n\t};\n\n\tsocket.on('agentRemove', onRemove);\n\n\tagent.emit('free', socket, options);\n};\n\nconst createResolveProtocol = (cache, queue = new Map(), connect = undefined) => {\n\treturn async options => {\n\t\tconst name = `${options.host}:${options.port}:${options.ALPNProtocols.sort()}`;\n\n\t\tif (!cache.has(name)) {\n\t\t\tif (queue.has(name)) {\n\t\t\t\tconst result = await queue.get(name);\n\t\t\t\treturn {alpnProtocol: result.alpnProtocol};\n\t\t\t}\n\n\t\t\tconst {path} = options;\n\t\t\toptions.path = options.socketPath;\n\n\t\t\tconst resultPromise = resolveALPN(options, connect);\n\t\t\tqueue.set(name, resultPromise);\n\n\t\t\ttry {\n\t\t\t\tconst result = await resultPromise;\n\n\t\t\t\tcache.set(name, result.alpnProtocol);\n\t\t\t\tqueue.delete(name);\n\n\t\t\t\toptions.path = path;\n\n\t\t\t\treturn result;\n\t\t\t} catch (error) {\n\t\t\t\tqueue.delete(name);\n\n\t\t\t\toptions.path = path;\n\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn {alpnProtocol: cache.get(name)};\n\t};\n};\n\nconst defaultResolveProtocol = createResolveProtocol(cache, queue);\n\nmodule.exports = async (input, options, callback) => {\n\tif (typeof input === 'string') {\n\t\tinput = urlToHttpOptions(new URL(input));\n\t} else if (input instanceof URL) {\n\t\tinput = urlToHttpOptions(input);\n\t} else {\n\t\tinput = {...input};\n\t}\n\n\tif (typeof options === 'function' || options === undefined) {\n\t\t// (options, callback)\n\t\tcallback = options;\n\t\toptions = input;\n\t} else {\n\t\t// (input, options, callback)\n\t\toptions = Object.assign(input, options);\n\t}\n\n\toptions.ALPNProtocols = options.ALPNProtocols || ['h2', 'http/1.1'];\n\n\tif (!Array.isArray(options.ALPNProtocols) || options.ALPNProtocols.length === 0) {\n\t\tthrow new Error('The `ALPNProtocols` option must be an Array with at least one entry');\n\t}\n\n\toptions.protocol = options.protocol || 'https:';\n\tconst isHttps = options.protocol === 'https:';\n\n\toptions.host = options.hostname || options.host || 'localhost';\n\toptions.session = options.tlsSession;\n\toptions.servername = options.servername || calculateServerName((options.headers && options.headers.host) || options.host);\n\toptions.port = options.port || (isHttps ? 443 : 80);\n\toptions._defaultAgent = isHttps ? https.globalAgent : http.globalAgent;\n\n\tconst resolveProtocol = options.resolveProtocol || defaultResolveProtocol;\n\n\t// Note: We don't support `h2session` here\n\n\tlet {agent} = options;\n\tif (agent !== undefined && agent !== false && agent.constructor.name !== 'Object') {\n\t\tthrow new Error('The `options.agent` can be only an object `http`, `https` or `http2` properties');\n\t}\n\n\tif (isHttps) {\n\t\toptions.resolveSocket = true;\n\n\t\tlet {socket, alpnProtocol, timeout} = await resolveProtocol(options);\n\n\t\tif (timeout) {\n\t\t\tif (socket) {\n\t\t\t\tsocket.destroy();\n\t\t\t}\n\n\t\t\tconst error = new Error(`Timed out resolving ALPN: ${options.timeout} ms`);\n\t\t\terror.code = 'ETIMEDOUT';\n\t\t\terror.ms = options.timeout;\n\n\t\t\tthrow error;\n\t\t}\n\n\t\t// We can't accept custom `createConnection` because the API is different for HTTP/2\n\t\tif (socket && options.createConnection) {\n\t\t\tsocket.destroy();\n\t\t\tsocket = undefined;\n\t\t}\n\n\t\tdelete options.resolveSocket;\n\n\t\tconst isHttp2 = alpnProtocol === 'h2';\n\n\t\tif (agent) {\n\t\t\tagent = isHttp2 ? agent.http2 : agent.https;\n\t\t\toptions.agent = agent;\n\t\t}\n\n\t\tif (agent === undefined) {\n\t\t\tagent = isHttp2 ? globalAgent : https.globalAgent;\n\t\t}\n\n\t\tif (socket) {\n\t\t\tif (agent === false) {\n\t\t\t\tsocket.destroy();\n\t\t\t} else {\n\t\t\t\tconst defaultCreateConnection = (isHttp2 ? Agent : https.Agent).prototype.createConnection;\n\n\t\t\t\tif (agent.createConnection === defaultCreateConnection) {\n\t\t\t\t\tif (isHttp2) {\n\t\t\t\t\t\toptions._reuseSocket = socket;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinstallSocket(agent, socket, options);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsocket.destroy();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (isHttp2) {\n\t\t\treturn delayAsyncDestroy(new Http2ClientRequest(options, callback));\n\t\t}\n\t} else if (agent) {\n\t\toptions.agent = agent.http;\n\t}\n\n\treturn delayAsyncDestroy(http.request(options, callback));\n};\n\nmodule.exports.protocolCache = cache;\nmodule.exports.resolveProtocol = defaultResolveProtocol;\nmodule.exports.createResolveProtocol = createResolveProtocol;\n","'use strict';\nconst stream = require('stream');\nconst tls = require('tls');\n\n// Really awesome hack.\nconst JSStreamSocket = (new tls.TLSSocket(new stream.PassThrough()))._handle._parentWrap.constructor;\n\nmodule.exports = JSStreamSocket;\n","'use strict';\n\nclass UnexpectedStatusCodeError extends Error {\n\tconstructor(statusCode, statusMessage = '') {\n\t\tsuper(`The proxy server rejected the request with status code ${statusCode} (${statusMessage || 'empty status message'})`);\n\t\tthis.statusCode = statusCode;\n\t\tthis.statusMessage = statusMessage;\n\t}\n}\n\nmodule.exports = UnexpectedStatusCodeError;\n","'use strict';\n\nconst checkType = (name, value, types) => {\n\tconst valid = types.some(type => {\n\t\tconst typeofType = typeof type;\n\t\tif (typeofType === 'string') {\n\t\t\treturn typeof value === type;\n\t\t}\n\n\t\treturn value instanceof type;\n\t});\n\n\tif (!valid) {\n\t\tconst names = types.map(type => typeof type === 'string' ? type : type.name);\n\n\t\tthrow new TypeError(`Expected '${name}' to be a type of ${names.join(' or ')}, got ${typeof value}`);\n\t}\n};\n\nmodule.exports = checkType;\n","'use strict';\n// See https://github.com/facebook/jest/issues/2549\n// eslint-disable-next-line node/prefer-global/url\nconst {URL} = require('url');\nconst checkType = require('../utils/check-type.js');\n\nmodule.exports = (self, proxyOptions) => {\n\tcheckType('proxyOptions', proxyOptions, ['object']);\n\tcheckType('proxyOptions.headers', proxyOptions.headers, ['object', 'undefined']);\n\tcheckType('proxyOptions.raw', proxyOptions.raw, ['boolean', 'undefined']);\n\tcheckType('proxyOptions.url', proxyOptions.url, [URL, 'string']);\n\n\tconst url = new URL(proxyOptions.url);\n\n\tself.proxyOptions = {\n\t\traw: true,\n\t\t...proxyOptions,\n\t\theaders: {...proxyOptions.headers},\n\t\turl\n\t};\n};\n","'use strict';\n\nmodule.exports = self => {\n\tconst {username, password} = self.proxyOptions.url;\n\n\tif (username || password) {\n\t\tconst data = `${username}:${password}`;\n\t\tconst authorization = `Basic ${Buffer.from(data).toString('base64')}`;\n\n\t\treturn {\n\t\t\t'proxy-authorization': authorization,\n\t\t\tauthorization\n\t\t};\n\t}\n\n\treturn {};\n};\n","'use strict';\nconst tls = require('tls');\nconst http = require('http');\nconst https = require('https');\nconst JSStreamSocket = require('../utils/js-stream-socket.js');\nconst {globalAgent} = require('../agent.js');\nconst UnexpectedStatusCodeError = require('./unexpected-status-code-error.js');\nconst initialize = require('./initialize.js');\nconst getAuthorizationHeaders = require('./get-auth-headers.js');\n\nconst createConnection = (self, options, callback) => {\n\t(async () => {\n\t\ttry {\n\t\t\tconst {proxyOptions} = self;\n\t\t\tconst {url, headers, raw} = proxyOptions;\n\n\t\t\tconst stream = await globalAgent.request(url, proxyOptions, {\n\t\t\t\t...getAuthorizationHeaders(self),\n\t\t\t\t...headers,\n\t\t\t\t':method': 'CONNECT',\n\t\t\t\t':authority': `${options.host}:${options.port}`\n\t\t\t});\n\n\t\t\tstream.once('error', callback);\n\t\t\tstream.once('response', headers => {\n\t\t\t\tconst statusCode = headers[':status'];\n\n\t\t\t\tif (statusCode !== 200) {\n\t\t\t\t\tcallback(new UnexpectedStatusCodeError(statusCode, ''));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst encrypted = self instanceof https.Agent;\n\n\t\t\t\tif (raw && encrypted) {\n\t\t\t\t\toptions.socket = stream;\n\t\t\t\t\tconst secureStream = tls.connect(options);\n\n\t\t\t\t\tsecureStream.once('close', () => {\n\t\t\t\t\t\tstream.destroy();\n\t\t\t\t\t});\n\n\t\t\t\t\tcallback(null, secureStream);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst socket = new JSStreamSocket(stream);\n\t\t\t\tsocket.encrypted = false;\n\t\t\t\tsocket._handle.getpeername = out => {\n\t\t\t\t\tout.family = undefined;\n\t\t\t\t\tout.address = undefined;\n\t\t\t\t\tout.port = undefined;\n\t\t\t\t};\n\n\t\t\t\tcallback(null, socket);\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tcallback(error);\n\t\t}\n\t})();\n};\n\nclass HttpOverHttp2 extends http.Agent {\n\tconstructor(options) {\n\t\tsuper(options);\n\n\t\tinitialize(this, options.proxyOptions);\n\t}\n\n\tcreateConnection(options, callback) {\n\t\tcreateConnection(this, options, callback);\n\t}\n}\n\nclass HttpsOverHttp2 extends https.Agent {\n\tconstructor(options) {\n\t\tsuper(options);\n\n\t\tinitialize(this, options.proxyOptions);\n\t}\n\n\tcreateConnection(options, callback) {\n\t\tcreateConnection(this, options, callback);\n\t}\n}\n\nmodule.exports = {\n\tHttpOverHttp2,\n\tHttpsOverHttp2\n};\n","'use strict';\nconst {Agent} = require('../agent.js');\nconst JSStreamSocket = require('../utils/js-stream-socket.js');\nconst UnexpectedStatusCodeError = require('./unexpected-status-code-error.js');\nconst initialize = require('./initialize.js');\n\nclass Http2OverHttpX extends Agent {\n\tconstructor(options) {\n\t\tsuper(options);\n\n\t\tinitialize(this, options.proxyOptions);\n\t}\n\n\tasync createConnection(origin, options) {\n\t\tconst authority = `${origin.hostname}:${origin.port || 443}`;\n\n\t\tconst [stream, statusCode, statusMessage] = await this._getProxyStream(authority);\n\t\tif (statusCode !== 200) {\n\t\t\tthrow new UnexpectedStatusCodeError(statusCode, statusMessage);\n\t\t}\n\n\t\tif (this.proxyOptions.raw) {\n\t\t\toptions.socket = stream;\n\t\t} else {\n\t\t\tconst socket = new JSStreamSocket(stream);\n\t\t\tsocket.encrypted = false;\n\t\t\tsocket._handle.getpeername = out => {\n\t\t\t\tout.family = undefined;\n\t\t\t\tout.address = undefined;\n\t\t\t\tout.port = undefined;\n\t\t\t};\n\n\t\t\treturn socket;\n\t\t}\n\n\t\treturn super.createConnection(origin, options);\n\t}\n}\n\nmodule.exports = Http2OverHttpX;\n","'use strict';\nconst {globalAgent} = require('../agent.js');\nconst Http2OverHttpX = require('./h2-over-hx.js');\nconst getAuthorizationHeaders = require('./get-auth-headers.js');\n\nconst getStatusCode = stream => new Promise((resolve, reject) => {\n\tstream.once('error', reject);\n\tstream.once('response', headers => {\n\t\tstream.off('error', reject);\n\t\tresolve(headers[':status']);\n\t});\n});\n\nclass Http2OverHttp2 extends Http2OverHttpX {\n\tasync _getProxyStream(authority) {\n\t\tconst {proxyOptions} = this;\n\n\t\tconst headers = {\n\t\t\t...getAuthorizationHeaders(this),\n\t\t\t...proxyOptions.headers,\n\t\t\t':method': 'CONNECT',\n\t\t\t':authority': authority\n\t\t};\n\n\t\tconst stream = await globalAgent.request(proxyOptions.url, proxyOptions, headers);\n\t\tconst statusCode = await getStatusCode(stream);\n\n\t\treturn [stream, statusCode, ''];\n\t}\n}\n\nmodule.exports = Http2OverHttp2;\n","'use strict';\nconst http = require('http');\nconst https = require('https');\nconst Http2OverHttpX = require('./h2-over-hx.js');\nconst getAuthorizationHeaders = require('./get-auth-headers.js');\n\nconst getStream = request => new Promise((resolve, reject) => {\n\tconst onConnect = (response, socket, head) => {\n\t\tsocket.unshift(head);\n\n\t\trequest.off('error', reject);\n\t\tresolve([socket, response.statusCode, response.statusMessage]);\n\t};\n\n\trequest.once('error', reject);\n\trequest.once('connect', onConnect);\n});\n\nclass Http2OverHttp extends Http2OverHttpX {\n\tasync _getProxyStream(authority) {\n\t\tconst {proxyOptions} = this;\n\t\tconst {url, headers} = this.proxyOptions;\n\n\t\tconst network = url.protocol === 'https:' ? https : http;\n\n\t\t// `new URL('https://localhost/httpbin.org:443')` results in\n\t\t// a `/httpbin.org:443` path, which has an invalid leading slash.\n\t\tconst request = network.request({\n\t\t\t...proxyOptions,\n\t\t\thostname: url.hostname,\n\t\t\tport: url.port,\n\t\t\tpath: authority,\n\t\t\theaders: {\n\t\t\t\t...getAuthorizationHeaders(this),\n\t\t\t\t...headers,\n\t\t\t\thost: authority\n\t\t\t},\n\t\t\tmethod: 'CONNECT'\n\t\t}).end();\n\n\t\treturn getStream(request);\n\t}\n}\n\nmodule.exports = {\n\tHttp2OverHttp,\n\tHttp2OverHttps: Http2OverHttp\n};\n","'use strict';\nconst http2 = require('http2');\nconst {\n\tAgent,\n\tglobalAgent\n} = require('./agent.js');\nconst ClientRequest = require('./client-request.js');\nconst IncomingMessage = require('./incoming-message.js');\nconst auto = require('./auto.js');\nconst {\n\tHttpOverHttp2,\n\tHttpsOverHttp2\n} = require('./proxies/h1-over-h2.js');\nconst Http2OverHttp2 = require('./proxies/h2-over-h2.js');\nconst {\n\tHttp2OverHttp,\n\tHttp2OverHttps\n} = require('./proxies/h2-over-h1.js');\nconst validateHeaderName = require('./utils/validate-header-name.js');\nconst validateHeaderValue = require('./utils/validate-header-value.js');\n\nconst request = (url, options, callback) => new ClientRequest(url, options, callback);\n\nconst get = (url, options, callback) => {\n\t// eslint-disable-next-line unicorn/prevent-abbreviations\n\tconst req = new ClientRequest(url, options, callback);\n\treq.end();\n\n\treturn req;\n};\n\nmodule.exports = {\n\t...http2,\n\tClientRequest,\n\tIncomingMessage,\n\tAgent,\n\tglobalAgent,\n\trequest,\n\tget,\n\tauto,\n\tproxies: {\n\t\tHttpOverHttp2,\n\t\tHttpsOverHttp2,\n\t\tHttp2OverHttp2,\n\t\tHttp2OverHttp,\n\t\tHttp2OverHttps\n\t},\n\tvalidateHeaderName,\n\tvalidateHeaderValue\n};\n","export default function parseLinkHeader(link) {\n const parsed = [];\n const items = link.split(',');\n for (const item of items) {\n // https://tools.ietf.org/html/rfc5988#section-5\n const [rawUriReference, ...rawLinkParameters] = item.split(';');\n const trimmedUriReference = rawUriReference.trim();\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n if (trimmedUriReference[0] !== '<' || trimmedUriReference[trimmedUriReference.length - 1] !== '>') {\n throw new Error(`Invalid format of the Link header reference: ${trimmedUriReference}`);\n }\n const reference = trimmedUriReference.slice(1, -1);\n const parameters = {};\n if (rawLinkParameters.length === 0) {\n throw new Error(`Unexpected end of Link header parameters: ${rawLinkParameters.join(';')}`);\n }\n for (const rawParameter of rawLinkParameters) {\n const trimmedRawParameter = rawParameter.trim();\n const center = trimmedRawParameter.indexOf('=');\n if (center === -1) {\n throw new Error(`Failed to parse Link header: ${link}`);\n }\n const name = trimmedRawParameter.slice(0, center).trim();\n const value = trimmedRawParameter.slice(center + 1).trim();\n parameters[name] = value;\n }\n parsed.push({\n reference,\n parameters,\n });\n }\n return parsed;\n}\n","import process from 'node:process';\nimport { promisify, inspect } from 'node:util';\nimport { URL, URLSearchParams } from 'node:url';\nimport { checkServerIdentity } from 'node:tls';\n// DO NOT use destructuring for `https.request` and `http.request` as it's not compatible with `nock`.\nimport http from 'node:http';\nimport https from 'node:https';\nimport is, { assert } from '@sindresorhus/is';\nimport lowercaseKeys from 'lowercase-keys';\nimport CacheableLookup from 'cacheable-lookup';\nimport http2wrapper from 'http2-wrapper';\nimport { isFormData } from 'form-data-encoder';\nimport parseLinkHeader from './parse-link-header.js';\nconst [major, minor] = process.versions.node.split('.').map(Number);\nfunction validateSearchParameters(searchParameters) {\n // eslint-disable-next-line guard-for-in\n for (const key in searchParameters) {\n const value = searchParameters[key];\n assert.any([is.string, is.number, is.boolean, is.null_, is.undefined], value);\n }\n}\nconst globalCache = new Map();\nlet globalDnsCache;\nconst getGlobalDnsCache = () => {\n if (globalDnsCache) {\n return globalDnsCache;\n }\n globalDnsCache = new CacheableLookup();\n return globalDnsCache;\n};\nconst defaultInternals = {\n request: undefined,\n agent: {\n http: undefined,\n https: undefined,\n http2: undefined,\n },\n h2session: undefined,\n decompress: true,\n timeout: {\n connect: undefined,\n lookup: undefined,\n read: undefined,\n request: undefined,\n response: undefined,\n secureConnect: undefined,\n send: undefined,\n socket: undefined,\n },\n prefixUrl: '',\n body: undefined,\n form: undefined,\n json: undefined,\n cookieJar: undefined,\n ignoreInvalidCookies: false,\n searchParams: undefined,\n dnsLookup: undefined,\n dnsCache: undefined,\n context: {},\n hooks: {\n init: [],\n beforeRequest: [],\n beforeError: [],\n beforeRedirect: [],\n beforeRetry: [],\n afterResponse: [],\n },\n followRedirect: true,\n maxRedirects: 10,\n cache: undefined,\n throwHttpErrors: true,\n username: '',\n password: '',\n http2: false,\n allowGetBody: false,\n headers: {\n 'user-agent': 'got (https://github.com/sindresorhus/got)',\n },\n methodRewriting: false,\n dnsLookupIpVersion: undefined,\n parseJson: JSON.parse,\n stringifyJson: JSON.stringify,\n retry: {\n limit: 2,\n methods: [\n 'GET',\n 'PUT',\n 'HEAD',\n 'DELETE',\n 'OPTIONS',\n 'TRACE',\n ],\n statusCodes: [\n 408,\n 413,\n 429,\n 500,\n 502,\n 503,\n 504,\n 521,\n 522,\n 524,\n ],\n errorCodes: [\n 'ETIMEDOUT',\n 'ECONNRESET',\n 'EADDRINUSE',\n 'ECONNREFUSED',\n 'EPIPE',\n 'ENOTFOUND',\n 'ENETUNREACH',\n 'EAI_AGAIN',\n ],\n maxRetryAfter: undefined,\n calculateDelay: ({ computedValue }) => computedValue,\n backoffLimit: Number.POSITIVE_INFINITY,\n noise: 100,\n },\n localAddress: undefined,\n method: 'GET',\n createConnection: undefined,\n cacheOptions: {\n shared: undefined,\n cacheHeuristic: undefined,\n immutableMinTimeToLive: undefined,\n ignoreCargoCult: undefined,\n },\n https: {\n alpnProtocols: undefined,\n rejectUnauthorized: undefined,\n checkServerIdentity: undefined,\n certificateAuthority: undefined,\n key: undefined,\n certificate: undefined,\n passphrase: undefined,\n pfx: undefined,\n ciphers: undefined,\n honorCipherOrder: undefined,\n minVersion: undefined,\n maxVersion: undefined,\n signatureAlgorithms: undefined,\n tlsSessionLifetime: undefined,\n dhparam: undefined,\n ecdhCurve: undefined,\n certificateRevocationLists: undefined,\n },\n encoding: undefined,\n resolveBodyOnly: false,\n isStream: false,\n responseType: 'text',\n url: undefined,\n pagination: {\n transform(response) {\n if (response.request.options.responseType === 'json') {\n return response.body;\n }\n return JSON.parse(response.body);\n },\n paginate({ response }) {\n const rawLinkHeader = response.headers.link;\n if (typeof rawLinkHeader !== 'string' || rawLinkHeader.trim() === '') {\n return false;\n }\n const parsed = parseLinkHeader(rawLinkHeader);\n const next = parsed.find(entry => entry.parameters.rel === 'next' || entry.parameters.rel === '\"next\"');\n if (next) {\n return {\n url: new URL(next.reference, response.url),\n };\n }\n return false;\n },\n filter: () => true,\n shouldContinue: () => true,\n countLimit: Number.POSITIVE_INFINITY,\n backoff: 0,\n requestLimit: 10000,\n stackAllItems: false,\n },\n setHost: true,\n maxHeaderSize: undefined,\n signal: undefined,\n enableUnixSockets: true,\n};\nconst cloneInternals = (internals) => {\n const { hooks, retry } = internals;\n const result = {\n ...internals,\n context: { ...internals.context },\n cacheOptions: { ...internals.cacheOptions },\n https: { ...internals.https },\n agent: { ...internals.agent },\n headers: { ...internals.headers },\n retry: {\n ...retry,\n errorCodes: [...retry.errorCodes],\n methods: [...retry.methods],\n statusCodes: [...retry.statusCodes],\n },\n timeout: { ...internals.timeout },\n hooks: {\n init: [...hooks.init],\n beforeRequest: [...hooks.beforeRequest],\n beforeError: [...hooks.beforeError],\n beforeRedirect: [...hooks.beforeRedirect],\n beforeRetry: [...hooks.beforeRetry],\n afterResponse: [...hooks.afterResponse],\n },\n searchParams: internals.searchParams ? new URLSearchParams(internals.searchParams) : undefined,\n pagination: { ...internals.pagination },\n };\n if (result.url !== undefined) {\n result.prefixUrl = '';\n }\n return result;\n};\nconst cloneRaw = (raw) => {\n const { hooks, retry } = raw;\n const result = { ...raw };\n if (is.object(raw.context)) {\n result.context = { ...raw.context };\n }\n if (is.object(raw.cacheOptions)) {\n result.cacheOptions = { ...raw.cacheOptions };\n }\n if (is.object(raw.https)) {\n result.https = { ...raw.https };\n }\n if (is.object(raw.cacheOptions)) {\n result.cacheOptions = { ...result.cacheOptions };\n }\n if (is.object(raw.agent)) {\n result.agent = { ...raw.agent };\n }\n if (is.object(raw.headers)) {\n result.headers = { ...raw.headers };\n }\n if (is.object(retry)) {\n result.retry = { ...retry };\n if (is.array(retry.errorCodes)) {\n result.retry.errorCodes = [...retry.errorCodes];\n }\n if (is.array(retry.methods)) {\n result.retry.methods = [...retry.methods];\n }\n if (is.array(retry.statusCodes)) {\n result.retry.statusCodes = [...retry.statusCodes];\n }\n }\n if (is.object(raw.timeout)) {\n result.timeout = { ...raw.timeout };\n }\n if (is.object(hooks)) {\n result.hooks = {\n ...hooks,\n };\n if (is.array(hooks.init)) {\n result.hooks.init = [...hooks.init];\n }\n if (is.array(hooks.beforeRequest)) {\n result.hooks.beforeRequest = [...hooks.beforeRequest];\n }\n if (is.array(hooks.beforeError)) {\n result.hooks.beforeError = [...hooks.beforeError];\n }\n if (is.array(hooks.beforeRedirect)) {\n result.hooks.beforeRedirect = [...hooks.beforeRedirect];\n }\n if (is.array(hooks.beforeRetry)) {\n result.hooks.beforeRetry = [...hooks.beforeRetry];\n }\n if (is.array(hooks.afterResponse)) {\n result.hooks.afterResponse = [...hooks.afterResponse];\n }\n }\n // TODO: raw.searchParams\n if (is.object(raw.pagination)) {\n result.pagination = { ...raw.pagination };\n }\n return result;\n};\nconst getHttp2TimeoutOption = (internals) => {\n const delays = [internals.timeout.socket, internals.timeout.connect, internals.timeout.lookup, internals.timeout.request, internals.timeout.secureConnect].filter(delay => typeof delay === 'number');\n if (delays.length > 0) {\n return Math.min(...delays);\n }\n return undefined;\n};\nconst init = (options, withOptions, self) => {\n const initHooks = options.hooks?.init;\n if (initHooks) {\n for (const hook of initHooks) {\n hook(withOptions, self);\n }\n }\n};\nexport default class Options {\n constructor(input, options, defaults) {\n Object.defineProperty(this, \"_unixOptions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_internals\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_merging\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_init\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n assert.any([is.string, is.urlInstance, is.object, is.undefined], input);\n assert.any([is.object, is.undefined], options);\n assert.any([is.object, is.undefined], defaults);\n if (input instanceof Options || options instanceof Options) {\n throw new TypeError('The defaults must be passed as the third argument');\n }\n this._internals = cloneInternals(defaults?._internals ?? defaults ?? defaultInternals);\n this._init = [...(defaults?._init ?? [])];\n this._merging = false;\n this._unixOptions = undefined;\n // This rule allows `finally` to be considered more important.\n // Meaning no matter the error thrown in the `try` block,\n // if `finally` throws then the `finally` error will be thrown.\n //\n // Yes, we want this. If we set `url` first, then the `url.searchParams`\n // would get merged. Instead we set the `searchParams` first, then\n // `url.searchParams` is overwritten as expected.\n //\n /* eslint-disable no-unsafe-finally */\n try {\n if (is.plainObject(input)) {\n try {\n this.merge(input);\n this.merge(options);\n }\n finally {\n this.url = input.url;\n }\n }\n else {\n try {\n this.merge(options);\n }\n finally {\n if (options?.url !== undefined) {\n if (input === undefined) {\n this.url = options.url;\n }\n else {\n throw new TypeError('The `url` option is mutually exclusive with the `input` argument');\n }\n }\n else if (input !== undefined) {\n this.url = input;\n }\n }\n }\n }\n catch (error) {\n error.options = this;\n throw error;\n }\n /* eslint-enable no-unsafe-finally */\n }\n merge(options) {\n if (!options) {\n return;\n }\n if (options instanceof Options) {\n for (const init of options._init) {\n this.merge(init);\n }\n return;\n }\n options = cloneRaw(options);\n init(this, options, this);\n init(options, options, this);\n this._merging = true;\n // Always merge `isStream` first\n if ('isStream' in options) {\n this.isStream = options.isStream;\n }\n try {\n let push = false;\n for (const key in options) {\n // `got.extend()` options\n if (key === 'mutableDefaults' || key === 'handlers') {\n continue;\n }\n // Never merge `url`\n if (key === 'url') {\n continue;\n }\n if (!(key in this)) {\n throw new Error(`Unexpected option: ${key}`);\n }\n // @ts-expect-error Type 'unknown' is not assignable to type 'never'.\n this[key] = options[key];\n push = true;\n }\n if (push) {\n this._init.push(options);\n }\n }\n finally {\n this._merging = false;\n }\n }\n /**\n Custom request function.\n The main purpose of this is to [support HTTP2 using a wrapper](https://github.com/szmarczak/http2-wrapper).\n\n @default http.request | https.request\n */\n get request() {\n return this._internals.request;\n }\n set request(value) {\n assert.any([is.function_, is.undefined], value);\n this._internals.request = value;\n }\n /**\n An object representing `http`, `https` and `http2` keys for [`http.Agent`](https://nodejs.org/api/http.html#http_class_http_agent), [`https.Agent`](https://nodejs.org/api/https.html#https_class_https_agent) and [`http2wrapper.Agent`](https://github.com/szmarczak/http2-wrapper#new-http2agentoptions) instance.\n This is necessary because a request to one protocol might redirect to another.\n In such a scenario, Got will switch over to the right protocol agent for you.\n\n If a key is not present, it will default to a global agent.\n\n @example\n ```\n import got from 'got';\n import HttpAgent from 'agentkeepalive';\n\n const {HttpsAgent} = HttpAgent;\n\n await got('https://sindresorhus.com', {\n agent: {\n http: new HttpAgent(),\n https: new HttpsAgent()\n }\n });\n ```\n */\n get agent() {\n return this._internals.agent;\n }\n set agent(value) {\n assert.plainObject(value);\n // eslint-disable-next-line guard-for-in\n for (const key in value) {\n if (!(key in this._internals.agent)) {\n throw new TypeError(`Unexpected agent option: ${key}`);\n }\n // @ts-expect-error - No idea why `value[key]` doesn't work here.\n assert.any([is.object, is.undefined], value[key]);\n }\n if (this._merging) {\n Object.assign(this._internals.agent, value);\n }\n else {\n this._internals.agent = { ...value };\n }\n }\n get h2session() {\n return this._internals.h2session;\n }\n set h2session(value) {\n this._internals.h2session = value;\n }\n /**\n Decompress the response automatically.\n\n This will set the `accept-encoding` header to `gzip, deflate, br` unless you set it yourself.\n\n If this is disabled, a compressed response is returned as a `Buffer`.\n This may be useful if you want to handle decompression yourself or stream the raw compressed data.\n\n @default true\n */\n get decompress() {\n return this._internals.decompress;\n }\n set decompress(value) {\n assert.boolean(value);\n this._internals.decompress = value;\n }\n /**\n Milliseconds to wait for the server to end the response before aborting the request with `got.TimeoutError` error (a.k.a. `request` property).\n By default, there's no timeout.\n\n This also accepts an `object` with the following fields to constrain the duration of each phase of the request lifecycle:\n\n - `lookup` starts when a socket is assigned and ends when the hostname has been resolved.\n Does not apply when using a Unix domain socket.\n - `connect` starts when `lookup` completes (or when the socket is assigned if lookup does not apply to the request) and ends when the socket is connected.\n - `secureConnect` starts when `connect` completes and ends when the handshaking process completes (HTTPS only).\n - `socket` starts when the socket is connected. See [request.setTimeout](https://nodejs.org/api/http.html#http_request_settimeout_timeout_callback).\n - `response` starts when the request has been written to the socket and ends when the response headers are received.\n - `send` starts when the socket is connected and ends with the request has been written to the socket.\n - `request` starts when the request is initiated and ends when the response's end event fires.\n */\n get timeout() {\n // We always return `Delays` here.\n // It has to be `Delays | number`, otherwise TypeScript will error because the getter and the setter have incompatible types.\n return this._internals.timeout;\n }\n set timeout(value) {\n assert.plainObject(value);\n // eslint-disable-next-line guard-for-in\n for (const key in value) {\n if (!(key in this._internals.timeout)) {\n throw new Error(`Unexpected timeout option: ${key}`);\n }\n // @ts-expect-error - No idea why `value[key]` doesn't work here.\n assert.any([is.number, is.undefined], value[key]);\n }\n if (this._merging) {\n Object.assign(this._internals.timeout, value);\n }\n else {\n this._internals.timeout = { ...value };\n }\n }\n /**\n When specified, `prefixUrl` will be prepended to `url`.\n The prefix can be any valid URL, either relative or absolute.\n A trailing slash `/` is optional - one will be added automatically.\n\n __Note__: `prefixUrl` will be ignored if the `url` argument is a URL instance.\n\n __Note__: Leading slashes in `input` are disallowed when using this option to enforce consistency and avoid confusion.\n For example, when the prefix URL is `https://example.com/foo` and the input is `/bar`, there's ambiguity whether the resulting URL would become `https://example.com/foo/bar` or `https://example.com/bar`.\n The latter is used by browsers.\n\n __Tip__: Useful when used with `got.extend()` to create niche-specific Got instances.\n\n __Tip__: You can change `prefixUrl` using hooks as long as the URL still includes the `prefixUrl`.\n If the URL doesn't include it anymore, it will throw.\n\n @example\n ```\n import got from 'got';\n\n await got('unicorn', {prefixUrl: 'https://cats.com'});\n //=> 'https://cats.com/unicorn'\n\n const instance = got.extend({\n prefixUrl: 'https://google.com'\n });\n\n await instance('unicorn', {\n hooks: {\n beforeRequest: [\n options => {\n options.prefixUrl = 'https://cats.com';\n }\n ]\n }\n });\n //=> 'https://cats.com/unicorn'\n ```\n */\n get prefixUrl() {\n // We always return `string` here.\n // It has to be `string | URL`, otherwise TypeScript will error because the getter and the setter have incompatible types.\n return this._internals.prefixUrl;\n }\n set prefixUrl(value) {\n assert.any([is.string, is.urlInstance], value);\n if (value === '') {\n this._internals.prefixUrl = '';\n return;\n }\n value = value.toString();\n if (!value.endsWith('/')) {\n value += '/';\n }\n if (this._internals.prefixUrl && this._internals.url) {\n const { href } = this._internals.url;\n this._internals.url.href = value + href.slice(this._internals.prefixUrl.length);\n }\n this._internals.prefixUrl = value;\n }\n /**\n __Note #1__: The `body` option cannot be used with the `json` or `form` option.\n\n __Note #2__: If you provide this option, `got.stream()` will be read-only.\n\n __Note #3__: If you provide a payload with the `GET` or `HEAD` method, it will throw a `TypeError` unless the method is `GET` and the `allowGetBody` option is set to `true`.\n\n __Note #4__: This option is not enumerable and will not be merged with the instance defaults.\n\n The `content-length` header will be automatically set if `body` is a `string` / `Buffer` / [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) / [`form-data` instance](https://github.com/form-data/form-data), and `content-length` and `transfer-encoding` are not manually set in `options.headers`.\n\n Since Got 12, the `content-length` is not automatically set when `body` is a `fs.createReadStream`.\n */\n get body() {\n return this._internals.body;\n }\n set body(value) {\n assert.any([is.string, is.buffer, is.nodeStream, is.generator, is.asyncGenerator, isFormData, is.undefined], value);\n if (is.nodeStream(value)) {\n assert.truthy(value.readable);\n }\n if (value !== undefined) {\n assert.undefined(this._internals.form);\n assert.undefined(this._internals.json);\n }\n this._internals.body = value;\n }\n /**\n The form body is converted to a query string using [`(new URLSearchParams(object)).toString()`](https://nodejs.org/api/url.html#url_constructor_new_urlsearchparams_obj).\n\n If the `Content-Type` header is not present, it will be set to `application/x-www-form-urlencoded`.\n\n __Note #1__: If you provide this option, `got.stream()` will be read-only.\n\n __Note #2__: This option is not enumerable and will not be merged with the instance defaults.\n */\n get form() {\n return this._internals.form;\n }\n set form(value) {\n assert.any([is.plainObject, is.undefined], value);\n if (value !== undefined) {\n assert.undefined(this._internals.body);\n assert.undefined(this._internals.json);\n }\n this._internals.form = value;\n }\n /**\n JSON body. If the `Content-Type` header is not set, it will be set to `application/json`.\n\n __Note #1__: If you provide this option, `got.stream()` will be read-only.\n\n __Note #2__: This option is not enumerable and will not be merged with the instance defaults.\n */\n get json() {\n return this._internals.json;\n }\n set json(value) {\n if (value !== undefined) {\n assert.undefined(this._internals.body);\n assert.undefined(this._internals.form);\n }\n this._internals.json = value;\n }\n /**\n The URL to request, as a string, a [`https.request` options object](https://nodejs.org/api/https.html#https_https_request_options_callback), or a [WHATWG `URL`](https://nodejs.org/api/url.html#url_class_url).\n\n Properties from `options` will override properties in the parsed `url`.\n\n If no protocol is specified, it will throw a `TypeError`.\n\n __Note__: The query string is **not** parsed as search params.\n\n @example\n ```\n await got('https://example.com/?query=a b'); //=> https://example.com/?query=a%20b\n await got('https://example.com/', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b\n\n // The query string is overridden by `searchParams`\n await got('https://example.com/?query=a b', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b\n ```\n */\n get url() {\n return this._internals.url;\n }\n set url(value) {\n assert.any([is.string, is.urlInstance, is.undefined], value);\n if (value === undefined) {\n this._internals.url = undefined;\n return;\n }\n if (is.string(value) && value.startsWith('/')) {\n throw new Error('`url` must not start with a slash');\n }\n const urlString = `${this.prefixUrl}${value.toString()}`;\n const url = new URL(urlString);\n this._internals.url = url;\n if (url.protocol === 'unix:') {\n url.href = `http://unix${url.pathname}${url.search}`;\n }\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n const error = new Error(`Unsupported protocol: ${url.protocol}`);\n error.code = 'ERR_UNSUPPORTED_PROTOCOL';\n throw error;\n }\n if (this._internals.username) {\n url.username = this._internals.username;\n this._internals.username = '';\n }\n if (this._internals.password) {\n url.password = this._internals.password;\n this._internals.password = '';\n }\n if (this._internals.searchParams) {\n url.search = this._internals.searchParams.toString();\n this._internals.searchParams = undefined;\n }\n if (url.hostname === 'unix') {\n if (!this._internals.enableUnixSockets) {\n throw new Error('Using UNIX domain sockets but option `enableUnixSockets` is not enabled');\n }\n const matches = /(?<socketPath>.+?):(?<path>.+)/.exec(`${url.pathname}${url.search}`);\n if (matches?.groups) {\n const { socketPath, path } = matches.groups;\n this._unixOptions = {\n socketPath,\n path,\n host: '',\n };\n }\n else {\n this._unixOptions = undefined;\n }\n return;\n }\n this._unixOptions = undefined;\n }\n /**\n Cookie support. You don't have to care about parsing or how to store them.\n\n __Note__: If you provide this option, `options.headers.cookie` will be overridden.\n */\n get cookieJar() {\n return this._internals.cookieJar;\n }\n set cookieJar(value) {\n assert.any([is.object, is.undefined], value);\n if (value === undefined) {\n this._internals.cookieJar = undefined;\n return;\n }\n let { setCookie, getCookieString } = value;\n assert.function_(setCookie);\n assert.function_(getCookieString);\n /* istanbul ignore next: Horrible `tough-cookie` v3 check */\n if (setCookie.length === 4 && getCookieString.length === 0) {\n setCookie = promisify(setCookie.bind(value));\n getCookieString = promisify(getCookieString.bind(value));\n this._internals.cookieJar = {\n setCookie,\n getCookieString: getCookieString,\n };\n }\n else {\n this._internals.cookieJar = value;\n }\n }\n /**\n You can abort the `request` using [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController).\n\n *Requires Node.js 16 or later.*\n\n @example\n ```\n import got from 'got';\n\n const abortController = new AbortController();\n\n const request = got('https://httpbin.org/anything', {\n signal: abortController.signal\n });\n\n setTimeout(() => {\n abortController.abort();\n }, 100);\n ```\n */\n // TODO: Replace `any` with `AbortSignal` when targeting Node 16.\n get signal() {\n return this._internals.signal;\n }\n // TODO: Replace `any` with `AbortSignal` when targeting Node 16.\n set signal(value) {\n assert.object(value);\n this._internals.signal = value;\n }\n /**\n Ignore invalid cookies instead of throwing an error.\n Only useful when the `cookieJar` option has been set. Not recommended.\n\n @default false\n */\n get ignoreInvalidCookies() {\n return this._internals.ignoreInvalidCookies;\n }\n set ignoreInvalidCookies(value) {\n assert.boolean(value);\n this._internals.ignoreInvalidCookies = value;\n }\n /**\n Query string that will be added to the request URL.\n This will override the query string in `url`.\n\n If you need to pass in an array, you can do it using a `URLSearchParams` instance.\n\n @example\n ```\n import got from 'got';\n\n const searchParams = new URLSearchParams([['key', 'a'], ['key', 'b']]);\n\n await got('https://example.com', {searchParams});\n\n console.log(searchParams.toString());\n //=> 'key=a&key=b'\n ```\n */\n get searchParams() {\n if (this._internals.url) {\n return this._internals.url.searchParams;\n }\n if (this._internals.searchParams === undefined) {\n this._internals.searchParams = new URLSearchParams();\n }\n return this._internals.searchParams;\n }\n set searchParams(value) {\n assert.any([is.string, is.object, is.undefined], value);\n const url = this._internals.url;\n if (value === undefined) {\n this._internals.searchParams = undefined;\n if (url) {\n url.search = '';\n }\n return;\n }\n const searchParameters = this.searchParams;\n let updated;\n if (is.string(value)) {\n updated = new URLSearchParams(value);\n }\n else if (value instanceof URLSearchParams) {\n updated = value;\n }\n else {\n validateSearchParameters(value);\n updated = new URLSearchParams();\n // eslint-disable-next-line guard-for-in\n for (const key in value) {\n const entry = value[key];\n if (entry === null) {\n updated.append(key, '');\n }\n else if (entry === undefined) {\n searchParameters.delete(key);\n }\n else {\n updated.append(key, entry);\n }\n }\n }\n if (this._merging) {\n // These keys will be replaced\n for (const key of updated.keys()) {\n searchParameters.delete(key);\n }\n for (const [key, value] of updated) {\n searchParameters.append(key, value);\n }\n }\n else if (url) {\n url.search = searchParameters.toString();\n }\n else {\n this._internals.searchParams = searchParameters;\n }\n }\n get searchParameters() {\n throw new Error('The `searchParameters` option does not exist. Use `searchParams` instead.');\n }\n set searchParameters(_value) {\n throw new Error('The `searchParameters` option does not exist. Use `searchParams` instead.');\n }\n get dnsLookup() {\n return this._internals.dnsLookup;\n }\n set dnsLookup(value) {\n assert.any([is.function_, is.undefined], value);\n this._internals.dnsLookup = value;\n }\n /**\n An instance of [`CacheableLookup`](https://github.com/szmarczak/cacheable-lookup) used for making DNS lookups.\n Useful when making lots of requests to different *public* hostnames.\n\n `CacheableLookup` uses `dns.resolver4(..)` and `dns.resolver6(...)` under the hood and fall backs to `dns.lookup(...)` when the first two fail, which may lead to additional delay.\n\n __Note__: This should stay disabled when making requests to internal hostnames such as `localhost`, `database.local` etc.\n\n @default false\n */\n get dnsCache() {\n return this._internals.dnsCache;\n }\n set dnsCache(value) {\n assert.any([is.object, is.boolean, is.undefined], value);\n if (value === true) {\n this._internals.dnsCache = getGlobalDnsCache();\n }\n else if (value === false) {\n this._internals.dnsCache = undefined;\n }\n else {\n this._internals.dnsCache = value;\n }\n }\n /**\n User data. `context` is shallow merged and enumerable. If it contains non-enumerable properties they will NOT be merged.\n\n @example\n ```\n import got from 'got';\n\n const instance = got.extend({\n hooks: {\n beforeRequest: [\n options => {\n if (!options.context || !options.context.token) {\n throw new Error('Token required');\n }\n\n options.headers.token = options.context.token;\n }\n ]\n }\n });\n\n const context = {\n token: 'secret'\n };\n\n const response = await instance('https://httpbin.org/headers', {context});\n\n // Let's see the headers\n console.log(response.body);\n ```\n */\n get context() {\n return this._internals.context;\n }\n set context(value) {\n assert.object(value);\n if (this._merging) {\n Object.assign(this._internals.context, value);\n }\n else {\n this._internals.context = { ...value };\n }\n }\n /**\n Hooks allow modifications during the request lifecycle.\n Hook functions may be async and are run serially.\n */\n get hooks() {\n return this._internals.hooks;\n }\n set hooks(value) {\n assert.object(value);\n // eslint-disable-next-line guard-for-in\n for (const knownHookEvent in value) {\n if (!(knownHookEvent in this._internals.hooks)) {\n throw new Error(`Unexpected hook event: ${knownHookEvent}`);\n }\n const typedKnownHookEvent = knownHookEvent;\n const hooks = value[typedKnownHookEvent];\n assert.any([is.array, is.undefined], hooks);\n if (hooks) {\n for (const hook of hooks) {\n assert.function_(hook);\n }\n }\n if (this._merging) {\n if (hooks) {\n // @ts-expect-error FIXME\n this._internals.hooks[typedKnownHookEvent].push(...hooks);\n }\n }\n else {\n if (!hooks) {\n throw new Error(`Missing hook event: ${knownHookEvent}`);\n }\n // @ts-expect-error FIXME\n this._internals.hooks[knownHookEvent] = [...hooks];\n }\n }\n }\n /**\n Defines if redirect responses should be followed automatically.\n\n Note that if a `303` is sent by the server in response to any request type (`POST`, `DELETE`, etc.), Got will automatically request the resource pointed to in the location header via `GET`.\n This is in accordance with [the spec](https://tools.ietf.org/html/rfc7231#section-6.4.4). You can optionally turn on this behavior also for other redirect codes - see `methodRewriting`.\n\n @default true\n */\n get followRedirect() {\n return this._internals.followRedirect;\n }\n set followRedirect(value) {\n assert.boolean(value);\n this._internals.followRedirect = value;\n }\n get followRedirects() {\n throw new TypeError('The `followRedirects` option does not exist. Use `followRedirect` instead.');\n }\n set followRedirects(_value) {\n throw new TypeError('The `followRedirects` option does not exist. Use `followRedirect` instead.');\n }\n /**\n If exceeded, the request will be aborted and a `MaxRedirectsError` will be thrown.\n\n @default 10\n */\n get maxRedirects() {\n return this._internals.maxRedirects;\n }\n set maxRedirects(value) {\n assert.number(value);\n this._internals.maxRedirects = value;\n }\n /**\n A cache adapter instance for storing cached response data.\n\n @default false\n */\n get cache() {\n return this._internals.cache;\n }\n set cache(value) {\n assert.any([is.object, is.string, is.boolean, is.undefined], value);\n if (value === true) {\n this._internals.cache = globalCache;\n }\n else if (value === false) {\n this._internals.cache = undefined;\n }\n else {\n this._internals.cache = value;\n }\n }\n /**\n Determines if a `got.HTTPError` is thrown for unsuccessful responses.\n\n If this is disabled, requests that encounter an error status code will be resolved with the `response` instead of throwing.\n This may be useful if you are checking for resource availability and are expecting error responses.\n\n @default true\n */\n get throwHttpErrors() {\n return this._internals.throwHttpErrors;\n }\n set throwHttpErrors(value) {\n assert.boolean(value);\n this._internals.throwHttpErrors = value;\n }\n get username() {\n const url = this._internals.url;\n const value = url ? url.username : this._internals.username;\n return decodeURIComponent(value);\n }\n set username(value) {\n assert.string(value);\n const url = this._internals.url;\n const fixedValue = encodeURIComponent(value);\n if (url) {\n url.username = fixedValue;\n }\n else {\n this._internals.username = fixedValue;\n }\n }\n get password() {\n const url = this._internals.url;\n const value = url ? url.password : this._internals.password;\n return decodeURIComponent(value);\n }\n set password(value) {\n assert.string(value);\n const url = this._internals.url;\n const fixedValue = encodeURIComponent(value);\n if (url) {\n url.password = fixedValue;\n }\n else {\n this._internals.password = fixedValue;\n }\n }\n /**\n If set to `true`, Got will additionally accept HTTP2 requests.\n\n It will choose either HTTP/1.1 or HTTP/2 depending on the ALPN protocol.\n\n __Note__: This option requires Node.js 15.10.0 or newer as HTTP/2 support on older Node.js versions is very buggy.\n\n __Note__: Overriding `options.request` will disable HTTP2 support.\n\n @default false\n\n @example\n ```\n import got from 'got';\n\n const {headers} = await got('https://nghttp2.org/httpbin/anything', {http2: true});\n\n console.log(headers.via);\n //=> '2 nghttpx'\n ```\n */\n get http2() {\n return this._internals.http2;\n }\n set http2(value) {\n assert.boolean(value);\n this._internals.http2 = value;\n }\n /**\n Set this to `true` to allow sending body for the `GET` method.\n However, the [HTTP/2 specification](https://tools.ietf.org/html/rfc7540#section-8.1.3) says that `An HTTP GET request includes request header fields and no payload body`, therefore when using the HTTP/2 protocol this option will have no effect.\n This option is only meant to interact with non-compliant servers when you have no other choice.\n\n __Note__: The [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1) doesn't specify any particular behavior for the GET method having a payload, therefore __it's considered an [anti-pattern](https://en.wikipedia.org/wiki/Anti-pattern)__.\n\n @default false\n */\n get allowGetBody() {\n return this._internals.allowGetBody;\n }\n set allowGetBody(value) {\n assert.boolean(value);\n this._internals.allowGetBody = value;\n }\n /**\n Request headers.\n\n Existing headers will be overwritten. Headers set to `undefined` will be omitted.\n\n @default {}\n */\n get headers() {\n return this._internals.headers;\n }\n set headers(value) {\n assert.plainObject(value);\n if (this._merging) {\n Object.assign(this._internals.headers, lowercaseKeys(value));\n }\n else {\n this._internals.headers = lowercaseKeys(value);\n }\n }\n /**\n Specifies if the HTTP request method should be [rewritten as `GET`](https://tools.ietf.org/html/rfc7231#section-6.4) on redirects.\n\n As the [specification](https://tools.ietf.org/html/rfc7231#section-6.4) prefers to rewrite the HTTP method only on `303` responses, this is Got's default behavior.\n Setting `methodRewriting` to `true` will also rewrite `301` and `302` responses, as allowed by the spec. This is the behavior followed by `curl` and browsers.\n\n __Note__: Got never performs method rewriting on `307` and `308` responses, as this is [explicitly prohibited by the specification](https://www.rfc-editor.org/rfc/rfc7231#section-6.4.7).\n\n @default false\n */\n get methodRewriting() {\n return this._internals.methodRewriting;\n }\n set methodRewriting(value) {\n assert.boolean(value);\n this._internals.methodRewriting = value;\n }\n /**\n Indicates which DNS record family to use.\n\n Values:\n - `undefined`: IPv4 (if present) or IPv6\n - `4`: Only IPv4\n - `6`: Only IPv6\n\n @default undefined\n */\n get dnsLookupIpVersion() {\n return this._internals.dnsLookupIpVersion;\n }\n set dnsLookupIpVersion(value) {\n if (value !== undefined && value !== 4 && value !== 6) {\n throw new TypeError(`Invalid DNS lookup IP version: ${value}`);\n }\n this._internals.dnsLookupIpVersion = value;\n }\n /**\n A function used to parse JSON responses.\n\n @example\n ```\n import got from 'got';\n import Bourne from '@hapi/bourne';\n\n const parsed = await got('https://example.com', {\n parseJson: text => Bourne.parse(text)\n }).json();\n\n console.log(parsed);\n ```\n */\n get parseJson() {\n return this._internals.parseJson;\n }\n set parseJson(value) {\n assert.function_(value);\n this._internals.parseJson = value;\n }\n /**\n A function used to stringify the body of JSON requests.\n\n @example\n ```\n import got from 'got';\n\n await got.post('https://example.com', {\n stringifyJson: object => JSON.stringify(object, (key, value) => {\n if (key.startsWith('_')) {\n return;\n }\n\n return value;\n }),\n json: {\n some: 'payload',\n _ignoreMe: 1234\n }\n });\n ```\n\n @example\n ```\n import got from 'got';\n\n await got.post('https://example.com', {\n stringifyJson: object => JSON.stringify(object, (key, value) => {\n if (typeof value === 'number') {\n return value.toString();\n }\n\n return value;\n }),\n json: {\n some: 'payload',\n number: 1\n }\n });\n ```\n */\n get stringifyJson() {\n return this._internals.stringifyJson;\n }\n set stringifyJson(value) {\n assert.function_(value);\n this._internals.stringifyJson = value;\n }\n /**\n An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.\n\n Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 1).\n\n The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value.\n The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).\n\n By default, it retries *only* on the specified methods, status codes, and on these network errors:\n\n - `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.\n - `ECONNRESET`: Connection was forcibly closed by a peer.\n - `EADDRINUSE`: Could not bind to any free port.\n - `ECONNREFUSED`: Connection was refused by the server.\n - `EPIPE`: The remote side of the stream being written has been closed.\n - `ENOTFOUND`: Couldn't resolve the hostname to an IP address.\n - `ENETUNREACH`: No internet connection.\n - `EAI_AGAIN`: DNS lookup timed out.\n\n __Note__: If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.\n __Note__: If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.\n */\n get retry() {\n return this._internals.retry;\n }\n set retry(value) {\n assert.plainObject(value);\n assert.any([is.function_, is.undefined], value.calculateDelay);\n assert.any([is.number, is.undefined], value.maxRetryAfter);\n assert.any([is.number, is.undefined], value.limit);\n assert.any([is.array, is.undefined], value.methods);\n assert.any([is.array, is.undefined], value.statusCodes);\n assert.any([is.array, is.undefined], value.errorCodes);\n assert.any([is.number, is.undefined], value.noise);\n if (value.noise && Math.abs(value.noise) > 100) {\n throw new Error(`The maximum acceptable retry noise is +/- 100ms, got ${value.noise}`);\n }\n for (const key in value) {\n if (!(key in this._internals.retry)) {\n throw new Error(`Unexpected retry option: ${key}`);\n }\n }\n if (this._merging) {\n Object.assign(this._internals.retry, value);\n }\n else {\n this._internals.retry = { ...value };\n }\n const { retry } = this._internals;\n retry.methods = [...new Set(retry.methods.map(method => method.toUpperCase()))];\n retry.statusCodes = [...new Set(retry.statusCodes)];\n retry.errorCodes = [...new Set(retry.errorCodes)];\n }\n /**\n From `http.RequestOptions`.\n\n The IP address used to send the request from.\n */\n get localAddress() {\n return this._internals.localAddress;\n }\n set localAddress(value) {\n assert.any([is.string, is.undefined], value);\n this._internals.localAddress = value;\n }\n /**\n The HTTP method used to make the request.\n\n @default 'GET'\n */\n get method() {\n return this._internals.method;\n }\n set method(value) {\n assert.string(value);\n this._internals.method = value.toUpperCase();\n }\n get createConnection() {\n return this._internals.createConnection;\n }\n set createConnection(value) {\n assert.any([is.function_, is.undefined], value);\n this._internals.createConnection = value;\n }\n /**\n From `http-cache-semantics`\n\n @default {}\n */\n get cacheOptions() {\n return this._internals.cacheOptions;\n }\n set cacheOptions(value) {\n assert.plainObject(value);\n assert.any([is.boolean, is.undefined], value.shared);\n assert.any([is.number, is.undefined], value.cacheHeuristic);\n assert.any([is.number, is.undefined], value.immutableMinTimeToLive);\n assert.any([is.boolean, is.undefined], value.ignoreCargoCult);\n for (const key in value) {\n if (!(key in this._internals.cacheOptions)) {\n throw new Error(`Cache option \\`${key}\\` does not exist`);\n }\n }\n if (this._merging) {\n Object.assign(this._internals.cacheOptions, value);\n }\n else {\n this._internals.cacheOptions = { ...value };\n }\n }\n /**\n Options for the advanced HTTPS API.\n */\n get https() {\n return this._internals.https;\n }\n set https(value) {\n assert.plainObject(value);\n assert.any([is.boolean, is.undefined], value.rejectUnauthorized);\n assert.any([is.function_, is.undefined], value.checkServerIdentity);\n assert.any([is.string, is.object, is.array, is.undefined], value.certificateAuthority);\n assert.any([is.string, is.object, is.array, is.undefined], value.key);\n assert.any([is.string, is.object, is.array, is.undefined], value.certificate);\n assert.any([is.string, is.undefined], value.passphrase);\n assert.any([is.string, is.buffer, is.array, is.undefined], value.pfx);\n assert.any([is.array, is.undefined], value.alpnProtocols);\n assert.any([is.string, is.undefined], value.ciphers);\n assert.any([is.string, is.buffer, is.undefined], value.dhparam);\n assert.any([is.string, is.undefined], value.signatureAlgorithms);\n assert.any([is.string, is.undefined], value.minVersion);\n assert.any([is.string, is.undefined], value.maxVersion);\n assert.any([is.boolean, is.undefined], value.honorCipherOrder);\n assert.any([is.number, is.undefined], value.tlsSessionLifetime);\n assert.any([is.string, is.undefined], value.ecdhCurve);\n assert.any([is.string, is.buffer, is.array, is.undefined], value.certificateRevocationLists);\n for (const key in value) {\n if (!(key in this._internals.https)) {\n throw new Error(`HTTPS option \\`${key}\\` does not exist`);\n }\n }\n if (this._merging) {\n Object.assign(this._internals.https, value);\n }\n else {\n this._internals.https = { ...value };\n }\n }\n /**\n [Encoding](https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings) to be used on `setEncoding` of the response data.\n\n To get a [`Buffer`](https://nodejs.org/api/buffer.html), you need to set `responseType` to `buffer` instead.\n Don't set this option to `null`.\n\n __Note__: This doesn't affect streams! Instead, you need to do `got.stream(...).setEncoding(encoding)`.\n\n @default 'utf-8'\n */\n get encoding() {\n return this._internals.encoding;\n }\n set encoding(value) {\n if (value === null) {\n throw new TypeError('To get a Buffer, set `options.responseType` to `buffer` instead');\n }\n assert.any([is.string, is.undefined], value);\n this._internals.encoding = value;\n }\n /**\n When set to `true` the promise will return the Response body instead of the Response object.\n\n @default false\n */\n get resolveBodyOnly() {\n return this._internals.resolveBodyOnly;\n }\n set resolveBodyOnly(value) {\n assert.boolean(value);\n this._internals.resolveBodyOnly = value;\n }\n /**\n Returns a `Stream` instead of a `Promise`.\n This is equivalent to calling `got.stream(url, options?)`.\n\n @default false\n */\n get isStream() {\n return this._internals.isStream;\n }\n set isStream(value) {\n assert.boolean(value);\n this._internals.isStream = value;\n }\n /**\n The parsing method.\n\n The promise also has `.text()`, `.json()` and `.buffer()` methods which return another Got promise for the parsed body.\n\n It's like setting the options to `{responseType: 'json', resolveBodyOnly: true}` but without affecting the main Got promise.\n\n __Note__: When using streams, this option is ignored.\n\n @example\n ```\n const responsePromise = got(url);\n const bufferPromise = responsePromise.buffer();\n const jsonPromise = responsePromise.json();\n\n const [response, buffer, json] = Promise.all([responsePromise, bufferPromise, jsonPromise]);\n // `response` is an instance of Got Response\n // `buffer` is an instance of Buffer\n // `json` is an object\n ```\n\n @example\n ```\n // This\n const body = await got(url).json();\n\n // is semantically the same as this\n const body = await got(url, {responseType: 'json', resolveBodyOnly: true});\n ```\n */\n get responseType() {\n return this._internals.responseType;\n }\n set responseType(value) {\n if (value === undefined) {\n this._internals.responseType = 'text';\n return;\n }\n if (value !== 'text' && value !== 'buffer' && value !== 'json') {\n throw new Error(`Invalid \\`responseType\\` option: ${value}`);\n }\n this._internals.responseType = value;\n }\n get pagination() {\n return this._internals.pagination;\n }\n set pagination(value) {\n assert.object(value);\n if (this._merging) {\n Object.assign(this._internals.pagination, value);\n }\n else {\n this._internals.pagination = value;\n }\n }\n get auth() {\n throw new Error('Parameter `auth` is deprecated. Use `username` / `password` instead.');\n }\n set auth(_value) {\n throw new Error('Parameter `auth` is deprecated. Use `username` / `password` instead.');\n }\n get setHost() {\n return this._internals.setHost;\n }\n set setHost(value) {\n assert.boolean(value);\n this._internals.setHost = value;\n }\n get maxHeaderSize() {\n return this._internals.maxHeaderSize;\n }\n set maxHeaderSize(value) {\n assert.any([is.number, is.undefined], value);\n this._internals.maxHeaderSize = value;\n }\n get enableUnixSockets() {\n return this._internals.enableUnixSockets;\n }\n set enableUnixSockets(value) {\n assert.boolean(value);\n this._internals.enableUnixSockets = value;\n }\n // eslint-disable-next-line @typescript-eslint/naming-convention\n toJSON() {\n return { ...this._internals };\n }\n [Symbol.for('nodejs.util.inspect.custom')](_depth, options) {\n return inspect(this._internals, options);\n }\n createNativeRequestOptions() {\n const internals = this._internals;\n const url = internals.url;\n let agent;\n if (url.protocol === 'https:') {\n agent = internals.http2 ? internals.agent : internals.agent.https;\n }\n else {\n agent = internals.agent.http;\n }\n const { https } = internals;\n let { pfx } = https;\n if (is.array(pfx) && is.plainObject(pfx[0])) {\n pfx = pfx.map(object => ({\n buf: object.buffer,\n passphrase: object.passphrase,\n }));\n }\n return {\n ...internals.cacheOptions,\n ...this._unixOptions,\n // HTTPS options\n // eslint-disable-next-line @typescript-eslint/naming-convention\n ALPNProtocols: https.alpnProtocols,\n ca: https.certificateAuthority,\n cert: https.certificate,\n key: https.key,\n passphrase: https.passphrase,\n pfx: https.pfx,\n rejectUnauthorized: https.rejectUnauthorized,\n checkServerIdentity: https.checkServerIdentity ?? checkServerIdentity,\n ciphers: https.ciphers,\n honorCipherOrder: https.honorCipherOrder,\n minVersion: https.minVersion,\n maxVersion: https.maxVersion,\n sigalgs: https.signatureAlgorithms,\n sessionTimeout: https.tlsSessionLifetime,\n dhparam: https.dhparam,\n ecdhCurve: https.ecdhCurve,\n crl: https.certificateRevocationLists,\n // HTTP options\n lookup: internals.dnsLookup ?? internals.dnsCache?.lookup,\n family: internals.dnsLookupIpVersion,\n agent,\n setHost: internals.setHost,\n method: internals.method,\n maxHeaderSize: internals.maxHeaderSize,\n localAddress: internals.localAddress,\n headers: internals.headers,\n createConnection: internals.createConnection,\n timeout: internals.http2 ? getHttp2TimeoutOption(internals) : undefined,\n // HTTP/2 options\n h2session: internals.h2session,\n };\n }\n getRequestFunction() {\n const url = this._internals.url;\n const { request } = this._internals;\n if (!request && url) {\n return this.getFallbackRequestFunction();\n }\n return request;\n }\n getFallbackRequestFunction() {\n const url = this._internals.url;\n if (!url) {\n return;\n }\n if (url.protocol === 'https:') {\n if (this._internals.http2) {\n if (major < 15 || (major === 15 && minor < 10)) {\n const error = new Error('To use the `http2` option, install Node.js 15.10.0 or above');\n error.code = 'EUNSUPPORTED';\n throw error;\n }\n return http2wrapper.auto;\n }\n return https.request;\n }\n return http.request;\n }\n freeze() {\n const options = this._internals;\n Object.freeze(options);\n Object.freeze(options.hooks);\n Object.freeze(options.hooks.afterResponse);\n Object.freeze(options.hooks.beforeError);\n Object.freeze(options.hooks.beforeRedirect);\n Object.freeze(options.hooks.beforeRequest);\n Object.freeze(options.hooks.beforeRetry);\n Object.freeze(options.hooks.init);\n Object.freeze(options.https);\n Object.freeze(options.cacheOptions);\n Object.freeze(options.agent);\n Object.freeze(options.headers);\n Object.freeze(options.timeout);\n Object.freeze(options.retry);\n Object.freeze(options.retry.errorCodes);\n Object.freeze(options.retry.methods);\n Object.freeze(options.retry.statusCodes);\n }\n}\n","import { RequestError } from './errors.js';\nexport const isResponseOk = (response) => {\n const { statusCode } = response;\n const limitStatusCode = response.request.options.followRedirect ? 299 : 399;\n return (statusCode >= 200 && statusCode <= limitStatusCode) || statusCode === 304;\n};\n/**\nAn error to be thrown when server response code is 2xx, and parsing body fails.\nIncludes a `response` property.\n*/\nexport class ParseError extends RequestError {\n constructor(error, response) {\n const { options } = response.request;\n super(`${error.message} in \"${options.url.toString()}\"`, error, response.request);\n this.name = 'ParseError';\n this.code = 'ERR_BODY_PARSE_FAILURE';\n }\n}\nexport const parseBody = (response, responseType, parseJson, encoding) => {\n const { rawBody } = response;\n try {\n if (responseType === 'text') {\n return rawBody.toString(encoding);\n }\n if (responseType === 'json') {\n return rawBody.length === 0 ? '' : parseJson(rawBody.toString(encoding));\n }\n if (responseType === 'buffer') {\n return rawBody;\n }\n }\n catch (error) {\n throw new ParseError(error, response);\n }\n throw new ParseError({\n message: `Unknown body type '${responseType}'`,\n name: 'Error',\n }, response);\n};\n","function isClientRequest(clientRequest) {\n return clientRequest.writable && !clientRequest.writableEnded;\n}\nexport default isClientRequest;\n","// eslint-disable-next-line @typescript-eslint/naming-convention\nexport default function isUnixSocketURL(url) {\n return url.protocol === 'unix:' || url.hostname === 'unix';\n}\n","import process from 'node:process';\nimport { Buffer } from 'node:buffer';\nimport { Duplex } from 'node:stream';\nimport { URL, URLSearchParams } from 'node:url';\nimport http, { ServerResponse } from 'node:http';\nimport timer from '@szmarczak/http-timer';\nimport CacheableRequest, { CacheError as CacheableCacheError, } from 'cacheable-request';\nimport decompressResponse from 'decompress-response';\nimport is from '@sindresorhus/is';\nimport getStream from 'get-stream';\nimport { FormDataEncoder, isFormData as isFormDataLike } from 'form-data-encoder';\nimport getBodySize from './utils/get-body-size.js';\nimport isFormData from './utils/is-form-data.js';\nimport proxyEvents from './utils/proxy-events.js';\nimport timedOut, { TimeoutError as TimedOutTimeoutError } from './timed-out.js';\nimport urlToOptions from './utils/url-to-options.js';\nimport WeakableMap from './utils/weakable-map.js';\nimport calculateRetryDelay from './calculate-retry-delay.js';\nimport Options from './options.js';\nimport { isResponseOk } from './response.js';\nimport isClientRequest from './utils/is-client-request.js';\nimport isUnixSocketURL from './utils/is-unix-socket-url.js';\nimport { RequestError, ReadError, MaxRedirectsError, HTTPError, TimeoutError, UploadError, CacheError, AbortError, } from './errors.js';\nconst { buffer: getBuffer } = getStream;\nconst supportsBrotli = is.string(process.versions.brotli);\nconst methodsWithoutBody = new Set(['GET', 'HEAD']);\nconst cacheableStore = new WeakableMap();\nconst redirectCodes = new Set([300, 301, 302, 303, 304, 307, 308]);\nconst proxiedRequestEvents = [\n 'socket',\n 'connect',\n 'continue',\n 'information',\n 'upgrade',\n];\nconst noop = () => { };\nexport default class Request extends Duplex {\n constructor(url, options, defaults) {\n super({\n // Don't destroy immediately, as the error may be emitted on unsuccessful retry\n autoDestroy: false,\n // It needs to be zero because we're just proxying the data to another stream\n highWaterMark: 0,\n });\n // @ts-expect-error - Ignoring for now.\n Object.defineProperty(this, 'constructor', {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_noPipe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/9568\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"response\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"requestUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"redirectUrls\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"retryCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_stopRetry\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_downloadedSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_uploadedSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_stopReading\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pipedServerResponses\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_responseSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_bodySize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_unproxyEvents\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_isFromCache\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_cannotHaveBody\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_triggerRead\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_cancelTimeouts\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_removeListeners\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_nativeResponse\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_flushed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_aborted\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // We need this because `this._request` if `undefined` when using cache\n Object.defineProperty(this, \"_requestInitialized\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._downloadedSize = 0;\n this._uploadedSize = 0;\n this._stopReading = false;\n this._pipedServerResponses = new Set();\n this._cannotHaveBody = false;\n this._unproxyEvents = noop;\n this._triggerRead = false;\n this._cancelTimeouts = noop;\n this._removeListeners = noop;\n this._jobs = [];\n this._flushed = false;\n this._requestInitialized = false;\n this._aborted = false;\n this.redirectUrls = [];\n this.retryCount = 0;\n this._stopRetry = noop;\n this.on('pipe', (source) => {\n if (source?.headers) {\n Object.assign(this.options.headers, source.headers);\n }\n });\n this.on('newListener', event => {\n if (event === 'retry' && this.listenerCount('retry') > 0) {\n throw new Error('A retry listener has been attached already.');\n }\n });\n try {\n this.options = new Options(url, options, defaults);\n if (!this.options.url) {\n if (this.options.prefixUrl === '') {\n throw new TypeError('Missing `url` property');\n }\n this.options.url = '';\n }\n this.requestUrl = this.options.url;\n }\n catch (error) {\n const { options } = error;\n if (options) {\n this.options = options;\n }\n this.flush = async () => {\n this.flush = async () => { };\n this.destroy(error);\n };\n return;\n }\n // Important! If you replace `body` in a handler with another stream, make sure it's readable first.\n // The below is run only once.\n const { body } = this.options;\n if (is.nodeStream(body)) {\n body.once('error', error => {\n if (this._flushed) {\n this._beforeError(new UploadError(error, this));\n }\n else {\n this.flush = async () => {\n this.flush = async () => { };\n this._beforeError(new UploadError(error, this));\n };\n }\n });\n }\n if (this.options.signal) {\n const abort = () => {\n this.destroy(new AbortError(this));\n };\n if (this.options.signal.aborted) {\n abort();\n }\n else {\n this.options.signal.addEventListener('abort', abort);\n this._removeListeners = () => {\n this.options.signal.removeEventListener('abort', abort);\n };\n }\n }\n }\n async flush() {\n if (this._flushed) {\n return;\n }\n this._flushed = true;\n try {\n await this._finalizeBody();\n if (this.destroyed) {\n return;\n }\n await this._makeRequest();\n if (this.destroyed) {\n this._request?.destroy();\n return;\n }\n // Queued writes etc.\n for (const job of this._jobs) {\n job();\n }\n // Prevent memory leak\n this._jobs.length = 0;\n this._requestInitialized = true;\n }\n catch (error) {\n this._beforeError(error);\n }\n }\n _beforeError(error) {\n if (this._stopReading) {\n return;\n }\n const { response, options } = this;\n const attemptCount = this.retryCount + (error.name === 'RetryError' ? 0 : 1);\n this._stopReading = true;\n if (!(error instanceof RequestError)) {\n error = new RequestError(error.message, error, this);\n }\n const typedError = error;\n void (async () => {\n // Node.js parser is really weird.\n // It emits post-request Parse Errors on the same instance as previous request. WTF.\n // Therefore we need to check if it has been destroyed as well.\n //\n // Furthermore, Node.js 16 `response.destroy()` doesn't immediately destroy the socket,\n // but makes the response unreadable. So we additionally need to check `response.readable`.\n if (response?.readable && !response.rawBody && !this._request?.socket?.destroyed) {\n // @types/node has incorrect typings. `setEncoding` accepts `null` as well.\n response.setEncoding(this.readableEncoding);\n const success = await this._setRawBody(response);\n if (success) {\n response.body = response.rawBody.toString();\n }\n }\n if (this.listenerCount('retry') !== 0) {\n let backoff;\n try {\n let retryAfter;\n if (response && 'retry-after' in response.headers) {\n retryAfter = Number(response.headers['retry-after']);\n if (Number.isNaN(retryAfter)) {\n retryAfter = Date.parse(response.headers['retry-after']) - Date.now();\n if (retryAfter <= 0) {\n retryAfter = 1;\n }\n }\n else {\n retryAfter *= 1000;\n }\n }\n const retryOptions = options.retry;\n backoff = await retryOptions.calculateDelay({\n attemptCount,\n retryOptions,\n error: typedError,\n retryAfter,\n computedValue: calculateRetryDelay({\n attemptCount,\n retryOptions,\n error: typedError,\n retryAfter,\n computedValue: retryOptions.maxRetryAfter ?? options.timeout.request ?? Number.POSITIVE_INFINITY,\n }),\n });\n }\n catch (error_) {\n void this._error(new RequestError(error_.message, error_, this));\n return;\n }\n if (backoff) {\n await new Promise(resolve => {\n const timeout = setTimeout(resolve, backoff);\n this._stopRetry = () => {\n clearTimeout(timeout);\n resolve();\n };\n });\n // Something forced us to abort the retry\n if (this.destroyed) {\n return;\n }\n try {\n for (const hook of this.options.hooks.beforeRetry) {\n // eslint-disable-next-line no-await-in-loop\n await hook(typedError, this.retryCount + 1);\n }\n }\n catch (error_) {\n void this._error(new RequestError(error_.message, error, this));\n return;\n }\n // Something forced us to abort the retry\n if (this.destroyed) {\n return;\n }\n this.destroy();\n this.emit('retry', this.retryCount + 1, error, (updatedOptions) => {\n const request = new Request(options.url, updatedOptions, options);\n request.retryCount = this.retryCount + 1;\n process.nextTick(() => {\n void request.flush();\n });\n return request;\n });\n return;\n }\n }\n void this._error(typedError);\n })();\n }\n _read() {\n this._triggerRead = true;\n const { response } = this;\n if (response && !this._stopReading) {\n // We cannot put this in the `if` above\n // because `.read()` also triggers the `end` event\n if (response.readableLength) {\n this._triggerRead = false;\n }\n let data;\n while ((data = response.read()) !== null) {\n this._downloadedSize += data.length; // eslint-disable-line @typescript-eslint/restrict-plus-operands\n const progress = this.downloadProgress;\n if (progress.percent < 1) {\n this.emit('downloadProgress', progress);\n }\n this.push(data);\n }\n }\n }\n _write(chunk, encoding, callback) {\n const write = () => {\n this._writeRequest(chunk, encoding, callback);\n };\n if (this._requestInitialized) {\n write();\n }\n else {\n this._jobs.push(write);\n }\n }\n _final(callback) {\n const endRequest = () => {\n // We need to check if `this._request` is present,\n // because it isn't when we use cache.\n if (!this._request || this._request.destroyed) {\n callback();\n return;\n }\n this._request.end((error) => {\n // The request has been destroyed before `_final` finished.\n // See https://github.com/nodejs/node/issues/39356\n if (this._request._writableState?.errored) {\n return;\n }\n if (!error) {\n this._bodySize = this._uploadedSize;\n this.emit('uploadProgress', this.uploadProgress);\n this._request.emit('upload-complete');\n }\n callback(error);\n });\n };\n if (this._requestInitialized) {\n endRequest();\n }\n else {\n this._jobs.push(endRequest);\n }\n }\n _destroy(error, callback) {\n this._stopReading = true;\n this.flush = async () => { };\n // Prevent further retries\n this._stopRetry();\n this._cancelTimeouts();\n this._removeListeners();\n if (this.options) {\n const { body } = this.options;\n if (is.nodeStream(body)) {\n body.destroy();\n }\n }\n if (this._request) {\n this._request.destroy();\n }\n if (error !== null && !is.undefined(error) && !(error instanceof RequestError)) {\n error = new RequestError(error.message, error, this);\n }\n callback(error);\n }\n pipe(destination, options) {\n if (destination instanceof ServerResponse) {\n this._pipedServerResponses.add(destination);\n }\n return super.pipe(destination, options);\n }\n unpipe(destination) {\n if (destination instanceof ServerResponse) {\n this._pipedServerResponses.delete(destination);\n }\n super.unpipe(destination);\n return this;\n }\n async _finalizeBody() {\n const { options } = this;\n const { headers } = options;\n const isForm = !is.undefined(options.form);\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const isJSON = !is.undefined(options.json);\n const isBody = !is.undefined(options.body);\n const cannotHaveBody = methodsWithoutBody.has(options.method) && !(options.method === 'GET' && options.allowGetBody);\n this._cannotHaveBody = cannotHaveBody;\n if (isForm || isJSON || isBody) {\n if (cannotHaveBody) {\n throw new TypeError(`The \\`${options.method}\\` method cannot be used with a body`);\n }\n // Serialize body\n const noContentType = !is.string(headers['content-type']);\n if (isBody) {\n // Body is spec-compliant FormData\n if (isFormDataLike(options.body)) {\n const encoder = new FormDataEncoder(options.body);\n if (noContentType) {\n headers['content-type'] = encoder.headers['Content-Type'];\n }\n if ('Content-Length' in encoder.headers) {\n headers['content-length'] = encoder.headers['Content-Length'];\n }\n options.body = encoder.encode();\n }\n // Special case for https://github.com/form-data/form-data\n if (isFormData(options.body) && noContentType) {\n headers['content-type'] = `multipart/form-data; boundary=${options.body.getBoundary()}`;\n }\n }\n else if (isForm) {\n if (noContentType) {\n headers['content-type'] = 'application/x-www-form-urlencoded';\n }\n const { form } = options;\n options.form = undefined;\n options.body = (new URLSearchParams(form)).toString();\n }\n else {\n if (noContentType) {\n headers['content-type'] = 'application/json';\n }\n const { json } = options;\n options.json = undefined;\n options.body = options.stringifyJson(json);\n }\n const uploadBodySize = await getBodySize(options.body, options.headers);\n // See https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD send a Content-Length in a request message when\n // no Transfer-Encoding is sent and the request method defines a meaning\n // for an enclosed payload body. For example, a Content-Length header\n // field is normally sent in a POST request even when the value is 0\n // (indicating an empty payload body). A user agent SHOULD NOT send a\n // Content-Length header field when the request message does not contain\n // a payload body and the method semantics do not anticipate such a\n // body.\n if (is.undefined(headers['content-length']) && is.undefined(headers['transfer-encoding']) && !cannotHaveBody && !is.undefined(uploadBodySize)) {\n headers['content-length'] = String(uploadBodySize);\n }\n }\n if (options.responseType === 'json' && !('accept' in options.headers)) {\n options.headers.accept = 'application/json';\n }\n this._bodySize = Number(headers['content-length']) || undefined;\n }\n async _onResponseBase(response) {\n // This will be called e.g. when using cache so we need to check if this request has been aborted.\n if (this.isAborted) {\n return;\n }\n const { options } = this;\n const { url } = options;\n this._nativeResponse = response;\n if (options.decompress) {\n response = decompressResponse(response);\n }\n const statusCode = response.statusCode;\n const typedResponse = response;\n typedResponse.statusMessage = typedResponse.statusMessage ?? http.STATUS_CODES[statusCode];\n typedResponse.url = options.url.toString();\n typedResponse.requestUrl = this.requestUrl;\n typedResponse.redirectUrls = this.redirectUrls;\n typedResponse.request = this;\n typedResponse.isFromCache = this._nativeResponse.fromCache ?? false;\n typedResponse.ip = this.ip;\n typedResponse.retryCount = this.retryCount;\n typedResponse.ok = isResponseOk(typedResponse);\n this._isFromCache = typedResponse.isFromCache;\n this._responseSize = Number(response.headers['content-length']) || undefined;\n this.response = typedResponse;\n response.once('end', () => {\n this._responseSize = this._downloadedSize;\n this.emit('downloadProgress', this.downloadProgress);\n });\n response.once('error', (error) => {\n this._aborted = true;\n // Force clean-up, because some packages don't do this.\n // TODO: Fix decompress-response\n response.destroy();\n this._beforeError(new ReadError(error, this));\n });\n response.once('aborted', () => {\n this._aborted = true;\n this._beforeError(new ReadError({\n name: 'Error',\n message: 'The server aborted pending request',\n code: 'ECONNRESET',\n }, this));\n });\n this.emit('downloadProgress', this.downloadProgress);\n const rawCookies = response.headers['set-cookie'];\n if (is.object(options.cookieJar) && rawCookies) {\n let promises = rawCookies.map(async (rawCookie) => options.cookieJar.setCookie(rawCookie, url.toString()));\n if (options.ignoreInvalidCookies) {\n promises = promises.map(async (promise) => {\n try {\n await promise;\n }\n catch { }\n });\n }\n try {\n await Promise.all(promises);\n }\n catch (error) {\n this._beforeError(error);\n return;\n }\n }\n // The above is running a promise, therefore we need to check if this request has been aborted yet again.\n if (this.isAborted) {\n return;\n }\n if (options.followRedirect && response.headers.location && redirectCodes.has(statusCode)) {\n // We're being redirected, we don't care about the response.\n // It'd be best to abort the request, but we can't because\n // we would have to sacrifice the TCP connection. We don't want that.\n response.resume();\n this._cancelTimeouts();\n this._unproxyEvents();\n if (this.redirectUrls.length >= options.maxRedirects) {\n this._beforeError(new MaxRedirectsError(this));\n return;\n }\n this._request = undefined;\n const updatedOptions = new Options(undefined, undefined, this.options);\n const serverRequestedGet = statusCode === 303 && updatedOptions.method !== 'GET' && updatedOptions.method !== 'HEAD';\n const canRewrite = statusCode !== 307 && statusCode !== 308;\n const userRequestedGet = updatedOptions.methodRewriting && canRewrite;\n if (serverRequestedGet || userRequestedGet) {\n updatedOptions.method = 'GET';\n updatedOptions.body = undefined;\n updatedOptions.json = undefined;\n updatedOptions.form = undefined;\n delete updatedOptions.headers['content-length'];\n }\n try {\n // We need this in order to support UTF-8\n const redirectBuffer = Buffer.from(response.headers.location, 'binary').toString();\n const redirectUrl = new URL(redirectBuffer, url);\n if (!isUnixSocketURL(url) && isUnixSocketURL(redirectUrl)) {\n this._beforeError(new RequestError('Cannot redirect to UNIX socket', {}, this));\n return;\n }\n // Redirecting to a different site, clear sensitive data.\n if (redirectUrl.hostname !== url.hostname || redirectUrl.port !== url.port) {\n if ('host' in updatedOptions.headers) {\n delete updatedOptions.headers.host;\n }\n if ('cookie' in updatedOptions.headers) {\n delete updatedOptions.headers.cookie;\n }\n if ('authorization' in updatedOptions.headers) {\n delete updatedOptions.headers.authorization;\n }\n if (updatedOptions.username || updatedOptions.password) {\n updatedOptions.username = '';\n updatedOptions.password = '';\n }\n }\n else {\n redirectUrl.username = updatedOptions.username;\n redirectUrl.password = updatedOptions.password;\n }\n this.redirectUrls.push(redirectUrl);\n updatedOptions.prefixUrl = '';\n updatedOptions.url = redirectUrl;\n for (const hook of updatedOptions.hooks.beforeRedirect) {\n // eslint-disable-next-line no-await-in-loop\n await hook(updatedOptions, typedResponse);\n }\n this.emit('redirect', updatedOptions, typedResponse);\n this.options = updatedOptions;\n await this._makeRequest();\n }\n catch (error) {\n this._beforeError(error);\n return;\n }\n return;\n }\n // `HTTPError`s always have `error.response.body` defined.\n // Therefore we cannot retry if `options.throwHttpErrors` is false.\n // On the last retry, if `options.throwHttpErrors` is false, we would need to return the body,\n // but that wouldn't be possible since the body would be already read in `error.response.body`.\n if (options.isStream && options.throwHttpErrors && !isResponseOk(typedResponse)) {\n this._beforeError(new HTTPError(typedResponse));\n return;\n }\n response.on('readable', () => {\n if (this._triggerRead) {\n this._read();\n }\n });\n this.on('resume', () => {\n response.resume();\n });\n this.on('pause', () => {\n response.pause();\n });\n response.once('end', () => {\n this.push(null);\n });\n if (this._noPipe) {\n const success = await this._setRawBody();\n if (success) {\n this.emit('response', response);\n }\n return;\n }\n this.emit('response', response);\n for (const destination of this._pipedServerResponses) {\n if (destination.headersSent) {\n continue;\n }\n // eslint-disable-next-line guard-for-in\n for (const key in response.headers) {\n const isAllowed = options.decompress ? key !== 'content-encoding' : true;\n const value = response.headers[key];\n if (isAllowed) {\n destination.setHeader(key, value);\n }\n }\n destination.statusCode = statusCode;\n }\n }\n async _setRawBody(from = this) {\n if (from.readableEnded) {\n return false;\n }\n try {\n // Errors are emitted via the `error` event\n const rawBody = await getBuffer(from);\n // On retry Request is destroyed with no error, therefore the above will successfully resolve.\n // So in order to check if this was really successfull, we need to check if it has been properly ended.\n if (!this.isAborted) {\n this.response.rawBody = rawBody;\n return true;\n }\n }\n catch { }\n return false;\n }\n async _onResponse(response) {\n try {\n await this._onResponseBase(response);\n }\n catch (error) {\n /* istanbul ignore next: better safe than sorry */\n this._beforeError(error);\n }\n }\n _onRequest(request) {\n const { options } = this;\n const { timeout, url } = options;\n timer(request);\n if (this.options.http2) {\n // Unset stream timeout, as the `timeout` option was used only for connection timeout.\n request.setTimeout(0);\n }\n this._cancelTimeouts = timedOut(request, timeout, url);\n const responseEventName = options.cache ? 'cacheableResponse' : 'response';\n request.once(responseEventName, (response) => {\n void this._onResponse(response);\n });\n request.once('error', (error) => {\n this._aborted = true;\n // Force clean-up, because some packages (e.g. nock) don't do this.\n request.destroy();\n error = error instanceof TimedOutTimeoutError ? new TimeoutError(error, this.timings, this) : new RequestError(error.message, error, this);\n this._beforeError(error);\n });\n this._unproxyEvents = proxyEvents(request, this, proxiedRequestEvents);\n this._request = request;\n this.emit('uploadProgress', this.uploadProgress);\n this._sendBody();\n this.emit('request', request);\n }\n async _asyncWrite(chunk) {\n return new Promise((resolve, reject) => {\n super.write(chunk, error => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n });\n });\n }\n _sendBody() {\n // Send body\n const { body } = this.options;\n const currentRequest = this.redirectUrls.length === 0 ? this : this._request ?? this;\n if (is.nodeStream(body)) {\n body.pipe(currentRequest);\n }\n else if (is.generator(body) || is.asyncGenerator(body)) {\n (async () => {\n try {\n for await (const chunk of body) {\n await this._asyncWrite(chunk);\n }\n super.end();\n }\n catch (error) {\n this._beforeError(error);\n }\n })();\n }\n else if (!is.undefined(body)) {\n this._writeRequest(body, undefined, () => { });\n currentRequest.end();\n }\n else if (this._cannotHaveBody || this._noPipe) {\n currentRequest.end();\n }\n }\n _prepareCache(cache) {\n if (!cacheableStore.has(cache)) {\n const cacheableRequest = new CacheableRequest(((requestOptions, handler) => {\n const result = requestOptions._request(requestOptions, handler);\n // TODO: remove this when `cacheable-request` supports async request functions.\n if (is.promise(result)) {\n // We only need to implement the error handler in order to support HTTP2 caching.\n // The result will be a promise anyway.\n // @ts-expect-error ignore\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n result.once = (event, handler) => {\n if (event === 'error') {\n (async () => {\n try {\n await result;\n }\n catch (error) {\n handler(error);\n }\n })();\n }\n else if (event === 'abort') {\n // The empty catch is needed here in case when\n // it rejects before it's `await`ed in `_makeRequest`.\n (async () => {\n try {\n const request = (await result);\n request.once('abort', handler);\n }\n catch { }\n })();\n }\n else {\n /* istanbul ignore next: safety check */\n throw new Error(`Unknown HTTP2 promise event: ${event}`);\n }\n return result;\n };\n }\n return result;\n }), cache);\n cacheableStore.set(cache, cacheableRequest.request());\n }\n }\n async _createCacheableRequest(url, options) {\n return new Promise((resolve, reject) => {\n // TODO: Remove `utils/url-to-options.ts` when `cacheable-request` is fixed\n Object.assign(options, urlToOptions(url));\n let request;\n // TODO: Fix `cacheable-response`. This is ugly.\n const cacheRequest = cacheableStore.get(options.cache)(options, async (response) => {\n response._readableState.autoDestroy = false;\n if (request) {\n const fix = () => {\n if (response.req) {\n response.complete = response.req.res.complete;\n }\n };\n response.prependOnceListener('end', fix);\n fix();\n (await request).emit('cacheableResponse', response);\n }\n resolve(response);\n });\n cacheRequest.once('error', reject);\n cacheRequest.once('request', async (requestOrPromise) => {\n request = requestOrPromise;\n resolve(request);\n });\n });\n }\n async _makeRequest() {\n const { options } = this;\n const { headers, username, password } = options;\n const cookieJar = options.cookieJar;\n for (const key in headers) {\n if (is.undefined(headers[key])) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete headers[key];\n }\n else if (is.null_(headers[key])) {\n throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${key}\\` header`);\n }\n }\n if (options.decompress && is.undefined(headers['accept-encoding'])) {\n headers['accept-encoding'] = supportsBrotli ? 'gzip, deflate, br' : 'gzip, deflate';\n }\n if (username || password) {\n const credentials = Buffer.from(`${username}:${password}`).toString('base64');\n headers.authorization = `Basic ${credentials}`;\n }\n // Set cookies\n if (cookieJar) {\n const cookieString = await cookieJar.getCookieString(options.url.toString());\n if (is.nonEmptyString(cookieString)) {\n headers.cookie = cookieString;\n }\n }\n // Reset `prefixUrl`\n options.prefixUrl = '';\n let request;\n for (const hook of options.hooks.beforeRequest) {\n // eslint-disable-next-line no-await-in-loop\n const result = await hook(options);\n if (!is.undefined(result)) {\n // @ts-expect-error Skip the type mismatch to support abstract responses\n request = () => result;\n break;\n }\n }\n if (!request) {\n request = options.getRequestFunction();\n }\n const url = options.url;\n this._requestOptions = options.createNativeRequestOptions();\n if (options.cache) {\n this._requestOptions._request = request;\n this._requestOptions.cache = options.cache;\n this._requestOptions.body = options.body;\n this._prepareCache(options.cache);\n }\n // Cache support\n const fn = options.cache ? this._createCacheableRequest : request;\n try {\n // We can't do `await fn(...)`,\n // because stream `error` event can be emitted before `Promise.resolve()`.\n let requestOrResponse = fn(url, this._requestOptions);\n if (is.promise(requestOrResponse)) {\n requestOrResponse = await requestOrResponse;\n }\n // Fallback\n if (is.undefined(requestOrResponse)) {\n requestOrResponse = options.getFallbackRequestFunction()(url, this._requestOptions);\n if (is.promise(requestOrResponse)) {\n requestOrResponse = await requestOrResponse;\n }\n }\n if (isClientRequest(requestOrResponse)) {\n this._onRequest(requestOrResponse);\n }\n else if (this.writable) {\n this.once('finish', () => {\n void this._onResponse(requestOrResponse);\n });\n this._sendBody();\n }\n else {\n void this._onResponse(requestOrResponse);\n }\n }\n catch (error) {\n if (error instanceof CacheableCacheError) {\n throw new CacheError(error, this);\n }\n throw error;\n }\n }\n async _error(error) {\n try {\n if (error instanceof HTTPError && !this.options.throwHttpErrors) {\n // This branch can be reached only when using the Promise API\n // Skip calling the hooks on purpose.\n // See https://github.com/sindresorhus/got/issues/2103\n }\n else {\n for (const hook of this.options.hooks.beforeError) {\n // eslint-disable-next-line no-await-in-loop\n error = await hook(error);\n }\n }\n }\n catch (error_) {\n error = new RequestError(error_.message, error_, this);\n }\n this.destroy(error);\n }\n _writeRequest(chunk, encoding, callback) {\n if (!this._request || this._request.destroyed) {\n // Probably the `ClientRequest` instance will throw\n return;\n }\n this._request.write(chunk, encoding, (error) => {\n // The `!destroyed` check is required to prevent `uploadProgress` being emitted after the stream was destroyed\n if (!error && !this._request.destroyed) {\n this._uploadedSize += Buffer.byteLength(chunk, encoding);\n const progress = this.uploadProgress;\n if (progress.percent < 1) {\n this.emit('uploadProgress', progress);\n }\n }\n callback(error);\n });\n }\n /**\n The remote IP address.\n */\n get ip() {\n return this.socket?.remoteAddress;\n }\n /**\n Indicates whether the request has been aborted or not.\n */\n get isAborted() {\n return this._aborted;\n }\n get socket() {\n return this._request?.socket ?? undefined;\n }\n /**\n Progress event for downloading (receiving a response).\n */\n get downloadProgress() {\n let percent;\n if (this._responseSize) {\n percent = this._downloadedSize / this._responseSize;\n }\n else if (this._responseSize === this._downloadedSize) {\n percent = 1;\n }\n else {\n percent = 0;\n }\n return {\n percent,\n transferred: this._downloadedSize,\n total: this._responseSize,\n };\n }\n /**\n Progress event for uploading (sending a request).\n */\n get uploadProgress() {\n let percent;\n if (this._bodySize) {\n percent = this._uploadedSize / this._bodySize;\n }\n else if (this._bodySize === this._uploadedSize) {\n percent = 1;\n }\n else {\n percent = 0;\n }\n return {\n percent,\n transferred: this._uploadedSize,\n total: this._bodySize,\n };\n }\n /**\n The object contains the following properties:\n\n - `start` - Time when the request started.\n - `socket` - Time when a socket was assigned to the request.\n - `lookup` - Time when the DNS lookup finished.\n - `connect` - Time when the socket successfully connected.\n - `secureConnect` - Time when the socket securely connected.\n - `upload` - Time when the request finished uploading.\n - `response` - Time when the request fired `response` event.\n - `end` - Time when the response fired `end` event.\n - `error` - Time when the request fired `error` event.\n - `abort` - Time when the request fired `abort` event.\n - `phases`\n - `wait` - `timings.socket - timings.start`\n - `dns` - `timings.lookup - timings.socket`\n - `tcp` - `timings.connect - timings.lookup`\n - `tls` - `timings.secureConnect - timings.connect`\n - `request` - `timings.upload - (timings.secureConnect || timings.connect)`\n - `firstByte` - `timings.response - timings.upload`\n - `download` - `timings.end - timings.response`\n - `total` - `(timings.end || timings.error || timings.abort) - timings.start`\n\n If something has not been measured yet, it will be `undefined`.\n\n __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.\n */\n get timings() {\n return this._request?.timings;\n }\n /**\n Whether the response was retrieved from the cache.\n */\n get isFromCache() {\n return this._isFromCache;\n }\n get reusedSocket() {\n return this._request?.reusedSocket;\n }\n}\n","import { RequestError } from '../core/errors.js';\n/**\nAn error to be thrown when the request is aborted with `.cancel()`.\n*/\nexport class CancelError extends RequestError {\n constructor(request) {\n super('Promise was canceled', {}, request);\n this.name = 'CancelError';\n this.code = 'ERR_CANCELED';\n }\n /**\n Whether the promise is canceled.\n */\n get isCanceled() {\n return true;\n }\n}\n","import { EventEmitter } from 'node:events';\nimport is from '@sindresorhus/is';\nimport PCancelable from 'p-cancelable';\nimport { HTTPError, RetryError, } from '../core/errors.js';\nimport Request from '../core/index.js';\nimport { parseBody, isResponseOk } from '../core/response.js';\nimport proxyEvents from '../core/utils/proxy-events.js';\nimport { CancelError } from './types.js';\nconst proxiedRequestEvents = [\n 'request',\n 'response',\n 'redirect',\n 'uploadProgress',\n 'downloadProgress',\n];\nexport default function asPromise(firstRequest) {\n let globalRequest;\n let globalResponse;\n let normalizedOptions;\n const emitter = new EventEmitter();\n const promise = new PCancelable((resolve, reject, onCancel) => {\n onCancel(() => {\n globalRequest.destroy();\n });\n onCancel.shouldReject = false;\n onCancel(() => {\n reject(new CancelError(globalRequest));\n });\n const makeRequest = (retryCount) => {\n // Errors when a new request is made after the promise settles.\n // Used to detect a race condition.\n // See https://github.com/sindresorhus/got/issues/1489\n onCancel(() => { });\n const request = firstRequest ?? new Request(undefined, undefined, normalizedOptions);\n request.retryCount = retryCount;\n request._noPipe = true;\n globalRequest = request;\n request.once('response', async (response) => {\n // Parse body\n const contentEncoding = (response.headers['content-encoding'] ?? '').toLowerCase();\n const isCompressed = contentEncoding === 'gzip' || contentEncoding === 'deflate' || contentEncoding === 'br';\n const { options } = request;\n if (isCompressed && !options.decompress) {\n response.body = response.rawBody;\n }\n else {\n try {\n response.body = parseBody(response, options.responseType, options.parseJson, options.encoding);\n }\n catch (error) {\n // Fall back to `utf8`\n response.body = response.rawBody.toString();\n if (isResponseOk(response)) {\n request._beforeError(error);\n return;\n }\n }\n }\n try {\n const hooks = options.hooks.afterResponse;\n for (const [index, hook] of hooks.entries()) {\n // @ts-expect-error TS doesn't notice that CancelableRequest is a Promise\n // eslint-disable-next-line no-await-in-loop\n response = await hook(response, async (updatedOptions) => {\n options.merge(updatedOptions);\n options.prefixUrl = '';\n if (updatedOptions.url) {\n options.url = updatedOptions.url;\n }\n // Remove any further hooks for that request, because we'll call them anyway.\n // The loop continues. We don't want duplicates (asPromise recursion).\n options.hooks.afterResponse = options.hooks.afterResponse.slice(0, index);\n throw new RetryError(request);\n });\n if (!(is.object(response) && is.number(response.statusCode) && !is.nullOrUndefined(response.body))) {\n throw new TypeError('The `afterResponse` hook returned an invalid value');\n }\n }\n }\n catch (error) {\n request._beforeError(error);\n return;\n }\n globalResponse = response;\n if (!isResponseOk(response)) {\n request._beforeError(new HTTPError(response));\n return;\n }\n request.destroy();\n resolve(request.options.resolveBodyOnly ? response.body : response);\n });\n const onError = (error) => {\n if (promise.isCanceled) {\n return;\n }\n const { options } = request;\n if (error instanceof HTTPError && !options.throwHttpErrors) {\n const { response } = error;\n request.destroy();\n resolve(request.options.resolveBodyOnly ? response.body : response);\n return;\n }\n reject(error);\n };\n request.once('error', onError);\n const previousBody = request.options?.body;\n request.once('retry', (newRetryCount, error) => {\n firstRequest = undefined;\n const newBody = request.options.body;\n if (previousBody === newBody && is.nodeStream(newBody)) {\n error.message = 'Cannot retry with consumed body stream';\n onError(error);\n return;\n }\n // This is needed! We need to reuse `request.options` because they can get modified!\n // For example, by calling `promise.json()`.\n normalizedOptions = request.options;\n makeRequest(newRetryCount);\n });\n proxyEvents(request, emitter, proxiedRequestEvents);\n if (is.undefined(firstRequest)) {\n void request.flush();\n }\n };\n makeRequest(0);\n });\n promise.on = (event, fn) => {\n emitter.on(event, fn);\n return promise;\n };\n promise.off = (event, fn) => {\n emitter.off(event, fn);\n return promise;\n };\n const shortcut = (responseType) => {\n const newPromise = (async () => {\n // Wait until downloading has ended\n await promise;\n const { options } = globalResponse.request;\n return parseBody(globalResponse, responseType, options.parseJson, options.encoding);\n })();\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n Object.defineProperties(newPromise, Object.getOwnPropertyDescriptors(promise));\n return newPromise;\n };\n promise.json = () => {\n if (globalRequest.options) {\n const { headers } = globalRequest.options;\n if (!globalRequest.writableFinished && !('accept' in headers)) {\n headers.accept = 'application/json';\n }\n }\n return shortcut('json');\n };\n promise.buffer = () => shortcut('buffer');\n promise.text = () => shortcut('text');\n return promise;\n}\n","import is, { assert } from '@sindresorhus/is';\nimport asPromise from './as-promise/index.js';\nimport Request from './core/index.js';\nimport Options from './core/options.js';\n// The `delay` package weighs 10KB (!)\nconst delay = async (ms) => new Promise(resolve => {\n setTimeout(resolve, ms);\n});\nconst isGotInstance = (value) => is.function_(value);\nconst aliases = [\n 'get',\n 'post',\n 'put',\n 'patch',\n 'head',\n 'delete',\n];\nconst create = (defaults) => {\n defaults = {\n options: new Options(undefined, undefined, defaults.options),\n handlers: [...defaults.handlers],\n mutableDefaults: defaults.mutableDefaults,\n };\n Object.defineProperty(defaults, 'mutableDefaults', {\n enumerable: true,\n configurable: false,\n writable: false,\n });\n // Got interface\n const got = ((url, options, defaultOptions = defaults.options) => {\n const request = new Request(url, options, defaultOptions);\n let promise;\n const lastHandler = (normalized) => {\n // Note: `options` is `undefined` when `new Options(...)` fails\n request.options = normalized;\n request._noPipe = !normalized.isStream;\n void request.flush();\n if (normalized.isStream) {\n return request;\n }\n if (!promise) {\n promise = asPromise(request);\n }\n return promise;\n };\n let iteration = 0;\n const iterateHandlers = (newOptions) => {\n const handler = defaults.handlers[iteration++] ?? lastHandler;\n const result = handler(newOptions, iterateHandlers);\n if (is.promise(result) && !request.options.isStream) {\n if (!promise) {\n promise = asPromise(request);\n }\n if (result !== promise) {\n const descriptors = Object.getOwnPropertyDescriptors(promise);\n for (const key in descriptors) {\n if (key in result) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete descriptors[key];\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n Object.defineProperties(result, descriptors);\n result.cancel = promise.cancel;\n }\n }\n return result;\n };\n return iterateHandlers(request.options);\n });\n got.extend = (...instancesOrOptions) => {\n const options = new Options(undefined, undefined, defaults.options);\n const handlers = [...defaults.handlers];\n let mutableDefaults;\n for (const value of instancesOrOptions) {\n if (isGotInstance(value)) {\n options.merge(value.defaults.options);\n handlers.push(...value.defaults.handlers);\n mutableDefaults = value.defaults.mutableDefaults;\n }\n else {\n options.merge(value);\n if (value.handlers) {\n handlers.push(...value.handlers);\n }\n mutableDefaults = value.mutableDefaults;\n }\n }\n return create({\n options,\n handlers,\n mutableDefaults: Boolean(mutableDefaults),\n });\n };\n // Pagination\n const paginateEach = (async function* (url, options) {\n let normalizedOptions = new Options(url, options, defaults.options);\n normalizedOptions.resolveBodyOnly = false;\n const { pagination } = normalizedOptions;\n assert.function_(pagination.transform);\n assert.function_(pagination.shouldContinue);\n assert.function_(pagination.filter);\n assert.function_(pagination.paginate);\n assert.number(pagination.countLimit);\n assert.number(pagination.requestLimit);\n assert.number(pagination.backoff);\n const allItems = [];\n let { countLimit } = pagination;\n let numberOfRequests = 0;\n while (numberOfRequests < pagination.requestLimit) {\n if (numberOfRequests !== 0) {\n // eslint-disable-next-line no-await-in-loop\n await delay(pagination.backoff);\n }\n // eslint-disable-next-line no-await-in-loop\n const response = (await got(undefined, undefined, normalizedOptions));\n // eslint-disable-next-line no-await-in-loop\n const parsed = await pagination.transform(response);\n const currentItems = [];\n assert.array(parsed);\n for (const item of parsed) {\n if (pagination.filter({ item, currentItems, allItems })) {\n if (!pagination.shouldContinue({ item, currentItems, allItems })) {\n return;\n }\n yield item;\n if (pagination.stackAllItems) {\n allItems.push(item);\n }\n currentItems.push(item);\n if (--countLimit <= 0) {\n return;\n }\n }\n }\n const optionsToMerge = pagination.paginate({\n response,\n currentItems,\n allItems,\n });\n if (optionsToMerge === false) {\n return;\n }\n if (optionsToMerge === response.request.options) {\n normalizedOptions = response.request.options;\n }\n else {\n normalizedOptions.merge(optionsToMerge);\n assert.any([is.urlInstance, is.undefined], optionsToMerge.url);\n if (optionsToMerge.url !== undefined) {\n normalizedOptions.prefixUrl = '';\n normalizedOptions.url = optionsToMerge.url;\n }\n }\n numberOfRequests++;\n }\n });\n got.paginate = paginateEach;\n got.paginate.all = (async (url, options) => {\n const results = [];\n for await (const item of paginateEach(url, options)) {\n results.push(item);\n }\n return results;\n });\n // For those who like very descriptive names\n got.paginate.each = paginateEach;\n // Stream API\n got.stream = ((url, options) => got(url, { ...options, isStream: true }));\n // Shortcuts\n for (const method of aliases) {\n got[method] = ((url, options) => got(url, { ...options, method }));\n got.stream[method] = ((url, options) => got(url, { ...options, method, isStream: true }));\n }\n if (!defaults.mutableDefaults) {\n Object.freeze(defaults.handlers);\n defaults.options.freeze();\n }\n Object.defineProperty(got, 'defaults', {\n value: defaults,\n writable: false,\n configurable: false,\n enumerable: true,\n });\n return got;\n};\nexport default create;\n","import create from './create.js';\nimport Options from './core/options.js';\nconst defaults = {\n options: new Options(),\n handlers: [],\n mutableDefaults: false,\n};\nconst got = create(defaults);\nexport default got;\nexport { got };\nexport { default as Options } from './core/options.js';\nexport * from './core/options.js';\nexport * from './core/response.js';\nexport * from './core/index.js';\nexport * from './core/errors.js';\nexport { default as calculateRetryDelay } from './core/calculate-retry-delay.js';\nexport * from './as-promise/types.js';\nexport * from './types.js';\nexport { default as create } from './create.js';\nexport { default as parseLinkHeader } from './core/parse-link-header.js';\n","\n// when this is loaded into the browser, \n// just use the defaults...\n\nmodule.exports = function (name, defaults) {\n return defaults\n}\n","import rc from 'rc';\n\nexport default function registryUrl(scope) {\n\tconst result = rc('npm', {registry: 'https://registry.npmjs.org/'});\n\tconst url = result[`${scope}:registry`] || result.config_registry || result.registry;\n\treturn url.slice(-1) === '/' ? url : `${url}/`;\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readCAFileSync = void 0;\nconst graceful_fs_1 = __importDefault(require(\"graceful-fs\"));\nfunction readCAFileSync(filePath) {\n try {\n const contents = graceful_fs_1.default.readFileSync(filePath, 'utf8');\n const delim = '-----END CERTIFICATE-----';\n const output = contents\n .split(delim)\n .filter((ca) => Boolean(ca.trim()))\n .map((ca) => `${ca.trimLeft()}${delim}`);\n return output;\n }\n catch (err) {\n if (err.code === 'ENOENT')\n return undefined;\n throw err;\n }\n}\nexports.readCAFileSync = readCAFileSync;\n//# sourceMappingURL=ca-file.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ca-file\"), exports);\n//# sourceMappingURL=index.js.map","\nmodule.exports = ProtoList\n\nfunction setProto(obj, proto) {\n if (typeof Object.setPrototypeOf === \"function\")\n return Object.setPrototypeOf(obj, proto)\n else\n obj.__proto__ = proto\n}\n\nfunction ProtoList () {\n this.list = []\n var root = null\n Object.defineProperty(this, 'root', {\n get: function () { return root },\n set: function (r) {\n root = r\n if (this.list.length) {\n setProto(this.list[this.list.length - 1], r)\n }\n },\n enumerable: true,\n configurable: true\n })\n}\n\nProtoList.prototype =\n { get length () { return this.list.length }\n , get keys () {\n var k = []\n for (var i in this.list[0]) k.push(i)\n return k\n }\n , get snapshot () {\n var o = {}\n this.keys.forEach(function (k) { o[k] = this.get(k) }, this)\n return o\n }\n , get store () {\n return this.list[0]\n }\n , push : function (obj) {\n if (typeof obj !== \"object\") obj = {valueOf:obj}\n if (this.list.length >= 1) {\n setProto(this.list[this.list.length - 1], obj)\n }\n setProto(obj, this.root)\n return this.list.push(obj)\n }\n , pop : function () {\n if (this.list.length >= 2) {\n setProto(this.list[this.list.length - 2], this.root)\n }\n return this.list.pop()\n }\n , unshift : function (obj) {\n setProto(obj, this.list[0] || this.root)\n return this.list.unshift(obj)\n }\n , shift : function () {\n if (this.list.length === 1) {\n setProto(this.list[0], this.root)\n }\n return this.list.shift()\n }\n , get : function (key) {\n return this.list[0][key]\n }\n , set : function (key, val, save) {\n if (!this.length) this.push({})\n if (save && this.list[0].hasOwnProperty(key)) this.push({})\n return this.list[0][key] = val\n }\n , forEach : function (fn, thisp) {\n for (var key in this.list[0]) fn.call(thisp, key, this.list[0][key])\n }\n , slice : function () {\n return this.list.slice.apply(this.list, arguments)\n }\n , splice : function () {\n // handle injections\n var ret = this.list.splice.apply(this.list, arguments)\n for (var i = 0, l = this.list.length; i < l; i++) {\n setProto(this.list[i], this.list[i + 1] || this.root)\n }\n return ret\n }\n }\n","exports.parse = exports.decode = decode\n\nexports.stringify = exports.encode = encode\n\nexports.safe = safe\nexports.unsafe = unsafe\n\nvar eol = typeof process !== 'undefined' &&\n process.platform === 'win32' ? '\\r\\n' : '\\n'\n\nfunction encode (obj, opt) {\n var children = []\n var out = ''\n\n if (typeof opt === 'string') {\n opt = {\n section: opt,\n whitespace: false,\n }\n } else {\n opt = opt || {}\n opt.whitespace = opt.whitespace === true\n }\n\n var separator = opt.whitespace ? ' = ' : '='\n\n Object.keys(obj).forEach(function (k, _, __) {\n var val = obj[k]\n if (val && Array.isArray(val)) {\n val.forEach(function (item) {\n out += safe(k + '[]') + separator + safe(item) + '\\n'\n })\n } else if (val && typeof val === 'object')\n children.push(k)\n else\n out += safe(k) + separator + safe(val) + eol\n })\n\n if (opt.section && out.length)\n out = '[' + safe(opt.section) + ']' + eol + out\n\n children.forEach(function (k, _, __) {\n var nk = dotSplit(k).join('\\\\.')\n var section = (opt.section ? opt.section + '.' : '') + nk\n var child = encode(obj[k], {\n section: section,\n whitespace: opt.whitespace,\n })\n if (out.length && child.length)\n out += eol\n\n out += child\n })\n\n return out\n}\n\nfunction dotSplit (str) {\n return str.replace(/\\1/g, '\\u0002LITERAL\\\\1LITERAL\\u0002')\n .replace(/\\\\\\./g, '\\u0001')\n .split(/\\./).map(function (part) {\n return part.replace(/\\1/g, '\\\\.')\n .replace(/\\2LITERAL\\\\1LITERAL\\2/g, '\\u0001')\n })\n}\n\nfunction decode (str) {\n var out = {}\n var p = out\n var section = null\n // section |key = value\n var re = /^\\[([^\\]]*)\\]$|^([^=]+)(=(.*))?$/i\n var lines = str.split(/[\\r\\n]+/g)\n\n lines.forEach(function (line, _, __) {\n if (!line || line.match(/^\\s*[;#]/))\n return\n var match = line.match(re)\n if (!match)\n return\n if (match[1] !== undefined) {\n section = unsafe(match[1])\n if (section === '__proto__') {\n // not allowed\n // keep parsing the section, but don't attach it.\n p = {}\n return\n }\n p = out[section] = out[section] || {}\n return\n }\n var key = unsafe(match[2])\n if (key === '__proto__')\n return\n var value = match[3] ? unsafe(match[4]) : true\n switch (value) {\n case 'true':\n case 'false':\n case 'null': value = JSON.parse(value)\n }\n\n // Convert keys with '[]' suffix to an array\n if (key.length > 2 && key.slice(-2) === '[]') {\n key = key.substring(0, key.length - 2)\n if (key === '__proto__')\n return\n if (!p[key])\n p[key] = []\n else if (!Array.isArray(p[key]))\n p[key] = [p[key]]\n }\n\n // safeguard against resetting a previously defined\n // array by accidentally forgetting the brackets\n if (Array.isArray(p[key]))\n p[key].push(value)\n else\n p[key] = value\n })\n\n // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n // use a filter to return the keys that have to be deleted.\n Object.keys(out).filter(function (k, _, __) {\n if (!out[k] ||\n typeof out[k] !== 'object' ||\n Array.isArray(out[k]))\n return false\n\n // see if the parent section is also an object.\n // if so, add it to that, and mark this one for deletion\n var parts = dotSplit(k)\n var p = out\n var l = parts.pop()\n var nl = l.replace(/\\\\\\./g, '.')\n parts.forEach(function (part, _, __) {\n if (part === '__proto__')\n return\n if (!p[part] || typeof p[part] !== 'object')\n p[part] = {}\n p = p[part]\n })\n if (p === out && nl === l)\n return false\n\n p[nl] = out[k]\n return true\n }).forEach(function (del, _, __) {\n delete out[del]\n })\n\n return out\n}\n\nfunction isQuoted (val) {\n return (val.charAt(0) === '\"' && val.slice(-1) === '\"') ||\n (val.charAt(0) === \"'\" && val.slice(-1) === \"'\")\n}\n\nfunction safe (val) {\n return (typeof val !== 'string' ||\n val.match(/[=\\r\\n]/) ||\n val.match(/^\\[/) ||\n (val.length > 1 &&\n isQuoted(val)) ||\n val !== val.trim())\n ? JSON.stringify(val)\n : val.replace(/;/g, '\\\\;').replace(/#/g, '\\\\#')\n}\n\nfunction unsafe (val, doUnesc) {\n val = (val || '').trim()\n if (isQuoted(val)) {\n // remove the single quotes before calling JSON.parse\n if (val.charAt(0) === \"'\")\n val = val.substr(1, val.length - 2)\n\n try {\n val = JSON.parse(val)\n } catch (_) {}\n } else {\n // walk the val to find the first not-escaped ; character\n var esc = false\n var unesc = ''\n for (var i = 0, l = val.length; i < l; i++) {\n var c = val.charAt(i)\n if (esc) {\n if ('\\\\;#'.indexOf(c) !== -1)\n unesc += c\n else\n unesc += '\\\\' + c\n\n esc = false\n } else if (';#'.indexOf(c) !== -1)\n break\n else if (c === '\\\\')\n esc = true\n else\n unesc += c\n }\n if (esc)\n unesc += '\\\\'\n\n return unesc.trim()\n }\n return val\n}\n","var ProtoList = require('proto-list')\n , path = require('path')\n , fs = require('fs')\n , ini = require('ini')\n , EE = require('events').EventEmitter\n , url = require('url')\n , http = require('http')\n\nvar exports = module.exports = function () {\n var args = [].slice.call(arguments)\n , conf = new ConfigChain()\n\n while(args.length) {\n var a = args.shift()\n if(a) conf.push\n ( 'string' === typeof a\n ? json(a)\n : a )\n }\n\n return conf\n}\n\n//recursively find a file...\n\nvar find = exports.find = function () {\n var rel = path.join.apply(null, [].slice.call(arguments))\n\n function find(start, rel) {\n var file = path.join(start, rel)\n try {\n fs.statSync(file)\n return file\n } catch (err) {\n if(path.dirname(start) !== start) // root\n return find(path.dirname(start), rel)\n }\n }\n return find(__dirname, rel)\n}\n\nvar parse = exports.parse = function (content, file, type) {\n content = '' + content\n // if we don't know what it is, try json and fall back to ini\n // if we know what it is, then it must be that.\n if (!type) {\n try { return JSON.parse(content) }\n catch (er) { return ini.parse(content) }\n } else if (type === 'json') {\n if (this.emit) {\n try { return JSON.parse(content) }\n catch (er) { this.emit('error', er) }\n } else {\n return JSON.parse(content)\n }\n } else {\n return ini.parse(content)\n }\n}\n\nvar json = exports.json = function () {\n var args = [].slice.call(arguments).filter(function (arg) { return arg != null })\n var file = path.join.apply(null, args)\n var content\n try {\n content = fs.readFileSync(file,'utf-8')\n } catch (err) {\n return\n }\n return parse(content, file, 'json')\n}\n\nvar env = exports.env = function (prefix, env) {\n env = env || process.env\n var obj = {}\n var l = prefix.length\n for(var k in env) {\n if(k.indexOf(prefix) === 0)\n obj[k.substring(l)] = env[k]\n }\n\n return obj\n}\n\nexports.ConfigChain = ConfigChain\nfunction ConfigChain () {\n EE.apply(this)\n ProtoList.apply(this, arguments)\n this._awaiting = 0\n this._saving = 0\n this.sources = {}\n}\n\n// multi-inheritance-ish\nvar extras = {\n constructor: { value: ConfigChain }\n}\nObject.keys(EE.prototype).forEach(function (k) {\n extras[k] = Object.getOwnPropertyDescriptor(EE.prototype, k)\n})\nConfigChain.prototype = Object.create(ProtoList.prototype, extras)\n\nConfigChain.prototype.del = function (key, where) {\n // if not specified where, then delete from the whole chain, scorched\n // earth style\n if (where) {\n var target = this.sources[where]\n target = target && target.data\n if (!target) {\n return this.emit('error', new Error('not found '+where))\n }\n delete target[key]\n } else {\n for (var i = 0, l = this.list.length; i < l; i ++) {\n delete this.list[i][key]\n }\n }\n return this\n}\n\nConfigChain.prototype.set = function (key, value, where) {\n var target\n\n if (where) {\n target = this.sources[where]\n target = target && target.data\n if (!target) {\n return this.emit('error', new Error('not found '+where))\n }\n } else {\n target = this.list[0]\n if (!target) {\n return this.emit('error', new Error('cannot set, no confs!'))\n }\n }\n target[key] = value\n return this\n}\n\nConfigChain.prototype.get = function (key, where) {\n if (where) {\n where = this.sources[where]\n if (where) where = where.data\n if (where && Object.hasOwnProperty.call(where, key)) return where[key]\n return undefined\n }\n return this.list[0][key]\n}\n\nConfigChain.prototype.save = function (where, type, cb) {\n if (typeof type === 'function') cb = type, type = null\n var target = this.sources[where]\n if (!target || !(target.path || target.source) || !target.data) {\n // TODO: maybe save() to a url target could be a PUT or something?\n // would be easy to swap out with a reddis type thing, too\n return this.emit('error', new Error('bad save target: '+where))\n }\n\n if (target.source) {\n var pref = target.prefix || ''\n Object.keys(target.data).forEach(function (k) {\n target.source[pref + k] = target.data[k]\n })\n return this\n }\n\n var type = type || target.type\n var data = target.data\n if (target.type === 'json') {\n data = JSON.stringify(data)\n } else {\n data = ini.stringify(data)\n }\n\n this._saving ++\n fs.writeFile(target.path, data, 'utf8', function (er) {\n this._saving --\n if (er) {\n if (cb) return cb(er)\n else return this.emit('error', er)\n }\n if (this._saving === 0) {\n if (cb) cb()\n this.emit('save')\n }\n }.bind(this))\n return this\n}\n\nConfigChain.prototype.addFile = function (file, type, name) {\n name = name || file\n var marker = {__source__:name}\n this.sources[name] = { path: file, type: type }\n this.push(marker)\n this._await()\n fs.readFile(file, 'utf8', function (er, data) {\n if (er) this.emit('error', er)\n this.addString(data, file, type, marker)\n }.bind(this))\n return this\n}\n\nConfigChain.prototype.addEnv = function (prefix, env, name) {\n name = name || 'env'\n var data = exports.env(prefix, env)\n this.sources[name] = { data: data, source: env, prefix: prefix }\n return this.add(data, name)\n}\n\nConfigChain.prototype.addUrl = function (req, type, name) {\n this._await()\n var href = url.format(req)\n name = name || href\n var marker = {__source__:name}\n this.sources[name] = { href: href, type: type }\n this.push(marker)\n http.request(req, function (res) {\n var c = []\n var ct = res.headers['content-type']\n if (!type) {\n type = ct.indexOf('json') !== -1 ? 'json'\n : ct.indexOf('ini') !== -1 ? 'ini'\n : href.match(/\\.json$/) ? 'json'\n : href.match(/\\.ini$/) ? 'ini'\n : null\n marker.type = type\n }\n\n res.on('data', c.push.bind(c))\n .on('end', function () {\n this.addString(Buffer.concat(c), href, type, marker)\n }.bind(this))\n .on('error', this.emit.bind(this, 'error'))\n\n }.bind(this))\n .on('error', this.emit.bind(this, 'error'))\n .end()\n\n return this\n}\n\nConfigChain.prototype.addString = function (data, file, type, marker) {\n data = this.parse(data, file, type)\n this.add(data, marker)\n return this\n}\n\nConfigChain.prototype.add = function (data, marker) {\n if (marker && typeof marker === 'object') {\n var i = this.list.indexOf(marker)\n if (i === -1) {\n return this.emit('error', new Error('bad marker'))\n }\n this.splice(i, 1, data)\n marker = marker.__source__\n this.sources[marker] = this.sources[marker] || {}\n this.sources[marker].data = data\n // we were waiting for this. maybe emit 'load'\n this._resolve()\n } else {\n if (typeof marker === 'string') {\n this.sources[marker] = this.sources[marker] || {}\n this.sources[marker].data = data\n }\n // trigger the load event if nothing was already going to do so.\n this._await()\n this.push(data)\n process.nextTick(this._resolve.bind(this))\n }\n return this\n}\n\nConfigChain.prototype.parse = exports.parse\n\nConfigChain.prototype._await = function () {\n this._awaiting++\n}\n\nConfigChain.prototype._resolve = function () {\n this._awaiting--\n if (this._awaiting === 0) this.emit('load', this)\n}\n","module.exports = function (x) {\n\tconst colonIndex = x.indexOf(':');\n\tif (colonIndex === -1) {\n\t\treturn normalize(x);\n\t}\n\tconst firstPart = x.substr(0, colonIndex);\n\tconst secondPart = x.substr(colonIndex + 1);\n\treturn `${normalize(firstPart)}:${normalize(secondPart)}`;\n}\n\nfunction normalize (s) {\n\ts = s.toLowerCase();\n\tif (s === '_authtoken') return '_authToken';\n\tlet r = s[0];\n\tfor (let i = 1; i < s.length; i++) {\n\t\tr += s[i] === '_' ? '-' : s[i];\n\t}\n\treturn r;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envReplace = void 0;\nconst ENV_EXPR = /(?<!\\\\)(\\\\*)\\$\\{([^${}]+)\\}/g;\nfunction envReplace(settingValue, env) {\n return settingValue.replace(ENV_EXPR, replaceEnvMatch.bind(null, env));\n}\nexports.envReplace = envReplace;\nfunction replaceEnvMatch(env, orig, escape, name) {\n if (escape.length % 2) {\n return orig.slice((escape.length + 1) / 2);\n }\n const envValue = getEnvValue(env, name);\n if (envValue === undefined) {\n throw new Error(`Failed to replace env in config: ${orig}`);\n }\n return `${(escape.slice(escape.length / 2))}${envValue}`;\n}\nconst ENV_VALUE = /([^:-]+)(:?)-(.+)/;\nfunction getEnvValue(env, name) {\n const matched = name.match(ENV_VALUE);\n if (!matched)\n return env[name];\n const [, variableName, colon, fallback] = matched;\n if (Object.prototype.hasOwnProperty.call(env, variableName)) {\n return !env[variableName] && colon ? fallback : env[variableName];\n }\n return fallback;\n}\n//# sourceMappingURL=env-replace.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envReplace = void 0;\nvar env_replace_1 = require(\"./env-replace\");\nObject.defineProperty(exports, \"envReplace\", { enumerable: true, get: function () { return env_replace_1.envReplace; } });\n//# sourceMappingURL=index.js.map","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst { envReplace } = require('@pnpm/config.env-replace');\n\n// https://github.com/npm/cli/blob/latest/lib/config/core.js#L359-L404\nconst parseField = (types, field, key) => {\n\tif (typeof field !== 'string') {\n\t\treturn field;\n\t}\n\n\tconst typeList = [].concat(types[key]);\n\tconst isPath = typeList.indexOf(path) !== -1;\n\tconst isBool = typeList.indexOf(Boolean) !== -1;\n\tconst isString = typeList.indexOf(String) !== -1;\n\tconst isNumber = typeList.indexOf(Number) !== -1;\n\n\tfield = `${field}`.trim();\n\n\tif (/^\".*\"$/.test(field)) {\n\t\ttry {\n\t\t\tfield = JSON.parse(field);\n\t\t} catch (error) {\n\t\t\tthrow new Error(`Failed parsing JSON config key ${key}: ${field}`);\n\t\t}\n\t}\n\n\tif (isBool && !isString && field === '') {\n\t\treturn true;\n\t}\n\n\tswitch (field) { // eslint-disable-line default-case\n\t\tcase 'true': {\n\t\t\treturn true;\n\t\t}\n\n\t\tcase 'false': {\n\t\t\treturn false;\n\t\t}\n\n\t\tcase 'null': {\n\t\t\treturn null;\n\t\t}\n\n\t\tcase 'undefined': {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tfield = envReplace(field, process.env);\n\n\tif (isPath) {\n\t\tconst regex = process.platform === 'win32' ? /^~(\\/|\\\\)/ : /^~\\//;\n\n\t\tif (regex.test(field) && process.env.HOME) {\n\t\t\tfield = path.resolve(process.env.HOME, field.substr(2));\n\t\t}\n\n\t\tfield = path.resolve(field);\n\t}\n\n\tif (isNumber && !isNaN(field)) {\n\t\tfield = Number(field);\n\t}\n\n\treturn field;\n};\n\n// https://github.com/npm/cli/blob/latest/lib/config/find-prefix.js\nconst findPrefix = name => {\n\tname = path.resolve(name);\n\n\tlet walkedUp = false;\n\n\twhile (path.basename(name) === 'node_modules') {\n\t\tname = path.dirname(name);\n\t\twalkedUp = true;\n\t}\n\n\tif (walkedUp) {\n\t\treturn name;\n\t}\n\n\tconst find = (name, original) => {\n\t\tconst regex = /^[a-zA-Z]:(\\\\|\\/)?$/;\n\n\t\tif (name === '/' || (process.platform === 'win32' && regex.test(name))) {\n\t\t\treturn original;\n\t\t}\n\n\t\ttry {\n\t\t\tconst files = fs.readdirSync(name);\n\n\t\t\tif (\n\t\t\t\tfiles.includes('node_modules') ||\n\t\t\t\tfiles.includes('package.json') ||\n\t\t\t\tfiles.includes('package.json5') ||\n\t\t\t\tfiles.includes('package.yaml') ||\n\t\t\t\tfiles.includes('pnpm-workspace.yaml')\n\t\t\t) {\n\t\t\t\treturn name;\n\t\t\t}\n\n\t\t\tconst dirname = path.dirname(name);\n\n\t\t\tif (dirname === name) {\n\t\t\t\treturn original;\n\t\t\t}\n\n\t\t\treturn find(dirname, original);\n\t\t} catch (error) {\n\t\t\tif (name === original) {\n\t\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\t\treturn original;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn original;\n\t\t}\n\t};\n\n\treturn find(name, name);\n};\n\nexports.envReplace = envReplace;\nexports.findPrefix = findPrefix;\nexports.parseField = parseField;\n","// Generated with `lib/make.js`\n'use strict';\nconst path = require('path');\nconst Stream = require('stream').Stream;\nconst url = require('url');\n\nconst Umask = () => {};\nconst getLocalAddresses = () => [];\nconst semver = () => {};\n\nexports.types = {\n\taccess: [null, 'restricted', 'public'],\n\t'allow-same-version': Boolean,\n\t'always-auth': Boolean,\n\talso: [null, 'dev', 'development'],\n\taudit: Boolean,\n\t'auth-type': ['legacy', 'sso', 'saml', 'oauth'],\n\t'bin-links': Boolean,\n\tbrowser: [null, String],\n\tca: [null, String, Array],\n\tcafile: path,\n\tcache: path,\n\t'cache-lock-stale': Number,\n\t'cache-lock-retries': Number,\n\t'cache-lock-wait': Number,\n\t'cache-max': Number,\n\t'cache-min': Number,\n\tcert: [null, String],\n\tcidr: [null, String, Array],\n\tcolor: ['always', Boolean],\n\tdepth: Number,\n\tdescription: Boolean,\n\tdev: Boolean,\n\t'dry-run': Boolean,\n\teditor: String,\n\t'engine-strict': Boolean,\n\tforce: Boolean,\n\t'fetch-retries': Number,\n\t'fetch-retry-factor': Number,\n\t'fetch-retry-mintimeout': Number,\n\t'fetch-retry-maxtimeout': Number,\n\tgit: String,\n\t'git-tag-version': Boolean,\n\t'commit-hooks': Boolean,\n\tglobal: Boolean,\n\tglobalconfig: path,\n\t'global-style': Boolean,\n\tgroup: [Number, String],\n\t'https-proxy': [null, url],\n\t'user-agent': String,\n\t'ham-it-up': Boolean,\n\t'heading': String,\n\t'if-present': Boolean,\n\t'ignore-prepublish': Boolean,\n\t'ignore-scripts': Boolean,\n\t'init-module': path,\n\t'init-author-name': String,\n\t'init-author-email': String,\n\t'init-author-url': ['', url],\n\t'init-license': String,\n\t'init-version': semver,\n\tjson: Boolean,\n\tkey: [null, String],\n\t'legacy-bundling': Boolean,\n\tlink: Boolean,\n\t// local-address must be listed as an IP for a local network interface\n\t// must be IPv4 due to node bug\n\t'local-address': getLocalAddresses(),\n\tloglevel: ['silent', 'error', 'warn', 'notice', 'http', 'timing', 'info', 'verbose', 'silly'],\n\tlogstream: Stream,\n\t'logs-max': Number,\n\tlong: Boolean,\n\tmaxsockets: Number,\n\tmessage: String,\n\t'metrics-registry': [null, String],\n\t'node-options': [null, String],\n\t'node-version': [null, semver],\n\t'no-proxy': [null, String, Array],\n\toffline: Boolean,\n\t'onload-script': [null, String],\n\tonly: [null, 'dev', 'development', 'prod', 'production'],\n\toptional: Boolean,\n\t'package-lock': Boolean,\n\totp: [null, String],\n\t'package-lock-only': Boolean,\n\tparseable: Boolean,\n\t'prefer-offline': Boolean,\n\t'prefer-online': Boolean,\n\tprefix: path,\n\tproduction: Boolean,\n\tprogress: Boolean,\n\tproxy: [null, false, url],\n\tprovenance: Boolean,\n\t// allow proxy to be disabled explicitly\n\t'read-only': Boolean,\n\t'rebuild-bundle': Boolean,\n\tregistry: [null, url],\n\trollback: Boolean,\n\tsave: Boolean,\n\t'save-bundle': Boolean,\n\t'save-dev': Boolean,\n\t'save-exact': Boolean,\n\t'save-optional': Boolean,\n\t'save-prefix': String,\n\t'save-prod': Boolean,\n\tscope: String,\n\t'script-shell': [null, String],\n\t'scripts-prepend-node-path': [false, true, 'auto', 'warn-only'],\n\tsearchopts: String,\n\tsearchexclude: [null, String],\n\tsearchlimit: Number,\n\tsearchstaleness: Number,\n\t'send-metrics': Boolean,\n\tshell: String,\n\tshrinkwrap: Boolean,\n\t'sign-git-tag': Boolean,\n\t'sso-poll-frequency': Number,\n\t'sso-type': [null, 'oauth', 'saml'],\n\t'strict-ssl': Boolean,\n\ttag: String,\n\ttiming: Boolean,\n\ttmp: path,\n\tunicode: Boolean,\n\t'unsafe-perm': Boolean,\n\tusage: Boolean,\n\tuser: [Number, String],\n\tuserconfig: path,\n\tumask: Umask,\n\tversion: Boolean,\n\t'tag-version-prefix': String,\n\tversions: Boolean,\n\tviewer: String,\n\t_exit: Boolean\n};\n","'use strict';\nconst { readCAFileSync } = require('@pnpm/network.ca-file');\nconst fs = require('fs');\nconst path = require('path');\nconst {ConfigChain} = require('config-chain');\nconst envKeyToSetting = require('./envKeyToSetting');\nconst util = require('./util');\n\nclass Conf extends ConfigChain {\n\t// https://github.com/npm/cli/blob/latest/lib/config/core.js#L203-L217\n\tconstructor(base, types) {\n\t\tsuper(base);\n\t\tthis.root = base;\n\t\tthis._parseField = util.parseField.bind(null, types || require('./types'));\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/core.js#L326-L338\n\tadd(data, marker) {\n\t\ttry {\n\t\t\tfor (const x of Object.keys(data)) {\n\t\t\t\tdata[x] = this._parseField(data[x], x);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn super.add(data, marker);\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/core.js#L306-L319\n\taddFile(file, name) {\n\t\tname = name || file;\n\n\t\tconst marker = {__source__: name};\n\n\t\tthis.sources[name] = {path: file, type: 'ini'};\n\t\tthis.push(marker);\n\t\tthis._await();\n\n\t\ttry {\n\t\t\tconst contents = fs.readFileSync(file, 'utf8');\n\t\t\tthis.addString(contents, file, 'ini', marker);\n\t\t} catch (error) {\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\tthis.add({}, marker);\n\t\t\t} else {\n\t\t\t\treturn `Issue while reading \"${file}\". ${error.message}`\n\t\t\t}\n\t\t}\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/core.js#L341-L357\n\taddEnv(env) {\n\t\tenv = env || process.env;\n\n\t\tconst conf = {};\n\n\t\tObject.keys(env)\n\t\t\t.filter(x => /^npm_config_/i.test(x))\n\t\t\t.forEach(x => {\n\t\t\t\tif (!env[x]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconf[envKeyToSetting(x.substr(11))] = env[x];\n\t\t\t});\n\n\t\treturn super.addEnv('', conf, 'env');\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/load-prefix.js\n\tloadPrefix() {\n\t\tconst cli = this.list[0];\n\n\t\tObject.defineProperty(this, 'prefix', {\n\t\t\tenumerable: true,\n\t\t\tset: prefix => {\n\t\t\t\tconst g = this.get('global');\n\t\t\t\tthis[g ? 'globalPrefix' : 'localPrefix'] = prefix;\n\t\t\t},\n\t\t\tget: () => {\n\t\t\t\tconst g = this.get('global');\n\t\t\t\treturn g ? this.globalPrefix : this.localPrefix;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'globalPrefix', {\n\t\t\tenumerable: true,\n\t\t\tset: prefix => {\n\t\t\t\tthis.set('prefix', prefix);\n\t\t\t},\n\t\t\tget: () => {\n\t\t\t\treturn path.resolve(this.get('prefix'));\n\t\t\t}\n\t\t});\n\n\t\tlet p;\n\n\t\tObject.defineProperty(this, 'localPrefix', {\n\t\t\tenumerable: true,\n\t\t\tset: prefix => {\n\t\t\t\tp = prefix;\n\t\t\t},\n\t\t\tget: () => {\n\t\t\t\treturn p;\n\t\t\t}\n\t\t});\n\n\t\tif (Object.prototype.hasOwnProperty.call(cli, 'prefix')) {\n\t\t\tp = path.resolve(cli.prefix);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst prefix = util.findPrefix(process.cwd());\n\t\t\t\tp = prefix;\n\t\t\t} catch (error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn p;\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/load-cafile.js\n\tloadCAFile(file) {\n\t\tif (!file) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ca = readCAFileSync(file);\n\t\tif (ca) {\n\t\t\tthis.set('ca', ca);\n\t\t}\n\t}\n\n\t// https://github.com/npm/cli/blob/latest/lib/config/set-user.js\n\tloadUser() {\n\t\tconst defConf = this.root;\n\n\t\tif (this.get('global')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (process.env.SUDO_UID) {\n\t\t\tdefConf.user = Number(process.env.SUDO_UID);\n\t\t\treturn;\n\t\t}\n\n\t\tconst prefix = path.resolve(this.get('prefix'));\n\n\t\ttry {\n\t\t\tconst stats = fs.statSync(prefix);\n\t\t\tdefConf.user = stats.uid;\n\t\t} catch (error) {\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\nmodule.exports = Conf;\n","// Generated with `lib/make.js`\n'use strict';\nconst os = require('os');\nconst path = require('path');\n\nconst temp = os.tmpdir();\nconst uidOrPid = process.getuid ? process.getuid() : process.pid;\nconst hasUnicode = () => true;\nconst isWindows = process.platform === 'win32';\n\nconst osenv = {\n\teditor: () => process.env.EDITOR || process.env.VISUAL || (isWindows ? 'notepad.exe' : 'vi'),\n\tshell: () => isWindows ? (process.env.COMSPEC || 'cmd.exe') : (process.env.SHELL || '/bin/bash')\n};\n\nconst umask = {\n\tfromString: () => process.umask()\n};\n\nlet home = os.homedir();\n\nif (home) {\n\tprocess.env.HOME = home;\n} else {\n\thome = path.resolve(temp, 'npm-' + uidOrPid);\n}\n\nconst cacheExtra = process.platform === 'win32' ? 'npm-cache' : '.npm';\nconst cacheRoot = process.platform === 'win32' && process.env.APPDATA || home;\nconst cache = path.resolve(cacheRoot, cacheExtra);\n\nlet defaults;\nlet globalPrefix;\n\nObject.defineProperty(exports, 'defaults', {\n\tget: function () {\n\t\tif (defaults) return defaults;\n\n\t\tif (process.env.PREFIX) {\n\t\t\tglobalPrefix = process.env.PREFIX;\n\t\t} else if (process.platform === 'win32') {\n\t\t\t// c:\\node\\node.exe --> prefix=c:\\node\\\n\t\t\tglobalPrefix = path.dirname(process.execPath);\n\t\t} else {\n\t\t\t// /usr/local/bin/node --> prefix=/usr/local\n\t\t\tglobalPrefix = path.dirname(path.dirname(process.execPath)); // destdir only is respected on Unix\n\n\t\t\tif (process.env.DESTDIR) {\n\t\t\t\tglobalPrefix = path.join(process.env.DESTDIR, globalPrefix);\n\t\t\t}\n\t\t}\n\n\t\tdefaults = {\n\t\t\taccess: null,\n\t\t\t'allow-same-version': false,\n\t\t\t'always-auth': false,\n\t\t\talso: null,\n\t\t\taudit: true,\n\t\t\t'auth-type': 'legacy',\n\t\t\t'bin-links': true,\n\t\t\tbrowser: null,\n\t\t\tca: null,\n\t\t\tcafile: null,\n\t\t\tcache: cache,\n\t\t\t'cache-lock-stale': 60000,\n\t\t\t'cache-lock-retries': 10,\n\t\t\t'cache-lock-wait': 10000,\n\t\t\t'cache-max': Infinity,\n\t\t\t'cache-min': 10,\n\t\t\tcert: null,\n\t\t\tcidr: null,\n\t\t\tcolor: process.env.NO_COLOR == null,\n\t\t\tdepth: Infinity,\n\t\t\tdescription: true,\n\t\t\tdev: false,\n\t\t\t'dry-run': false,\n\t\t\teditor: osenv.editor(),\n\t\t\t'engine-strict': false,\n\t\t\tforce: false,\n\t\t\t'fetch-retries': 2,\n\t\t\t'fetch-retry-factor': 10,\n\t\t\t'fetch-retry-mintimeout': 10000,\n\t\t\t'fetch-retry-maxtimeout': 60000,\n\t\t\tgit: 'git',\n\t\t\t'git-tag-version': true,\n\t\t\t'commit-hooks': true,\n\t\t\tglobal: false,\n\t\t\tglobalconfig: path.resolve(globalPrefix, 'etc', 'npmrc'),\n\t\t\t'global-style': false,\n\t\t\tgroup: process.platform === 'win32' ? 0 : process.env.SUDO_GID || process.getgid && process.getgid(),\n\t\t\t'ham-it-up': false,\n\t\t\theading: 'npm',\n\t\t\t'if-present': false,\n\t\t\t'ignore-prepublish': false,\n\t\t\t'ignore-scripts': false,\n\t\t\t'init-module': path.resolve(home, '.npm-init.js'),\n\t\t\t'init-author-name': '',\n\t\t\t'init-author-email': '',\n\t\t\t'init-author-url': '',\n\t\t\t'init-version': '1.0.0',\n\t\t\t'init-license': 'ISC',\n\t\t\tjson: false,\n\t\t\tkey: null,\n\t\t\t'legacy-bundling': false,\n\t\t\tlink: false,\n\t\t\t'local-address': undefined,\n\t\t\tloglevel: 'notice',\n\t\t\tlogstream: process.stderr,\n\t\t\t'logs-max': 10,\n\t\t\tlong: false,\n\t\t\tmaxsockets: 50,\n\t\t\tmessage: '%s',\n\t\t\t'metrics-registry': null,\n\t\t\t'node-options': null,\n\t\t\t// We remove node-version to fix the issue described here: https://github.com/pnpm/pnpm/issues/4203#issuecomment-1133872769\n\t\t\t'offline': false,\n\t\t\t'onload-script': false,\n\t\t\tonly: null,\n\t\t\toptional: true,\n\t\t\totp: null,\n\t\t\t'package-lock': true,\n\t\t\t'package-lock-only': false,\n\t\t\tparseable: false,\n\t\t\t'prefer-offline': false,\n\t\t\t'prefer-online': false,\n\t\t\tprefix: globalPrefix,\n\t\t\tproduction: process.env.NODE_ENV === 'production',\n\t\t\t'progress': !process.env.TRAVIS && !process.env.CI,\n\t\t\tprovenance: false,\n\t\t\tproxy: null,\n\t\t\t'https-proxy': null,\n\t\t\t'no-proxy': null,\n\t\t\t'user-agent': 'npm/{npm-version} ' + 'node/{node-version} ' + '{platform} ' + '{arch}',\n\t\t\t'read-only': false,\n\t\t\t'rebuild-bundle': true,\n\t\t\tregistry: 'https://registry.npmjs.org/',\n\t\t\trollback: true,\n\t\t\tsave: true,\n\t\t\t'save-bundle': false,\n\t\t\t'save-dev': false,\n\t\t\t'save-exact': false,\n\t\t\t'save-optional': false,\n\t\t\t'save-prefix': '^',\n\t\t\t'save-prod': false,\n\t\t\tscope: '',\n\t\t\t'script-shell': null,\n\t\t\t'scripts-prepend-node-path': 'warn-only',\n\t\t\tsearchopts: '',\n\t\t\tsearchexclude: null,\n\t\t\tsearchlimit: 20,\n\t\t\tsearchstaleness: 15 * 60,\n\t\t\t'send-metrics': false,\n\t\t\tshell: osenv.shell(),\n\t\t\tshrinkwrap: true,\n\t\t\t'sign-git-tag': false,\n\t\t\t'sso-poll-frequency': 500,\n\t\t\t'sso-type': 'oauth',\n\t\t\t'strict-ssl': true,\n\t\t\ttag: 'latest',\n\t\t\t'tag-version-prefix': 'v',\n\t\t\ttiming: false,\n\t\t\ttmp: temp,\n\t\t\tunicode: hasUnicode(),\n\t\t\t'unsafe-perm': process.platform === 'win32' || process.platform === 'cygwin' || !(process.getuid && process.setuid && process.getgid && process.setgid) || process.getuid() !== 0,\n\t\t\tusage: false,\n\t\t\tuser: process.platform === 'win32' ? 0 : 'nobody',\n\t\t\tuserconfig: path.resolve(home, '.npmrc'),\n\t\t\tumask: process.umask ? process.umask() : umask.fromString('022'),\n\t\t\tversion: false,\n\t\t\tversions: false,\n\t\t\tviewer: process.platform === 'win32' ? 'browser' : 'man',\n\t\t\t_exit: true\n\t\t};\n\t\treturn defaults;\n\t}\n});\n","'use strict';\nconst path = require('path');\nconst Conf = require('./lib/conf');\nconst _defaults = require('./lib/defaults');\n\n// https://github.com/npm/cli/blob/latest/lib/config/core.js#L101-L200\nmodule.exports = (opts, types, defaults) => {\n\tconst conf = new Conf(Object.assign({}, _defaults.defaults, defaults), types);\n\n\tconf.add(Object.assign({}, opts), 'cli');\n\tconst warnings = [];\n\tlet failedToLoadBuiltInConfig = false;\n\n\tif (require.resolve.paths) {\n\t\tconst paths = require.resolve.paths('npm');\n\t\t// Assume that last path in resolve paths is builtin modules directory\n\t\tlet npmPath;\n\t\ttry {\n\t\t\tnpmPath = require.resolve('npm', {paths: paths.slice(-1)});\n\t\t} catch (error) {\n\t\t\t// Error will be thrown if module cannot be found.\n\t\t\t// Update the flag while loading builtin config failed.\n\t\t\tfailedToLoadBuiltInConfig = true;\n\t\t}\n\n\t\tif (npmPath) {\n\t\t\t/**\n\t\t\t * According to https://github.com/npm/cli/blob/86f5bdb91f7a5971953a5171d32d6eeda6a2e972/lib/npm.js#L258\n\t\t\t * and https://github.com/npm/cli/blob/86f5bdb91f7a5971953a5171d32d6eeda6a2e972/lib/config/core.js#L92\n\t\t\t */\n\t\t\twarnings.push(conf.addFile(path.resolve(path.dirname(npmPath), '..', 'npmrc'), 'builtin'));\n\t\t}\n\t}\n\n\tconf.addEnv();\n\tconf.loadPrefix();\n\n\tconst projectConf = path.resolve(conf.localPrefix, '.npmrc');\n\tconst userConf = conf.get('userconfig');\n\n\tif (!conf.get('global') && projectConf !== userConf) {\n\t\twarnings.push(conf.addFile(projectConf, 'project'));\n\t} else {\n\t\tconf.add({}, 'project');\n\t}\n\n\t// TODO: cover with tests that configs from workspace .npmrc have bigger priority\n\t// than the ones in userconfig\n\tif (conf.get('workspace-prefix') && conf.get('workspace-prefix') !== projectConf) {\n\t\tconst workspaceConf = path.resolve(conf.get('workspace-prefix'), '.npmrc');\n\t\twarnings.push(conf.addFile(workspaceConf, 'workspace'));\n\t}\n\n\twarnings.push(conf.addFile(conf.get('userconfig'), 'user'));\n\n\tif (conf.get('prefix')) {\n\t\tconst etc = path.resolve(conf.get('prefix'), 'etc');\n\t\tconf.root.globalconfig = path.resolve(etc, 'npmrc');\n\t\tconf.root.globalignorefile = path.resolve(etc, 'npmignore');\n\t}\n\n\twarnings.push(conf.addFile(conf.get('globalconfig'), 'global'));\n\tconf.loadUser();\n\n\tconst caFile = conf.get('cafile');\n\n\tif (caFile) {\n\t\tconf.loadCAFile(caFile);\n\t}\n\n\treturn {\n\t\tconfig: conf,\n\t\twarnings: warnings.filter(Boolean),\n\t\tfailedToLoadBuiltInConfig,\n\t};\n};\n\nObject.defineProperty(module.exports, 'defaults', {\n\tget() {\n\t\treturn _defaults.defaults;\n\t},\n\tenumerable: true\n})\n","const url = require('url')\nconst npmConf = require('@pnpm/npm-conf')\n\nconst tokenKey = ':_authToken'\nconst legacyTokenKey = ':_auth'\nconst userKey = ':username'\nconst passwordKey = ':_password'\n\nmodule.exports = function getRegistryAuthToken () {\n let checkUrl\n let options\n if (arguments.length >= 2) {\n checkUrl = arguments[0]\n options = Object.assign({}, arguments[1])\n } else if (typeof arguments[0] === 'string') {\n checkUrl = arguments[0]\n } else {\n options = Object.assign({}, arguments[0])\n }\n options = options || {}\n\n const providedNpmrc = options.npmrc\n options.npmrc = (options.npmrc ? {\n config: {\n get: (key) => providedNpmrc[key]\n }\n } : npmConf()).config\n\n checkUrl = checkUrl || options.npmrc.get('registry') || npmConf.defaults.registry\n return getRegistryAuthInfo(checkUrl, options) || getLegacyAuthInfo(options.npmrc)\n}\n\nfunction getRegistryAuthInfo (checkUrl, options) {\n const parsed = url.parse(checkUrl, false, true)\n let pathname\n\n while (pathname !== '/' && parsed.pathname !== pathname) {\n pathname = parsed.pathname || '/'\n\n const regUrl = '//' + parsed.host + pathname.replace(/\\/$/, '')\n const authInfo = getAuthInfoForUrl(regUrl, options.npmrc)\n if (authInfo) {\n return authInfo\n }\n\n // break if not recursive\n if (!options.recursive) {\n return /\\/$/.test(checkUrl)\n ? undefined\n : getRegistryAuthInfo(url.resolve(checkUrl, '.'), options)\n }\n\n parsed.pathname = url.resolve(normalizePath(pathname), '..') || '/'\n }\n\n return undefined\n}\n\nfunction getLegacyAuthInfo (npmrc) {\n if (!npmrc.get('_auth')) {\n return undefined\n }\n\n const token = replaceEnvironmentVariable(npmrc.get('_auth'))\n\n return { token: token, type: 'Basic' }\n}\n\nfunction normalizePath (path) {\n return path[path.length - 1] === '/' ? path : path + '/'\n}\n\nfunction getAuthInfoForUrl (regUrl, npmrc) {\n // try to get bearer token\n const bearerAuth = getBearerToken(npmrc.get(regUrl + tokenKey) || npmrc.get(regUrl + '/' + tokenKey))\n if (bearerAuth) {\n return bearerAuth\n }\n\n // try to get basic token\n const username = npmrc.get(regUrl + userKey) || npmrc.get(regUrl + '/' + userKey)\n const password = npmrc.get(regUrl + passwordKey) || npmrc.get(regUrl + '/' + passwordKey)\n const basicAuth = getTokenForUsernameAndPassword(username, password)\n if (basicAuth) {\n return basicAuth\n }\n\n const basicAuthWithToken = getLegacyAuthToken(npmrc.get(regUrl + legacyTokenKey) || npmrc.get(regUrl + '/' + legacyTokenKey))\n if (basicAuthWithToken) {\n return basicAuthWithToken\n }\n\n return undefined\n}\n\nfunction replaceEnvironmentVariable (token) {\n return token.replace(/^\\$\\{?([^}]*)\\}?$/, function (fullMatch, envVar) {\n return process.env[envVar]\n })\n}\n\nfunction getBearerToken (tok) {\n if (!tok) {\n return undefined\n }\n\n // check if bearer token is set as environment variable\n const token = replaceEnvironmentVariable(tok)\n\n return { token: token, type: 'Bearer' }\n}\n\nfunction getTokenForUsernameAndPassword (username, password) {\n if (!username || !password) {\n return undefined\n }\n\n // passwords are base64 encoded, so we need to decode it\n // See https://github.com/npm/npm/blob/v3.10.6/lib/config/set-credentials-by-uri.js#L26\n const pass = Buffer.from(replaceEnvironmentVariable(password), 'base64').toString('utf8')\n\n // a basic auth token is base64 encoded 'username:password'\n // See https://github.com/npm/npm/blob/v3.10.6/lib/config/get-credentials-by-uri.js#L70\n const token = Buffer.from(username + ':' + pass, 'utf8').toString('base64')\n\n // we found a basicToken token so let's exit the loop\n return {\n token: token,\n type: 'Basic',\n password: pass,\n username: username\n }\n}\n\nfunction getLegacyAuthToken (tok) {\n if (!tok) {\n return undefined\n }\n\n // check if legacy auth token is set as environment variable\n const token = replaceEnvironmentVariable(tok)\n\n return { token: token, type: 'Basic' }\n}\n","import {Agent as HttpAgent} from 'node:http';\nimport {Agent as HttpsAgent} from 'node:https';\nimport got from 'got';\nimport registryUrl from 'registry-url';\nimport registryAuthToken from 'registry-auth-token';\nimport semver from 'semver';\n\n// These agent options are chosen to match the npm client defaults and help with performance\n// See: `npm config get maxsockets` and #50\nconst agentOptions = {\n\tkeepAlive: true,\n\tmaxSockets: 50,\n};\n\nconst httpAgent = new HttpAgent(agentOptions);\nconst httpsAgent = new HttpsAgent(agentOptions);\n\nexport class PackageNotFoundError extends Error {\n\tconstructor(packageName) {\n\t\tsuper(`Package \\`${packageName}\\` could not be found`);\n\t\tthis.name = 'PackageNotFoundError';\n\t}\n}\n\nexport class VersionNotFoundError extends Error {\n\tconstructor(packageName, version) {\n\t\tsuper(`Version \\`${version}\\` for package \\`${packageName}\\` could not be found`);\n\t\tthis.name = 'VersionNotFoundError';\n\t}\n}\n\nexport default async function packageJson(packageName, options) {\n\toptions = {\n\t\tversion: 'latest',\n\t\t...options,\n\t};\n\n\tconst scope = packageName.split('/')[0];\n\tconst registryUrl_ = options.registryUrl || registryUrl(scope);\n\tconst packageUrl = new URL(encodeURIComponent(packageName).replace(/^%40/, '@'), registryUrl_);\n\tconst authInfo = registryAuthToken(registryUrl_.toString(), {recursive: true});\n\n\tconst headers = {\n\t\taccept: 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*',\n\t};\n\n\tif (options.fullMetadata) {\n\t\tdelete headers.accept;\n\t}\n\n\tif (authInfo) {\n\t\theaders.authorization = `${authInfo.type} ${authInfo.token}`;\n\t}\n\n\tconst gotOptions = {\n\t\theaders,\n\t\tagent: {\n\t\t\thttp: httpAgent,\n\t\t\thttps: httpsAgent,\n\t\t},\n\t};\n\n\tif (options.agent) {\n\t\tgotOptions.agent = options.agent;\n\t}\n\n\tlet data;\n\ttry {\n\t\tdata = await got(packageUrl, gotOptions).json();\n\t} catch (error) {\n\t\tif (error?.response?.statusCode === 404) {\n\t\t\tthrow new PackageNotFoundError(packageName);\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\tif (options.allVersions) {\n\t\treturn data;\n\t}\n\n\tlet {version} = options;\n\tconst versionError = new VersionNotFoundError(packageName, version);\n\n\tif (data['dist-tags'][version]) {\n\t\tconst time = data.time;\n\t\tdata = data.versions[data['dist-tags'][version]];\n\t\tdata.time = time;\n\t} else if (version) {\n\t\tif (!data.versions[version]) {\n\t\t\tconst versions = Object.keys(data.versions);\n\t\t\tversion = semver.maxSatisfying(versions, version);\n\n\t\t\tif (!version) {\n\t\t\t\tthrow versionError;\n\t\t\t}\n\t\t}\n\n\t\tconst time = data.time;\n\t\tdata = data.versions[version];\n\t\tdata.time = time;\n\n\t\tif (!data) {\n\t\t\tthrow versionError;\n\t\t}\n\t}\n\n\treturn data;\n}\n","import packageJson from 'package-json';\n\nexport default async function latestVersion(packageName, options) {\n\tconst {version} = await packageJson(packageName.toLowerCase(), options);\n\treturn version;\n}\n","import process from 'node:process';\n\nconst packageJson = process.env.npm_package_json;\nconst userAgent = process.env.npm_config_user_agent;\nconst isNpm6 = Boolean(userAgent && userAgent.startsWith('npm'));\nconst isNpm7 = Boolean(packageJson && packageJson.endsWith('package.json'));\n\nexport const isNpm = isNpm6 || isNpm7;\nexport const isYarn = Boolean(userAgent && userAgent.startsWith('yarn'));\nexport const isNpmOrYarn = isNpm || isYarn;\n","const { hasOwnProperty } = Object.prototype\n\nconst eol = typeof process !== 'undefined' &&\n process.platform === 'win32' ? '\\r\\n' : '\\n'\n\nconst encode = (obj, opt) => {\n const children = []\n let out = ''\n\n if (typeof opt === 'string') {\n opt = {\n section: opt,\n whitespace: false,\n }\n } else {\n opt = opt || Object.create(null)\n opt.whitespace = opt.whitespace === true\n }\n\n const separator = opt.whitespace ? ' = ' : '='\n\n for (const k of Object.keys(obj)) {\n const val = obj[k]\n if (val && Array.isArray(val)) {\n for (const item of val)\n out += safe(k + '[]') + separator + safe(item) + '\\n'\n } else if (val && typeof val === 'object')\n children.push(k)\n else\n out += safe(k) + separator + safe(val) + eol\n }\n\n if (opt.section && out.length)\n out = '[' + safe(opt.section) + ']' + eol + out\n\n for (const k of children) {\n const nk = dotSplit(k).join('\\\\.')\n const section = (opt.section ? opt.section + '.' : '') + nk\n const { whitespace } = opt\n const child = encode(obj[k], {\n section,\n whitespace,\n })\n if (out.length && child.length)\n out += eol\n\n out += child\n }\n\n return out\n}\n\nconst dotSplit = str =>\n str.replace(/\\1/g, '\\u0002LITERAL\\\\1LITERAL\\u0002')\n .replace(/\\\\\\./g, '\\u0001')\n .split(/\\./)\n .map(part =>\n part.replace(/\\1/g, '\\\\.')\n .replace(/\\2LITERAL\\\\1LITERAL\\2/g, '\\u0001'))\n\nconst decode = str => {\n const out = Object.create(null)\n let p = out\n let section = null\n // section |key = value\n const re = /^\\[([^\\]]*)\\]$|^([^=]+)(=(.*))?$/i\n const lines = str.split(/[\\r\\n]+/g)\n\n for (const line of lines) {\n if (!line || line.match(/^\\s*[;#]/))\n continue\n const match = line.match(re)\n if (!match)\n continue\n if (match[1] !== undefined) {\n section = unsafe(match[1])\n if (section === '__proto__') {\n // not allowed\n // keep parsing the section, but don't attach it.\n p = Object.create(null)\n continue\n }\n p = out[section] = out[section] || Object.create(null)\n continue\n }\n const keyRaw = unsafe(match[2])\n const isArray = keyRaw.length > 2 && keyRaw.slice(-2) === '[]'\n const key = isArray ? keyRaw.slice(0, -2) : keyRaw\n if (key === '__proto__')\n continue\n const valueRaw = match[3] ? unsafe(match[4]) : true\n const value = valueRaw === 'true' ||\n valueRaw === 'false' ||\n valueRaw === 'null' ? JSON.parse(valueRaw)\n : valueRaw\n\n // Convert keys with '[]' suffix to an array\n if (isArray) {\n if (!hasOwnProperty.call(p, key))\n p[key] = []\n else if (!Array.isArray(p[key]))\n p[key] = [p[key]]\n }\n\n // safeguard against resetting a previously defined\n // array by accidentally forgetting the brackets\n if (Array.isArray(p[key]))\n p[key].push(value)\n else\n p[key] = value\n }\n\n // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n // use a filter to return the keys that have to be deleted.\n const remove = []\n for (const k of Object.keys(out)) {\n if (!hasOwnProperty.call(out, k) ||\n typeof out[k] !== 'object' ||\n Array.isArray(out[k]))\n continue\n\n // see if the parent section is also an object.\n // if so, add it to that, and mark this one for deletion\n const parts = dotSplit(k)\n let p = out\n const l = parts.pop()\n const nl = l.replace(/\\\\\\./g, '.')\n for (const part of parts) {\n if (part === '__proto__')\n continue\n if (!hasOwnProperty.call(p, part) || typeof p[part] !== 'object')\n p[part] = Object.create(null)\n p = p[part]\n }\n if (p === out && nl === l)\n continue\n\n p[nl] = out[k]\n remove.push(k)\n }\n for (const del of remove)\n delete out[del]\n\n return out\n}\n\nconst isQuoted = val =>\n (val.charAt(0) === '\"' && val.slice(-1) === '\"') ||\n (val.charAt(0) === \"'\" && val.slice(-1) === \"'\")\n\nconst safe = val =>\n (typeof val !== 'string' ||\n val.match(/[=\\r\\n]/) ||\n val.match(/^\\[/) ||\n (val.length > 1 &&\n isQuoted(val)) ||\n val !== val.trim())\n ? JSON.stringify(val)\n : val.replace(/;/g, '\\\\;').replace(/#/g, '\\\\#')\n\nconst unsafe = (val, doUnesc) => {\n val = (val || '').trim()\n if (isQuoted(val)) {\n // remove the single quotes before calling JSON.parse\n if (val.charAt(0) === \"'\")\n val = val.substr(1, val.length - 2)\n\n try {\n val = JSON.parse(val)\n } catch (_) {}\n } else {\n // walk the val to find the first not-escaped ; character\n let esc = false\n let unesc = ''\n for (let i = 0, l = val.length; i < l; i++) {\n const c = val.charAt(i)\n if (esc) {\n if ('\\\\;#'.indexOf(c) !== -1)\n unesc += c\n else\n unesc += '\\\\' + c\n\n esc = false\n } else if (';#'.indexOf(c) !== -1)\n break\n else if (c === '\\\\')\n esc = true\n else\n unesc += c\n }\n if (esc)\n unesc += '\\\\'\n\n return unesc.trim()\n }\n return val\n}\n\nmodule.exports = {\n parse: decode,\n decode,\n stringify: encode,\n encode,\n safe,\n unsafe,\n}\n","'use strict';\nconst path = require('path');\nconst os = require('os');\nconst fs = require('fs');\nconst ini = require('ini');\n\nconst isWindows = process.platform === 'win32';\n\nconst readRc = filePath => {\n\ttry {\n\t\treturn ini.parse(fs.readFileSync(filePath, 'utf8')).prefix;\n\t} catch {}\n};\n\nconst getEnvNpmPrefix = () => {\n\t// TODO: Remove the `.reduce` call.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn Object.keys(process.env).reduce((prefix, name) => {\n\t\treturn /^npm_config_prefix$/i.test(name) ? process.env[name] : prefix;\n\t}, undefined);\n};\n\nconst getGlobalNpmrc = () => {\n\tif (isWindows && process.env.APPDATA) {\n\t\t// Hardcoded contents of `c:\\Program Files\\nodejs\\node_modules\\npm\\npmrc`\n\t\treturn path.join(process.env.APPDATA, '/npm/etc/npmrc');\n\t}\n\n\t// Homebrew special case: `$(brew --prefix)/lib/node_modules/npm/npmrc`\n\tif (process.execPath.includes('/Cellar/node')) {\n\t\tconst homebrewPrefix = process.execPath.slice(0, process.execPath.indexOf('/Cellar/node'));\n\t\treturn path.join(homebrewPrefix, '/lib/node_modules/npm/npmrc');\n\t}\n\n\tif (process.execPath.endsWith('/bin/node')) {\n\t\tconst installDir = path.dirname(path.dirname(process.execPath));\n\t\treturn path.join(installDir, '/etc/npmrc');\n\t}\n};\n\nconst getDefaultNpmPrefix = () => {\n\tif (isWindows) {\n\t\tconst {APPDATA} = process.env;\n\t\t// `c:\\node\\node.exe` → `prefix=c:\\node\\`\n\t\treturn APPDATA ? path.join(APPDATA, 'npm') : path.dirname(process.execPath);\n\t}\n\n\t// `/usr/local/bin/node` → `prefix=/usr/local`\n\treturn path.dirname(path.dirname(process.execPath));\n};\n\nconst getNpmPrefix = () => {\n\tconst envPrefix = getEnvNpmPrefix();\n\tif (envPrefix) {\n\t\treturn envPrefix;\n\t}\n\n\tconst homePrefix = readRc(path.join(os.homedir(), '.npmrc'));\n\tif (homePrefix) {\n\t\treturn homePrefix;\n\t}\n\n\tif (process.env.PREFIX) {\n\t\treturn process.env.PREFIX;\n\t}\n\n\tconst globalPrefix = readRc(getGlobalNpmrc());\n\tif (globalPrefix) {\n\t\treturn globalPrefix;\n\t}\n\n\treturn getDefaultNpmPrefix();\n};\n\nconst npmPrefix = path.resolve(getNpmPrefix());\n\nconst getYarnWindowsDirectory = () => {\n\tif (isWindows && process.env.LOCALAPPDATA) {\n\t\tconst dir = path.join(process.env.LOCALAPPDATA, 'Yarn');\n\t\tif (fs.existsSync(dir)) {\n\t\t\treturn dir;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nconst getYarnPrefix = () => {\n\tif (process.env.PREFIX) {\n\t\treturn process.env.PREFIX;\n\t}\n\n\tconst windowsPrefix = getYarnWindowsDirectory();\n\tif (windowsPrefix) {\n\t\treturn windowsPrefix;\n\t}\n\n\tconst configPrefix = path.join(os.homedir(), '.config/yarn');\n\tif (fs.existsSync(configPrefix)) {\n\t\treturn configPrefix;\n\t}\n\n\tconst homePrefix = path.join(os.homedir(), '.yarn-config');\n\tif (fs.existsSync(homePrefix)) {\n\t\treturn homePrefix;\n\t}\n\n\t// Yarn supports the npm conventions but the inverse is not true\n\treturn npmPrefix;\n};\n\nexports.npm = {};\nexports.npm.prefix = npmPrefix;\nexports.npm.packages = path.join(npmPrefix, isWindows ? 'node_modules' : 'lib/node_modules');\nexports.npm.binaries = isWindows ? npmPrefix : path.join(npmPrefix, 'bin');\n\nconst yarnPrefix = path.resolve(getYarnPrefix());\nexports.yarn = {};\nexports.yarn.prefix = yarnPrefix;\nexports.yarn.packages = path.join(yarnPrefix, getYarnWindowsDirectory() ? 'Data/global/node_modules' : 'global/node_modules');\nexports.yarn.binaries = path.join(exports.yarn.packages, '.bin');\n","'use strict';\nconst path = require('path');\n\nmodule.exports = (childPath, parentPath) => {\n\tconst relation = path.relative(parentPath, childPath);\n\treturn Boolean(\n\t\trelation &&\n\t\trelation !== '..' &&\n\t\t!relation.startsWith(`..${path.sep}`) &&\n\t\trelation !== path.resolve(childPath)\n\t);\n};\n","'use strict';\nconst fs = require('fs');\nconst globalDirs = require('global-dirs');\nconst isPathInside = require('is-path-inside');\n\nmodule.exports = (() => {\n\ttry {\n\t\treturn (\n\t\t\tisPathInside(__dirname, globalDirs.yarn.packages) ||\n\t\t\tisPathInside(__dirname, fs.realpathSync(globalDirs.npm.packages))\n\t\t);\n\t} catch {\n\t\treturn false;\n\t}\n})();\n","var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of string) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (codePoint >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\n","import stringWidth from 'string-width';\n\nexport default function widestLine(string) {\n\tlet lineWidth = 0;\n\n\tfor (const line of string.split('\\n')) {\n\t\tlineWidth = Math.max(lineWidth, stringWidth(line));\n\t}\n\n\treturn lineWidth;\n}\n","'use strict';\nconst cliBoxes = require('./boxes.json');\n\nmodule.exports = cliBoxes;\n// TODO: Remove this for the next major release\nmodule.exports.default = cliBoxes;\n","const UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUppercase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\tlet isLastLastCharPreserved = false;\n\n\tfor (let index = 0; index < string.length; index++) {\n\t\tconst character = string[index];\n\t\tisLastLastCharPreserved = index > 2 ? string[index - 3] === '-' : true;\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, index) + '-' + string.slice(index);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\tindex++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character) && (!isLastLastCharPreserved || preserveConsecutiveUppercase)) {\n\t\t\tstring = string.slice(0, index - 1) + '-' + string.slice(index - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nexport default function camelCase(input, options) {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false\n\t\t? string => string.toLowerCase()\n\t\t: string => string.toLocaleLowerCase(options.locale);\n\n\tconst toUpperCase = options.locale === false\n\t\t? string => string.toUpperCase()\n\t\t: string => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\tif (SEPARATORS.test(input)) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase, options.preserveConsecutiveUppercase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\tinput = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input, toLowerCase) : toLowerCase(input);\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n}\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n","'use strict'\n\nconst stringWidth = require('string-width')\n\nfunction ansiAlign (text, opts) {\n if (!text) return text\n\n opts = opts || {}\n const align = opts.align || 'center'\n\n // short-circuit `align: 'left'` as no-op\n if (align === 'left') return text\n\n const split = opts.split || '\\n'\n const pad = opts.pad || ' '\n const widthDiffFn = align !== 'right' ? halfDiff : fullDiff\n\n let returnString = false\n if (!Array.isArray(text)) {\n returnString = true\n text = String(text).split(split)\n }\n\n let width\n let maxWidth = 0\n text = text.map(function (str) {\n str = String(str)\n width = stringWidth(str)\n maxWidth = Math.max(width, maxWidth)\n return {\n str,\n width\n }\n }).map(function (obj) {\n return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str\n })\n\n return returnString ? text.join(split) : text\n}\n\nansiAlign.left = function left (text) {\n return ansiAlign(text, { align: 'left' })\n}\n\nansiAlign.center = function center (text) {\n return ansiAlign(text, { align: 'center' })\n}\n\nansiAlign.right = function right (text) {\n return ansiAlign(text, { align: 'right' })\n}\n\nmodule.exports = ansiAlign\n\nfunction halfDiff (maxWidth, curWidth) {\n return Math.floor((maxWidth - curWidth) / 2)\n}\n\nfunction fullDiff (maxWidth, curWidth) {\n return maxWidth - curWidth\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","import process from 'node:process';\nimport stringWidth from 'string-width';\nimport chalk from 'chalk';\nimport widestLine from 'widest-line';\nimport cliBoxes from 'cli-boxes';\nimport camelCase from 'camelcase';\nimport ansiAlign from 'ansi-align';\nimport wrapAnsi from 'wrap-ansi';\n\nconst NEWLINE = '\\n';\nconst PAD = ' ';\nconst NONE = 'none';\n\nconst terminalColumns = () => {\n\tconst {env, stdout, stderr} = process;\n\n\tif (stdout?.columns) {\n\t\treturn stdout.columns;\n\t}\n\n\tif (stderr?.columns) {\n\t\treturn stderr.columns;\n\t}\n\n\tif (env.COLUMNS) {\n\t\treturn Number.parseInt(env.COLUMNS, 10);\n\t}\n\n\treturn 80;\n};\n\nconst getObject = detail => typeof detail === 'number' ? {\n\ttop: detail,\n\tright: detail * 3,\n\tbottom: detail,\n\tleft: detail * 3,\n} : {\n\ttop: 0,\n\tright: 0,\n\tbottom: 0,\n\tleft: 0,\n\t...detail,\n};\n\nconst getBorderWidth = borderStyle => borderStyle === NONE ? 0 : 2;\n\nconst getBorderChars = borderStyle => {\n\tconst sides = [\n\t\t'topLeft',\n\t\t'topRight',\n\t\t'bottomRight',\n\t\t'bottomLeft',\n\t\t'left',\n\t\t'right',\n\t\t'top',\n\t\t'bottom',\n\t];\n\n\tlet characters;\n\n\t// Create empty border style\n\tif (borderStyle === NONE) {\n\t\tborderStyle = {};\n\t\tfor (const side of sides) {\n\t\t\tborderStyle[side] = '';\n\t\t}\n\t}\n\n\tif (typeof borderStyle === 'string') {\n\t\tcharacters = cliBoxes[borderStyle];\n\n\t\tif (!characters) {\n\t\t\tthrow new TypeError(`Invalid border style: ${borderStyle}`);\n\t\t}\n\t} else {\n\t\t// Ensure retro-compatibility\n\t\tif (typeof borderStyle?.vertical === 'string') {\n\t\t\tborderStyle.left = borderStyle.vertical;\n\t\t\tborderStyle.right = borderStyle.vertical;\n\t\t}\n\n\t\t// Ensure retro-compatibility\n\t\tif (typeof borderStyle?.horizontal === 'string') {\n\t\t\tborderStyle.top = borderStyle.horizontal;\n\t\t\tborderStyle.bottom = borderStyle.horizontal;\n\t\t}\n\n\t\tfor (const side of sides) {\n\t\t\tif (borderStyle[side] === null || typeof borderStyle[side] !== 'string') {\n\t\t\t\tthrow new TypeError(`Invalid border style: ${side}`);\n\t\t\t}\n\t\t}\n\n\t\tcharacters = borderStyle;\n\t}\n\n\treturn characters;\n};\n\nconst makeTitle = (text, horizontal, alignment) => {\n\tlet title = '';\n\n\tconst textWidth = stringWidth(text);\n\n\tswitch (alignment) {\n\t\tcase 'left': {\n\t\t\ttitle = text + horizontal.slice(textWidth);\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'right': {\n\t\t\ttitle = horizontal.slice(textWidth) + text;\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\thorizontal = horizontal.slice(textWidth);\n\n\t\t\tif (horizontal.length % 2 === 1) { // This is needed in case the length is odd\n\t\t\t\thorizontal = horizontal.slice(Math.floor(horizontal.length / 2));\n\t\t\t\ttitle = horizontal.slice(1) + text + horizontal; // We reduce the left part of one character to avoid the bar to go beyond its limit\n\t\t\t} else {\n\t\t\t\thorizontal = horizontal.slice(horizontal.length / 2);\n\t\t\t\ttitle = horizontal + text + horizontal;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn title;\n};\n\nconst makeContentText = (text, {padding, width, textAlignment, height}) => {\n\ttext = ansiAlign(text, {align: textAlignment});\n\tlet lines = text.split(NEWLINE);\n\tconst textWidth = widestLine(text);\n\n\tconst max = width - padding.left - padding.right;\n\n\tif (textWidth > max) {\n\t\tconst newLines = [];\n\t\tfor (const line of lines) {\n\t\t\tconst createdLines = wrapAnsi(line, max, {hard: true});\n\t\t\tconst alignedLines = ansiAlign(createdLines, {align: textAlignment});\n\t\t\tconst alignedLinesArray = alignedLines.split('\\n');\n\t\t\tconst longestLength = Math.max(...alignedLinesArray.map(s => stringWidth(s)));\n\n\t\t\tfor (const alignedLine of alignedLinesArray) {\n\t\t\t\tlet paddedLine;\n\t\t\t\tswitch (textAlignment) {\n\t\t\t\t\tcase 'center': {\n\t\t\t\t\t\tpaddedLine = PAD.repeat((max - longestLength) / 2) + alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'right': {\n\t\t\t\t\t\tpaddedLine = PAD.repeat(max - longestLength) + alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tpaddedLine = alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnewLines.push(paddedLine);\n\t\t\t}\n\t\t}\n\n\t\tlines = newLines;\n\t}\n\n\tif (textAlignment === 'center' && textWidth < max) {\n\t\tlines = lines.map(line => PAD.repeat((max - textWidth) / 2) + line);\n\t} else if (textAlignment === 'right' && textWidth < max) {\n\t\tlines = lines.map(line => PAD.repeat(max - textWidth) + line);\n\t}\n\n\tconst paddingLeft = PAD.repeat(padding.left);\n\tconst paddingRight = PAD.repeat(padding.right);\n\n\tlines = lines.map(line => paddingLeft + line + paddingRight);\n\n\tlines = lines.map(line => {\n\t\tif (width - stringWidth(line) > 0) {\n\t\t\tswitch (textAlignment) {\n\t\t\t\tcase 'center': {\n\t\t\t\t\treturn line + PAD.repeat(width - stringWidth(line));\n\t\t\t\t}\n\n\t\t\t\tcase 'right': {\n\t\t\t\t\treturn line + PAD.repeat(width - stringWidth(line));\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn line + PAD.repeat(width - stringWidth(line));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn line;\n\t});\n\n\tif (padding.top > 0) {\n\t\tlines = [...Array.from({length: padding.top}).fill(PAD.repeat(width)), ...lines];\n\t}\n\n\tif (padding.bottom > 0) {\n\t\tlines = [...lines, ...Array.from({length: padding.bottom}).fill(PAD.repeat(width))];\n\t}\n\n\tif (height && lines.length > height) {\n\t\tlines = lines.slice(0, height);\n\t} else if (height && lines.length < height) {\n\t\tlines = [...lines, ...Array.from({length: height - lines.length}).fill(PAD.repeat(width))];\n\t}\n\n\treturn lines.join(NEWLINE);\n};\n\nconst boxContent = (content, contentWidth, options) => {\n\tconst colorizeBorder = border => {\n\t\tconst newBorder = options.borderColor ? getColorFn(options.borderColor)(border) : border;\n\t\treturn options.dimBorder ? chalk.dim(newBorder) : newBorder;\n\t};\n\n\tconst colorizeContent = content => options.backgroundColor ? getBGColorFn(options.backgroundColor)(content) : content;\n\n\tconst chars = getBorderChars(options.borderStyle);\n\tconst columns = terminalColumns();\n\tlet marginLeft = PAD.repeat(options.margin.left);\n\n\tif (options.float === 'center') {\n\t\tconst marginWidth = Math.max((columns - contentWidth - getBorderWidth(options.borderStyle)) / 2, 0);\n\t\tmarginLeft = PAD.repeat(marginWidth);\n\t} else if (options.float === 'right') {\n\t\tconst marginWidth = Math.max(columns - contentWidth - options.margin.right - getBorderWidth(options.borderStyle), 0);\n\t\tmarginLeft = PAD.repeat(marginWidth);\n\t}\n\n\tlet result = '';\n\n\tif (options.margin.top) {\n\t\tresult += NEWLINE.repeat(options.margin.top);\n\t}\n\n\tif (options.borderStyle !== NONE || options.title) {\n\t\tresult += colorizeBorder(marginLeft + chars.topLeft + (options.title ? makeTitle(options.title, chars.top.repeat(contentWidth), options.titleAlignment) : chars.top.repeat(contentWidth)) + chars.topRight) + NEWLINE;\n\t}\n\n\tconst lines = content.split(NEWLINE);\n\n\tresult += lines.map(line => marginLeft + colorizeBorder(chars.left) + colorizeContent(line) + colorizeBorder(chars.right)).join(NEWLINE);\n\n\tif (options.borderStyle !== NONE) {\n\t\tresult += NEWLINE + colorizeBorder(marginLeft + chars.bottomLeft + chars.bottom.repeat(contentWidth) + chars.bottomRight);\n\t}\n\n\tif (options.margin.bottom) {\n\t\tresult += NEWLINE.repeat(options.margin.bottom);\n\t}\n\n\treturn result;\n};\n\nconst sanitizeOptions = options => {\n\t// If fullscreen is enabled, max-out unspecified width/height\n\tif (options.fullscreen && process?.stdout) {\n\t\tlet newDimensions = [process.stdout.columns, process.stdout.rows];\n\n\t\tif (typeof options.fullscreen === 'function') {\n\t\t\tnewDimensions = options.fullscreen(...newDimensions);\n\t\t}\n\n\t\tif (!options.width) {\n\t\t\toptions.width = newDimensions[0];\n\t\t}\n\n\t\tif (!options.height) {\n\t\t\toptions.height = newDimensions[1];\n\t\t}\n\t}\n\n\t// If width is provided, make sure it's not below 1\n\tif (options.width) {\n\t\toptions.width = Math.max(1, options.width - getBorderWidth(options.borderStyle));\n\t}\n\n\t// If height is provided, make sure it's not below 1\n\tif (options.height) {\n\t\toptions.height = Math.max(1, options.height - getBorderWidth(options.borderStyle));\n\t}\n\n\treturn options;\n};\n\nconst formatTitle = (title, borderStyle) => borderStyle === NONE ? title : ` ${title} `;\n\nconst determineDimensions = (text, options) => {\n\toptions = sanitizeOptions(options);\n\tconst widthOverride = options.width !== undefined;\n\tconst columns = terminalColumns();\n\tconst borderWidth = getBorderWidth(options.borderStyle);\n\tconst maxWidth = columns - options.margin.left - options.margin.right - borderWidth;\n\n\tconst widest = widestLine(wrapAnsi(text, columns - borderWidth, {hard: true, trim: false})) + options.padding.left + options.padding.right;\n\n\t// If title and width are provided, title adheres to fixed width\n\tif (options.title && widthOverride) {\n\t\toptions.title = options.title.slice(0, Math.max(0, options.width - 2));\n\t\tif (options.title) {\n\t\t\toptions.title = formatTitle(options.title, options.borderStyle);\n\t\t}\n\t} else if (options.title) {\n\t\toptions.title = options.title.slice(0, Math.max(0, maxWidth - 2));\n\n\t\t// Recheck if title isn't empty now\n\t\tif (options.title) {\n\t\t\toptions.title = formatTitle(options.title, options.borderStyle);\n\t\t\t// If the title is larger than content, box adheres to title width\n\t\t\tif (stringWidth(options.title) > widest) {\n\t\t\t\toptions.width = stringWidth(options.title);\n\t\t\t}\n\t\t}\n\t}\n\n\t// If fixed width is provided, use it or content width as reference\n\toptions.width = options.width ? options.width : widest;\n\n\tif (!widthOverride) {\n\t\tif ((options.margin.left && options.margin.right) && options.width > maxWidth) {\n\t\t\t// Let's assume we have margins: left = 3, right = 5, in total = 8\n\t\t\tconst spaceForMargins = columns - options.width - borderWidth;\n\t\t\t// Let's assume we have space = 4\n\t\t\tconst multiplier = spaceForMargins / (options.margin.left + options.margin.right);\n\t\t\t// Here: multiplier = 4/8 = 0.5\n\t\t\toptions.margin.left = Math.max(0, Math.floor(options.margin.left * multiplier));\n\t\t\toptions.margin.right = Math.max(0, Math.floor(options.margin.right * multiplier));\n\t\t\t// Left: 3 * 0.5 = 1.5 -> 1\n\t\t\t// Right: 6 * 0.5 = 3\n\t\t}\n\n\t\t// Re-cap width considering the margins after shrinking\n\t\toptions.width = Math.min(options.width, columns - borderWidth - options.margin.left - options.margin.right);\n\t}\n\n\t// Prevent padding overflow\n\tif (options.width - (options.padding.left + options.padding.right) <= 0) {\n\t\toptions.padding.left = 0;\n\t\toptions.padding.right = 0;\n\t}\n\n\tif (options.height && options.height - (options.padding.top + options.padding.bottom) <= 0) {\n\t\toptions.padding.top = 0;\n\t\toptions.padding.bottom = 0;\n\t}\n\n\treturn options;\n};\n\nconst isHex = color => color.match(/^#(?:[0-f]{3}){1,2}$/i);\nconst isColorValid = color => typeof color === 'string' && (chalk[color] ?? isHex(color));\nconst getColorFn = color => isHex(color) ? chalk.hex(color) : chalk[color];\nconst getBGColorFn = color => isHex(color) ? chalk.bgHex(color) : chalk[camelCase(['bg', color])];\n\nexport default function boxen(text, options) {\n\toptions = {\n\t\tpadding: 0,\n\t\tborderStyle: 'single',\n\t\tdimBorder: false,\n\t\ttextAlignment: 'left',\n\t\tfloat: 'left',\n\t\ttitleAlignment: 'left',\n\t\t...options,\n\t};\n\n\t// This option is deprecated\n\tif (options.align) {\n\t\toptions.textAlignment = options.align;\n\t}\n\n\tif (options.borderColor && !isColorValid(options.borderColor)) {\n\t\tthrow new Error(`${options.borderColor} is not a valid borderColor`);\n\t}\n\n\tif (options.backgroundColor && !isColorValid(options.backgroundColor)) {\n\t\tthrow new Error(`${options.backgroundColor} is not a valid backgroundColor`);\n\t}\n\n\toptions.padding = getObject(options.padding);\n\toptions.margin = getObject(options.margin);\n\n\toptions = determineDimensions(text, options);\n\n\ttext = makeContentText(text, options);\n\n\treturn boxContent(text, options.width, options);\n}\n\nexport {default as _borderStyles} from 'cli-boxes';\n","import {env} from 'node:process';\n\nconst isInCi = env.CI !== '0'\n\t&& env.CI !== 'false'\n\t&& (\n\t\t'CI' in env\n\t\t\t|| 'CONTINUOUS_INTEGRATION' in env\n\t\t\t|| Object.keys(env).some(key => key.startsWith('CI_'))\n\t);\n\nexport default isInCi;\n","const _htmlEscape = string => string\n\t.replace(/&/g, '&amp;')\n\t.replace(/\"/g, '&quot;')\n\t.replace(/'/g, '&#39;')\n\t.replace(/</g, '&lt;')\n\t.replace(/>/g, '&gt;');\n\nconst _htmlUnescape = htmlString => htmlString\n\t.replace(/&gt;/g, '>')\n\t.replace(/&lt;/g, '<')\n\t.replace(/&#0?39;/g, '\\'')\n\t.replace(/&quot;/g, '\"')\n\t.replace(/&amp;/g, '&');\n\nexport function htmlEscape(strings, ...values) {\n\tif (typeof strings === 'string') {\n\t\treturn _htmlEscape(strings);\n\t}\n\n\tlet output = strings[0];\n\tfor (const [index, value] of values.entries()) {\n\t\toutput = output + _htmlEscape(String(value)) + strings[index + 1];\n\t}\n\n\treturn output;\n}\n\nexport function htmlUnescape(strings, ...values) {\n\tif (typeof strings === 'string') {\n\t\treturn _htmlUnescape(strings);\n\t}\n\n\tlet output = strings[0];\n\tfor (const [index, value] of values.entries()) {\n\t\toutput = output + _htmlUnescape(String(value)) + strings[index + 1];\n\t}\n\n\treturn output;\n}\n","import {htmlEscape} from 'escape-goat';\n\nexport class MissingValueError extends Error {\n\tconstructor(key) {\n\t\tsuper(`Missing a value for ${key ? `the placeholder: ${key}` : 'a placeholder'}`, key);\n\t\tthis.name = 'MissingValueError';\n\t\tthis.key = key;\n\t}\n}\n\nexport default function pupa(template, data, {ignoreMissing = false, transform = ({value}) => value} = {}) {\n\tif (typeof template !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\` in the first argument, got \\`${typeof template}\\``);\n\t}\n\n\tif (typeof data !== 'object') {\n\t\tthrow new TypeError(`Expected an \\`object\\` or \\`Array\\` in the second argument, got \\`${typeof data}\\``);\n\t}\n\n\tconst replace = (placeholder, key) => {\n\t\tlet value = data;\n\t\tfor (const property of key.split('.')) {\n\t\t\tvalue = value ? value[property] : undefined;\n\t\t}\n\n\t\tconst transformedValue = transform({value, key});\n\t\tif (transformedValue === undefined) {\n\t\t\tif (ignoreMissing) {\n\t\t\t\treturn placeholder;\n\t\t\t}\n\n\t\t\tthrow new MissingValueError(key);\n\t\t}\n\n\t\treturn String(transformedValue);\n\t};\n\n\tconst composeHtmlEscape = replacer => (...args) => htmlEscape(replacer(...args));\n\n\t// The regex tries to match either a number inside `{{ }}` or a valid JS identifier or key path.\n\tconst doubleBraceRegex = /{{(\\d+|[a-z$_][\\w\\-$]*?(?:\\.[\\w\\-$]*?)*?)}}/gi;\n\n\tif (doubleBraceRegex.test(template)) {\n\t\ttemplate = template.replace(doubleBraceRegex, composeHtmlEscape(replace));\n\t}\n\n\tconst braceRegex = /{(\\d+|[a-z$_][\\w\\-$]*?(?:\\.[\\w\\-$]*?)*?)}/gi;\n\n\treturn template.replace(braceRegex, replace);\n}\n","import process from 'node:process';\nimport {spawn} from 'node:child_process';\nimport {fileURLToPath} from 'node:url';\nimport path from 'node:path';\nimport {format} from 'node:util';\nimport ConfigStore from 'configstore';\nimport chalk from 'chalk';\nimport semver from 'semver';\nimport semverDiff from 'semver-diff';\nimport latestVersion from 'latest-version';\nimport {isNpmOrYarn} from 'is-npm';\nimport isInstalledGlobally from 'is-installed-globally';\nimport boxen from 'boxen';\nimport {xdgConfig} from 'xdg-basedir';\nimport isInCi from 'is-in-ci';\nimport pupa from 'pupa';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst ONE_DAY = 1000 * 60 * 60 * 24;\n\nexport default class UpdateNotifier {\n\t// Public\n\tconfig;\n\tupdate;\n\n\t// Semi-private (used for tests)\n\t_packageName;\n\t_shouldNotifyInNpmScript;\n\n\t#options;\n\t#packageVersion;\n\t#updateCheckInterval;\n\t#isDisabled;\n\n\tconstructor(options = {}) {\n\t\tthis.#options = options;\n\t\toptions.pkg = options.pkg ?? {};\n\t\toptions.distTag = options.distTag ?? 'latest';\n\n\t\t// Reduce pkg to the essential keys. with fallback to deprecated options\n\t\t// TODO: Remove deprecated options at some point far into the future\n\t\toptions.pkg = {\n\t\t\tname: options.pkg.name ?? options.packageName,\n\t\t\tversion: options.pkg.version ?? options.packageVersion,\n\t\t};\n\n\t\tif (!options.pkg.name || !options.pkg.version) {\n\t\t\tthrow new Error('pkg.name and pkg.version required');\n\t\t}\n\n\t\tthis._packageName = options.pkg.name;\n\t\tthis.#packageVersion = options.pkg.version;\n\t\tthis.#updateCheckInterval = typeof options.updateCheckInterval === 'number' ? options.updateCheckInterval : ONE_DAY;\n\t\tthis.#isDisabled = 'NO_UPDATE_NOTIFIER' in process.env\n\t\t\t|| process.env.NODE_ENV === 'test'\n\t\t\t|| process.argv.includes('--no-update-notifier')\n\t\t\t|| isInCi;\n\t\tthis._shouldNotifyInNpmScript = options.shouldNotifyInNpmScript;\n\n\t\tif (!this.#isDisabled) {\n\t\t\ttry {\n\t\t\t\tthis.config = new ConfigStore(`update-notifier-${this._packageName}`, {\n\t\t\t\t\toptOut: false,\n\t\t\t\t\t// Init with the current time so the first check is only\n\t\t\t\t\t// after the set interval, so not to bother users right away\n\t\t\t\t\tlastUpdateCheck: Date.now(),\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// Expecting error code EACCES or EPERM\n\t\t\t\tconst message\n\t\t\t\t\t= chalk.yellow(format(' %s update check failed ', options.pkg.name))\n\t\t\t\t\t+ format('\\n Try running with %s or get access ', chalk.cyan('sudo'))\n\t\t\t\t\t+ '\\n to the local update config store via \\n'\n\t\t\t\t\t+ chalk.cyan(format(' sudo chown -R $USER:$(id -gn $USER) %s ', xdgConfig));\n\n\t\t\t\tprocess.on('exit', () => {\n\t\t\t\t\tconsole.error(boxen(message, {textAlignment: 'center'}));\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tcheck() {\n\t\tif (\n\t\t\t!this.config\n\t\t\t|| this.config.get('optOut')\n\t\t\t|| this.#isDisabled\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.update = this.config.get('update');\n\n\t\tif (this.update) {\n\t\t\t// Use the real latest version instead of the cached one\n\t\t\tthis.update.current = this.#packageVersion;\n\n\t\t\t// Clear cached information\n\t\t\tthis.config.delete('update');\n\t\t}\n\n\t\t// Only check for updates on a set interval\n\t\tif (Date.now() - this.config.get('lastUpdateCheck') < this.#updateCheckInterval) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Spawn a detached process, passing the options as an environment property\n\t\tspawn(process.execPath, [path.join(__dirname, 'check.js'), JSON.stringify(this.#options)], {\n\t\t\tdetached: true,\n\t\t\tstdio: 'ignore',\n\t\t}).unref();\n\t}\n\n\tasync fetchInfo() {\n\t\tconst {distTag} = this.#options;\n\t\tconst latest = await latestVersion(this._packageName, {version: distTag});\n\n\t\treturn {\n\t\t\tlatest,\n\t\t\tcurrent: this.#packageVersion,\n\t\t\ttype: semverDiff(this.#packageVersion, latest) ?? distTag,\n\t\t\tname: this._packageName,\n\t\t};\n\t}\n\n\tnotify(options) {\n\t\tconst suppressForNpm = !this._shouldNotifyInNpmScript && isNpmOrYarn;\n\t\tif (!process.stdout.isTTY || suppressForNpm || !this.update || !semver.gt(this.update.latest, this.update.current)) {\n\t\t\treturn this;\n\t\t}\n\n\t\toptions = {\n\t\t\tisGlobal: isInstalledGlobally,\n\t\t\t...options,\n\t\t};\n\n\t\tconst installCommand = options.isGlobal ? `npm i -g ${this._packageName}` : `npm i ${this._packageName}`;\n\n\t\tconst defaultTemplate = 'Update available '\n\t\t\t+ chalk.dim('{currentVersion}')\n\t\t\t+ chalk.reset(' → ')\n\t\t\t+ chalk.green('{latestVersion}')\n\t\t\t+ ' \\nRun ' + chalk.cyan('{updateCommand}') + ' to update';\n\n\t\tconst template = options.message || defaultTemplate;\n\n\t\toptions.boxenOptions ??= {\n\t\t\tpadding: 1,\n\t\t\tmargin: 1,\n\t\t\ttextAlignment: 'center',\n\t\t\tborderColor: 'yellow',\n\t\t\tborderStyle: 'round',\n\t\t};\n\n\t\tconst message = boxen(\n\t\t\tpupa(template, {\n\t\t\t\tpackageName: this._packageName,\n\t\t\t\tcurrentVersion: this.update.current,\n\t\t\t\tlatestVersion: this.update.latest,\n\t\t\t\tupdateCommand: installCommand,\n\t\t\t}),\n\t\t\toptions.boxenOptions,\n\t\t);\n\n\t\tif (options.defer === false) {\n\t\t\tconsole.error(message);\n\t\t} else {\n\t\t\tprocess.on('exit', () => {\n\t\t\t\tconsole.error(message);\n\t\t\t});\n\n\t\t\tprocess.on('SIGINT', () => {\n\t\t\t\tconsole.error('');\n\t\t\t\tprocess.exit();\n\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n}\n","import UpdateNotifier from './update-notifier.js';\n\nexport default function updateNotifier(options) {\n\tconst updateNotifier = new UpdateNotifier(options);\n\tupdateNotifier.check();\n\treturn updateNotifier;\n}\n"],"names":["constants","require$$0","origCwd","cwd","platform","chdir","d","polyfills","patch","fs","patchLchmod","patchLutimes","chownFix","chmodFix","chownFixSync","chmodFixSync","statFix","statFixSync","path","mode","cb","uid","gid","fs$rename","rename","from","to","start","backoff","CB","er","stater","st","fs$read","read","fd","buffer","offset","length","position","callback_","callback","eagCounter","_","__","fs$readSync","err","err2","threw","ret","at","mt","er2","_a","_b","_c","orig","target","chownErOk","options","stats","nonroot","Stream","legacyStreams","legacy","ReadStream","WriteStream","self","keys","index","key","clone_1","clone","getPrototypeOf","obj","copy","require$$1","require$$2","require$$3","util","require$$4","gracefulQueue","previousSymbol","noop","publishQueue","context","queue","debug","m","global","fs$close","close","resetQueue","fs$closeSync","closeSync","require$$5","gracefulFs","createReadStream","createWriteStream","fs$readFile","readFile","go$readFile","startTime","enqueue","fs$writeFile","writeFile","data","go$writeFile","fs$appendFile","appendFile","go$appendFile","fs$copyFile","copyFile","src","dest","flags","go$copyFile","fs$readdir","readdir","noReaddirOptionVersions","go$readdir","fs$readdirCallback","files","legStreams","fs$ReadStream","ReadStream$open","fs$WriteStream","WriteStream$open","val","FileReadStream","FileWriteStream","that","open","fs$open","go$open","elem","retry","retryTimer","now","i","fn","args","lastTime","sinceAttempt","sinceStart","desiredDelay","homeDirectory","os","env","xdgData","xdgConfig","xdgDataDirectories","xdgConfigDirectories","module","process","processOk","signalExitModule","assert","signals","isWin","EE","emitter","opts","loaded","load","ev","remove","unload","sig","sigListeners","originalProcessEmit","originalProcessReallyExit","emit","event","code","signal","listeners","processEmit","processReallyExit","arg","isTypedarray","isTypedArray","isStrictTypedArray","isLooseTypedArray","toString","names","arr","typedarrayToBuffer","buf","writeFileAtomicModule","writeFileSync","getTmpname","cleanupOnExit","MurmurHash3","onExit","typedArrayToBuffer","promisify","require$$6","activeFiles","threadId","invocations","filename","tmpfile","serializeActiveFile","absoluteName","resolve","isChownErrOk","writeFileAsync","removeOnExitHandler","truename","promise","cleanup","isObj","value","type","disallowedKeys","isValidPath","pathSegments","segment","getPathSegments","pathArray","parts","p","dotProp","object","root","randomBytesAsync","crypto","urlSafeCharacters","numericCharacters","distinguishableCharacters","asciiPrintableCharacters","alphanumericCharacters","generateForCustomCharacters","characters","characterCount","maxValidSelector","entropyLength","string","stringLength","entropy","entropyPosition","entropyValue","generateForCustomCharactersAsync","generateRandomBytes","byteLength","generateRandomBytesAsync","allowedTypes","createGenerator","cryptoRandomString","uniqueString","configDirectory","permissionError","mkdirOptions","writeFileOptions","Configstore","id","defaults","pathPrefix","error","writeFileAtomic","config","k","semverDiff","versionA","versionB","semver","typedArrayTypeNames","isTypedArrayName","name","objectTypeNames","isObjectTypeName","primitiveTypeNames","isPrimitiveTypeName","isOfType","getObjectType","objectTypeName","is","isObjectOfType","tagType","isNumberType","assertion","element","hasPromiseApi","targetEnum","instance","class_","prototype","isValidLength","guards","guard","range","NODE_TYPE_ELEMENT","DOM_PROPERTIES_TO_CHECK","property","isAbsoluteMod2","remainder","isWhiteSpaceString","predicateOnArray","method","predicate","values","singlePredicate","assertType","condition","description","multipleValues","valuesMessage","singleValue","reason","PCancelable","userFunction","arguments_","reject","onCancel","executor","onResolve","onReject","handler","boolean","onFulfilled","onRejected","onFinally","CancelError","isRequest","x","message","indexOfMessage","thisStackTrace","errorStackTrace","MaxRedirectsError","RequestError","request","HTTPError","response","UploadError","timings","ReadError","RetryError","AbortError","exports","isTLSSocket","socket","deferToConnect","hasConnectListener","hasSecureConnectListener","hasCloseListener","onConnect","timer","handleError","origin","errorMonitor","onAbort","onSocket","types","lookupListener","onUpload","DATA_URL_DEFAULT_MIME_TYPE","DATA_URL_DEFAULT_CHARSET","testParameter","filters","filter","supportedProtocols","hasCustomProtocol","urlString","protocol","normalizeDataURL","stripHash","match","hash","mediaType","isBase64","mimeType","normalizedMediaType","attribute","normalizeUrl","hasRelativeProtocol","urlObject","protocolRegex","lastIndex","result","protocolAtIndex","intermediate","remnant","pathComponents","lastComponent","oldUrlString","PassThroughStream","bufferStream","array","encoding","isBuffer","objectMode","stream","chunks","chunk","BufferConstants","streamPipelinePromisified","MaxBufferError","getStream","inputStream","maxBuffer","rejectPromise","getStreamModule","lowercaseKeys","Response","ReadableStream","statusCode","headers","body","url","jsonBuffer","stringify","o","s","first","ignore","EventEmitter","JSONB","loadStore","adapters","adapter","require","iterableAdapters","Keyv","uri","emitErrors","adapterOptions","compression","generateIterator","iterator","raw","store","isArray","keyPrefixed","promises","row","ttl","expires","knownProperties","mimicResponse","fromStream","toStream","fromProperties","properties","CacheError","CacheableRequest","cacheRequest","cacheAdapter","normalizeUrlObject","urlLib","pathname","searchParts","search","urlObjectToRequestOptions","entries","ee","normalizedUrlString","revalidate","madeRequest","makeRequest","options_","requestErrored","requestErrorCallback","requestErrorPromise","revalidatedPolicy","CachePolicy","convertHeaders","clonedResponse","cloneResponse","bodyPromise","key_","request_","get","cacheEntry","policy","errorHandler","cachek","Transform","PassThrough","zlib","decompressResponse","contentEncoding","isBrotli","isEmpty","checker","_encoding","finalStream","decompressStream","isFunction","isAsyncIterable","readStream","readable","reader","done","getStreamIterator","source","alphabet","createBoundary","size","res","normalizeValue","str","getType","isPlainObject","pp","getProperty","prop","proxyHeaders","isFormData","escapeName","isFile","__classPrivateFieldSet","receiver","state","kind","f","__classPrivateFieldGet","_FormDataEncoder_instances","_FormDataEncoder_CRLF","_FormDataEncoder_CRLF_BYTES","_FormDataEncoder_CRLF_BYTES_LENGTH","_FormDataEncoder_DASHES","_FormDataEncoder_encoder","_FormDataEncoder_footer","_FormDataEncoder_form","_FormDataEncoder_options","_FormDataEncoder_getFieldHeader","_FormDataEncoder_getContentLength","defaultOptions","readonlyProp","FormDataEncoder","form","boundaryOrOptions","boundary","contentLength","part","header","getBodySize","Buffer","proxyEvents","events","eventFunctions","eventFunction","unhandle","handlers","reentry","TimeoutError","threshold","timedOut","delays","cancelers","once","unhandleAll","unhandler","addTimeout","delay","timeout","cancel","host","hostname","timeoutHandler","cancelTimeouts","cancelTimeout","socketTimeoutHandler","hasLookup","hasConnect","hasSecureConnect","hasSend","socketPath","hasPath","net","timeConnect","timeRequest","urlToOptions","WeakableMap","calculateRetryDelay","attemptCount","retryOptions","retryAfter","computedValue","hasMethod","hasErrorCode","hasStatusCode","noise","AsyncResolver","dnsPromises","kCacheableLookupCreateConnection","kCacheableLookupInstance","kExpires","supportsALL","ALL","verifyAgent","agent","map4to6","entry","getIfaceInfo","has4","has6","device","iface","isIterable","map","ignoreNoResultErrors","dnsPromise","all","all4","all6","CacheableLookup","cache","maxTtl","fallbackDuration","errorTtl","resolver","lookup","dnsLookup","interval","servers","cached","filtered","V4MAPPED","ADDRCONFIG","_iface","pending","newPromise","A","AAAA","aTtl","aaaaTtl","cacheTtl","cacheError","query","ms","nextRemovalTime","nextExpiry","QuickLRU$2","deleted","item","oldCacheSize","quickLru","QuickLRU","delayAsyncDestroy","onError","URL","tls","http2","kCurrentStreamCount","kRequest","kOriginSet","kGracefullyClosing","kLength","nameKeys","getSortedIndex","compare","low","high","mid","compareSessions","a","b","closeCoveredSessions","where","session","coveredSession","gracefullyClose","closeSessionIfCovered","Agent","maxSessions","maxEmptySessions","maxCachedTlsSessions","normalized","normalizedOptions","normalizedOrigin","thisStreamCount","thatStreamCount","servername","sessions","maxConcurrentStreams","currentStreamsCount","optimalSession","sessionMaxConcurrentStreams","sessionCurrentStreamsCount","removeFromQueue","receivedSettings","computedOptions","getOriginSet","originSet","isFree","tlsSession","processListeners","completed","mainOrigin","streamOptions","port","maxCount","closedCount","thisSessions","Readable","highWaterMark","incomingMessage","IncomingMessage","makeError","Base","getMessage","valid","isManyTypes","isRequestPseudoHeader","ERR_INVALID_HTTP_TOKEN","isValidHttpToken","validateHeaderName","ERR_HTTP_INVALID_HEADER_VALUE","ERR_INVALID_CHAR","isInvalidHeaderValue","validateHeaderValue","ERR_HTTP2_NO_SOCKET_MANIPULATION","proxySocketHandler","reference","proxySocketHandler_1","urlToHttpOptions","Writable","globalAgent","ERR_INVALID_ARG_TYPE","ERR_INVALID_PROTOCOL","ERR_HTTP_HEADERS_SENT","require$$7","require$$8","require$$9","HTTP2_HEADER_STATUS","HTTP2_HEADER_METHOD","HTTP2_HEADER_PATH","HTTP2_HEADER_AUTHORITY","HTTP2_METHOD_CONNECT","kHeaders","kOrigin","kSession","kOptions","kFlushedHeaders","kJobs","kPendingAgentPromise","input","reuseSocket","_value","callWrite","callEnd","internalError","isConnectMethod","onStream","onResponse","rawHeaders","trailers","rawTrailers","aborted","finish","job","lowercased","applyTimeout","clientRequest","ClientRequest","resolveAlpn","connect","socketPromise","onTimeout","isIP","getHost","idx","calculateServerName","http","https","resolveALPN","Http2ClientRequest","installSocket","onFree","onClose","freeSockets","sockets","onRemove","createResolveProtocol","resultPromise","defaultResolveProtocol","autoModule","isHttps","resolveProtocol","alpnProtocol","isHttp2","defaultCreateConnection","JSStreamSocket","jsStreamSocket","statusMessage","unexpectedStatusCodeError","UnexpectedStatusCodeError","checkType","checkType_1","initialize","proxyOptions","getAuthHeaders","username","password","authorization","getAuthorizationHeaders","createConnection","encrypted","secureStream","out","HttpOverHttp2$1","HttpsOverHttp2$1","h1OverH2","HttpOverHttp2","HttpsOverHttp2","authority","h2OverHx","Http2OverHttpX","getStatusCode","h2OverH2","Http2OverHttp2","head","h2OverH1","Http2OverHttp","auto","Http2OverHttps","req","parseLinkHeader","link","parsed","items","rawUriReference","rawLinkParameters","trimmedUriReference","parameters","rawParameter","trimmedRawParameter","center","major","minor","validateSearchParameters","searchParameters","globalCache","globalDnsCache","getGlobalDnsCache","defaultInternals","rawLinkHeader","next","cloneInternals","internals","hooks","URLSearchParams","cloneRaw","getHttp2TimeoutOption","init","withOptions","initHooks","hook","Options","push","href","matches","setCookie","getCookieString","updated","knownHookEvent","typedKnownHookEvent","fixedValue","_depth","inspect","pfx","checkServerIdentity","http2wrapper","isResponseOk","limitStatusCode","ParseError","parseBody","responseType","parseJson","rawBody","isClientRequest","isUnixSocketURL","getBuffer","supportsBrotli","methodsWithoutBody","cacheableStore","redirectCodes","proxiedRequestEvents","Request","Duplex","abort","typedError","error_","updatedOptions","progress","write","endRequest","destination","ServerResponse","isForm","isJSON","isBody","cannotHaveBody","noContentType","isFormDataLike","encoder","json","uploadBodySize","typedResponse","rawCookies","rawCookie","serverRequestedGet","canRewrite","userRequestedGet","redirectBuffer","redirectUrl","isAllowed","responseEventName","TimedOutTimeoutError","currentRequest","cacheableRequest","requestOptions","fix","requestOrPromise","cookieJar","credentials","cookieString","requestOrResponse","CacheableCacheError","percent","asPromise","firstRequest","globalRequest","globalResponse","retryCount","isCompressed","previousBody","newRetryCount","newBody","shortcut","isGotInstance","aliases","create","got","lastHandler","iteration","iterateHandlers","newOptions","descriptors","instancesOrOptions","mutableDefaults","paginateEach","pagination","allItems","countLimit","numberOfRequests","currentItems","optionsToMerge","results","browser","registryUrl","scope","rc","__importDefault","this","mod","caFile","graceful_fs_1","readCAFileSync","filePath","contents","delim","ca","__createBinding","k2","desc","__exportStar","protoList","ProtoList","setProto","proto","r","save","thisp","l","ini","decode","encode","safe","unsafe","eol","opt","children","separator","nk","dotSplit","section","child","re","lines","line","nl","del","isQuoted","doUnesc","esc","unesc","c","configChainModule","conf","ConfigChain","rel","find","file","parse","content","prefix","extras","pref","marker","ct","envKeyToSetting","colonIndex","normalize","firstPart","secondPart","envReplace_1","ENV_EXPR","envReplace","settingValue","replaceEnvMatch","escape","envValue","getEnvValue","ENV_VALUE","matched","variableName","colon","fallback","env_replace_1","parseField","field","typeList","isPath","isBool","isString","isNumber","findPrefix","walkedUp","original","regex","dirname","Umask","getLocalAddresses","Conf","base","cli","g","defConf","temp","uidOrPid","hasUnicode","isWindows","osenv","umask","home","cacheExtra","cacheRoot","globalPrefix","_defaults","warnings","failedToLoadBuiltInConfig","paths","npmPath","projectConf","userConf","workspaceConf","etc","npmConf","tokenKey","legacyTokenKey","userKey","passwordKey","registryAuthToken","checkUrl","providedNpmrc","getRegistryAuthInfo","getLegacyAuthInfo","regUrl","authInfo","getAuthInfoForUrl","normalizePath","npmrc","replaceEnvironmentVariable","bearerAuth","getBearerToken","basicAuth","getTokenForUsernameAndPassword","basicAuthWithToken","getLegacyAuthToken","token","fullMatch","envVar","tok","pass","agentOptions","httpAgent","HttpAgent","httpsAgent","HttpsAgent","PackageNotFoundError","packageName","VersionNotFoundError","version","packageJson","registryUrl_","packageUrl","gotOptions","versionError","time","versions","latestVersion","userAgent","isNpm6","isNpm7","isNpm","isYarn","isNpmOrYarn","hasOwnProperty","whitespace","keyRaw","valueRaw","readRc","getEnvNpmPrefix","getGlobalNpmrc","homebrewPrefix","installDir","getDefaultNpmPrefix","APPDATA","getNpmPrefix","envPrefix","homePrefix","npmPrefix","getYarnWindowsDirectory","dir","getYarnPrefix","windowsPrefix","configPrefix","yarnPrefix","isPathInside","childPath","parentPath","relation","globalDirs","isInstalledGlobally","eaw","character","y","codePoint","stringToArray","len","text","end","eawLen","chars","char","charLen","emojiRegex","stringWidth","stripAnsi","ambiguousCharacterWidth","width","eastAsianWidth","widestLine","lineWidth","cliBoxes","cliBoxesModule","UPPERCASE","LOWERCASE","LEADING_CAPITAL","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","preserveCamelCase","toLowerCase","toUpperCase","preserveConsecutiveUppercase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","isLastLastCharPreserved","m1","postProcess","identifier","camelCase","ansiRegex","onlyFirst","pattern","isFullwidthCodePoint","stringWidthModule","ansiAlign","align","split","pad","widthDiffFn","halfDiff","fullDiff","returnString","maxWidth","ansiAlign_1","curWidth","ANSI_BACKGROUND_OFFSET","wrapAnsi16","wrapAnsi256","wrapAnsi16m","red","green","blue","styles","foregroundColorNames","backgroundColorNames","assembleStyles","codes","groupName","group","styleName","style","hex","colorString","integer","ansiStyles","ESCAPES","END_CODE","ANSI_ESCAPE_BELL","ANSI_CSI","ANSI_OSC","ANSI_SGR_TERMINATOR","ANSI_ESCAPE_LINK","wrapAnsiCode","wrapAnsiHyperlink","wordLengths","wrapWord","rows","word","columns","isInsideEscape","isInsideLinkEscape","visible","characterLength","stringVisibleTrimSpacesRight","words","last","exec","returnValue","escapeCode","escapeUrl","lengths","rowLength","remainingColumns","breaksStartingThisLine","pre","groups","wrapAnsi","NEWLINE","PAD","NONE","terminalColumns","stdout","stderr","getObject","detail","getBorderWidth","borderStyle","getBorderChars","sides","side","makeTitle","horizontal","alignment","title","textWidth","makeContentText","padding","textAlignment","height","max","newLines","createdLines","alignedLinesArray","longestLength","alignedLine","paddedLine","paddingLeft","paddingRight","boxContent","contentWidth","colorizeBorder","border","newBorder","getColorFn","chalk","colorizeContent","getBGColorFn","marginLeft","marginWidth","sanitizeOptions","newDimensions","formatTitle","determineDimensions","widthOverride","borderWidth","widest","multiplier","isHex","color","isColorValid","boxen","isInCi","isInCi$1","_htmlEscape","htmlEscape","strings","output","MissingValueError","pupa","template","ignoreMissing","transform","replace","placeholder","transformedValue","composeHtmlEscape","replacer","doubleBraceRegex","braceRegex","__dirname","fileURLToPath","_documentCurrentScript","ONE_DAY","UpdateNotifier","#options","#packageVersion","#updateCheckInterval","#isDisabled","ConfigStore","format","spawn","distTag","latest","suppressForNpm","installCommand","defaultTemplate","updateNotifier"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131]}