diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..abe8b76 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +ko_fi: jaywcjlove +buy_me_a_coffee: jaywcjlove +custom: ["https://www.paypal.me/kennyiseeyou", "https://jaywcjlove.github.io/#/sponsor"] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b10a3e8 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,103 @@ +name: test +on: + push: + branches: + - main + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + + - run: npm install + - run: npm run build + - run: mkdir -p build + + - name: Output src/ folder tree + # uses: jaywcjlove/github-action-folder-tree@main + uses: ./ + with: + path: ./src + + - name: Create idoc config + run: | + cat > idoc.yml << EOF + site: "Folder Tree {{version}}" + menus: + Home: index.html + Sponsor: https://jaywcjlove.github.io/#/sponsor + footer: | + Sponsor • + Changelog Generator • + Create Tag • + Contributors • + Generated Badges +
+ Released under the MIT License. Copyright © {{idocYear}} Kenny Wong
+ Generated by idoc v{{idocVersion}} + + EOF + + - run: npm install idoc@1 -g + - run: idoc + - name: gh-pages README.md + working-directory: dist + run: | + cat > README.md << EOF + Website: https://jaywcjlove.github.io/github-action-folder-tree + EOF + + - name: Is a tag/release created auto? + id: create_tag + uses: jaywcjlove/create-tag-action@main + with: + # test: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}' + package-path: ./package.json + + - name: get tag version + id: tag_version + uses: jaywcjlove/changelog-generator@main + + - name: Deploy + uses: peaceiris/actions-gh-pages@v4 + with: + commit_message: ${{steps.tag_version.outputs.tag}} ${{ github.event.head_commit.message }} + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./dist + + - name: Generate Changelog + id: changelog + uses: jaywcjlove/changelog-generator@main + with: + head-ref: ${{steps.create_tag.outputs.version}} + filter: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}' + + - name: Create Release + uses: jaywcjlove/create-tag-action@main + with: + # test: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}' + package-path: ./package.json + release: true + body: | + [![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-048754?logo=buymeacoffee)](https://jaywcjlove.github.io/#/sponsor) + Documentation ${{ steps.changelog.outputs.tag }}: https://raw.githack.com/jaywcjlove/github-action-folder-tree/${{ steps.changelog.outputs.gh-pages-short-hash }}/index.html + Comparing Changes: ${{ steps.changelog.outputs.compareurl }} + + ${{ steps.changelog.outputs.changelog }} + + + ```yml + - name: Read README.md + id: package + uses: jaywcjlove/github-action-folder-tree@main + with: + path: package.json + + - name: Echo package.json + run: echo "$\{{ steps.package.outputs.content }}" + ``` + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a11d06b --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +build +lib +node_modules + +npm-debug.log* +lerna-debug.log +yarn-error.log +package-lock.json + +.DS_Store +.cache +.vscode +.idea +.env + +*.mpassword +*.bak +*.tem +*.temp +#.swp +*.*~ +~*.* + +# IDEA +*.iml +*.ipr +*.iws +.idea/ \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..f095474 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npx --no lint-staged \ No newline at end of file diff --git a/.lintstagedrc b/.lintstagedrc new file mode 100644 index 0000000..b85e7b0 --- /dev/null +++ b/.lintstagedrc @@ -0,0 +1,5 @@ +{ + "*.ts": [ + "npm run build" + ] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..14c658f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 小弟调调™ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..41e1221 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +Print folder tree +=== + +[![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-048754?logo=buymeacoffee)](https://jaywcjlove.github.io/#/sponsor) +[![test](https://github.com/jaywcjlove/github-action-folder-tree/actions/workflows/ci.yml/badge.svg)](https://github.com/jaywcjlove/github-action-folder-tree/actions/workflows/ci.yml) + +View the folder directory tree structure, similar to the output of the `tree` command + +## Example Usage + +```yml +- name: Print Folder Tree + uses: jaywcjlove/github-action-folder-tree@main + with: + path: ./src + depth: 2 +``` + +## Inputs + +- `path` Folder path. (default `./`) +- `depth` Scan the maximum depth reachable for the given path (default `5`) + +## Outputs + +- `content` Directory tree structure text + +## See Also + +- [Github Release Changelog Generator](https://github.com/jaywcjlove/changelog-generator) A GitHub Action that compares the commit differences between two branches +- [Create Tags From](https://github.com/jaywcjlove/create-tag-action) Auto create tags from commit or package.json. +- [Github Action Contributors](https://github.com/jaywcjlove/github-action-contributors) Github action generates dynamic image URL for contributor list to display it! +- [Generated Badges](https://github.com/jaywcjlove/generated-badges) Create a badge using GitHub Actions and GitHub Workflow CPU time (no 3rd parties servers) +- [Create Coverage Badges](https://github.com/jaywcjlove/coverage-badges-cli) Create coverage badges from coverage reports. (no 3rd parties servers) +- [Github Action package](https://github.com/jaywcjlove/github-action-package) Read and modify the contents of `package.json`. +- [Github Action EJS](https://github.com/jaywcjlove/github-action-package) A github action to render a ejs template using github context. +- [Modify File Content](https://github.com/jaywcjlove/github-action-modify-file-content) Replace text content and submit content. + +## License + +Licensed under the MIT License. diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..16848a7 --- /dev/null +++ b/action.yml @@ -0,0 +1,28 @@ +name: 'Print folder tree' +author: 'Kenny Wong' +description: 'View the folder directory tree structure, similar to the output of the `tree` command' +inputs: + token: + description: 'Your GITHUB_TOKEN' + default: ${{ github.token }} + required: false + path: + description: 'Folder path' + default: '' + required: false + depth: + description: 'Scan the maximum depth reachable for the given path' + default: 5 + required: false + +outputs: + content: + description: 'Directory tree structure text' + +runs: + using: 'node20' + main: 'dist/index.js' + +branding: + icon: 'file' + color: 'purple' diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..0a7f16d --- /dev/null +++ b/dist/index.js @@ -0,0 +1,37899 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 1818: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); +var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); +} : function (o, v) { + o["default"] = v; +}); +var __importStar = this && this.__importStar || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.issue = exports.issueCommand = void 0; +var os = __importStar(__webpack_require__(857)); +var utils_1 = __webpack_require__(6230); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + var cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name) { + var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + issueCommand(name, {}, message); +} +exports.issue = issue; +var CMD_STRING = '::'; +var Command = /*#__PURE__*/function () { + function Command(command, properties, message) { + _classCallCheck(this, Command); + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + return _createClass(Command, [{ + key: "toString", + value: function toString() { + var cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + var first = true; + for (var key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + var val = this.properties[key]; + if (val) { + if (first) { + first = false; + } else { + cmdStr += ','; + } + cmdStr += "".concat(key, "=").concat(escapeProperty(val)); + } + } + } + } + cmdStr += "".concat(CMD_STRING).concat(escapeData(this.message)); + return cmdStr; + } + }]); +}(); +function escapeData(s) { + return utils_1.toCommandValue(s).replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return utils_1.toCommandValue(s).replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A').replace(/:/g, '%3A').replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map + +/***/ }), + +/***/ 3716: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); +var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); +} : function (o, v) { + o["default"] = v; +}); +var __importStar = this && this.__importStar || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +var command_1 = __webpack_require__(1818); +var file_command_1 = __webpack_require__(7369); +var utils_1 = __webpack_require__(6230); +var os = __importStar(__webpack_require__(857)); +var path = __importStar(__webpack_require__(6928)); +var oidc_utils_1 = __webpack_require__(6274); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + var convertedVal = utils_1.toCommandValue(val); + process.env[name] = convertedVal; + var filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); + } + command_1.issueCommand('set-env', { + name: name + }, convertedVal); +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + var filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) { + file_command_1.issueFileCommand('PATH', inputPath); + } else { + command_1.issueCommand('add-path', {}, inputPath); + } + process.env['PATH'] = "".concat(inputPath).concat(path.delimiter).concat(process.env['PATH']); +} +exports.addPath = addPath; +/** + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + var val = process.env["INPUT_".concat(name.replace(/ /g, '_').toUpperCase())] || ''; + if (options && options.required && !val) { + throw new Error("Input required and not supplied: ".concat(name)); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +function getMultilineInput(name, options) { + var inputs = getInput(name, options).split('\n').filter(function (x) { + return x !== ''; + }); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map(function (input) { + return input.trim(); + }); +} +exports.getMultilineInput = getMultilineInput; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +function getBooleanInput(name, options) { + var trueValue = ['true', 'True', 'TRUE']; + var falseValue = ['false', 'False', 'FALSE']; + var val = getInput(name, options); + if (trueValue.includes(val)) return true; + if (falseValue.includes(val)) return false; + throw new TypeError("Input does not meet YAML 1.2 \"Core Schema\" specification: ".concat(name, "\n") + "Support boolean input list: `true | True | TRUE | false | False | FALSE`"); +} +exports.getBooleanInput = getBooleanInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function setOutput(name, value) { + var filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + } + process.stdout.write(os.EOL); + command_1.issueCommand('set-output', { + name: name + }, utils_1.toCommandValue(value)); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + command_1.issue('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + command_1.issueCommand('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function error(message) { + var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.error = error; +/** + * Adds a warning issue + * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function warning(message) { + var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.warning = warning; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function notice(message) { + var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.notice = notice; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); +} +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + command_1.issue('group', name); +} +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + command_1.issue('endgroup'); +} +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var result; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + startGroup(name); + _context.prev = 1; + _context.next = 4; + return fn(); + case 4: + result = _context.sent; + case 5: + _context.prev = 5; + endGroup(); + return _context.finish(5); + case 8: + return _context.abrupt("return", result); + case 9: + case "end": + return _context.stop(); + } + }, _callee, null, [[1,, 5, 8]]); + })); +} +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + var filePath = process.env['GITHUB_STATE'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + } + command_1.issueCommand('save-state', { + name: name + }, utils_1.toCommandValue(value)); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env["STATE_".concat(name)] || ''; +} +exports.getState = getState; +function getIDToken(aud) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return oidc_utils_1.OidcClient.getIDToken(aud); + case 2: + return _context2.abrupt("return", _context2.sent); + case 3: + case "end": + return _context2.stop(); + } + }, _callee2); + })); +} +exports.getIDToken = getIDToken; +/** + * Summary exports + */ +var summary_1 = __webpack_require__(6511); +Object.defineProperty(exports, "summary", ({ + enumerable: true, + get: function get() { + return summary_1.summary; + } +})); +/** + * @deprecated use core.summary + */ +var summary_2 = __webpack_require__(6511); +Object.defineProperty(exports, "markdownSummary", ({ + enumerable: true, + get: function get() { + return summary_2.markdownSummary; + } +})); +/** + * Path exports + */ +var path_utils_1 = __webpack_require__(1184); +Object.defineProperty(exports, "toPosixPath", ({ + enumerable: true, + get: function get() { + return path_utils_1.toPosixPath; + } +})); +Object.defineProperty(exports, "toWin32Path", ({ + enumerable: true, + get: function get() { + return path_utils_1.toWin32Path; + } +})); +Object.defineProperty(exports, "toPlatformPath", ({ + enumerable: true, + get: function get() { + return path_utils_1.toPlatformPath; + } +})); +//# sourceMappingURL=core.js.map + +/***/ }), + +/***/ 7369: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +// For internal use, subject to change. +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); +var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); +} : function (o, v) { + o["default"] = v; +}); +var __importStar = this && this.__importStar || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +var fs = __importStar(__webpack_require__(9896)); +var os = __importStar(__webpack_require__(857)); +var uuid_1 = __webpack_require__(3730); +var utils_1 = __webpack_require__(6230); +function issueFileCommand(command, message) { + var filePath = process.env["GITHUB_".concat(command)]; + if (!filePath) { + throw new Error("Unable to find environment variable for file command ".concat(command)); + } + if (!fs.existsSync(filePath)) { + throw new Error("Missing file at path: ".concat(filePath)); + } + fs.appendFileSync(filePath, "".concat(utils_1.toCommandValue(message)).concat(os.EOL), { + encoding: 'utf8' + }); +} +exports.issueFileCommand = issueFileCommand; +function prepareKeyValueMessage(key, value) { + var delimiter = "ghadelimiter_".concat(uuid_1.v4()); + var convertedValue = utils_1.toCommandValue(value); + // These should realistically never happen, but just in case someone finds a + // way to exploit uuid generation let's not allow keys or values that contain + // the delimiter. + if (key.includes(delimiter)) { + throw new Error("Unexpected input: name should not contain the delimiter \"".concat(delimiter, "\"")); + } + if (convertedValue.includes(delimiter)) { + throw new Error("Unexpected input: value should not contain the delimiter \"".concat(delimiter, "\"")); + } + return "".concat(key, "<<").concat(delimiter).concat(os.EOL).concat(convertedValue).concat(os.EOL).concat(delimiter); +} +exports.prepareKeyValueMessage = prepareKeyValueMessage; +//# sourceMappingURL=file-command.js.map + +/***/ }), + +/***/ 6274: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OidcClient = void 0; +var http_client_1 = __webpack_require__(8964); +var auth_1 = __webpack_require__(7312); +var core_1 = __webpack_require__(3716); +var OidcClient = /*#__PURE__*/function () { + function OidcClient() { + _classCallCheck(this, OidcClient); + } + return _createClass(OidcClient, null, [{ + key: "createHttpClient", + value: function createHttpClient() { + var allowRetry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var maxRetry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; + var requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); + } + }, { + key: "getRequestToken", + value: function getRequestToken() { + var token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token; + } + }, { + key: "getIDTokenUrl", + value: function getIDTokenUrl() { + var runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + }, { + key: "getCall", + value: function getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var httpclient, res, id_token; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + httpclient = OidcClient.createHttpClient(); + _context.next = 3; + return httpclient.getJson(id_token_url)["catch"](function (error) { + throw new Error("Failed to get ID Token. \n \n Error Code : ".concat(error.statusCode, "\n \n Error Message: ").concat(error.message)); + }); + case 3: + res = _context.sent; + id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (id_token) { + _context.next = 7; + break; + } + throw new Error('Response json body do not have ID Token field'); + case 7: + return _context.abrupt("return", id_token); + case 8: + case "end": + return _context.stop(); + } + }, _callee); + })); + } + }, { + key: "getIDToken", + value: function getIDToken(audience) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var id_token_url, encodedAudience, id_token; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.prev = 0; + // New ID Token is requested from action service + id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + encodedAudience = encodeURIComponent(audience); + id_token_url = "".concat(id_token_url, "&audience=").concat(encodedAudience); + } + core_1.debug("ID token url is ".concat(id_token_url)); + _context2.next = 6; + return OidcClient.getCall(id_token_url); + case 6: + id_token = _context2.sent; + core_1.setSecret(id_token); + return _context2.abrupt("return", id_token); + case 11: + _context2.prev = 11; + _context2.t0 = _context2["catch"](0); + throw new Error("Error message: ".concat(_context2.t0.message)); + case 14: + case "end": + return _context2.stop(); + } + }, _callee2, null, [[0, 11]]); + })); + } + }]); +}(); +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map + +/***/ }), + +/***/ 1184: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); +var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); +} : function (o, v) { + o["default"] = v; +}); +var __importStar = this && this.__importStar || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +var path = __importStar(__webpack_require__(6928)); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); +} +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map + +/***/ }), + +/***/ 6511: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +var os_1 = __webpack_require__(857); +var fs_1 = __webpack_require__(9896); +var _fs_1$promises = fs_1.promises, + access = _fs_1$promises.access, + appendFile = _fs_1$promises.appendFile, + writeFile = _fs_1$promises.writeFile; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +var Summary = /*#__PURE__*/function () { + function Summary() { + _classCallCheck(this, Summary); + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + return _createClass(Summary, [{ + key: "filePath", + value: function filePath() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var pathFromEnv; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!this._filePath) { + _context.next = 2; + break; + } + return _context.abrupt("return", this._filePath); + case 2: + pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (pathFromEnv) { + _context.next = 5; + break; + } + throw new Error("Unable to find environment variable for $".concat(exports.SUMMARY_ENV_VAR, ". Check if your runtime environment supports job summaries.")); + case 5: + _context.prev = 5; + _context.next = 8; + return access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + case 8: + _context.next = 13; + break; + case 10: + _context.prev = 10; + _context.t0 = _context["catch"](5); + throw new Error("Unable to access summary file: '".concat(pathFromEnv, "'. Check if the file has correct read/write permissions.")); + case 13: + this._filePath = pathFromEnv; + return _context.abrupt("return", this._filePath); + case 15: + case "end": + return _context.stop(); + } + }, _callee, this, [[5, 10]]); + })); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + }, { + key: "wrap", + value: function wrap(tag, content) { + var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var htmlAttrs = Object.entries(attrs).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + return " ".concat(key, "=\"").concat(value, "\""); + }).join(''); + if (!content) { + return "<".concat(tag).concat(htmlAttrs, ">"); + } + return "<".concat(tag).concat(htmlAttrs, ">").concat(content, ""); + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + }, { + key: "write", + value: function write(options) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var overwrite, filePath, writeFunc; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + _context2.next = 3; + return this.filePath(); + case 3: + filePath = _context2.sent; + writeFunc = overwrite ? writeFile : appendFile; + _context2.next = 7; + return writeFunc(filePath, this._buffer, { + encoding: 'utf8' + }); + case 7: + return _context2.abrupt("return", this.emptyBuffer()); + case 8: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + }, { + key: "clear", + value: function clear() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt("return", this.emptyBuffer().write({ + overwrite: true + })); + case 1: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + }, { + key: "stringify", + value: function stringify() { + return this._buffer; + } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + }, { + key: "isEmptyBuffer", + value: function isEmptyBuffer() { + return this._buffer.length === 0; + } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + }, { + key: "emptyBuffer", + value: function emptyBuffer() { + this._buffer = ''; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + }, { + key: "addRaw", + value: function addRaw(text) { + var addEOL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + }, { + key: "addEOL", + value: function addEOL() { + return this.addRaw(os_1.EOL); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + }, { + key: "addCodeBlock", + value: function addCodeBlock(code, lang) { + var attrs = Object.assign({}, lang && { + lang: lang + }); + var element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + }, { + key: "addList", + value: function addList(items) { + var _this = this; + var ordered = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var tag = ordered ? 'ol' : 'ul'; + var listItems = items.map(function (item) { + return _this.wrap('li', item); + }).join(''); + var element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + }, { + key: "addTable", + value: function addTable(rows) { + var _this2 = this; + var tableBody = rows.map(function (row) { + var cells = row.map(function (cell) { + if (typeof cell === 'string') { + return _this2.wrap('td', cell); + } + var header = cell.header, + data = cell.data, + colspan = cell.colspan, + rowspan = cell.rowspan; + var tag = header ? 'th' : 'td'; + var attrs = Object.assign(Object.assign({}, colspan && { + colspan: colspan + }), rowspan && { + rowspan: rowspan + }); + return _this2.wrap(tag, data, attrs); + }).join(''); + return _this2.wrap('tr', cells); + }).join(''); + var element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + }, { + key: "addDetails", + value: function addDetails(label, content) { + var element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + }, { + key: "addImage", + value: function addImage(src, alt, options) { + var _ref3 = options || {}, + width = _ref3.width, + height = _ref3.height; + var attrs = Object.assign(Object.assign({}, width && { + width: width + }), height && { + height: height + }); + var element = this.wrap('img', null, Object.assign({ + src: src, + alt: alt + }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + }, { + key: "addHeading", + value: function addHeading(text, level) { + var tag = "h".concat(level); + var allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) ? tag : 'h1'; + var element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + }, { + key: "addSeparator", + value: function addSeparator() { + var element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + }, { + key: "addBreak", + value: function addBreak() { + var element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + }, { + key: "addQuote", + value: function addQuote(text, cite) { + var attrs = Object.assign({}, cite && { + cite: cite + }); + var element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + }, { + key: "addLink", + value: function addLink(text, href) { + var element = this.wrap('a', text, { + href: href + }); + return this.addRaw(element).addEOL(); + } + }]); +}(); +var _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map + +/***/ }), + +/***/ 6230: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.toCommandProperties = exports.toCommandValue = void 0; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} +exports.toCommandProperties = toCommandProperties; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 4456: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Context = void 0; +var fs_1 = __webpack_require__(9896); +var os_1 = __webpack_require__(857); +var Context = /*#__PURE__*/function () { + /** + * Hydrate the context from the environment + */ + function Context() { + _classCallCheck(this, Context); + var _a, _b, _c; + this.payload = {}; + if (process.env.GITHUB_EVENT_PATH) { + if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { + encoding: 'utf8' + })); + } else { + var path = process.env.GITHUB_EVENT_PATH; + process.stdout.write("GITHUB_EVENT_PATH ".concat(path, " does not exist").concat(os_1.EOL)); + } + } + this.eventName = process.env.GITHUB_EVENT_NAME; + this.sha = process.env.GITHUB_SHA; + this.ref = process.env.GITHUB_REF; + this.workflow = process.env.GITHUB_WORKFLOW; + this.action = process.env.GITHUB_ACTION; + this.actor = process.env.GITHUB_ACTOR; + this.job = process.env.GITHUB_JOB; + this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); + this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); + this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : "https://api.github.com"; + this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : "https://github.com"; + this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : "https://api.github.com/graphql"; + } + return _createClass(Context, [{ + key: "issue", + get: function get() { + var payload = this.payload; + return Object.assign(Object.assign({}, this.repo), { + number: (payload.issue || payload.pull_request || payload).number + }); + } + }, { + key: "repo", + get: function get() { + if (process.env.GITHUB_REPOSITORY) { + var _process$env$GITHUB_R = process.env.GITHUB_REPOSITORY.split('/'), + _process$env$GITHUB_R2 = _slicedToArray(_process$env$GITHUB_R, 2), + owner = _process$env$GITHUB_R2[0], + repo = _process$env$GITHUB_R2[1]; + return { + owner: owner, + repo: repo + }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; + } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); + } + }]); +}(); +exports.Context = Context; +//# sourceMappingURL=context.js.map + +/***/ }), + +/***/ 8340: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function get() { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); +var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); +} : function (o, v) { + o["default"] = v; +}); +var __importStar = this && this.__importStar || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getOctokit = exports.context = void 0; +var Context = __importStar(__webpack_require__(4456)); +var utils_1 = __webpack_require__(3182); +exports.context = new Context.Context(); +/** + * Returns a hydrated octokit ready to use for GitHub Actions + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +function getOctokit(token, options) { + var _utils_1$GitHub; + for (var _len = arguments.length, additionalPlugins = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + additionalPlugins[_key - 2] = arguments[_key]; + } + var GitHubWithPlugins = (_utils_1$GitHub = utils_1.GitHub).plugin.apply(_utils_1$GitHub, additionalPlugins); + return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options)); +} +exports.getOctokit = getOctokit; +//# sourceMappingURL=github.js.map + +/***/ }), + +/***/ 7628: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function get() { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); +var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); +} : function (o, v) { + o["default"] = v; +}); +var __importStar = this && this.__importStar || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0; +var httpClient = __importStar(__webpack_require__(8964)); +var undici_1 = __webpack_require__(7800); +function getAuthString(token, options) { + if (!token && !options.auth) { + throw new Error('Parameter token or opts.auth is required'); + } else if (token && options.auth) { + throw new Error('Parameters token and opts.auth may not both be specified'); + } + return typeof options.auth === 'string' ? options.auth : "token ".concat(token); +} +exports.getAuthString = getAuthString; +function getProxyAgent(destinationUrl) { + var hc = new httpClient.HttpClient(); + return hc.getAgent(destinationUrl); +} +exports.getProxyAgent = getProxyAgent; +function getProxyAgentDispatcher(destinationUrl) { + var hc = new httpClient.HttpClient(); + return hc.getAgentDispatcher(destinationUrl); +} +exports.getProxyAgentDispatcher = getProxyAgentDispatcher; +function getProxyFetch(destinationUrl) { + var _this = this; + var httpDispatcher = getProxyAgentDispatcher(destinationUrl); + var proxyFetch = function proxyFetch(url, opts) { + return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { + dispatcher: httpDispatcher + }))); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + }; + return proxyFetch; +} +exports.getProxyFetch = getProxyFetch; +function getApiBaseUrl() { + return process.env['GITHUB_API_URL'] || 'https://api.github.com'; +} +exports.getApiBaseUrl = getApiBaseUrl; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 3182: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function get() { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); +var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); +} : function (o, v) { + o["default"] = v; +}); +var __importStar = this && this.__importStar || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0; +var Context = __importStar(__webpack_require__(4456)); +var Utils = __importStar(__webpack_require__(7628)); +// octokit + plugins +var core_1 = __webpack_require__(8287); +var plugin_rest_endpoint_methods_1 = __webpack_require__(6463); +var plugin_paginate_rest_1 = __webpack_require__(8292); +exports.context = new Context.Context(); +var baseUrl = Utils.getApiBaseUrl(); +exports.defaults = { + baseUrl: baseUrl, + request: { + agent: Utils.getProxyAgent(baseUrl), + fetch: Utils.getProxyFetch(baseUrl) + } +}; +exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults); +/** + * Convience function to correctly format Octokit Options to pass into the constructor. + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +function getOctokitOptions(token, options) { + var opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller + // Auth + var auth = Utils.getAuthString(token, opts); + if (auth) { + opts.auth = auth; + } + return opts; +} +exports.getOctokitOptions = getOctokitOptions; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 7312: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +var BasicCredentialHandler = /*#__PURE__*/function () { + function BasicCredentialHandler(username, password) { + _classCallCheck(this, BasicCredentialHandler); + this.username = username; + this.password = password; + } + return _createClass(BasicCredentialHandler, [{ + key: "prepareRequest", + value: function prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = "Basic ".concat(Buffer.from("".concat(this.username, ":").concat(this.password)).toString('base64')); + } + // This handler cannot handle 401 + }, { + key: "canHandleAuthentication", + value: function canHandleAuthentication() { + return false; + } + }, { + key: "handleAuthentication", + value: function handleAuthentication() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + throw new Error('not implemented'); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + } + }]); +}(); +exports.BasicCredentialHandler = BasicCredentialHandler; +var BearerCredentialHandler = /*#__PURE__*/function () { + function BearerCredentialHandler(token) { + _classCallCheck(this, BearerCredentialHandler); + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + return _createClass(BearerCredentialHandler, [{ + key: "prepareRequest", + value: function prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = "Bearer ".concat(this.token); + } + // This handler cannot handle 401 + }, { + key: "canHandleAuthentication", + value: function canHandleAuthentication() { + return false; + } + }, { + key: "handleAuthentication", + value: function handleAuthentication() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + throw new Error('not implemented'); + case 1: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + } + }]); +}(); +exports.BearerCredentialHandler = BearerCredentialHandler; +var PersonalAccessTokenCredentialHandler = /*#__PURE__*/function () { + function PersonalAccessTokenCredentialHandler(token) { + _classCallCheck(this, PersonalAccessTokenCredentialHandler); + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + return _createClass(PersonalAccessTokenCredentialHandler, [{ + key: "prepareRequest", + value: function prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = "Basic ".concat(Buffer.from("PAT:".concat(this.token)).toString('base64')); + } + // This handler cannot handle 401 + }, { + key: "canHandleAuthentication", + value: function canHandleAuthentication() { + return false; + } + }, { + key: "handleAuthentication", + value: function handleAuthentication() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + throw new Error('not implemented'); + case 1: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + } + }]); +}(); +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map + +/***/ }), + +/***/ 8964: +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +/* eslint-disable @typescript-eslint/no-explicit-any */ +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _wrapNativeSuper = (__webpack_require__(1837)["default"]); +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function get() { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); +var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); +} : function (o, v) { + o["default"] = v; +}); +var __importStar = this && this.__importStar || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +var http = __importStar(__webpack_require__(8611)); +var https = __importStar(__webpack_require__(5692)); +var pm = __importStar(__webpack_require__(7956)); +var tunnel = __importStar(__webpack_require__(8506)); +var undici_1 = __webpack_require__(7800); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes || (exports.HttpCodes = HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers || (exports.Headers = Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes || (exports.MediaTypes = MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + var proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +var HttpRedirectCodes = [HttpCodes.MovedPermanently, HttpCodes.ResourceMoved, HttpCodes.SeeOther, HttpCodes.TemporaryRedirect, HttpCodes.PermanentRedirect]; +var HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout]; +var RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +var ExponentialBackoffCeiling = 10; +var ExponentialBackoffTimeSlice = 5; +var HttpClientError = /*#__PURE__*/function (_Error) { + function HttpClientError(message, statusCode) { + var _this; + _classCallCheck(this, HttpClientError); + _this = _callSuper(this, HttpClientError, [message]); + _this.name = 'HttpClientError'; + _this.statusCode = statusCode; + Object.setPrototypeOf(_this, HttpClientError.prototype); + return _this; + } + _inherits(HttpClientError, _Error); + return _createClass(HttpClientError); +}( /*#__PURE__*/_wrapNativeSuper(Error)); +exports.HttpClientError = HttpClientError; +var HttpClientResponse = /*#__PURE__*/function () { + function HttpClientResponse(message) { + _classCallCheck(this, HttpClientResponse); + this.message = message; + } + return _createClass(HttpClientResponse, [{ + key: "readBody", + value: function readBody() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var _this2 = this; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", new Promise(function (resolve) { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var output; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + output = Buffer.alloc(0); + this.message.on('data', function (chunk) { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', function () { + resolve(output.toString()); + }); + case 3: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + })); + case 1: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + } + }, { + key: "readBodyBuffer", + value: function readBodyBuffer() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() { + var _this3 = this; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + return _context4.abrupt("return", new Promise(function (resolve) { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + var chunks; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + chunks = []; + this.message.on('data', function (chunk) { + chunks.push(chunk); + }); + this.message.on('end', function () { + resolve(Buffer.concat(chunks)); + }); + case 3: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + })); + case 1: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + } + }]); +}(); +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + var parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +var HttpClient = /*#__PURE__*/function () { + function HttpClient(userAgent, handlers, requestOptions) { + _classCallCheck(this, HttpClient); + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + return _createClass(HttpClient, [{ + key: "options", + value: function options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() { + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + return _context5.abrupt("return", this.request('OPTIONS', requestUrl, null, additionalHeaders || {})); + case 1: + case "end": + return _context5.stop(); + } + }, _callee5, this); + })); + } + }, { + key: "get", + value: function get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() { + return _regeneratorRuntime().wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + return _context6.abrupt("return", this.request('GET', requestUrl, null, additionalHeaders || {})); + case 1: + case "end": + return _context6.stop(); + } + }, _callee6, this); + })); + } + }, { + key: "del", + value: function del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() { + return _regeneratorRuntime().wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + return _context7.abrupt("return", this.request('DELETE', requestUrl, null, additionalHeaders || {})); + case 1: + case "end": + return _context7.stop(); + } + }, _callee7, this); + })); + } + }, { + key: "post", + value: function post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() { + return _regeneratorRuntime().wrap(function _callee8$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + return _context8.abrupt("return", this.request('POST', requestUrl, data, additionalHeaders || {})); + case 1: + case "end": + return _context8.stop(); + } + }, _callee8, this); + })); + } + }, { + key: "patch", + value: function patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() { + return _regeneratorRuntime().wrap(function _callee9$(_context9) { + while (1) switch (_context9.prev = _context9.next) { + case 0: + return _context9.abrupt("return", this.request('PATCH', requestUrl, data, additionalHeaders || {})); + case 1: + case "end": + return _context9.stop(); + } + }, _callee9, this); + })); + } + }, { + key: "put", + value: function put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() { + return _regeneratorRuntime().wrap(function _callee10$(_context10) { + while (1) switch (_context10.prev = _context10.next) { + case 0: + return _context10.abrupt("return", this.request('PUT', requestUrl, data, additionalHeaders || {})); + case 1: + case "end": + return _context10.stop(); + } + }, _callee10, this); + })); + } + }, { + key: "head", + value: function head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() { + return _regeneratorRuntime().wrap(function _callee11$(_context11) { + while (1) switch (_context11.prev = _context11.next) { + case 0: + return _context11.abrupt("return", this.request('HEAD', requestUrl, null, additionalHeaders || {})); + case 1: + case "end": + return _context11.stop(); + } + }, _callee11, this); + })); + } + }, { + key: "sendStream", + value: function sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() { + return _regeneratorRuntime().wrap(function _callee12$(_context12) { + while (1) switch (_context12.prev = _context12.next) { + case 0: + return _context12.abrupt("return", this.request(verb, requestUrl, stream, additionalHeaders)); + case 1: + case "end": + return _context12.stop(); + } + }, _callee12, this); + })); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + }, { + key: "getJson", + value: function getJson(requestUrl) { + var additionalHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() { + var res; + return _regeneratorRuntime().wrap(function _callee13$(_context13) { + while (1) switch (_context13.prev = _context13.next) { + case 0: + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + _context13.next = 3; + return this.get(requestUrl, additionalHeaders); + case 3: + res = _context13.sent; + return _context13.abrupt("return", this._processResponse(res, this.requestOptions)); + case 5: + case "end": + return _context13.stop(); + } + }, _callee13, this); + })); + } + }, { + key: "postJson", + value: function postJson(requestUrl, obj) { + var additionalHeaders = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() { + var data, res; + return _regeneratorRuntime().wrap(function _callee14$(_context14) { + while (1) switch (_context14.prev = _context14.next) { + case 0: + data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + _context14.next = 5; + return this.post(requestUrl, data, additionalHeaders); + case 5: + res = _context14.sent; + return _context14.abrupt("return", this._processResponse(res, this.requestOptions)); + case 7: + case "end": + return _context14.stop(); + } + }, _callee14, this); + })); + } + }, { + key: "putJson", + value: function putJson(requestUrl, obj) { + var additionalHeaders = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() { + var data, res; + return _regeneratorRuntime().wrap(function _callee15$(_context15) { + while (1) switch (_context15.prev = _context15.next) { + case 0: + data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + _context15.next = 5; + return this.put(requestUrl, data, additionalHeaders); + case 5: + res = _context15.sent; + return _context15.abrupt("return", this._processResponse(res, this.requestOptions)); + case 7: + case "end": + return _context15.stop(); + } + }, _callee15, this); + })); + } + }, { + key: "patchJson", + value: function patchJson(requestUrl, obj) { + var additionalHeaders = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() { + var data, res; + return _regeneratorRuntime().wrap(function _callee16$(_context16) { + while (1) switch (_context16.prev = _context16.next) { + case 0: + data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + _context16.next = 5; + return this.patch(requestUrl, data, additionalHeaders); + case 5: + res = _context16.sent; + return _context16.abrupt("return", this._processResponse(res, this.requestOptions)); + case 7: + case "end": + return _context16.stop(); + } + }, _callee16, this); + })); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + }, { + key: "request", + value: function request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() { + var parsedUrl, info, maxTries, numTries, response, authenticationHandler, _iterator, _step, handler, redirectsRemaining, redirectUrl, parsedRedirectUrl, header; + return _regeneratorRuntime().wrap(function _callee17$(_context17) { + while (1) switch (_context17.prev = _context17.next) { + case 0: + if (!this._disposed) { + _context17.next = 2; + break; + } + throw new Error('Client has already been disposed.'); + case 2: + parsedUrl = new URL(requestUrl); + info = this._prepareRequest(verb, parsedUrl, headers); // Only perform retries on reads since writes may not be idempotent. + maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; + numTries = 0; + case 6: + _context17.next = 8; + return this.requestRaw(info, data); + case 8: + response = _context17.sent; + if (!(response && response.message && response.message.statusCode === HttpCodes.Unauthorized)) { + _context17.next = 34; + break; + } + authenticationHandler = void 0; + _iterator = _createForOfIteratorHelper(this.handlers); + _context17.prev = 12; + _iterator.s(); + case 14: + if ((_step = _iterator.n()).done) { + _context17.next = 21; + break; + } + handler = _step.value; + if (!handler.canHandleAuthentication(response)) { + _context17.next = 19; + break; + } + authenticationHandler = handler; + return _context17.abrupt("break", 21); + case 19: + _context17.next = 14; + break; + case 21: + _context17.next = 26; + break; + case 23: + _context17.prev = 23; + _context17.t0 = _context17["catch"](12); + _iterator.e(_context17.t0); + case 26: + _context17.prev = 26; + _iterator.f(); + return _context17.finish(26); + case 29: + if (!authenticationHandler) { + _context17.next = 33; + break; + } + return _context17.abrupt("return", authenticationHandler.handleAuthentication(this, info, data)); + case 33: + return _context17.abrupt("return", response); + case 34: + redirectsRemaining = this._maxRedirects; + case 35: + if (!(response.message.statusCode && HttpRedirectCodes.includes(response.message.statusCode) && this._allowRedirects && redirectsRemaining > 0)) { + _context17.next = 52; + break; + } + redirectUrl = response.message.headers['location']; + if (redirectUrl) { + _context17.next = 39; + break; + } + return _context17.abrupt("break", 52); + case 39: + parsedRedirectUrl = new URL(redirectUrl); + if (!(parsedUrl.protocol === 'https:' && parsedUrl.protocol !== parsedRedirectUrl.protocol && !this._allowRedirectDowngrade)) { + _context17.next = 42; + break; + } + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + case 42: + _context17.next = 44; + return response.readBody(); + case 44: + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + _context17.next = 48; + return this.requestRaw(info, data); + case 48: + response = _context17.sent; + redirectsRemaining--; + _context17.next = 35; + break; + case 52: + if (!(!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode))) { + _context17.next = 54; + break; + } + return _context17.abrupt("return", response); + case 54: + numTries += 1; + if (!(numTries < maxTries)) { + _context17.next = 60; + break; + } + _context17.next = 58; + return response.readBody(); + case 58: + _context17.next = 60; + return this._performExponentialBackoff(numTries); + case 60: + if (numTries < maxTries) { + _context17.next = 6; + break; + } + case 61: + return _context17.abrupt("return", response); + case 62: + case "end": + return _context17.stop(); + } + }, _callee17, this, [[12, 23, 26, 29]]); + })); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + }, { + key: "dispose", + value: function dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + }, { + key: "requestRaw", + value: function requestRaw(info, data) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() { + var _this4 = this; + return _regeneratorRuntime().wrap(function _callee18$(_context18) { + while (1) switch (_context18.prev = _context18.next) { + case 0: + return _context18.abrupt("return", new Promise(function (resolve, reject) { + function callbackForResult(err, res) { + if (err) { + reject(err); + } else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } else { + resolve(res); + } + } + _this4.requestRawWithCallback(info, data, callbackForResult); + })); + case 1: + case "end": + return _context18.stop(); + } + }, _callee18); + })); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + }, { + key: "requestRawWithCallback", + value: function requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + var callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + var req = info.httpModule.request(info.options, function (msg) { + var res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + var socket; + req.on('socket', function (sock) { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, function () { + if (socket) { + socket.end(); + } + handleResult(new Error("Request timeout: ".concat(info.options.path))); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + }, { + key: "getAgent", + value: function getAgent(serverUrl) { + var parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + }, { + key: "getAgentDispatcher", + value: function getAgentDispatcher(serverUrl) { + var parsedUrl = new URL(serverUrl); + var proxyUrl = pm.getProxyUrl(parsedUrl); + var useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } + }, { + key: "_prepareRequest", + value: function _prepareRequest(method, requestUrl, headers) { + var info = {}; + info.parsedUrl = requestUrl; + var usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + var defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; + info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + var _iterator2 = _createForOfIteratorHelper(this.handlers), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var handler = _step2.value; + handler.prepareRequest(info.options); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + return info; + } + }, { + key: "_mergeHeaders", + value: function _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + }, { + key: "_getExistingOrDefaultHeader", + value: function _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + var clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + }, { + key: "_getAgent", + value: function _getAgent(parsedUrl) { + var agent; + var proxyUrl = pm.getProxyUrl(parsedUrl); + var useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (!useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + var usingSsl = parsedUrl.protocol === 'https:'; + var maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + var agentOptions = { + maxSockets: maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, (proxyUrl.username || proxyUrl.password) && { + proxyAuth: "".concat(proxyUrl.username, ":").concat(proxyUrl.password) + }), { + host: proxyUrl.hostname, + port: proxyUrl.port + }) + }; + var tunnelAgent; + var overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if tunneling agent isn't assigned create a new agent + if (!agent) { + var options = { + keepAlive: this._keepAlive, + maxSockets: maxSockets + }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + }, { + key: "_getProxyAgentDispatcher", + value: function _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + var proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + // if agent is already assigned use that agent. + if (proxyAgent) { + return proxyAgent; + } + var usingSsl = parsedUrl.protocol === 'https:'; + proxyAgent = new undici_1.ProxyAgent(Object.assign({ + uri: proxyUrl.href, + pipelining: !this._keepAlive ? 0 : 1 + }, (proxyUrl.username || proxyUrl.password) && { + token: "".concat(proxyUrl.username, ":").concat(proxyUrl.password) + })); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } + }, { + key: "_performExponentialBackoff", + value: function _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() { + var ms; + return _regeneratorRuntime().wrap(function _callee19$(_context19) { + while (1) switch (_context19.prev = _context19.next) { + case 0: + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return _context19.abrupt("return", new Promise(function (resolve) { + return setTimeout(function () { + return resolve(); + }, ms); + })); + case 3: + case "end": + return _context19.stop(); + } + }, _callee19); + })); + } + }, { + key: "_processResponse", + value: function _processResponse(res, options) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() { + var _this5 = this; + return _regeneratorRuntime().wrap(function _callee21$(_context21) { + while (1) switch (_context21.prev = _context21.next) { + case 0: + return _context21.abrupt("return", new Promise(function (resolve, reject) { + return __awaiter(_this5, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() { + var statusCode, response, dateTimeDeserializer, obj, contents, msg, err; + return _regeneratorRuntime().wrap(function _callee20$(_context20) { + while (1) switch (_context20.prev = _context20.next) { + case 0: + dateTimeDeserializer = function _dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + var a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + }; + statusCode = res.message.statusCode || 0; + response = { + statusCode: statusCode, + result: null, + headers: {} + }; // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + _context20.prev = 4; + _context20.next = 7; + return res.readBody(); + case 7: + contents = _context20.sent; + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + _context20.next = 14; + break; + case 12: + _context20.prev = 12; + _context20.t0 = _context20["catch"](4); + case 14: + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } else { + msg = "Failed request: (".concat(statusCode, ")"); + } + err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } else { + resolve(response); + } + case 15: + case "end": + return _context20.stop(); + } + }, _callee20, null, [[4, 12]]); + })); + })); + case 1: + case "end": + return _context21.stop(); + } + }, _callee21); + })); + } + }]); +}(); +exports.HttpClient = HttpClient; +var lowercaseKeys = function lowercaseKeys(obj) { + return Object.keys(obj).reduce(function (c, k) { + return c[k.toLowerCase()] = obj[k], c; + }, {}); +}; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 7956: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + var usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + var proxyVar = function () { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + }(); + if (proxyVar) { + try { + return new URL(proxyVar); + } catch (_a) { + if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) return new URL("http://".concat(proxyVar)); + } + } else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + var reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } + var noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + var reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + var upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push("".concat(upperReqHosts[0], ":").concat(reqPort)); + } + // Compare request host against noproxy + var _iterator = _createForOfIteratorHelper(noProxy.split(',').map(function (x) { + return x.trim().toUpperCase(); + }).filter(function (x) { + return x; + })), + _step; + try { + var _loop = function _loop() { + var upperNoProxyItem = _step.value; + if (upperNoProxyItem === '*' || upperReqHosts.some(function (x) { + return x === upperNoProxyItem || x.endsWith(".".concat(upperNoProxyItem)) || upperNoProxyItem.startsWith('.') && x.endsWith("".concat(upperNoProxyItem)); + })) { + return { + v: true + }; + } + }, + _ret; + for (_iterator.s(); !(_step = _iterator.n()).done;) { + _ret = _loop(); + if (_ret) return _ret.v; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return false; +} +exports.checkBypass = checkBypass; +function isLoopbackAddress(host) { + var hostLower = host.toLowerCase(); + return hostLower === 'localhost' || hostLower.startsWith('127.') || hostLower.startsWith('[::1]') || hostLower.startsWith('[0:0:0:0:0:0:0:1]'); +} +//# sourceMappingURL=proxy.js.map + +/***/ }), + +/***/ 8287: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + Octokit: () => (/* binding */ Octokit) +}); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js + 1 modules +var possibleConstructorReturn = __webpack_require__(388); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/callSuper.js +var callSuper = __webpack_require__(9874); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js +var inherits = __webpack_require__(5501); +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (e.includes(n)) continue; + t[n] = r[n]; + } + return t; +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js + +function _objectWithoutProperties(e, t) { + if (null == e) return {}; + var o, + r, + i = _objectWithoutPropertiesLoose(e, t); + if (Object.getOwnPropertySymbols) { + var s = Object.getOwnPropertySymbols(e); + for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); + } + return i; +} + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js +var regeneratorRuntime = __webpack_require__(675); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js +var asyncToGenerator = __webpack_require__(467); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js +var classCallCheck = __webpack_require__(3029); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js +var createClass = __webpack_require__(2901); +;// CONCATENATED MODULE: ./node_modules/universal-user-agent/dist-web/index.js +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + if (typeof process === "object" && process.version !== undefined) { + return "Node.js/".concat(process.version.substr(1), " (").concat(process.platform, "; ").concat(process.arch, ")"); + } + return ""; +} + +//# sourceMappingURL=index.js.map +// EXTERNAL MODULE: ./node_modules/before-after-hook/index.js +var before_after_hook = __webpack_require__(4100); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules +var slicedToArray = __webpack_require__(296); +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js +function lowercaseKeys(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce(function (newObj, key) { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js +var defineProperty = __webpack_require__(4467); +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js +function isPlainObject(value) { + if (typeof value !== "object" || value === null) return false; + if (Object.prototype.toString.call(value) !== "[object Object]") return false; + var proto = Object.getPrototypeOf(value); + if (proto === null) return true; + var Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/util/merge-deep.js + + +function mergeDeep(defaults, options) { + var result = Object.assign({}, defaults); + Object.keys(options).forEach(function (key) { + if (isPlainObject(options[key])) { + if (!(key in defaults)) Object.assign(result, (0,defineProperty/* default */.A)({}, key, options[key]));else result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, (0,defineProperty/* default */.A)({}, key, options[key])); + } + }); + return result; +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js +function removeUndefinedProperties(obj) { + for (var key in obj) { + if (obj[key] === void 0) { + delete obj[key]; + } + } + return obj; +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/merge.js + + + + +function merge(defaults, route, options) { + if (typeof route === "string") { + var _route$split = route.split(" "), + _route$split2 = (0,slicedToArray/* default */.A)(_route$split, 2), + method = _route$split2[0], + url = _route$split2[1]; + options = Object.assign(url ? { + method: method, + url: url + } : { + url: method + }, options); + } else { + options = Object.assign({}, route); + } + options.headers = lowercaseKeys(options.headers); + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + var mergedOptions = mergeDeep(defaults || {}, options); + if (options.url === "/graphql") { + var _defaults$mediaType$p; + if (defaults && (_defaults$mediaType$p = defaults.mediaType.previews) !== null && _defaults$mediaType$p !== void 0 && _defaults$mediaType$p.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(function (preview) { + return !mergedOptions.mediaType.previews.includes(preview); + }).concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map(function (preview) { + return preview.replace(/-preview/, ""); + }); + } + return mergedOptions; +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js +function addQueryParameters(url, parameters) { + var separator = /\?/.test(url) ? "&" : "?"; + var names = Object.keys(parameters); + if (names.length === 0) { + return url; + } + return url + separator + names.map(function (name) { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + return "".concat(name, "=").concat(encodeURIComponent(parameters[name])); + }).join("&"); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js +var urlVariableRegex = /\{[^}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} +function extractUrlVariableNames(url) { + var matches = url.match(urlVariableRegex); + if (!matches) { + return []; + } + return matches.map(removeNonChars).reduce(function (a, b) { + return a.concat(b); + }, []); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/util/omit.js +function omit(object, keysToOmit) { + var result = { + __proto__: null + }; + for (var _i = 0, _Object$keys = Object.keys(object); _i < _Object$keys.length; _i++) { + var key = _Object$keys[_i]; + if (keysToOmit.indexOf(key) === -1) { + result[key] = object[key]; + } + } + return result; +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/util/url-template.js +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } + return part; + }).join(""); +} +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} +function isDefined(value) { + return value !== void 0 && value !== null; +} +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} +function getValues(context, operator, key, modifier) { + var value = context[key], + result = []; + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value2) { + result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : "")); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + var tmp = []; + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value2) { + tmp.push(encodeValue(operator, value2)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + return result; +} +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} +function expand(template, context) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + template = template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { + if (expression) { + var operator = ""; + var values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + expression.split(/,/g).forEach(function (variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + if (operator && operator !== "+") { + var separator = ","; + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + }); + if (template === "/") { + return template; + } else { + return template.replace(/\/$/, ""); + } +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/parse.js + + + + +function parse(options) { + var method = options.method.toUpperCase(); + var url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + var headers = Object.assign({}, options.headers); + var body; + var parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); + var urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + var omittedParameters = Object.keys(options).filter(function (option) { + return urlVariableNames.includes(option); + }).concat("baseUrl"); + var remainingParameters = omit(parameters, omittedParameters); + var isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + if (!isBinaryRequest) { + if (options.mediaType.format) { + headers.accept = headers.accept.split(/,/).map(function (format) { + return format.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, "application/vnd$1$2.".concat(options.mediaType.format)); + }).join(","); + } + if (url.endsWith("/graphql")) { + var _options$mediaType$pr; + if ((_options$mediaType$pr = options.mediaType.previews) !== null && _options$mediaType$pr !== void 0 && _options$mediaType$pr.length) { + var previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(function (preview) { + var format = options.mediaType.format ? ".".concat(options.mediaType.format) : "+json"; + return "application/vnd.github.".concat(preview, "-preview").concat(format); + }).join(","); + } + } + } + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } + } + } + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } + return Object.assign({ + method: method, + url: url, + headers: headers + }, typeof body !== "undefined" ? { + body: body + } : null, options.request ? { + request: options.request + } : null); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js + + + +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/with-defaults.js + + + +function withDefaults(oldDefaults, newDefaults) { + var DEFAULTS = merge(oldDefaults, newDefaults); + var endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS: DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse: parse + }); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/version.js +var VERSION = "9.0.5"; + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/defaults.js + + +var userAgent = "octokit-endpoint.js/".concat(VERSION, " ").concat(getUserAgent()); +var DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "" + } +}; + +;// CONCATENATED MODULE: ./node_modules/@octokit/endpoint/dist-src/index.js + + +var endpoint = withDefaults(null, DEFAULTS); + +;// CONCATENATED MODULE: ./node_modules/@octokit/request/dist-src/version.js +var version_VERSION = "8.4.0"; + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js +var createForOfIteratorHelper = __webpack_require__(4765); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js +var objectSpread2 = __webpack_require__(9379); +;// CONCATENATED MODULE: ./node_modules/@octokit/request/dist-src/is-plain-object.js +function is_plain_object_isPlainObject(value) { + if (typeof value !== "object" || value === null) return false; + if (Object.prototype.toString.call(value) !== "[object Object]") return false; + var proto = Object.getPrototypeOf(value); + if (proto === null) return true; + var Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js +var getPrototypeOf = __webpack_require__(3954); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +var setPrototypeOf = __webpack_require__(3662); +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js +function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } +} + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js +var isNativeReflectConstruct = __webpack_require__(2176); +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/construct.js + + +function _construct(t, e, r) { + if ((0,isNativeReflectConstruct/* default */.A)()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && (0,setPrototypeOf/* default */.A)(p, r.prototype), p; +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js + + + + +function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? new Map() : void 0; + return _wrapNativeSuper = function _wrapNativeSuper(t) { + if (null === t || !_isNativeFunction(t)) return t; + if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t)) return r.get(t); + r.set(t, Wrapper); + } + function Wrapper() { + return _construct(t, arguments, (0,getPrototypeOf/* default */.A)(this).constructor); + } + return Wrapper.prototype = Object.create(t.prototype, { + constructor: { + value: Wrapper, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), (0,setPrototypeOf/* default */.A)(Wrapper, t); + }, _wrapNativeSuper(t); +} + +;// CONCATENATED MODULE: ./node_modules/deprecation/dist-web/index.js + + + + + +var Deprecation = /*#__PURE__*/function (_Error) { + function Deprecation(message) { + var _this; + (0,classCallCheck/* default */.A)(this, Deprecation); + _this = (0,callSuper/* default */.A)(this, Deprecation, [message]); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(_this, _this.constructor); + } + _this.name = 'Deprecation'; + return _this; + } + (0,inherits/* default */.A)(Deprecation, _Error); + return (0,createClass/* default */.A)(Deprecation); +}( /*#__PURE__*/_wrapNativeSuper(Error)); + +// EXTERNAL MODULE: ./node_modules/once/once.js +var once = __webpack_require__(2960); +var once_default = /*#__PURE__*/__webpack_require__.n(once); +;// CONCATENATED MODULE: ./node_modules/@octokit/request-error/dist-src/index.js + + + + + + + +var logOnceCode = once_default()(function (deprecation) { + return console.warn(deprecation); +}); +var logOnceHeaders = once_default()(function (deprecation) { + return console.warn(deprecation); +}); +var RequestError = /*#__PURE__*/function (_Error) { + function RequestError(message, statusCode, options) { + var _this; + (0,classCallCheck/* default */.A)(this, RequestError); + _this = (0,callSuper/* default */.A)(this, RequestError, [message]); + if (Error.captureStackTrace) { + Error.captureStackTrace(_this, _this.constructor); + } + _this.name = "HttpError"; + _this.status = statusCode; + var headers; + if ("headers" in options && typeof options.headers !== "undefined") { + headers = options.headers; + } + if ("response" in options) { + _this.response = options.response; + headers = options.response.headers; + } + var requestCopy = Object.assign({}, options.request); + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") + }); + } + requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + _this.request = requestCopy; + Object.defineProperty(_this, "code", { + get: function get() { + logOnceCode(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + return statusCode; + } + }); + Object.defineProperty(_this, "headers", { + get: function get() { + logOnceHeaders(new Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")); + return headers || {}; + } + }); + return _this; + } + (0,inherits/* default */.A)(RequestError, _Error); + return (0,createClass/* default */.A)(RequestError); +}( /*#__PURE__*/_wrapNativeSuper(Error)); + +;// CONCATENATED MODULE: ./node_modules/@octokit/request/dist-src/get-buffer-response.js +function getBufferResponse(response) { + return response.arrayBuffer(); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/request/dist-src/fetch-wrapper.js + + + + + + + +function fetchWrapper(requestOptions) { + var _requestOptions$reque, _requestOptions$reque2, _requestOptions$reque3, _requestOptions$reque4; + var log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; + var parseSuccessResponseBody = ((_requestOptions$reque = requestOptions.request) === null || _requestOptions$reque === void 0 ? void 0 : _requestOptions$reque.parseSuccessResponseBody) !== false; + if (is_plain_object_isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); + } + var headers = {}; + var status; + var url; + var fetch = globalThis.fetch; + if ((_requestOptions$reque2 = requestOptions.request) !== null && _requestOptions$reque2 !== void 0 && _requestOptions$reque2.fetch) { + fetch = requestOptions.request.fetch; + } + if (!fetch) { + throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"); + } + return fetch(requestOptions.url, (0,objectSpread2/* default */.A)({ + method: requestOptions.method, + body: requestOptions.body, + redirect: (_requestOptions$reque3 = requestOptions.request) === null || _requestOptions$reque3 === void 0 ? void 0 : _requestOptions$reque3.redirect, + headers: requestOptions.headers, + signal: (_requestOptions$reque4 = requestOptions.request) === null || _requestOptions$reque4 === void 0 ? void 0 : _requestOptions$reque4.signal + }, requestOptions.body && { + duplex: "half" + })).then( /*#__PURE__*/function () { + var _ref = (0,asyncToGenerator/* default */.A)( /*#__PURE__*/(0,regeneratorRuntime/* default */.A)().mark(function _callee(response) { + var _iterator, _step, keyAndValue, matches, deprecationLink, data, error; + return (0,regeneratorRuntime/* default */.A)().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + url = response.url; + status = response.status; + _iterator = (0,createForOfIteratorHelper/* default */.A)(response.headers); + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + keyAndValue = _step.value; + headers[keyAndValue[0]] = keyAndValue[1]; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + if ("deprecation" in headers) { + matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); + deprecationLink = matches && matches.pop(); + log.warn("[@octokit/request] \"".concat(requestOptions.method, " ").concat(requestOptions.url, "\" is deprecated. It is scheduled to be removed on ").concat(headers.sunset).concat(deprecationLink ? ". See ".concat(deprecationLink) : "")); + } + if (!(status === 204 || status === 205)) { + _context.next = 7; + break; + } + return _context.abrupt("return"); + case 7: + if (!(requestOptions.method === "HEAD")) { + _context.next = 11; + break; + } + if (!(status < 400)) { + _context.next = 10; + break; + } + return _context.abrupt("return"); + case 10: + throw new RequestError(response.statusText, status, { + response: { + url: url, + status: status, + headers: headers, + data: void 0 + }, + request: requestOptions + }); + case 11: + if (!(status === 304)) { + _context.next = 24; + break; + } + _context.t0 = RequestError; + _context.t1 = status; + _context.t2 = url; + _context.t3 = status; + _context.t4 = headers; + _context.next = 19; + return getResponseData(response); + case 19: + _context.t5 = _context.sent; + _context.t6 = { + url: _context.t2, + status: _context.t3, + headers: _context.t4, + data: _context.t5 + }; + _context.t7 = requestOptions; + _context.t8 = { + response: _context.t6, + request: _context.t7 + }; + throw new _context.t0("Not modified", _context.t1, _context.t8); + case 24: + if (!(status >= 400)) { + _context.next = 30; + break; + } + _context.next = 27; + return getResponseData(response); + case 27: + data = _context.sent; + error = new RequestError(toErrorMessage(data), status, { + response: { + url: url, + status: status, + headers: headers, + data: data + }, + request: requestOptions + }); + throw error; + case 30: + if (!parseSuccessResponseBody) { + _context.next = 36; + break; + } + _context.next = 33; + return getResponseData(response); + case 33: + _context.t9 = _context.sent; + _context.next = 37; + break; + case 36: + _context.t9 = response.body; + case 37: + return _context.abrupt("return", _context.t9); + case 38: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function (_x) { + return _ref.apply(this, arguments); + }; + }()).then(function (data) { + return { + status: status, + url: url, + headers: headers, + data: data + }; + })["catch"](function (error) { + if (error instanceof RequestError) throw error;else if (error.name === "AbortError") throw error; + var message = error.message; + if (error.name === "TypeError" && "cause" in error) { + if (error.cause instanceof Error) { + message = error.cause.message; + } else if (typeof error.cause === "string") { + message = error.cause; + } + } + throw new RequestError(message, 500, { + request: requestOptions + }); + }); +} +function getResponseData(_x2) { + return _getResponseData.apply(this, arguments); +} +function _getResponseData() { + _getResponseData = (0,asyncToGenerator/* default */.A)( /*#__PURE__*/(0,regeneratorRuntime/* default */.A)().mark(function _callee2(response) { + var contentType; + return (0,regeneratorRuntime/* default */.A)().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + contentType = response.headers.get("content-type"); + if (!/application\/json/.test(contentType)) { + _context2.next = 3; + break; + } + return _context2.abrupt("return", response.json()["catch"](function () { + return response.text(); + })["catch"](function () { + return ""; + })); + case 3: + if (!(!contentType || /^text\/|charset=utf-8$/.test(contentType))) { + _context2.next = 5; + break; + } + return _context2.abrupt("return", response.text()); + case 5: + return _context2.abrupt("return", getBufferResponse(response)); + case 6: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return _getResponseData.apply(this, arguments); +} +function toErrorMessage(data) { + if (typeof data === "string") return data; + var suffix; + if ("documentation_url" in data) { + suffix = " - ".concat(data.documentation_url); + } else { + suffix = ""; + } + if ("message" in data) { + if (Array.isArray(data.errors)) { + return "".concat(data.message, ": ").concat(data.errors.map(JSON.stringify).join(", ")).concat(suffix); + } + return "".concat(data.message).concat(suffix); + } + return "Unknown error: ".concat(JSON.stringify(data)); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/request/dist-src/with-defaults.js + +function with_defaults_withDefaults(oldEndpoint, newDefaults) { + var endpoint = oldEndpoint.defaults(newDefaults); + var newApi = function newApi(route, parameters) { + var endpointOptions = endpoint.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); + } + var request = function request(route2, parameters2) { + return fetchWrapper(endpoint.parse(endpoint.merge(route2, parameters2))); + }; + Object.assign(request, { + endpoint: endpoint, + defaults: with_defaults_withDefaults.bind(null, endpoint) + }); + return endpointOptions.request.hook(request, endpointOptions); + }; + return Object.assign(newApi, { + endpoint: endpoint, + defaults: with_defaults_withDefaults.bind(null, endpoint) + }); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/request/dist-src/index.js + + + + +var request = with_defaults_withDefaults(endpoint, { + headers: { + "user-agent": "octokit-request.js/".concat(version_VERSION, " ").concat(getUserAgent()) + } +}); + +;// CONCATENATED MODULE: ./node_modules/@octokit/graphql/dist-web/index.js + + + + + +// pkg/dist-src/index.js + + + +// pkg/dist-src/version.js +var dist_web_VERSION = "7.1.0"; + +// pkg/dist-src/with-defaults.js + + +// pkg/dist-src/graphql.js + + +// pkg/dist-src/error.js +function _buildMessageForResponseErrors(data) { + return "Request failed due to following response errors:\n" + data.errors.map(function (e) { + return " - ".concat(e.message); + }).join("\n"); +} +var GraphqlResponseError = /*#__PURE__*/function (_Error) { + function GraphqlResponseError(request2, headers, response) { + var _this; + (0,classCallCheck/* default */.A)(this, GraphqlResponseError); + _this = (0,callSuper/* default */.A)(this, GraphqlResponseError, [_buildMessageForResponseErrors(response)]); + _this.request = request2; + _this.headers = headers; + _this.response = response; + _this.name = "GraphqlResponseError"; + _this.errors = response.errors; + _this.data = response.data; + if (Error.captureStackTrace) { + Error.captureStackTrace(_this, _this.constructor); + } + return _this; + } + (0,inherits/* default */.A)(GraphqlResponseError, _Error); + return (0,createClass/* default */.A)(GraphqlResponseError); +}( /*#__PURE__*/_wrapNativeSuper(Error)); + +// pkg/dist-src/graphql.js +var NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"]; +var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request2, query, options) { + if (options) { + if (typeof query === "string" && "query" in options) { + return Promise.reject(new Error("[@octokit/graphql] \"query\" cannot be used as variable name")); + } + for (var key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; + return Promise.reject(new Error("[@octokit/graphql] \"".concat(key, "\" cannot be used as variable name"))); + } + } + var parsedOptions = typeof query === "string" ? Object.assign({ + query: query + }, options) : query; + var requestOptions = Object.keys(parsedOptions).reduce(function (result, key) { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + if (!result.variables) { + result.variables = {}; + } + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + var baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + return request2(requestOptions).then(function (response) { + if (response.data.errors) { + var headers = {}; + for (var _i = 0, _Object$keys = Object.keys(response.headers); _i < _Object$keys.length; _i++) { + var _key = _Object$keys[_i]; + headers[_key] = response.headers[_key]; + } + throw new GraphqlResponseError(requestOptions, headers, response.data); + } + return response.data.data; + }); +} + +// pkg/dist-src/with-defaults.js +function dist_web_withDefaults(request2, newDefaults) { + var newRequest = request2.defaults(newDefaults); + var newApi = function newApi(query, options) { + return graphql(newRequest, query, options); + }; + return Object.assign(newApi, { + defaults: dist_web_withDefaults.bind(null, newRequest), + endpoint: newRequest.endpoint + }); +} + +// pkg/dist-src/index.js +var graphql2 = dist_web_withDefaults(request, { + headers: { + "user-agent": "octokit-graphql.js/".concat(dist_web_VERSION, " ").concat(getUserAgent()) + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return dist_web_withDefaults(customRequest, { + method: "POST", + url: "/graphql" + }); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/auth-token/dist-src/auth.js + + +var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +var REGEX_IS_INSTALLATION = /^ghs_/; +var REGEX_IS_USER_TO_SERVER = /^ghu_/; +function auth(_x) { + return _auth.apply(this, arguments); +} +function _auth() { + _auth = (0,asyncToGenerator/* default */.A)( /*#__PURE__*/(0,regeneratorRuntime/* default */.A)().mark(function _callee(token) { + var isApp, isInstallation, isUserToServer, tokenType; + return (0,regeneratorRuntime/* default */.A)().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + isApp = token.split(/\./).length === 3; + isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); + isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); + tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; + return _context.abrupt("return", { + type: "token", + token: token, + tokenType: tokenType + }); + case 5: + case "end": + return _context.stop(); + } + }, _callee); + })); + return _auth.apply(this, arguments); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return "bearer ".concat(token); + } + return "token ".concat(token); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/auth-token/dist-src/hook.js + + + +function hook(_x, _x2, _x3, _x4) { + return _hook.apply(this, arguments); +} +function _hook() { + _hook = (0,asyncToGenerator/* default */.A)( /*#__PURE__*/(0,regeneratorRuntime/* default */.A)().mark(function _callee(token, request, route, parameters) { + var endpoint; + return (0,regeneratorRuntime/* default */.A)().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + endpoint = request.endpoint.merge(route, parameters); + endpoint.headers.authorization = withAuthorizationPrefix(token); + return _context.abrupt("return", request(endpoint)); + case 3: + case "end": + return _context.stop(); + } + }, _callee); + })); + return _hook.apply(this, arguments); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/auth-token/dist-src/index.js + + +var createTokenAuth = function createTokenAuth2(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } + if (typeof token !== "string") { + throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); + } + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; + +;// CONCATENATED MODULE: ./node_modules/@octokit/core/dist-web/index.js + + + + + + + + +var _excluded = ["authStrategy"]; +var _Class; +// pkg/dist-src/index.js + + + + + + +// pkg/dist-src/version.js +var core_dist_web_VERSION = "5.2.0"; + +// pkg/dist-src/index.js +var noop = function noop() {}; +var consoleWarn = console.warn.bind(console); +var consoleError = console.error.bind(console); +var userAgentTrail = "octokit-core.js/".concat(core_dist_web_VERSION, " ").concat(getUserAgent()); +var Octokit = (_Class = /*#__PURE__*/function () { + function Octokit() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + (0,classCallCheck/* default */.A)(this, Octokit); + var hook = new before_after_hook.Collection(); + var requestDefaults = { + baseUrl: request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; + requestDefaults.headers["user-agent"] = options.userAgent ? "".concat(options.userAgent, " ").concat(userAgentTrail) : userAgentTrail; + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; + } + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; + } + if (options.timeZone) { + requestDefaults.headers["time-zone"] = options.timeZone; + } + this.request = request.defaults(requestDefaults); + this.graphql = withCustomRequest(this.request).defaults(requestDefaults); + this.log = Object.assign({ + debug: noop, + info: noop, + warn: consoleWarn, + error: consoleError + }, options.log); + this.hook = hook; + if (!options.authStrategy) { + if (!options.auth) { + this.auth = /*#__PURE__*/(0,asyncToGenerator/* default */.A)( /*#__PURE__*/(0,regeneratorRuntime/* default */.A)().mark(function _callee() { + return (0,regeneratorRuntime/* default */.A)().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", { + type: "unauthenticated" + }); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + } else { + var auth = createTokenAuth(options.auth); + hook.wrap("request", auth.hook); + this.auth = auth; + } + } else { + var authStrategy = options.authStrategy, + otherOptions = _objectWithoutProperties(options, _excluded); + var _auth = authStrategy(Object.assign({ + request: this.request, + log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. + octokit: this, + octokitOptions: otherOptions + }, options.auth)); + hook.wrap("request", _auth.hook); + this.auth = _auth; + } + var classConstructor = this.constructor; + for (var i = 0; i < classConstructor.plugins.length; ++i) { + Object.assign(this, classConstructor.plugins[i](this, options)); + } + } + return (0,createClass/* default */.A)(Octokit, null, [{ + key: "defaults", + value: function defaults(_defaults) { + var OctokitWithDefaults = /*#__PURE__*/function (_this) { + function OctokitWithDefaults() { + var _this2; + (0,classCallCheck/* default */.A)(this, OctokitWithDefaults); + var options = (arguments.length <= 0 ? undefined : arguments[0]) || {}; + if (typeof _defaults === "function") { + _this2 = (0,callSuper/* default */.A)(this, OctokitWithDefaults, [_defaults(options)]); + return (0,possibleConstructorReturn/* default */.A)(_this2); + } + return (0,callSuper/* default */.A)(this, OctokitWithDefaults, [Object.assign({}, _defaults, options, options.userAgent && _defaults.userAgent ? { + userAgent: "".concat(options.userAgent, " ").concat(_defaults.userAgent) + } : null)]); + } + (0,inherits/* default */.A)(OctokitWithDefaults, _this); + return (0,createClass/* default */.A)(OctokitWithDefaults); + }(this); + return OctokitWithDefaults; + } + }, { + key: "plugin", + value: + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + function plugin() { + var _Class2, + _arguments = arguments; + var currentPlugins = this.plugins; + var NewOctokit = (_Class2 = /*#__PURE__*/function (_this3) { + function NewOctokit() { + (0,classCallCheck/* default */.A)(this, NewOctokit); + return (0,callSuper/* default */.A)(this, NewOctokit, arguments); + } + (0,inherits/* default */.A)(NewOctokit, _this3); + return (0,createClass/* default */.A)(NewOctokit); + }(this), function () { + for (var _len = _arguments.length, newPlugins = new Array(_len), _key = 0; _key < _len; _key++) { + newPlugins[_key] = _arguments[_key]; + } + _Class2.plugins = currentPlugins.concat(newPlugins.filter(function (plugin) { + return !currentPlugins.includes(plugin); + })); + }(), _Class2); + return NewOctokit; + } + }]); +}(), _Class.VERSION = core_dist_web_VERSION, _Class.plugins = [], _Class); + + +/***/ }), + +/***/ 8292: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ composePaginateRest: () => (/* binding */ composePaginateRest), +/* harmony export */ isPaginatingEndpoint: () => (/* binding */ isPaginatingEndpoint), +/* harmony export */ paginateRest: () => (/* binding */ paginateRest), +/* harmony export */ paginatingEndpoints: () => (/* binding */ paginatingEndpoints) +/* harmony export */ }); +/* harmony import */ var _Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4467); +/* harmony import */ var _Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(675); +/* harmony import */ var _Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(467); +/* harmony import */ var _Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9379); + + + + +// pkg/dist-src/version.js +var VERSION = "9.2.1"; + +// pkg/dist-src/normalize-paginated-list-response.js +function normalizePaginatedListResponse(response) { + if (!response.data) { + return (0,_Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, response), {}, { + data: [] + }); + } + var responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) return response; + var incompleteResults = response.data.incomplete_results; + var repositorySelection = response.data.repository_selection; + var totalCount = response.data.total_count; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + var namespaceKey = Object.keys(response.data)[0]; + var data = response.data[namespaceKey]; + response.data = data; + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + response.data.total_count = totalCount; + return response; +} + +// pkg/dist-src/iterator.js +function iterator(octokit, route, parameters) { + var options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + var requestMethod = typeof route === "function" ? route : octokit.request; + var method = options.method; + var headers = options.headers; + var url = options.url; + return (0,_Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, Symbol.asyncIterator, function () { + return { + next: function next() { + return (0,_Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)( /*#__PURE__*/(0,_Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)().mark(function _callee() { + var response, normalizedResponse; + return (0,_Users_wangchujiang_git_project_actions_github_action_folder_tree_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (url) { + _context.next = 2; + break; + } + return _context.abrupt("return", { + done: true + }); + case 2: + _context.prev = 2; + _context.next = 5; + return requestMethod({ + method: method, + url: url, + headers: headers + }); + case 5: + response = _context.sent; + normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; + return _context.abrupt("return", { + value: normalizedResponse + }); + case 11: + _context.prev = 11; + _context.t0 = _context["catch"](2); + if (!(_context.t0.status !== 409)) { + _context.next = 15; + break; + } + throw _context.t0; + case 15: + url = ""; + return _context.abrupt("return", { + value: { + status: 200, + headers: {}, + data: [] + } + }); + case 17: + case "end": + return _context.stop(); + } + }, _callee, null, [[2, 11]]); + }))(); + } + }; + }); +} + +// pkg/dist-src/paginate.js +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = void 0; + } + return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); +} +function gather(octokit, results, iterator2, mapFn) { + return iterator2.next().then(function (result) { + if (result.done) { + return results; + } + var earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator2, mapFn); + }); +} + +// pkg/dist-src/compose-paginate.js +var composePaginateRest = Object.assign(paginate, { + iterator: iterator +}); + +// pkg/dist-src/generated/paginating-endpoints.js +var paginatingEndpoints = ["GET /advisories", "GET /app/hook/deliveries", "GET /app/installation-requests", "GET /app/installations", "GET /assignments/{assignment_id}/accepted_assignments", "GET /classrooms", "GET /classrooms/{classroom_id}/assignments", "GET /enterprises/{enterprise}/dependabot/alerts", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/actions/variables", "GET /orgs/{org}/actions/variables/{name}/repositories", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/codespaces/secrets", "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", "GET /orgs/{org}/copilot/billing/seats", "GET /orgs/{org}/dependabot/alerts", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/members/{username}/codespaces", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/organization-roles/{role_id}/teams", "GET /orgs/{org}/organization-roles/{role_id}/users", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/personal-access-token-requests", "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", "GET /orgs/{org}/personal-access-tokens", "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", "GET /orgs/{org}/projects", "GET /orgs/{org}/properties/values", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/rulesets", "GET /orgs/{org}/rulesets/rule-suites", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/security-advisories", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/organization-secrets", "GET /repos/{owner}/{repo}/actions/organization-variables", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/variables", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/activity", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/alerts", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/rules/branches/{branch}", "GET /repos/{owner}/{repo}/rulesets", "GET /repos/{owner}/{repo}/rulesets/rule-suites", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/security-advisories", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /repositories/{repository_id}/environments/{environment_name}/variables", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/social_accounts", "GET /user/ssh_signing_keys", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/social_accounts", "GET /users/{username}/ssh_signing_keys", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"]; + +// pkg/dist-src/paginating-endpoints.js +function isPaginatingEndpoint(arg) { + if (typeof arg === "string") { + return paginatingEndpoints.includes(arg); + } else { + return false; + } +} + +// pkg/dist-src/index.js +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION; + + +/***/ }), + +/***/ 6463: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + legacyRestEndpointMethods: () => (/* binding */ legacyRestEndpointMethods), + restEndpointMethods: () => (/* binding */ restEndpointMethods) +}); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js +var objectSpread2 = __webpack_require__(9379); +;// CONCATENATED MODULE: ./node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js +var VERSION = "10.4.1"; + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js +var defineProperty = __webpack_require__(4467); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js +var createForOfIteratorHelper = __webpack_require__(4765); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 3 modules +var toConsumableArray = __webpack_require__(5458); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules +var slicedToArray = __webpack_require__(296); +;// CONCATENATED MODULE: ./node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js +var Endpoints = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"], + addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], + addSelectedRepoToOrgVariable: ["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"], + approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"], + cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], + createEnvironmentVariable: ["POST /repositories/{repository_id}/environments/{environment_name}/variables"], + createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + createOrgVariable: ["POST /orgs/{org}/actions/variables"], + createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], + createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"], + createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], + createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], + createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], + createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"], + deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], + deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], + deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + deleteEnvironmentVariable: ["DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}"], + deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], + deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + deleteRepoVariable: ["DELETE /repos/{owner}/{repo}/actions/variables/{name}"], + deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], + deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"], + deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], + deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], + disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"], + disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], + downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"], + downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], + downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"], + downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], + enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"], + enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], + forceCancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"], + generateRunnerJitconfigForOrg: ["POST /orgs/{org}/actions/runners/generate-jitconfig"], + generateRunnerJitconfigForRepo: ["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], + getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], + getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], + getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], + getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], + getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"], + getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + getCustomOidcSubClaimForRepo: ["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"], + getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"], + getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + getEnvironmentVariable: ["GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}"], + getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"], + getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"], + getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], + getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], + getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], + getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], + getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], + getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], + getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, { + renamed: ["actions", "getGithubActionsPermissionsRepository"] + }], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], + getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"], + getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], + getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], + getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], + getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"], + getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], + getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"], + getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], + getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], + listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], + listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"], + listEnvironmentVariables: ["GET /repositories/{repository_id}/environments/{environment_name}/variables"], + listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], + listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"], + listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"], + listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], + listOrgVariables: ["GET /orgs/{org}/actions/variables"], + listRepoOrganizationSecrets: ["GET /repos/{owner}/{repo}/actions/organization-secrets"], + listRepoOrganizationVariables: ["GET /repos/{owner}/{repo}/actions/organization-variables"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], + listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], + listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], + listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], + listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], + listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"], + listSelectedReposForOrgVariable: ["GET /orgs/{org}/actions/variables/{name}/repositories"], + listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"], + listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], + listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], + listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], + listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], + listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], + reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"], + reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], + reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"], + removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"], + removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], + removeSelectedRepoFromOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"], + reviewCustomGatesForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"], + reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], + setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], + setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"], + setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"], + setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + setCustomOidcSubClaimForRepo: ["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"], + setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"], + setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"], + setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], + setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], + setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"], + setSelectedReposForOrgVariable: ["PUT /orgs/{org}/actions/variables/{name}/repositories"], + setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"], + setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"], + updateEnvironmentVariable: ["PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}"], + updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], + updateRepoVariable: ["PATCH /repos/{owner}/{repo}/actions/variables/{name}"] + }, + activity: { + checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], + deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], + deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], + getFeeds: ["GET /feeds"], + getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], + getThread: ["GET /notifications/threads/{thread_id}"], + getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"], + listEventsForAuthenticatedUser: ["GET /users/{username}/events"], + listNotificationsForAuthenticatedUser: ["GET /notifications"], + listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], + listPublicEvents: ["GET /events"], + listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], + listPublicEventsForUser: ["GET /users/{username}/events/public"], + listPublicOrgEvents: ["GET /orgs/{org}/events"], + listReceivedEventsForUser: ["GET /users/{username}/received_events"], + listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], + listRepoEvents: ["GET /repos/{owner}/{repo}/events"], + listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], + listReposStarredByAuthenticatedUser: ["GET /user/starred"], + listReposStarredByUser: ["GET /users/{username}/starred"], + listReposWatchedByUser: ["GET /users/{username}/subscriptions"], + listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], + listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], + listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], + markNotificationsAsRead: ["PUT /notifications"], + markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], + markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"], + markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], + setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], + setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], + starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], + unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] + }, + apps: { + addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, { + renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] + }], + addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"], + checkToken: ["POST /applications/{client_id}/token"], + createFromManifest: ["POST /app-manifests/{code}/conversions"], + createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"], + deleteAuthorization: ["DELETE /applications/{client_id}/grant"], + deleteInstallation: ["DELETE /app/installations/{installation_id}"], + deleteToken: ["DELETE /applications/{client_id}/token"], + getAuthenticated: ["GET /app"], + getBySlug: ["GET /apps/{app_slug}"], + getInstallation: ["GET /app/installations/{installation_id}"], + getOrgInstallation: ["GET /orgs/{org}/installation"], + getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], + getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], + getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"], + getUserInstallation: ["GET /users/{username}/installation"], + getWebhookConfigForApp: ["GET /app/hook/config"], + getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], + listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], + listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], + listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"], + listInstallationRequestsForAuthenticatedApp: ["GET /app/installation-requests"], + listInstallations: ["GET /app/installations"], + listInstallationsForAuthenticatedUser: ["GET /user/installations"], + listPlans: ["GET /marketplace_listing/plans"], + listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], + listReposAccessibleToInstallation: ["GET /installation/repositories"], + listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], + listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], + listWebhookDeliveries: ["GET /app/hook/deliveries"], + redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"], + removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, { + renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] + }], + removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"], + resetToken: ["PATCH /applications/{client_id}/token"], + revokeInstallationAccessToken: ["DELETE /installation/token"], + scopeToken: ["POST /applications/{client_id}/token/scoped"], + suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], + unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], + updateWebhookConfigForApp: ["PATCH /app/hook/config"] + }, + billing: { + getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], + getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], + getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], + getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], + getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], + getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"] + }, + checks: { + create: ["POST /repos/{owner}/{repo}/check-runs"], + createSuite: ["POST /repos/{owner}/{repo}/check-suites"], + get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], + getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], + listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], + listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], + listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], + listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], + rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"], + rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], + setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], + update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] + }, + codeScanning: { + deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"], + getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, { + renamedParameters: { + alert_id: "alert_number" + } + }], + getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"], + getCodeqlDatabase: ["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"], + getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], + getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], + listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"], + listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], + listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, { + renamed: ["codeScanning", "listAlertInstances"] + }], + listCodeqlDatabases: ["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"], + listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], + updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], + updateDefaultSetup: ["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"], + uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] + }, + codesOfConduct: { + getAllCodesOfConduct: ["GET /codes_of_conduct"], + getConductCode: ["GET /codes_of_conduct/{key}"] + }, + codespaces: { + addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], + addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"], + checkPermissionsForDevcontainer: ["GET /repos/{owner}/{repo}/codespaces/permissions_check"], + codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"], + createForAuthenticatedUser: ["POST /user/codespaces"], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/codespaces/secrets/{secret_name}"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"], + createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"], + createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], + deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"], + deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], + exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], + getCodespacesForUserInOrg: ["GET /orgs/{org}/members/{username}/codespaces"], + getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"], + getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], + getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], + getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], + listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"], + listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: ["GET /orgs/{org}/codespaces", {}, { + renamedParameters: { + org_id: "org" + } + }], + listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], + listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], + listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"], + listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], + listSelectedReposForOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"], + preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"], + publishForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/publish"], + removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], + removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"], + repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"], + setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"], + setSelectedReposForOrgSecret: ["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"], + startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], + stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"], + updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] + }, + copilot: { + addCopilotSeatsForTeams: ["POST /orgs/{org}/copilot/billing/selected_teams"], + addCopilotSeatsForUsers: ["POST /orgs/{org}/copilot/billing/selected_users"], + cancelCopilotSeatAssignmentForTeams: ["DELETE /orgs/{org}/copilot/billing/selected_teams"], + cancelCopilotSeatAssignmentForUsers: ["DELETE /orgs/{org}/copilot/billing/selected_users"], + getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], + getCopilotSeatDetailsForUser: ["GET /orgs/{org}/members/{username}/copilot"], + listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"] + }, + dependabot: { + addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], + getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + listAlertsForEnterprise: ["GET /enterprises/{enterprise}/dependabot/alerts"], + listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], + listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], + listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"], + removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], + setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"], + updateAlert: ["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"] + }, + dependencyGraph: { + createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], + diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"], + exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"] + }, + emojis: { + get: ["GET /emojis"] + }, + gists: { + checkIsStarred: ["GET /gists/{gist_id}/star"], + create: ["POST /gists"], + createComment: ["POST /gists/{gist_id}/comments"], + "delete": ["DELETE /gists/{gist_id}"], + deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], + fork: ["POST /gists/{gist_id}/forks"], + get: ["GET /gists/{gist_id}"], + getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], + getRevision: ["GET /gists/{gist_id}/{sha}"], + list: ["GET /gists"], + listComments: ["GET /gists/{gist_id}/comments"], + listCommits: ["GET /gists/{gist_id}/commits"], + listForUser: ["GET /users/{username}/gists"], + listForks: ["GET /gists/{gist_id}/forks"], + listPublic: ["GET /gists/public"], + listStarred: ["GET /gists/starred"], + star: ["PUT /gists/{gist_id}/star"], + unstar: ["DELETE /gists/{gist_id}/star"], + update: ["PATCH /gists/{gist_id}"], + updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] + }, + git: { + createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], + createCommit: ["POST /repos/{owner}/{repo}/git/commits"], + createRef: ["POST /repos/{owner}/{repo}/git/refs"], + createTag: ["POST /repos/{owner}/{repo}/git/tags"], + createTree: ["POST /repos/{owner}/{repo}/git/trees"], + deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], + getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], + getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], + getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], + getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], + getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], + listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], + updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] + }, + gitignore: { + getAllTemplates: ["GET /gitignore/templates"], + getTemplate: ["GET /gitignore/templates/{name}"] + }, + interactions: { + getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], + getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], + getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], + getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, { + renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] + }], + removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], + removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], + removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], + removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, { + renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] + }], + setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], + setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], + setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], + setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, { + renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] + }] + }, + issues: { + addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], + addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], + checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], + checkUserCanBeAssignedToIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"], + create: ["POST /repos/{owner}/{repo}/issues"], + createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], + createLabel: ["POST /repos/{owner}/{repo}/labels"], + createMilestone: ["POST /repos/{owner}/{repo}/milestones"], + deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], + deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], + deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], + get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], + getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], + getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], + getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], + getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], + list: ["GET /issues"], + listAssignees: ["GET /repos/{owner}/{repo}/assignees"], + listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], + listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], + listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], + listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], + listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"], + listForAuthenticatedUser: ["GET /user/issues"], + listForOrg: ["GET /orgs/{org}/issues"], + listForRepo: ["GET /repos/{owner}/{repo}/issues"], + listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"], + listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], + listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], + listMilestones: ["GET /repos/{owner}/{repo}/milestones"], + lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], + removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], + removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], + removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], + setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], + unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], + update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], + updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], + updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], + updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"] + }, + licenses: { + get: ["GET /licenses/{license}"], + getAllCommonlyUsed: ["GET /licenses"], + getForRepo: ["GET /repos/{owner}/{repo}/license"] + }, + markdown: { + render: ["POST /markdown"], + renderRaw: ["POST /markdown/raw", { + headers: { + "content-type": "text/plain; charset=utf-8" + } + }] + }, + meta: { + get: ["GET /meta"], + getAllVersions: ["GET /versions"], + getOctocat: ["GET /octocat"], + getZen: ["GET /zen"], + root: ["GET /"] + }, + migrations: { + cancelImport: ["DELETE /repos/{owner}/{repo}/import", {}, { + deprecated: "octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import" + }], + deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"], + deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"], + downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"], + getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"], + getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors", {}, { + deprecated: "octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors" + }], + getImportStatus: ["GET /repos/{owner}/{repo}/import", {}, { + deprecated: "octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status" + }], + getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files", {}, { + deprecated: "octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files" + }], + getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], + getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], + listForAuthenticatedUser: ["GET /user/migrations"], + listForOrg: ["GET /orgs/{org}/migrations"], + listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"], + listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], + listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, { + renamed: ["migrations", "listReposForAuthenticatedUser"] + }], + mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}", {}, { + deprecated: "octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author" + }], + setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs", {}, { + deprecated: "octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference" + }], + startForAuthenticatedUser: ["POST /user/migrations"], + startForOrg: ["POST /orgs/{org}/migrations"], + startImport: ["PUT /repos/{owner}/{repo}/import", {}, { + deprecated: "octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import" + }], + unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"], + unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"], + updateImport: ["PATCH /repos/{owner}/{repo}/import", {}, { + deprecated: "octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import" + }] + }, + oidc: { + getOidcCustomSubTemplateForOrg: ["GET /orgs/{org}/actions/oidc/customization/sub"], + updateOidcCustomSubTemplateForOrg: ["PUT /orgs/{org}/actions/oidc/customization/sub"] + }, + orgs: { + addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"], + assignTeamToOrgRole: ["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"], + assignUserToOrgRole: ["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"], + blockUser: ["PUT /orgs/{org}/blocks/{username}"], + cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], + checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], + checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], + checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], + convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], + createCustomOrganizationRole: ["POST /orgs/{org}/organization-roles"], + createInvitation: ["POST /orgs/{org}/invitations"], + createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"], + createOrUpdateCustomPropertiesValuesForRepos: ["PATCH /orgs/{org}/properties/values"], + createOrUpdateCustomProperty: ["PUT /orgs/{org}/properties/schema/{custom_property_name}"], + createWebhook: ["POST /orgs/{org}/hooks"], + "delete": ["DELETE /orgs/{org}"], + deleteCustomOrganizationRole: ["DELETE /orgs/{org}/organization-roles/{role_id}"], + deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], + enableOrDisableSecurityProductOnAllOrgRepos: ["POST /orgs/{org}/{security_product}/{enablement}"], + get: ["GET /orgs/{org}"], + getAllCustomProperties: ["GET /orgs/{org}/properties/schema"], + getCustomProperty: ["GET /orgs/{org}/properties/schema/{custom_property_name}"], + getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], + getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], + getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"], + getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], + getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], + getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"], + list: ["GET /organizations"], + listAppInstallations: ["GET /orgs/{org}/installations"], + listBlockedUsers: ["GET /orgs/{org}/blocks"], + listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"], + listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], + listForAuthenticatedUser: ["GET /user/orgs"], + listForUser: ["GET /users/{username}/orgs"], + listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], + listMembers: ["GET /orgs/{org}/members"], + listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], + listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"], + listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"], + listOrgRoles: ["GET /orgs/{org}/organization-roles"], + listOrganizationFineGrainedPermissions: ["GET /orgs/{org}/organization-fine-grained-permissions"], + listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], + listPatGrantRepositories: ["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"], + listPatGrantRequestRepositories: ["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"], + listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], + listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], + listPendingInvitations: ["GET /orgs/{org}/invitations"], + listPublicMembers: ["GET /orgs/{org}/public_members"], + listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], + listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /orgs/{org}/hooks"], + patchCustomOrganizationRole: ["PATCH /orgs/{org}/organization-roles/{role_id}"], + pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], + removeCustomProperty: ["DELETE /orgs/{org}/properties/schema/{custom_property_name}"], + removeMember: ["DELETE /orgs/{org}/members/{username}"], + removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], + removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], + removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"], + removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"], + reviewPatGrantRequest: ["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"], + reviewPatGrantRequestsInBulk: ["POST /orgs/{org}/personal-access-token-requests"], + revokeAllOrgRolesTeam: ["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"], + revokeAllOrgRolesUser: ["DELETE /orgs/{org}/organization-roles/users/{username}"], + revokeOrgRoleTeam: ["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"], + revokeOrgRoleUser: ["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"], + setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], + setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], + unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], + update: ["PATCH /orgs/{org}"], + updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], + updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], + updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], + updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], + updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] + }, + packages: { + deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"], + deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"], + deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"], + deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], + deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, { + renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] + }], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, { + renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"] + }], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"], + getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"], + getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"], + getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"], + getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"], + getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"], + getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + listDockerMigrationConflictingPackagesForAuthenticatedUser: ["GET /user/docker/conflicts"], + listDockerMigrationConflictingPackagesForOrganization: ["GET /orgs/{org}/docker/conflicts"], + listDockerMigrationConflictingPackagesForUser: ["GET /users/{username}/docker/conflicts"], + listPackagesForAuthenticatedUser: ["GET /user/packages"], + listPackagesForOrganization: ["GET /orgs/{org}/packages"], + listPackagesForUser: ["GET /users/{username}/packages"], + restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], + restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], + restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"] + }, + projects: { + addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], + createCard: ["POST /projects/columns/{column_id}/cards"], + createColumn: ["POST /projects/{project_id}/columns"], + createForAuthenticatedUser: ["POST /user/projects"], + createForOrg: ["POST /orgs/{org}/projects"], + createForRepo: ["POST /repos/{owner}/{repo}/projects"], + "delete": ["DELETE /projects/{project_id}"], + deleteCard: ["DELETE /projects/columns/cards/{card_id}"], + deleteColumn: ["DELETE /projects/columns/{column_id}"], + get: ["GET /projects/{project_id}"], + getCard: ["GET /projects/columns/cards/{card_id}"], + getColumn: ["GET /projects/columns/{column_id}"], + getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"], + listCards: ["GET /projects/columns/{column_id}/cards"], + listCollaborators: ["GET /projects/{project_id}/collaborators"], + listColumns: ["GET /projects/{project_id}/columns"], + listForOrg: ["GET /orgs/{org}/projects"], + listForRepo: ["GET /repos/{owner}/{repo}/projects"], + listForUser: ["GET /users/{username}/projects"], + moveCard: ["POST /projects/columns/cards/{card_id}/moves"], + moveColumn: ["POST /projects/columns/{column_id}/moves"], + removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"], + update: ["PATCH /projects/{project_id}"], + updateCard: ["PATCH /projects/columns/cards/{card_id}"], + updateColumn: ["PATCH /projects/columns/{column_id}"] + }, + pulls: { + checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + create: ["POST /repos/{owner}/{repo}/pulls"], + createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"], + createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], + deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"], + get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], + getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + list: ["GET /repos/{owner}/{repo}/pulls"], + listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"], + listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], + listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], + listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], + listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], + listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"], + update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], + updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"], + updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"] + }, + rateLimit: { + get: ["GET /rate_limit"] + }, + reactions: { + createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"], + createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], + createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], + createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"], + createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], + createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"], + deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"], + deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"], + deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"], + deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"], + deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"], + deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"], + deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"], + listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"], + listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], + listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], + listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"], + listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], + listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"] + }, + repos: { + acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, { + renamed: ["repos", "acceptInvitationForAuthenticatedUser"] + }], + acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"], + addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], + addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + cancelPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"], + checkAutomatedSecurityFixes: ["GET /repos/{owner}/{repo}/automated-security-fixes"], + checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], + checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"], + codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], + compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], + compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"], + createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], + createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], + createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], + createDeployKey: ["POST /repos/{owner}/{repo}/keys"], + createDeployment: ["POST /repos/{owner}/{repo}/deployments"], + createDeploymentBranchPolicy: ["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], + createDeploymentProtectionRule: ["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"], + createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], + createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], + createForAuthenticatedUser: ["POST /user/repos"], + createFork: ["POST /repos/{owner}/{repo}/forks"], + createInOrg: ["POST /orgs/{org}/repos"], + createOrUpdateCustomPropertiesValues: ["PATCH /repos/{owner}/{repo}/properties/values"], + createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"], + createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], + createOrgRuleset: ["POST /orgs/{org}/rulesets"], + createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"], + createPagesSite: ["POST /repos/{owner}/{repo}/pages"], + createRelease: ["POST /repos/{owner}/{repo}/releases"], + createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], + createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], + createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"], + createWebhook: ["POST /repos/{owner}/{repo}/hooks"], + declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, { + renamed: ["repos", "declineInvitationForAuthenticatedUser"] + }], + declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"], + "delete": ["DELETE /repos/{owner}/{repo}"], + deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], + deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"], + deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], + deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], + deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], + deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], + deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], + deleteDeploymentBranchPolicy: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], + deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], + deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], + deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], + deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], + deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], + deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"], + deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], + disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"], + disableDeploymentProtectionRule: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"], + disablePrivateVulnerabilityReporting: ["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"], + disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"], + downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, { + renamed: ["repos", "downloadZipballArchive"] + }], + downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], + downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], + enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"], + enablePrivateVulnerabilityReporting: ["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"], + enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"], + generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"], + get: ["GET /repos/{owner}/{repo}"], + getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], + getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + getAllDeploymentProtectionRules: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"], + getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], + getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"], + getAllTopics: ["GET /repos/{owner}/{repo}/topics"], + getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"], + getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], + getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], + getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], + getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], + getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], + getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], + getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"], + getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], + getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], + getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], + getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], + getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], + getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], + getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], + getCustomDeploymentProtectionRule: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"], + getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"], + getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], + getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], + getDeploymentBranchPolicy: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"], + getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"], + getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], + getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], + getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"], + getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"], + getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], + getOrgRulesets: ["GET /orgs/{org}/rulesets"], + getPages: ["GET /repos/{owner}/{repo}/pages"], + getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], + getPagesDeployment: ["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"], + getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], + getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], + getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], + getReadme: ["GET /repos/{owner}/{repo}/readme"], + getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], + getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], + getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], + getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], + getRepoRuleSuite: ["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"], + getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], + getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], + getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"], + getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], + getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], + getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"], + getViews: ["GET /repos/{owner}/{repo}/traffic/views"], + getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], + getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], + getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"], + listActivities: ["GET /repos/{owner}/{repo}/activity"], + listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], + listBranches: ["GET /repos/{owner}/{repo}/branches"], + listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"], + listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], + listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], + listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], + listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], + listCommits: ["GET /repos/{owner}/{repo}/commits"], + listContributors: ["GET /repos/{owner}/{repo}/contributors"], + listCustomDeploymentRuleIntegrations: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"], + listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], + listDeploymentBranchPolicies: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], + listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], + listDeployments: ["GET /repos/{owner}/{repo}/deployments"], + listForAuthenticatedUser: ["GET /user/repos"], + listForOrg: ["GET /orgs/{org}/repos"], + listForUser: ["GET /users/{username}/repos"], + listForks: ["GET /repos/{owner}/{repo}/forks"], + listInvitations: ["GET /repos/{owner}/{repo}/invitations"], + listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], + listLanguages: ["GET /repos/{owner}/{repo}/languages"], + listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], + listPublic: ["GET /repositories"], + listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"], + listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], + listReleases: ["GET /repos/{owner}/{repo}/releases"], + listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], + listTags: ["GET /repos/{owner}/{repo}/tags"], + listTeams: ["GET /repos/{owner}/{repo}/teams"], + listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], + merge: ["POST /repos/{owner}/{repo}/merges"], + mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], + pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], + removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], + removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], + replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], + requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], + setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], + transfer: ["POST /repos/{owner}/{repo}/transfer"], + update: ["PATCH /repos/{owner}/{repo}"], + updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], + updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], + updateDeploymentBranchPolicy: ["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], + updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], + updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], + updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], + updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], + updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, { + renamed: ["repos", "updateStatusCheckProtection"] + }], + updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], + updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], + uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", { + baseUrl: "https://uploads.github.com" + }] + }, + search: { + code: ["GET /search/code"], + commits: ["GET /search/commits"], + issuesAndPullRequests: ["GET /search/issues"], + labels: ["GET /search/labels"], + repos: ["GET /search/repositories"], + topics: ["GET /search/topics"], + users: ["GET /search/users"] + }, + secretScanning: { + getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], + listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"], + listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], + listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"], + updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"] + }, + securityAdvisories: { + createFork: ["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"], + createPrivateVulnerabilityReport: ["POST /repos/{owner}/{repo}/security-advisories/reports"], + createRepositoryAdvisory: ["POST /repos/{owner}/{repo}/security-advisories"], + createRepositoryAdvisoryCveRequest: ["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"], + getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], + getRepositoryAdvisory: ["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"], + listGlobalAdvisories: ["GET /advisories"], + listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], + listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], + updateRepositoryAdvisory: ["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"] + }, + teams: { + addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"], + addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + create: ["POST /orgs/{org}/teams"], + createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], + createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], + deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], + getByName: ["GET /orgs/{org}/teams/{team_slug}"], + getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], + list: ["GET /orgs/{org}/teams"], + listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], + listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], + listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], + listForAuthenticatedUser: ["GET /user/teams"], + listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], + listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], + listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], + listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], + removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"], + removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] + }, + users: { + addEmailForAuthenticated: ["POST /user/emails", {}, { + renamed: ["users", "addEmailForAuthenticatedUser"] + }], + addEmailForAuthenticatedUser: ["POST /user/emails"], + addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], + block: ["PUT /user/blocks/{username}"], + checkBlocked: ["GET /user/blocks/{username}"], + checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], + checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], + createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, { + renamed: ["users", "createGpgKeyForAuthenticatedUser"] + }], + createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], + createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, { + renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] + }], + createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteEmailForAuthenticated: ["DELETE /user/emails", {}, { + renamed: ["users", "deleteEmailForAuthenticatedUser"] + }], + deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], + deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, { + renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] + }], + deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], + deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, { + renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] + }], + deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], + deleteSshSigningKeyForAuthenticatedUser: ["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"], + follow: ["PUT /user/following/{username}"], + getAuthenticated: ["GET /user"], + getByUsername: ["GET /users/{username}"], + getContextForUser: ["GET /users/{username}/hovercard"], + getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, { + renamed: ["users", "getGpgKeyForAuthenticatedUser"] + }], + getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], + getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, { + renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] + }], + getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"], + list: ["GET /users"], + listBlockedByAuthenticated: ["GET /user/blocks", {}, { + renamed: ["users", "listBlockedByAuthenticatedUser"] + }], + listBlockedByAuthenticatedUser: ["GET /user/blocks"], + listEmailsForAuthenticated: ["GET /user/emails", {}, { + renamed: ["users", "listEmailsForAuthenticatedUser"] + }], + listEmailsForAuthenticatedUser: ["GET /user/emails"], + listFollowedByAuthenticated: ["GET /user/following", {}, { + renamed: ["users", "listFollowedByAuthenticatedUser"] + }], + listFollowedByAuthenticatedUser: ["GET /user/following"], + listFollowersForAuthenticatedUser: ["GET /user/followers"], + listFollowersForUser: ["GET /users/{username}/followers"], + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, { + renamed: ["users", "listGpgKeysForAuthenticatedUser"] + }], + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, { + renamed: ["users", "listPublicEmailsForAuthenticatedUser"] + }], + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, { + renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] + }], + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], + listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, { + renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] + }], + setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"], + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] + } +}; +var endpoints_default = Endpoints; + +;// CONCATENATED MODULE: ./node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js + + + + + +var endpointMethodsMap = /* @__PURE__ */new Map(); +for (var _i = 0, _Object$entries = Object.entries(endpoints_default); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = (0,slicedToArray/* default */.A)(_Object$entries[_i], 2), + scope = _Object$entries$_i[0], + endpoints = _Object$entries$_i[1]; + for (var _i2 = 0, _Object$entries2 = Object.entries(endpoints); _i2 < _Object$entries2.length; _i2++) { + var _Object$entries2$_i = (0,slicedToArray/* default */.A)(_Object$entries2[_i2], 2), + methodName = _Object$entries2$_i[0], + endpoint = _Object$entries2$_i[1]; + var _endpoint = (0,slicedToArray/* default */.A)(endpoint, 3), + route = _endpoint[0], + defaults = _endpoint[1], + decorations = _endpoint[2]; + var _route$split = route.split(/ /), + _route$split2 = (0,slicedToArray/* default */.A)(_route$split, 2), + method = _route$split2[0], + url = _route$split2[1]; + var endpointDefaults = Object.assign({ + method: method, + url: url + }, defaults); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */new Map()); + } + endpointMethodsMap.get(scope).set(methodName, { + scope: scope, + methodName: methodName, + endpointDefaults: endpointDefaults, + decorations: decorations + }); + } +} +var handler = { + has: function has(_ref, methodName) { + var scope = _ref.scope; + return endpointMethodsMap.get(scope).has(methodName); + }, + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, methodName) { + return { + value: this.get(target, methodName), + // ensures method is in the cache + configurable: true, + writable: true, + enumerable: true + }; + }, + defineProperty: function defineProperty(target, methodName, descriptor) { + Object.defineProperty(target.cache, methodName, descriptor); + return true; + }, + deleteProperty: function deleteProperty(target, methodName) { + delete target.cache[methodName]; + return true; + }, + ownKeys: function ownKeys(_ref2) { + var scope = _ref2.scope; + return (0,toConsumableArray/* default */.A)(endpointMethodsMap.get(scope).keys()); + }, + set: function set(target, methodName, value) { + return target.cache[methodName] = value; + }, + get: function get(_ref3, methodName) { + var octokit = _ref3.octokit, + scope = _ref3.scope, + cache = _ref3.cache; + if (cache[methodName]) { + return cache[methodName]; + } + var method = endpointMethodsMap.get(scope).get(methodName); + if (!method) { + return void 0; + } + var endpointDefaults = method.endpointDefaults, + decorations = method.decorations; + if (decorations) { + cache[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); + } else { + cache[methodName] = octokit.request.defaults(endpointDefaults); + } + return cache[methodName]; + } +}; +function endpointsToMethods(octokit) { + var newMethods = {}; + var _iterator = (0,createForOfIteratorHelper/* default */.A)(endpointMethodsMap.keys()), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _scope = _step.value; + newMethods[_scope] = new Proxy({ + octokit: octokit, + scope: _scope, + cache: {} + }, handler); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults, decorations) { + var requestWithDefaults = octokit.request.defaults(defaults); + function withDecorations() { + var _requestWithDefaults$; + var options = (_requestWithDefaults$ = requestWithDefaults.endpoint).merge.apply(_requestWithDefaults$, arguments); + if (decorations.mapToData) { + options = Object.assign({}, options, (0,defineProperty/* default */.A)({ + data: options[decorations.mapToData] + }, decorations.mapToData, void 0)); + return requestWithDefaults(options); + } + if (decorations.renamed) { + var _decorations$renamed = (0,slicedToArray/* default */.A)(decorations.renamed, 2), + newScope = _decorations$renamed[0], + newMethodName = _decorations$renamed[1]; + octokit.log.warn("octokit.".concat(scope, ".").concat(methodName, "() has been renamed to octokit.").concat(newScope, ".").concat(newMethodName, "()")); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + var _requestWithDefaults$2; + var options2 = (_requestWithDefaults$2 = requestWithDefaults.endpoint).merge.apply(_requestWithDefaults$2, arguments); + for (var _i3 = 0, _Object$entries3 = Object.entries(decorations.renamedParameters); _i3 < _Object$entries3.length; _i3++) { + var _Object$entries3$_i = (0,slicedToArray/* default */.A)(_Object$entries3[_i3], 2), + name = _Object$entries3$_i[0], + alias = _Object$entries3$_i[1]; + if (name in options2) { + octokit.log.warn("\"".concat(name, "\" parameter is deprecated for \"octokit.").concat(scope, ".").concat(methodName, "()\". Use \"").concat(alias, "\" instead")); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); + } + return requestWithDefaults.apply(void 0, arguments); + } + return Object.assign(withDecorations, requestWithDefaults); +} + +;// CONCATENATED MODULE: ./node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js + + + +function restEndpointMethods(octokit) { + var api = endpointsToMethods(octokit); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION; +function legacyRestEndpointMethods(octokit) { + var api = endpointsToMethods(octokit); + return (0,objectSpread2/* default */.A)((0,objectSpread2/* default */.A)({}, api), {}, { + rest: api + }); +} +legacyRestEndpointMethods.VERSION = VERSION; + + +/***/ }), + +/***/ 4220: +/***/ ((module) => { + +"use strict"; + + +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + var r = range(a, b, str); + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + if (ai >= 0 && bi > 0) { + if (a === b) { + return [ai, bi]; + } + begs = []; + left = str.length; + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [begs.pop(), bi]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + bi = str.indexOf(b, i + 1); + } + i = ai < bi && ai >= 0 ? ai : bi; + } + if (begs.length) { + result = [left, right]; + } + } + return result; +} + +/***/ }), + +/***/ 4100: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var register = __webpack_require__(7567); +var addHook = __webpack_require__(6051); +var removeHook = __webpack_require__(4310); + +// bind with array of arguments: https://stackoverflow.com/a/21792913 +var bind = Function.bind; +var bindable = bind.bind(bind); +function bindApi(hook, state, name) { + var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); + hook.api = { + remove: removeHookRef + }; + hook.remove = removeHookRef; + ["before", "error", "after", "wrap"].forEach(function (kind) { + var args = name ? [state, kind, name] : [state, kind]; + hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); + }); +} +function HookSingular() { + var singularHookName = "h"; + var singularHookState = { + registry: {} + }; + var singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} +function HookCollection() { + var state = { + registry: {} + }; + var hook = register.bind(null, state); + bindApi(hook, state); + return hook; +} +var collectionHookDeprecationMessageDisplayed = false; +function Hook() { + if (!collectionHookDeprecationMessageDisplayed) { + console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'); + collectionHookDeprecationMessageDisplayed = true; + } + return HookCollection(); +} +Hook.Singular = HookSingular.bind(); +Hook.Collection = HookCollection.bind(); +module.exports = Hook; +// expose constructors as a named property for TypeScript +module.exports.Hook = Hook; +module.exports.Singular = Hook.Singular; +module.exports.Collection = Hook.Collection; + +/***/ }), + +/***/ 6051: +/***/ ((module) => { + +module.exports = addHook; +function addHook(state, kind, name, hook) { + var orig = hook; + if (!state.registry[name]) { + state.registry[name] = []; + } + if (kind === "before") { + hook = function hook(method, options) { + return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); + }; + } + if (kind === "after") { + hook = function hook(method, options) { + var result; + return Promise.resolve().then(method.bind(null, options)).then(function (result_) { + result = result_; + return orig(result, options); + }).then(function () { + return result; + }); + }; + } + if (kind === "error") { + hook = function hook(method, options) { + return Promise.resolve().then(method.bind(null, options))["catch"](function (error) { + return orig(error, options); + }); + }; + } + state.registry[name].push({ + hook: hook, + orig: orig + }); +} + +/***/ }), + +/***/ 7567: +/***/ ((module) => { + +module.exports = register; +function register(state, name, method, options) { + if (typeof method !== "function") { + throw new Error("method for before hook must be a function"); + } + if (!options) { + options = {}; + } + if (Array.isArray(name)) { + return name.reverse().reduce(function (callback, name) { + return register.bind(null, state, name, callback, options); + }, method)(); + } + return Promise.resolve().then(function () { + if (!state.registry[name]) { + return method(options); + } + return state.registry[name].reduce(function (method, registered) { + return registered.hook.bind(null, method, options); + }, method)(); + }); +} + +/***/ }), + +/***/ 4310: +/***/ ((module) => { + +module.exports = removeHook; +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + var index = state.registry[name].map(function (registered) { + return registered.orig; + }).indexOf(method); + if (index === -1) { + return; + } + state.registry[name].splice(index, 1); +} + +/***/ }), + +/***/ 763: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var balanced = __webpack_require__(4220); +module.exports = expandTop; +var escSlash = '\0SLASH' + Math.random() + '\0'; +var escOpen = '\0OPEN' + Math.random() + '\0'; +var escClose = '\0CLOSE' + Math.random() + '\0'; +var escComma = '\0COMMA' + Math.random() + '\0'; +var escPeriod = '\0PERIOD' + Math.random() + '\0'; +function numeric(str) { + return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); +} +function escapeBraces(str) { + return str.split('\\\\').join(escSlash).split('\\{').join(escOpen).split('\\}').join(escClose).split('\\,').join(escComma).split('\\.').join(escPeriod); +} +function unescapeBraces(str) { + return str.split(escSlash).join('\\').split(escOpen).join('{').split(escClose).join('}').split(escComma).join(',').split(escPeriod).join('.'); +} + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) return ['']; + var parts = []; + var m = balanced('{', '}', str); + if (!m) return str.split(','); + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + p[p.length - 1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length - 1] += postParts.shift(); + p.push.apply(p, postParts); + } + parts.push.apply(parts, p); + return parts; +} +function expandTop(str) { + if (!str) return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + return expand(escapeBraces(str), true).map(unescapeBraces); +} +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} +function expand(str, isTop) { + var expansions = []; + var m = balanced('{', '}', str); + if (!m) return [str]; + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length ? expand(m.post, false) : ['']; + if (/\$$/.test(m.pre)) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + '{' + m.body + '}' + post[k]; + expansions.push(expansion); + } + } else { + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + return post.map(function (p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + var N; + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length); + var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + N = []; + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) c = '-' + z + c.slice(1);else c = z + c; + } + } + } + N.push(c); + } + } else { + N = []; + for (var j = 0; j < n.length; j++) { + N.push.apply(N, expand(n[j], false)); + } + } + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) expansions.push(expansion); + } + } + } + return expansions; +} + +/***/ }), + +/***/ 2960: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var wrappy = __webpack_require__(4192); +module.exports = wrappy(once); +module.exports.strict = wrappy(onceStrict); +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function value() { + return once(this); + }, + configurable: true + }); + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function value() { + return onceStrict(this); + }, + configurable: true + }); +}); +function once(fn) { + var _f = function f() { + if (_f.called) return _f.value; + _f.called = true; + return _f.value = fn.apply(this, arguments); + }; + _f.called = false; + return _f; +} +function onceStrict(fn) { + var _f2 = function f() { + if (_f2.called) throw new Error(_f2.onceError); + _f2.called = true; + return _f2.value = fn.apply(this, arguments); + }; + var name = fn.name || 'Function wrapped with `once`'; + _f2.onceError = name + " shouldn't be called more than once"; + _f2.called = false; + return _f2; +} + +/***/ }), + +/***/ 8506: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(1746); + +/***/ }), + +/***/ 1746: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +var net = __webpack_require__(9278); +var tls = __webpack_require__(4756); +var http = __webpack_require__(8611); +var https = __webpack_require__(5692); +var events = __webpack_require__(4434); +var assert = __webpack_require__(2613); +var util = __webpack_require__(9023); +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({ + request: req + }, self.options, toOptions(host, port, localAddress)); + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } + + // If we are under maxSockets create a new one. + self.createSocket(options, function (socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + function onFree() { + self.emit('free', socket, options); + } + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + new Buffer(connectOptions.proxyAuth).toString('base64'); + } + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function () { + onConnect(res, socket, head); + }); + } + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + function onError(cause) { + connectReq.removeAllListeners(); + debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket); + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function (socket) { + pending.request.onSocket(socket); + }); + } +}; +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function (socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); + + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { + // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; +} +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function debug() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + }; +} else { + debug = function debug() {}; +} +exports.debug = debug; // for test + +/***/ }), + +/***/ 7800: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var Client = __webpack_require__(7885); +var Dispatcher = __webpack_require__(4171); +var errors = __webpack_require__(3515); +var Pool = __webpack_require__(8684); +var BalancedPool = __webpack_require__(9869); +var Agent = __webpack_require__(6629); +var util = __webpack_require__(6632); +var InvalidArgumentError = errors.InvalidArgumentError; +var api = __webpack_require__(8015); +var buildConnector = __webpack_require__(200); +var MockClient = __webpack_require__(6717); +var MockAgent = __webpack_require__(933); +var MockPool = __webpack_require__(9900); +var mockErrors = __webpack_require__(7861); +var ProxyAgent = __webpack_require__(2920); +var RetryHandler = __webpack_require__(1069); +var _require = __webpack_require__(4397), + getGlobalDispatcher = _require.getGlobalDispatcher, + setGlobalDispatcher = _require.setGlobalDispatcher; +var DecoratorHandler = __webpack_require__(2016); +var RedirectHandler = __webpack_require__(7795); +var createRedirectInterceptor = __webpack_require__(5031); +var hasCrypto; +try { + __webpack_require__(6982); + hasCrypto = true; +} catch (_unused) { + hasCrypto = false; +} +Object.assign(Dispatcher.prototype, api); +module.exports.Dispatcher = Dispatcher; +module.exports.Client = Client; +module.exports.Pool = Pool; +module.exports.BalancedPool = BalancedPool; +module.exports.Agent = Agent; +module.exports.ProxyAgent = ProxyAgent; +module.exports.RetryHandler = RetryHandler; +module.exports.DecoratorHandler = DecoratorHandler; +module.exports.RedirectHandler = RedirectHandler; +module.exports.createRedirectInterceptor = createRedirectInterceptor; +module.exports.buildConnector = buildConnector; +module.exports.errors = errors; +function makeDispatcher(fn) { + return function (url, opts, handler) { + if (typeof opts === 'function') { + handler = opts; + opts = null; + } + if (!url || typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL)) { + throw new InvalidArgumentError('invalid url'); + } + if (opts != null && typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (opts && opts.path != null) { + if (typeof opts.path !== 'string') { + throw new InvalidArgumentError('invalid opts.path'); + } + var path = opts.path; + if (!opts.path.startsWith('/')) { + path = "/".concat(path); + } + url = new URL(util.parseOrigin(url).origin + path); + } else { + if (!opts) { + opts = typeof url === 'object' ? url : {}; + } + url = util.parseURL(url); + } + var _opts = opts, + agent = _opts.agent, + _opts$dispatcher = _opts.dispatcher, + dispatcher = _opts$dispatcher === void 0 ? getGlobalDispatcher() : _opts$dispatcher; + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?'); + } + return fn.call(dispatcher, _objectSpread(_objectSpread({}, opts), {}, { + origin: url.origin, + path: url.search ? "".concat(url.pathname).concat(url.search) : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }), handler); + }; +} +module.exports.setGlobalDispatcher = setGlobalDispatcher; +module.exports.getGlobalDispatcher = getGlobalDispatcher; +if (util.nodeMajor > 16 || util.nodeMajor === 16 && util.nodeMinor >= 8) { + var fetchImpl = null; + module.exports.fetch = /*#__PURE__*/function () { + var _fetch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resource) { + var _args = arguments; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!fetchImpl) { + fetchImpl = (__webpack_require__(4435).fetch); + } + _context.prev = 1; + _context.next = 4; + return fetchImpl.apply(void 0, _args); + case 4: + return _context.abrupt("return", _context.sent); + case 7: + _context.prev = 7; + _context.t0 = _context["catch"](1); + if (typeof _context.t0 === 'object') { + Error.captureStackTrace(_context.t0, this); + } + throw _context.t0; + case 11: + case "end": + return _context.stop(); + } + }, _callee, this, [[1, 7]]); + })); + function fetch(_x) { + return _fetch.apply(this, arguments); + } + return fetch; + }(); + module.exports.Headers = __webpack_require__(5893).Headers; + module.exports.Response = __webpack_require__(4284).Response; + module.exports.Request = __webpack_require__(4930).Request; + module.exports.FormData = __webpack_require__(7609).FormData; + module.exports.File = __webpack_require__(1049).File; + module.exports.FileReader = __webpack_require__(8072).FileReader; + var _require2 = __webpack_require__(9956), + setGlobalOrigin = _require2.setGlobalOrigin, + getGlobalOrigin = _require2.getGlobalOrigin; + module.exports.setGlobalOrigin = setGlobalOrigin; + module.exports.getGlobalOrigin = getGlobalOrigin; + var _require3 = __webpack_require__(5674), + CacheStorage = _require3.CacheStorage; + var _require4 = __webpack_require__(1568), + kConstruct = _require4.kConstruct; + + // Cache & CacheStorage are tightly coupled with fetch. Even if it may run + // in an older version of Node, it doesn't have any use without fetch. + module.exports.caches = new CacheStorage(kConstruct); +} +if (util.nodeMajor >= 16) { + var _require5 = __webpack_require__(3112), + deleteCookie = _require5.deleteCookie, + getCookies = _require5.getCookies, + getSetCookies = _require5.getSetCookies, + setCookie = _require5.setCookie; + module.exports.deleteCookie = deleteCookie; + module.exports.getCookies = getCookies; + module.exports.getSetCookies = getSetCookies; + module.exports.setCookie = setCookie; + var _require6 = __webpack_require__(9738), + parseMIMEType = _require6.parseMIMEType, + serializeAMimeType = _require6.serializeAMimeType; + module.exports.parseMIMEType = parseMIMEType; + module.exports.serializeAMimeType = serializeAMimeType; +} +if (util.nodeMajor >= 18 && hasCrypto) { + var _require7 = __webpack_require__(8075), + WebSocket = _require7.WebSocket; + module.exports.WebSocket = WebSocket; +} +module.exports.request = makeDispatcher(api.request); +module.exports.stream = makeDispatcher(api.stream); +module.exports.pipeline = makeDispatcher(api.pipeline); +module.exports.connect = makeDispatcher(api.connect); +module.exports.upgrade = makeDispatcher(api.upgrade); +module.exports.MockClient = MockClient; +module.exports.MockPool = MockPool; +module.exports.MockAgent = MockAgent; +module.exports.mockErrors = mockErrors; + +/***/ }), + +/***/ 6629: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var _objectWithoutProperties = (__webpack_require__(1847)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _excluded = ["factory", "maxRedirections", "connect"]; +var _require = __webpack_require__(3515), + InvalidArgumentError = _require.InvalidArgumentError; +var _require2 = __webpack_require__(6771), + kClients = _require2.kClients, + kRunning = _require2.kRunning, + kClose = _require2.kClose, + kDestroy = _require2.kDestroy, + kDispatch = _require2.kDispatch, + kInterceptors = _require2.kInterceptors; +var DispatcherBase = __webpack_require__(8281); +var Pool = __webpack_require__(8684); +var Client = __webpack_require__(7885); +var util = __webpack_require__(6632); +var createRedirectInterceptor = __webpack_require__(5031); +var _require3 = __webpack_require__(4994)(), + WeakRef = _require3.WeakRef, + FinalizationRegistry = _require3.FinalizationRegistry; +var kOnConnect = Symbol('onConnect'); +var kOnDisconnect = Symbol('onDisconnect'); +var kOnConnectionError = Symbol('onConnectionError'); +var kMaxRedirections = Symbol('maxRedirections'); +var kOnDrain = Symbol('onDrain'); +var kFactory = Symbol('factory'); +var kFinalizer = Symbol('finalizer'); +var kOptions = Symbol('options'); +function defaultFactory(origin, opts) { + return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); +} +var Agent = /*#__PURE__*/function (_DispatcherBase) { + function Agent() { + var _this; + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$factory = _ref.factory, + factory = _ref$factory === void 0 ? defaultFactory : _ref$factory, + _ref$maxRedirections = _ref.maxRedirections, + maxRedirections = _ref$maxRedirections === void 0 ? 0 : _ref$maxRedirections, + connect = _ref.connect, + options = _objectWithoutProperties(_ref, _excluded); + _classCallCheck(this, Agent); + _this = _callSuper(this, Agent); + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); + } + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + if (connect && typeof connect !== 'function') { + connect = _objectSpread({}, connect); + } + _this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) ? options.interceptors.Agent : [createRedirectInterceptor({ + maxRedirections: maxRedirections + })]; + _this[kOptions] = _objectSpread(_objectSpread({}, util.deepClone(options)), {}, { + connect: connect + }); + _this[kOptions].interceptors = options.interceptors ? _objectSpread({}, options.interceptors) : undefined; + _this[kMaxRedirections] = maxRedirections; + _this[kFactory] = factory; + _this[kClients] = new Map(); + _this[kFinalizer] = new FinalizationRegistry( /* istanbul ignore next: gc is undeterministic */function (key) { + var ref = _this[kClients].get(key); + if (ref !== undefined && ref.deref() === undefined) { + _this[kClients]["delete"](key); + } + }); + var agent = _this; + _this[kOnDrain] = function (origin, targets) { + agent.emit('drain', origin, [agent].concat(_toConsumableArray(targets))); + }; + _this[kOnConnect] = function (origin, targets) { + agent.emit('connect', origin, [agent].concat(_toConsumableArray(targets))); + }; + _this[kOnDisconnect] = function (origin, targets, err) { + agent.emit('disconnect', origin, [agent].concat(_toConsumableArray(targets)), err); + }; + _this[kOnConnectionError] = function (origin, targets, err) { + agent.emit('connectionError', origin, [agent].concat(_toConsumableArray(targets)), err); + }; + return _this; + } + _inherits(Agent, _DispatcherBase); + return _createClass(Agent, [{ + key: kRunning, + get: function get() { + var ret = 0; + var _iterator = _createForOfIteratorHelper(this[kClients].values()), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var ref = _step.value; + var client = ref.deref(); + /* istanbul ignore next: gc is undeterministic */ + if (client) { + ret += client[kRunning]; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return ret; + } + }, { + key: kDispatch, + value: function value(opts, handler) { + var key; + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + key = String(opts.origin); + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.'); + } + var ref = this[kClients].get(key); + var dispatcher = ref ? ref.deref() : null; + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]).on('drain', this[kOnDrain]).on('connect', this[kOnConnect]).on('disconnect', this[kOnDisconnect]).on('connectionError', this[kOnConnectionError]); + this[kClients].set(key, new WeakRef(dispatcher)); + this[kFinalizer].register(dispatcher, key); + } + return dispatcher.dispatch(opts, handler); + } + }, { + key: kClose, + value: function () { + var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var closePromises, _iterator2, _step2, ref, client; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + closePromises = []; + _iterator2 = _createForOfIteratorHelper(this[kClients].values()); + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + ref = _step2.value; + client = ref.deref(); + /* istanbul ignore else: gc is undeterministic */ + if (client) { + closePromises.push(client.close()); + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + _context.next = 5; + return Promise.all(closePromises); + case 5: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function value() { + return _value.apply(this, arguments); + } + return value; + }() + }, { + key: kDestroy, + value: function () { + var _value2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(err) { + var destroyPromises, _iterator3, _step3, ref, client; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + destroyPromises = []; + _iterator3 = _createForOfIteratorHelper(this[kClients].values()); + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + ref = _step3.value; + client = ref.deref(); + /* istanbul ignore else: gc is undeterministic */ + if (client) { + destroyPromises.push(client.destroy(err)); + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + _context2.next = 5; + return Promise.all(destroyPromises); + case 5: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function value(_x) { + return _value2.apply(this, arguments); + } + return value; + }() + }]); +}(DispatcherBase); +module.exports = Agent; + +/***/ }), + +/***/ 9350: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _require = __webpack_require__(6632), + addAbortListener = _require.addAbortListener; +var _require2 = __webpack_require__(3515), + RequestAbortedError = _require2.RequestAbortedError; +var kListener = Symbol('kListener'); +var kSignal = Symbol('kSignal'); +function abort(self) { + if (self.abort) { + self.abort(); + } else { + self.onError(new RequestAbortedError()); + } +} +function addSignal(self, signal) { + self[kSignal] = null; + self[kListener] = null; + if (!signal) { + return; + } + if (signal.aborted) { + abort(self); + return; + } + self[kSignal] = signal; + self[kListener] = function () { + abort(self); + }; + addAbortListener(self[kSignal], self[kListener]); +} +function removeSignal(self) { + if (!self[kSignal]) { + return; + } + if ('removeEventListener' in self[kSignal]) { + self[kSignal].removeEventListener('abort', self[kListener]); + } else { + self[kSignal].removeListener('abort', self[kListener]); + } + self[kSignal] = null; + self[kListener] = null; +} +module.exports = { + addSignal: addSignal, + removeSignal: removeSignal +}; + +/***/ }), + +/***/ 4652: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(290), + AsyncResource = _require.AsyncResource; +var _require2 = __webpack_require__(3515), + InvalidArgumentError = _require2.InvalidArgumentError, + RequestAbortedError = _require2.RequestAbortedError, + SocketError = _require2.SocketError; +var util = __webpack_require__(6632); +var _require3 = __webpack_require__(9350), + addSignal = _require3.addSignal, + removeSignal = _require3.removeSignal; +var ConnectHandler = /*#__PURE__*/function (_AsyncResource) { + function ConnectHandler(opts, callback) { + var _this; + _classCallCheck(this, ConnectHandler); + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + var signal = opts.signal, + opaque = opts.opaque, + responseHeaders = opts.responseHeaders; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + _this = _callSuper(this, ConnectHandler, ['UNDICI_CONNECT']); + _this.opaque = opaque || null; + _this.responseHeaders = responseHeaders || null; + _this.callback = callback; + _this.abort = null; + addSignal(_this, signal); + return _this; + } + _inherits(ConnectHandler, _AsyncResource); + return _createClass(ConnectHandler, [{ + key: "onConnect", + value: function onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + }, { + key: "onHeaders", + value: function onHeaders() { + throw new SocketError('bad connect', null); + } + }, { + key: "onUpgrade", + value: function onUpgrade(statusCode, rawHeaders, socket) { + var callback = this.callback, + opaque = this.opaque, + context = this.context; + removeSignal(this); + this.callback = null; + var headers = rawHeaders; + // Indicates is an HTTP2Session + if (headers != null) { + headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + } + this.runInAsyncScope(callback, null, null, { + statusCode: statusCode, + headers: headers, + socket: socket, + opaque: opaque, + context: context + }); + } + }, { + key: "onError", + value: function onError(err) { + var _this2 = this; + var callback = this.callback, + opaque = this.opaque; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(function () { + _this2.runInAsyncScope(callback, null, err, { + opaque: opaque + }); + }); + } + } + }]); +}(AsyncResource); +function connect(opts, callback) { + var _this3 = this; + if (callback === undefined) { + return new Promise(function (resolve, reject) { + connect.call(_this3, opts, function (err, data) { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + var connectHandler = new ConnectHandler(opts, callback); + this.dispatch(_objectSpread(_objectSpread({}, opts), {}, { + method: 'CONNECT' + }), connectHandler); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + var opaque = opts && opts.opaque; + queueMicrotask(function () { + return callback(err, { + opaque: opaque + }); + }); + } +} +module.exports = connect; + +/***/ }), + +/***/ 9926: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(2203), + Readable = _require.Readable, + Duplex = _require.Duplex, + PassThrough = _require.PassThrough; +var _require2 = __webpack_require__(3515), + InvalidArgumentError = _require2.InvalidArgumentError, + InvalidReturnValueError = _require2.InvalidReturnValueError, + RequestAbortedError = _require2.RequestAbortedError; +var util = __webpack_require__(6632); +var _require3 = __webpack_require__(290), + AsyncResource = _require3.AsyncResource; +var _require4 = __webpack_require__(9350), + addSignal = _require4.addSignal, + removeSignal = _require4.removeSignal; +var assert = __webpack_require__(2613); +var kResume = Symbol('resume'); +var PipelineRequest = /*#__PURE__*/function (_Readable) { + function PipelineRequest() { + var _this; + _classCallCheck(this, PipelineRequest); + _this = _callSuper(this, PipelineRequest, [{ + autoDestroy: true + }]); + _this[kResume] = null; + return _this; + } + _inherits(PipelineRequest, _Readable); + return _createClass(PipelineRequest, [{ + key: "_read", + value: function _read() { + var resume = this[kResume]; + if (resume) { + this[kResume] = null; + resume(); + } + } + }, { + key: "_destroy", + value: function _destroy(err, callback) { + this._read(); + callback(err); + } + }]); +}(Readable); +var PipelineResponse = /*#__PURE__*/function (_Readable2) { + function PipelineResponse(resume) { + var _this2; + _classCallCheck(this, PipelineResponse); + _this2 = _callSuper(this, PipelineResponse, [{ + autoDestroy: true + }]); + _this2[kResume] = resume; + return _this2; + } + _inherits(PipelineResponse, _Readable2); + return _createClass(PipelineResponse, [{ + key: "_read", + value: function _read() { + this[kResume](); + } + }, { + key: "_destroy", + value: function _destroy(err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + callback(err); + } + }]); +}(Readable); +var PipelineHandler = /*#__PURE__*/function (_AsyncResource) { + function PipelineHandler(opts, handler) { + var _this3; + _classCallCheck(this, PipelineHandler); + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (typeof handler !== 'function') { + throw new InvalidArgumentError('invalid handler'); + } + var signal = opts.signal, + method = opts.method, + opaque = opts.opaque, + onInfo = opts.onInfo, + responseHeaders = opts.responseHeaders; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); + } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); + } + _this3 = _callSuper(this, PipelineHandler, ['UNDICI_PIPELINE']); + _this3.opaque = opaque || null; + _this3.responseHeaders = responseHeaders || null; + _this3.handler = handler; + _this3.abort = null; + _this3.context = null; + _this3.onInfo = onInfo || null; + _this3.req = new PipelineRequest().on('error', util.nop); + _this3.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: function read() { + var _this4 = _this3, + body = _this4.body; + if (body && body.resume) { + body.resume(); + } + }, + write: function write(chunk, encoding, callback) { + var _this5 = _this3, + req = _this5.req; + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback(); + } else { + req[kResume] = callback; + } + }, + destroy: function destroy(err, callback) { + var _this6 = _this3, + body = _this6.body, + req = _this6.req, + res = _this6.res, + ret = _this6.ret, + abort = _this6.abort; + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (abort && err) { + abort(); + } + util.destroy(body, err); + util.destroy(req, err); + util.destroy(res, err); + removeSignal(_this3); + callback(err); + } + }).on('prefinish', function () { + var _this7 = _this3, + req = _this7.req; + + // Node < 15 does not call _final in same tick. + req.push(null); + }); + _this3.res = null; + addSignal(_this3, signal); + return _this3; + } + _inherits(PipelineHandler, _AsyncResource); + return _createClass(PipelineHandler, [{ + key: "onConnect", + value: function onConnect(abort, context) { + var ret = this.ret, + res = this.res; + assert(!res, 'pipeline cannot be retried'); + if (ret.destroyed) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + }, { + key: "onHeaders", + value: function onHeaders(statusCode, rawHeaders, resume) { + var _this8 = this; + var opaque = this.opaque, + handler = this.handler, + context = this.context; + if (statusCode < 200) { + if (this.onInfo) { + var headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.onInfo({ + statusCode: statusCode, + headers: headers + }); + } + return; + } + this.res = new PipelineResponse(resume); + var body; + try { + this.handler = null; + var _headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + body = this.runInAsyncScope(handler, null, { + statusCode: statusCode, + headers: _headers, + opaque: opaque, + body: this.res, + context: context + }); + } catch (err) { + this.res.on('error', util.nop); + throw err; + } + if (!body || typeof body.on !== 'function') { + throw new InvalidReturnValueError('expected Readable'); + } + body.on('data', function (chunk) { + var ret = _this8.ret, + body = _this8.body; + if (!ret.push(chunk) && body.pause) { + body.pause(); + } + }).on('error', function (err) { + var ret = _this8.ret; + util.destroy(ret, err); + }).on('end', function () { + var ret = _this8.ret; + ret.push(null); + }).on('close', function () { + var ret = _this8.ret; + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()); + } + }); + this.body = body; + } + }, { + key: "onData", + value: function onData(chunk) { + var res = this.res; + return res.push(chunk); + } + }, { + key: "onComplete", + value: function onComplete(trailers) { + var res = this.res; + res.push(null); + } + }, { + key: "onError", + value: function onError(err) { + var ret = this.ret; + this.handler = null; + util.destroy(ret, err); + } + }]); +}(AsyncResource); +function pipeline(opts, handler) { + try { + var pipelineHandler = new PipelineHandler(opts, handler); + this.dispatch(_objectSpread(_objectSpread({}, opts), {}, { + body: pipelineHandler.req + }), pipelineHandler); + return pipelineHandler.ret; + } catch (err) { + return new PassThrough().destroy(err); + } +} +module.exports = pipeline; + +/***/ }), + +/***/ 7299: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var Readable = __webpack_require__(5455); +var _require = __webpack_require__(3515), + InvalidArgumentError = _require.InvalidArgumentError, + RequestAbortedError = _require.RequestAbortedError; +var util = __webpack_require__(6632); +var _require2 = __webpack_require__(7711), + getResolveErrorBodyCallback = _require2.getResolveErrorBodyCallback; +var _require3 = __webpack_require__(290), + AsyncResource = _require3.AsyncResource; +var _require4 = __webpack_require__(9350), + addSignal = _require4.addSignal, + removeSignal = _require4.removeSignal; +var RequestHandler = /*#__PURE__*/function (_AsyncResource) { + function RequestHandler(opts, callback) { + var _this; + _classCallCheck(this, RequestHandler); + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + var signal = opts.signal, + method = opts.method, + opaque = opts.opaque, + body = opts.body, + onInfo = opts.onInfo, + responseHeaders = opts.responseHeaders, + throwOnError = opts.throwOnError, + highWaterMark = opts.highWaterMark; + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { + throw new InvalidArgumentError('invalid highWaterMark'); + } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); + } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); + } + _this = _callSuper(this, RequestHandler, ['UNDICI_REQUEST']); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err); + } + throw err; + } + _this.responseHeaders = responseHeaders || null; + _this.opaque = opaque || null; + _this.callback = callback; + _this.res = null; + _this.abort = null; + _this.body = body; + _this.trailers = {}; + _this.context = null; + _this.onInfo = onInfo || null; + _this.throwOnError = throwOnError; + _this.highWaterMark = highWaterMark; + if (util.isStream(body)) { + body.on('error', function (err) { + _this.onError(err); + }); + } + addSignal(_this, signal); + return _this; + } + _inherits(RequestHandler, _AsyncResource); + return _createClass(RequestHandler, [{ + key: "onConnect", + value: function onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + }, { + key: "onHeaders", + value: function onHeaders(statusCode, rawHeaders, resume, statusMessage) { + var callback = this.callback, + opaque = this.opaque, + abort = this.abort, + context = this.context, + responseHeaders = this.responseHeaders, + highWaterMark = this.highWaterMark; + var headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ + statusCode: statusCode, + headers: headers + }); + } + return; + } + var parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers; + var contentType = parsedHeaders['content-type']; + var body = new Readable({ + resume: resume, + abort: abort, + contentType: contentType, + highWaterMark: highWaterMark + }); + this.callback = null; + this.res = body; + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, { + callback: callback, + body: body, + contentType: contentType, + statusCode: statusCode, + statusMessage: statusMessage, + headers: headers + }); + } else { + this.runInAsyncScope(callback, null, null, { + statusCode: statusCode, + headers: headers, + trailers: this.trailers, + opaque: opaque, + body: body, + context: context + }); + } + } + } + }, { + key: "onData", + value: function onData(chunk) { + var res = this.res; + return res.push(chunk); + } + }, { + key: "onComplete", + value: function onComplete(trailers) { + var res = this.res; + removeSignal(this); + util.parseHeaders(trailers, this.trailers); + res.push(null); + } + }, { + key: "onError", + value: function onError(err) { + var _this2 = this; + var res = this.res, + callback = this.callback, + body = this.body, + opaque = this.opaque; + removeSignal(this); + if (callback) { + // TODO: Does this need queueMicrotask? + this.callback = null; + queueMicrotask(function () { + _this2.runInAsyncScope(callback, null, err, { + opaque: opaque + }); + }); + } + if (res) { + this.res = null; + // Ensure all queued handlers are invoked before destroying res. + queueMicrotask(function () { + util.destroy(res, err); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }]); +}(AsyncResource); +function request(opts, callback) { + var _this3 = this; + if (callback === undefined) { + return new Promise(function (resolve, reject) { + request.call(_this3, opts, function (err, data) { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new RequestHandler(opts, callback)); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + var opaque = opts && opts.opaque; + queueMicrotask(function () { + return callback(err, { + opaque: opaque + }); + }); + } +} +module.exports = request; +module.exports.RequestHandler = RequestHandler; + +/***/ }), + +/***/ 5712: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(2203), + finished = _require.finished, + PassThrough = _require.PassThrough; +var _require2 = __webpack_require__(3515), + InvalidArgumentError = _require2.InvalidArgumentError, + InvalidReturnValueError = _require2.InvalidReturnValueError, + RequestAbortedError = _require2.RequestAbortedError; +var util = __webpack_require__(6632); +var _require3 = __webpack_require__(7711), + getResolveErrorBodyCallback = _require3.getResolveErrorBodyCallback; +var _require4 = __webpack_require__(290), + AsyncResource = _require4.AsyncResource; +var _require5 = __webpack_require__(9350), + addSignal = _require5.addSignal, + removeSignal = _require5.removeSignal; +var StreamHandler = /*#__PURE__*/function (_AsyncResource) { + function StreamHandler(opts, factory, callback) { + var _this; + _classCallCheck(this, StreamHandler); + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + var signal = opts.signal, + method = opts.method, + opaque = opts.opaque, + body = opts.body, + onInfo = opts.onInfo, + responseHeaders = opts.responseHeaders, + throwOnError = opts.throwOnError; + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('invalid factory'); + } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); + } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); + } + _this = _callSuper(this, StreamHandler, ['UNDICI_STREAM']); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err); + } + throw err; + } + _this.responseHeaders = responseHeaders || null; + _this.opaque = opaque || null; + _this.factory = factory; + _this.callback = callback; + _this.res = null; + _this.abort = null; + _this.context = null; + _this.trailers = null; + _this.body = body; + _this.onInfo = onInfo || null; + _this.throwOnError = throwOnError || false; + if (util.isStream(body)) { + body.on('error', function (err) { + _this.onError(err); + }); + } + addSignal(_this, signal); + return _this; + } + _inherits(StreamHandler, _AsyncResource); + return _createClass(StreamHandler, [{ + key: "onConnect", + value: function onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + }, { + key: "onHeaders", + value: function onHeaders(statusCode, rawHeaders, resume, statusMessage) { + var _this2 = this; + var factory = this.factory, + opaque = this.opaque, + context = this.context, + callback = this.callback, + responseHeaders = this.responseHeaders; + var headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ + statusCode: statusCode, + headers: headers + }); + } + return; + } + this.factory = null; + var res; + if (this.throwOnError && statusCode >= 400) { + var parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers; + var contentType = parsedHeaders['content-type']; + res = new PassThrough(); + this.callback = null; + this.runInAsyncScope(getResolveErrorBodyCallback, null, { + callback: callback, + body: res, + contentType: contentType, + statusCode: statusCode, + statusMessage: statusMessage, + headers: headers + }); + } else { + if (factory === null) { + return; + } + res = this.runInAsyncScope(factory, null, { + statusCode: statusCode, + headers: headers, + opaque: opaque, + context: context + }); + if (!res || typeof res.write !== 'function' || typeof res.end !== 'function' || typeof res.on !== 'function') { + throw new InvalidReturnValueError('expected Writable'); + } + + // TODO: Avoid finished. It registers an unnecessary amount of listeners. + finished(res, { + readable: false + }, function (err) { + var callback = _this2.callback, + res = _this2.res, + opaque = _this2.opaque, + trailers = _this2.trailers, + abort = _this2.abort; + _this2.res = null; + if (err || !res.readable) { + util.destroy(res, err); + } + _this2.callback = null; + _this2.runInAsyncScope(callback, null, err || null, { + opaque: opaque, + trailers: trailers + }); + if (err) { + abort(); + } + }); + } + res.on('drain', resume); + this.res = res; + var needDrain = res.writableNeedDrain !== undefined ? res.writableNeedDrain : res._writableState && res._writableState.needDrain; + return needDrain !== true; + } + }, { + key: "onData", + value: function onData(chunk) { + var res = this.res; + return res ? res.write(chunk) : true; + } + }, { + key: "onComplete", + value: function onComplete(trailers) { + var res = this.res; + removeSignal(this); + if (!res) { + return; + } + this.trailers = util.parseHeaders(trailers); + res.end(); + } + }, { + key: "onError", + value: function onError(err) { + var _this3 = this; + var res = this.res, + callback = this.callback, + opaque = this.opaque, + body = this.body; + removeSignal(this); + this.factory = null; + if (res) { + this.res = null; + util.destroy(res, err); + } else if (callback) { + this.callback = null; + queueMicrotask(function () { + _this3.runInAsyncScope(callback, null, err, { + opaque: opaque + }); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }]); +}(AsyncResource); +function stream(opts, factory, callback) { + var _this4 = this; + if (callback === undefined) { + return new Promise(function (resolve, reject) { + stream.call(_this4, opts, factory, function (err, data) { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + var opaque = opts && opts.opaque; + queueMicrotask(function () { + return callback(err, { + opaque: opaque + }); + }); + } +} +module.exports = stream; + +/***/ }), + +/***/ 4210: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(3515), + InvalidArgumentError = _require.InvalidArgumentError, + RequestAbortedError = _require.RequestAbortedError, + SocketError = _require.SocketError; +var _require2 = __webpack_require__(290), + AsyncResource = _require2.AsyncResource; +var util = __webpack_require__(6632); +var _require3 = __webpack_require__(9350), + addSignal = _require3.addSignal, + removeSignal = _require3.removeSignal; +var assert = __webpack_require__(2613); +var UpgradeHandler = /*#__PURE__*/function (_AsyncResource) { + function UpgradeHandler(opts, callback) { + var _this; + _classCallCheck(this, UpgradeHandler); + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + var signal = opts.signal, + opaque = opts.opaque, + responseHeaders = opts.responseHeaders; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + _this = _callSuper(this, UpgradeHandler, ['UNDICI_UPGRADE']); + _this.responseHeaders = responseHeaders || null; + _this.opaque = opaque || null; + _this.callback = callback; + _this.abort = null; + _this.context = null; + addSignal(_this, signal); + return _this; + } + _inherits(UpgradeHandler, _AsyncResource); + return _createClass(UpgradeHandler, [{ + key: "onConnect", + value: function onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = null; + } + }, { + key: "onHeaders", + value: function onHeaders() { + throw new SocketError('bad upgrade', null); + } + }, { + key: "onUpgrade", + value: function onUpgrade(statusCode, rawHeaders, socket) { + var callback = this.callback, + opaque = this.opaque, + context = this.context; + assert.strictEqual(statusCode, 101); + removeSignal(this); + this.callback = null; + var headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.runInAsyncScope(callback, null, null, { + headers: headers, + socket: socket, + opaque: opaque, + context: context + }); + } + }, { + key: "onError", + value: function onError(err) { + var _this2 = this; + var callback = this.callback, + opaque = this.opaque; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(function () { + _this2.runInAsyncScope(callback, null, err, { + opaque: opaque + }); + }); + } + } + }]); +}(AsyncResource); +function upgrade(opts, callback) { + var _this3 = this; + if (callback === undefined) { + return new Promise(function (resolve, reject) { + upgrade.call(_this3, opts, function (err, data) { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + var upgradeHandler = new UpgradeHandler(opts, callback); + this.dispatch(_objectSpread(_objectSpread({}, opts), {}, { + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }), upgradeHandler); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + var opaque = opts && opts.opaque; + queueMicrotask(function () { + return callback(err, { + opaque: opaque + }); + }); + } +} +module.exports = upgrade; + +/***/ }), + +/***/ 8015: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +module.exports.request = __webpack_require__(7299); +module.exports.stream = __webpack_require__(5712); +module.exports.pipeline = __webpack_require__(9926); +module.exports.upgrade = __webpack_require__(4210); +module.exports.connect = __webpack_require__(4652); + +/***/ }), + +/***/ 5455: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// Ported from https://github.com/nodejs/undici/pull/907 + + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _superPropGet = (__webpack_require__(9901)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var assert = __webpack_require__(2613); +var _require = __webpack_require__(2203), + Readable = _require.Readable; +var _require2 = __webpack_require__(3515), + RequestAbortedError = _require2.RequestAbortedError, + NotSupportedError = _require2.NotSupportedError, + InvalidArgumentError = _require2.InvalidArgumentError; +var util = __webpack_require__(6632); +var _require3 = __webpack_require__(6632), + ReadableStreamFrom = _require3.ReadableStreamFrom, + toUSVString = _require3.toUSVString; +var Blob; +var kConsume = Symbol('kConsume'); +var kReading = Symbol('kReading'); +var kBody = Symbol('kBody'); +var kAbort = Symbol('abort'); +var kContentType = Symbol('kContentType'); +var noop = function noop() {}; +module.exports = /*#__PURE__*/function (_Readable) { + function BodyReadable(_ref) { + var _this; + var resume = _ref.resume, + abort = _ref.abort, + _ref$contentType = _ref.contentType, + contentType = _ref$contentType === void 0 ? '' : _ref$contentType, + _ref$highWaterMark = _ref.highWaterMark, + highWaterMark = _ref$highWaterMark === void 0 ? 64 * 1024 : _ref$highWaterMark; + _classCallCheck(this, BodyReadable); + _this = _callSuper(this, BodyReadable, [{ + autoDestroy: true, + read: resume, + highWaterMark: highWaterMark + }]); + _this._readableState.dataEmitted = false; + _this[kAbort] = abort; + _this[kConsume] = null; + _this[kBody] = null; + _this[kContentType] = contentType; + + // Is stream being consumed through Readable API? + // This is an optimization so that we avoid checking + // for 'data' and 'readable' listeners in the hot path + // inside push(). + _this[kReading] = false; + return _this; + } + _inherits(BodyReadable, _Readable); + return _createClass(BodyReadable, [{ + key: "destroy", + value: function destroy(err) { + if (this.destroyed) { + // Node < 16 + return this; + } + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (err) { + this[kAbort](); + } + return _superPropGet(BodyReadable, "destroy", this, 3)([err]); + } + }, { + key: "emit", + value: function emit(ev) { + if (ev === 'data') { + // Node < 16.7 + this._readableState.dataEmitted = true; + } else if (ev === 'error') { + // Node < 16 + this._readableState.errorEmitted = true; + } + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return _superPropGet(BodyReadable, "emit", this, 3)([ev].concat(args)); + } + }, { + key: "on", + value: function on(ev) { + if (ev === 'data' || ev === 'readable') { + this[kReading] = true; + } + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + return _superPropGet(BodyReadable, "on", this, 3)([ev].concat(args)); + } + }, { + key: "addListener", + value: function addListener(ev) { + for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + args[_key3 - 1] = arguments[_key3]; + } + return this.on.apply(this, [ev].concat(args)); + } + }, { + key: "off", + value: function off(ev) { + for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { + args[_key4 - 1] = arguments[_key4]; + } + var ret = _superPropGet(BodyReadable, "off", this, 3)([ev].concat(args)); + if (ev === 'data' || ev === 'readable') { + this[kReading] = this.listenerCount('data') > 0 || this.listenerCount('readable') > 0; + } + return ret; + } + }, { + key: "removeListener", + value: function removeListener(ev) { + for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { + args[_key5 - 1] = arguments[_key5]; + } + return this.off.apply(this, [ev].concat(args)); + } + }, { + key: "push", + value: function push(chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk); + return this[kReading] ? _superPropGet(BodyReadable, "push", this, 3)([chunk]) : true; + } + return _superPropGet(BodyReadable, "push", this, 3)([chunk]); + } + + // https://fetch.spec.whatwg.org/#dom-body-text + }, { + key: "text", + value: function () { + var _text = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", consume(this, 'text')); + case 1: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function text() { + return _text.apply(this, arguments); + } + return text; + }() // https://fetch.spec.whatwg.org/#dom-body-json + }, { + key: "json", + value: function () { + var _json = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", consume(this, 'json')); + case 1: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function json() { + return _json.apply(this, arguments); + } + return json; + }() // https://fetch.spec.whatwg.org/#dom-body-blob + }, { + key: "blob", + value: function () { + var _blob = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt("return", consume(this, 'blob')); + case 1: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function blob() { + return _blob.apply(this, arguments); + } + return blob; + }() // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + }, { + key: "arrayBuffer", + value: function () { + var _arrayBuffer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() { + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + return _context4.abrupt("return", consume(this, 'arrayBuffer')); + case 1: + case "end": + return _context4.stop(); + } + }, _callee4, this); + })); + function arrayBuffer() { + return _arrayBuffer.apply(this, arguments); + } + return arrayBuffer; + }() // https://fetch.spec.whatwg.org/#dom-body-formdata + }, { + key: "formData", + value: function () { + var _formData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() { + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + throw new NotSupportedError(); + case 1: + case "end": + return _context5.stop(); + } + }, _callee5); + })); + function formData() { + return _formData.apply(this, arguments); + } + return formData; + }() // https://fetch.spec.whatwg.org/#dom-body-bodyused + }, { + key: "bodyUsed", + get: function get() { + return util.isDisturbed(this); + } + + // https://fetch.spec.whatwg.org/#dom-body-body + }, { + key: "body", + get: function get() { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this); + if (this[kConsume]) { + // TODO: Is this the best way to force a lock? + this[kBody].getReader(); // Ensure stream is locked. + assert(this[kBody].locked); + } + } + return this[kBody]; + } + }, { + key: "dump", + value: function dump(opts) { + var _this2 = this; + var limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; + var signal = opts && opts.signal; + if (signal) { + try { + if (typeof signal !== 'object' || !('aborted' in signal)) { + throw new InvalidArgumentError('signal must be an AbortSignal'); + } + util.throwIfAborted(signal); + } catch (err) { + return Promise.reject(err); + } + } + if (this.closed) { + return Promise.resolve(null); + } + return new Promise(function (resolve, reject) { + var signalListenerCleanup = signal ? util.addAbortListener(signal, function () { + _this2.destroy(); + }) : noop; + _this2.on('close', function () { + signalListenerCleanup(); + if (signal && signal.aborted) { + reject(signal.reason || Object.assign(new Error('The operation was aborted'), { + name: 'AbortError' + })); + } else { + resolve(null); + } + }).on('error', noop).on('data', function (chunk) { + limit -= chunk.length; + if (limit <= 0) { + this.destroy(); + } + }).resume(); + }); + } + }]); +}(Readable); + +// https://streams.spec.whatwg.org/#readablestream-locked +function isLocked(self) { + // Consume is an implicit lock. + return self[kBody] && self[kBody].locked === true || self[kConsume]; +} + +// https://fetch.spec.whatwg.org/#body-unusable +function isUnusable(self) { + return util.isDisturbed(self) || isLocked(self); +} +function consume(_x, _x2) { + return _consume.apply(this, arguments); +} +function _consume() { + _consume = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(stream, type) { + return _regeneratorRuntime().wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + if (!isUnusable(stream)) { + _context6.next = 2; + break; + } + throw new TypeError('unusable'); + case 2: + assert(!stream[kConsume]); + return _context6.abrupt("return", new Promise(function (resolve, reject) { + stream[kConsume] = { + type: type, + stream: stream, + resolve: resolve, + reject: reject, + length: 0, + body: [] + }; + stream.on('error', function (err) { + consumeFinish(this[kConsume], err); + }).on('close', function () { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()); + } + }); + process.nextTick(consumeStart, stream[kConsume]); + })); + case 4: + case "end": + return _context6.stop(); + } + }, _callee6); + })); + return _consume.apply(this, arguments); +} +function consumeStart(consume) { + if (consume.body === null) { + return; + } + var state = consume.stream._readableState; + var _iterator = _createForOfIteratorHelper(state.buffer), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var chunk = _step.value; + consumePush(consume, chunk); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + if (state.endEmitted) { + consumeEnd(this[kConsume]); + } else { + consume.stream.on('end', function () { + consumeEnd(this[kConsume]); + }); + } + consume.stream.resume(); + while (consume.stream.read() != null) { + // Loop + } +} +function consumeEnd(consume) { + var type = consume.type, + body = consume.body, + resolve = consume.resolve, + stream = consume.stream, + length = consume.length; + try { + if (type === 'text') { + resolve(toUSVString(Buffer.concat(body))); + } else if (type === 'json') { + resolve(JSON.parse(Buffer.concat(body))); + } else if (type === 'arrayBuffer') { + var dst = new Uint8Array(length); + var pos = 0; + var _iterator2 = _createForOfIteratorHelper(body), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var buf = _step2.value; + dst.set(buf, pos); + pos += buf.byteLength; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + resolve(dst.buffer); + } else if (type === 'blob') { + if (!Blob) { + Blob = (__webpack_require__(181).Blob); + } + resolve(new Blob(body, { + type: stream[kContentType] + })); + } + consumeFinish(consume); + } catch (err) { + stream.destroy(err); + } +} +function consumePush(consume, chunk) { + consume.length += chunk.length; + consume.body.push(chunk); +} +function consumeFinish(consume, err) { + if (consume.body === null) { + return; + } + if (err) { + consume.reject(err); + } else { + consume.resolve(); + } + consume.type = null; + consume.stream = null; + consume.resolve = null; + consume.reject = null; + consume.length = 0; + consume.body = null; +} + +/***/ }), + +/***/ 7711: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _asyncIterator = (__webpack_require__(2881)["default"]); +var assert = __webpack_require__(2613); +var _require = __webpack_require__(3515), + ResponseStatusCodeError = _require.ResponseStatusCodeError; +var _require2 = __webpack_require__(6632), + toUSVString = _require2.toUSVString; +function getResolveErrorBodyCallback(_x) { + return _getResolveErrorBodyCallback.apply(this, arguments); +} +function _getResolveErrorBodyCallback() { + _getResolveErrorBodyCallback = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) { + var callback, body, contentType, statusCode, statusMessage, headers, chunks, limit, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, payload, _payload; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + callback = _ref.callback, body = _ref.body, contentType = _ref.contentType, statusCode = _ref.statusCode, statusMessage = _ref.statusMessage, headers = _ref.headers; + assert(body); + chunks = []; + limit = 0; + _iteratorAbruptCompletion = false; + _didIteratorError = false; + _context.prev = 6; + _iterator = _asyncIterator(body); + case 8: + _context.next = 10; + return _iterator.next(); + case 10: + if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) { + _context.next = 20; + break; + } + chunk = _step.value; + chunks.push(chunk); + limit += chunk.length; + if (!(limit > 128 * 1024)) { + _context.next = 17; + break; + } + chunks = null; + return _context.abrupt("break", 20); + case 17: + _iteratorAbruptCompletion = false; + _context.next = 8; + break; + case 20: + _context.next = 26; + break; + case 22: + _context.prev = 22; + _context.t0 = _context["catch"](6); + _didIteratorError = true; + _iteratorError = _context.t0; + case 26: + _context.prev = 26; + _context.prev = 27; + if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) { + _context.next = 31; + break; + } + _context.next = 31; + return _iterator["return"](); + case 31: + _context.prev = 31; + if (!_didIteratorError) { + _context.next = 34; + break; + } + throw _iteratorError; + case 34: + return _context.finish(31); + case 35: + return _context.finish(26); + case 36: + if (!(statusCode === 204 || !contentType || !chunks)) { + _context.next = 39; + break; + } + process.nextTick(callback, new ResponseStatusCodeError("Response status code ".concat(statusCode).concat(statusMessage ? ": ".concat(statusMessage) : ''), statusCode, headers)); + return _context.abrupt("return"); + case 39: + _context.prev = 39; + if (!contentType.startsWith('application/json')) { + _context.next = 44; + break; + } + payload = JSON.parse(toUSVString(Buffer.concat(chunks))); + process.nextTick(callback, new ResponseStatusCodeError("Response status code ".concat(statusCode).concat(statusMessage ? ": ".concat(statusMessage) : ''), statusCode, headers, payload)); + return _context.abrupt("return"); + case 44: + if (!contentType.startsWith('text/')) { + _context.next = 48; + break; + } + _payload = toUSVString(Buffer.concat(chunks)); + process.nextTick(callback, new ResponseStatusCodeError("Response status code ".concat(statusCode).concat(statusMessage ? ": ".concat(statusMessage) : ''), statusCode, headers, _payload)); + return _context.abrupt("return"); + case 48: + _context.next = 52; + break; + case 50: + _context.prev = 50; + _context.t1 = _context["catch"](39); + case 52: + process.nextTick(callback, new ResponseStatusCodeError("Response status code ".concat(statusCode).concat(statusMessage ? ": ".concat(statusMessage) : ''), statusCode, headers)); + case 53: + case "end": + return _context.stop(); + } + }, _callee, null, [[6, 22, 26, 36], [27,, 31, 35], [39, 50]]); + })); + return _getResolveErrorBodyCallback.apply(this, arguments); +} +module.exports = { + getResolveErrorBodyCallback: getResolveErrorBodyCallback +}; + +/***/ }), + +/***/ 9869: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _objectWithoutProperties = (__webpack_require__(1847)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _excluded = ["factory"]; +var _require = __webpack_require__(3515), + BalancedPoolMissingUpstreamError = _require.BalancedPoolMissingUpstreamError, + InvalidArgumentError = _require.InvalidArgumentError; +var _require2 = __webpack_require__(8872), + PoolBase = _require2.PoolBase, + kClients = _require2.kClients, + kNeedDrain = _require2.kNeedDrain, + kAddClient = _require2.kAddClient, + kRemoveClient = _require2.kRemoveClient, + kGetDispatcher = _require2.kGetDispatcher; +var Pool = __webpack_require__(8684); +var _require3 = __webpack_require__(6771), + kUrl = _require3.kUrl, + kInterceptors = _require3.kInterceptors; +var _require4 = __webpack_require__(6632), + parseOrigin = _require4.parseOrigin; +var kFactory = Symbol('factory'); +var kOptions = Symbol('options'); +var kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor'); +var kCurrentWeight = Symbol('kCurrentWeight'); +var kIndex = Symbol('kIndex'); +var kWeight = Symbol('kWeight'); +var kMaxWeightPerServer = Symbol('kMaxWeightPerServer'); +var kErrorPenalty = Symbol('kErrorPenalty'); +function getGreatestCommonDivisor(a, b) { + if (b === 0) return a; + return getGreatestCommonDivisor(b, a % b); +} +function defaultFactory(origin, opts) { + return new Pool(origin, opts); +} +var BalancedPool = /*#__PURE__*/function (_PoolBase) { + function BalancedPool() { + var _this; + var upstreams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$factory = _ref.factory, + factory = _ref$factory === void 0 ? defaultFactory : _ref$factory, + opts = _objectWithoutProperties(_ref, _excluded); + _classCallCheck(this, BalancedPool); + _this = _callSuper(this, BalancedPool); + _this[kOptions] = opts; + _this[kIndex] = -1; + _this[kCurrentWeight] = 0; + _this[kMaxWeightPerServer] = _this[kOptions].maxWeightPerServer || 100; + _this[kErrorPenalty] = _this[kOptions].errorPenalty || 15; + if (!Array.isArray(upstreams)) { + upstreams = [upstreams]; + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + _this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) ? opts.interceptors.BalancedPool : []; + _this[kFactory] = factory; + var _iterator = _createForOfIteratorHelper(upstreams), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var upstream = _step.value; + _this.addUpstream(upstream); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + _this._updateBalancedPoolStats(); + return _this; + } + _inherits(BalancedPool, _PoolBase); + return _createClass(BalancedPool, [{ + key: "addUpstream", + value: function addUpstream(upstream) { + var _this2 = this; + var upstreamOrigin = parseOrigin(upstream).origin; + if (this[kClients].find(function (pool) { + return pool[kUrl].origin === upstreamOrigin && pool.closed !== true && pool.destroyed !== true; + })) { + return this; + } + var pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); + this[kAddClient](pool); + pool.on('connect', function () { + pool[kWeight] = Math.min(_this2[kMaxWeightPerServer], pool[kWeight] + _this2[kErrorPenalty]); + }); + pool.on('connectionError', function () { + pool[kWeight] = Math.max(1, pool[kWeight] - _this2[kErrorPenalty]); + _this2._updateBalancedPoolStats(); + }); + pool.on('disconnect', function () { + var err = arguments.length <= 2 ? undefined : arguments[2]; + if (err && err.code === 'UND_ERR_SOCKET') { + // decrease the weight of the pool. + pool[kWeight] = Math.max(1, pool[kWeight] - _this2[kErrorPenalty]); + _this2._updateBalancedPoolStats(); + } + }); + var _iterator2 = _createForOfIteratorHelper(this[kClients]), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var client = _step2.value; + client[kWeight] = this[kMaxWeightPerServer]; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + this._updateBalancedPoolStats(); + return this; + } + }, { + key: "_updateBalancedPoolStats", + value: function _updateBalancedPoolStats() { + this[kGreatestCommonDivisor] = this[kClients].map(function (p) { + return p[kWeight]; + }).reduce(getGreatestCommonDivisor, 0); + } + }, { + key: "removeUpstream", + value: function removeUpstream(upstream) { + var upstreamOrigin = parseOrigin(upstream).origin; + var pool = this[kClients].find(function (pool) { + return pool[kUrl].origin === upstreamOrigin && pool.closed !== true && pool.destroyed !== true; + }); + if (pool) { + this[kRemoveClient](pool); + } + return this; + } + }, { + key: "upstreams", + get: function get() { + return this[kClients].filter(function (dispatcher) { + return dispatcher.closed !== true && dispatcher.destroyed !== true; + }).map(function (p) { + return p[kUrl].origin; + }); + } + }, { + key: kGetDispatcher, + value: function value() { + // We validate that pools is greater than 0, + // otherwise we would have to wait until an upstream + // is added, which might never happen. + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError(); + } + var dispatcher = this[kClients].find(function (dispatcher) { + return !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true; + }); + if (!dispatcher) { + return; + } + var allClientsBusy = this[kClients].map(function (pool) { + return pool[kNeedDrain]; + }).reduce(function (a, b) { + return a && b; + }, true); + if (allClientsBusy) { + return; + } + var counter = 0; + var maxWeightIndex = this[kClients].findIndex(function (pool) { + return !pool[kNeedDrain]; + }); + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + var pool = this[kClients][this[kIndex]]; + + // find pool index with the largest weight + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex]; + } + + // decrease the current weight every `this[kClients].length`. + if (this[kIndex] === 0) { + // Set the current weight to the next lower weight. + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer]; + } + } + if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { + return pool; + } + } + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; + this[kIndex] = maxWeightIndex; + return this[kClients][maxWeightIndex]; + } + }]); +}(PoolBase); +module.exports = BalancedPool; + +/***/ }), + +/***/ 9319: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _defineProperty = (__webpack_require__(3693)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _classPrivateMethodInitSpec = (__webpack_require__(3312)["default"]); +var _classPrivateFieldInitSpec = (__webpack_require__(2459)["default"]); +var _assertClassBrand = (__webpack_require__(1756)["default"]); +var _classPrivateFieldGet = (__webpack_require__(6668)["default"]); +var _classPrivateFieldSet = (__webpack_require__(7088)["default"]); +var _require = __webpack_require__(1568), + kConstruct = _require.kConstruct; +var _require2 = __webpack_require__(2465), + urlEquals = _require2.urlEquals, + getFieldValues = _require2.fieldValues; +var _require3 = __webpack_require__(6632), + kEnumerableProperty = _require3.kEnumerableProperty, + isDisturbed = _require3.isDisturbed; +var _require4 = __webpack_require__(6771), + kHeadersList = _require4.kHeadersList; +var _require5 = __webpack_require__(3702), + webidl = _require5.webidl; +var _require6 = __webpack_require__(4284), + Response = _require6.Response, + cloneResponse = _require6.cloneResponse; +var _require7 = __webpack_require__(4930), + Request = _require7.Request; +var _require8 = __webpack_require__(6614), + kState = _require8.kState, + kHeaders = _require8.kHeaders, + kGuard = _require8.kGuard, + kRealm = _require8.kRealm; +var _require9 = __webpack_require__(4435), + fetching = _require9.fetching; +var _require10 = __webpack_require__(1035), + urlIsHttpHttpsScheme = _require10.urlIsHttpHttpsScheme, + createDeferredPromise = _require10.createDeferredPromise, + readAllBytes = _require10.readAllBytes; +var assert = __webpack_require__(2613); +var _require11 = __webpack_require__(4397), + getGlobalDispatcher = _require11.getGlobalDispatcher; + +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation + * @typedef {Object} CacheBatchOperation + * @property {'delete' | 'put'} type + * @property {any} request + * @property {any} response + * @property {import('../../types/cache').CacheQueryOptions} options + */ + +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list + * @typedef {[any, any][]} requestResponseList + */ +var _relevantRequestResponseList = /*#__PURE__*/new WeakMap(); +var _Cache_brand = /*#__PURE__*/new WeakSet(); +var Cache = /*#__PURE__*/function () { + function Cache() { + _classCallCheck(this, Cache); + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + _classPrivateMethodInitSpec(this, _Cache_brand); + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + _classPrivateFieldInitSpec(this, _relevantRequestResponseList, void 0); + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor(); + } + _classPrivateFieldSet(_relevantRequestResponseList, this, arguments[1]); + } + return _createClass(Cache, [{ + key: "match", + value: function () { + var _match = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(request) { + var options, + p, + _args = arguments; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + webidl.brandCheck(this, Cache); + webidl.argumentLengthCheck(_args, 1, { + header: 'Cache.match' + }); + request = webidl.converters.RequestInfo(request); + options = webidl.converters.CacheQueryOptions(options); + _context.next = 7; + return this.matchAll(request, options); + case 7: + p = _context.sent; + if (!(p.length === 0)) { + _context.next = 10; + break; + } + return _context.abrupt("return"); + case 10: + return _context.abrupt("return", p[0]); + case 11: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function match(_x) { + return _match.apply(this, arguments); + } + return match; + }() + }, { + key: "matchAll", + value: function () { + var _matchAll = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var request, + options, + r, + responses, + _iterator, + _step, + requestResponse, + requestResponses, + _iterator2, + _step2, + _requestResponse, + responseList, + _i, + _responses, + _response$body$source, + _response$body, + response, + responseObject, + body, + _args2 = arguments; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + request = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : undefined; + options = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {}; + webidl.brandCheck(this, Cache); + if (request !== undefined) request = webidl.converters.RequestInfo(request); + options = webidl.converters.CacheQueryOptions(options); + + // 1. + r = null; // 2. + if (!(request !== undefined)) { + _context2.next = 14; + break; + } + if (!(request instanceof Request)) { + _context2.next = 13; + break; + } + // 2.1.1 + r = request[kState]; + + // 2.1.2 + if (!(r.method !== 'GET' && !options.ignoreMethod)) { + _context2.next = 11; + break; + } + return _context2.abrupt("return", []); + case 11: + _context2.next = 14; + break; + case 13: + if (typeof request === 'string') { + // 2.2.1 + r = new Request(request)[kState]; + } + case 14: + // 5. + // 5.1 + responses = []; // 5.2 + if (request === undefined) { + // 5.2.1 + _iterator = _createForOfIteratorHelper(_classPrivateFieldGet(_relevantRequestResponseList, this)); + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + requestResponse = _step.value; + responses.push(requestResponse[1]); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } else { + // 5.3 + // 5.3.1 + requestResponses = _assertClassBrand(_Cache_brand, this, _queryCache).call(this, r, options); // 5.3.2 + _iterator2 = _createForOfIteratorHelper(requestResponses); + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + _requestResponse = _step2.value; + responses.push(_requestResponse[1]); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + + // 5.4 + // We don't implement CORs so we don't need to loop over the responses, yay! + + // 5.5.1 + responseList = []; // 5.5.2 + for (_i = 0, _responses = responses; _i < _responses.length; _i++) { + response = _responses[_i]; + // 5.5.2.1 + responseObject = new Response((_response$body$source = (_response$body = response.body) === null || _response$body === void 0 ? void 0 : _response$body.source) !== null && _response$body$source !== void 0 ? _response$body$source : null); + body = responseObject[kState].body; + responseObject[kState] = response; + responseObject[kState].body = body; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = 'immutable'; + responseList.push(responseObject); + } + + // 6. + return _context2.abrupt("return", Object.freeze(responseList)); + case 19: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function matchAll() { + return _matchAll.apply(this, arguments); + } + return matchAll; + }() + }, { + key: "add", + value: function () { + var _add = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(request) { + var requests, + responseArrayPromise, + _args3 = arguments; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + webidl.brandCheck(this, Cache); + webidl.argumentLengthCheck(_args3, 1, { + header: 'Cache.add' + }); + request = webidl.converters.RequestInfo(request); + + // 1. + requests = [request]; // 2. + responseArrayPromise = this.addAll(requests); // 3. + _context3.next = 7; + return responseArrayPromise; + case 7: + return _context3.abrupt("return", _context3.sent); + case 8: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function add(_x2) { + return _add.apply(this, arguments); + } + return add; + }() + }, { + key: "addAll", + value: function () { + var _addAll = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(requests) { + var responsePromises, + requestList, + _iterator3, + _step3, + request, + r, + fetchControllers, + _iterator4, + _step4, + _loop, + p, + responses, + operations, + index, + _iterator5, + _step5, + response, + operation, + cacheJobPromise, + errorData, + _args5 = arguments; + return _regeneratorRuntime().wrap(function _callee4$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + webidl.brandCheck(this, Cache); + webidl.argumentLengthCheck(_args5, 1, { + header: 'Cache.addAll' + }); + requests = webidl.converters['sequence'](requests); + + // 1. + responsePromises = []; // 2. + requestList = []; // 3. + _iterator3 = _createForOfIteratorHelper(requests); + _context5.prev = 6; + _iterator3.s(); + case 8: + if ((_step3 = _iterator3.n()).done) { + _context5.next = 17; + break; + } + request = _step3.value; + if (!(typeof request === 'string')) { + _context5.next = 12; + break; + } + return _context5.abrupt("continue", 15); + case 12: + // 3.1 + r = request[kState]; // 3.2 + if (!(!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET')) { + _context5.next = 15; + break; + } + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme when method is not GET.' + }); + case 15: + _context5.next = 8; + break; + case 17: + _context5.next = 22; + break; + case 19: + _context5.prev = 19; + _context5.t0 = _context5["catch"](6); + _iterator3.e(_context5.t0); + case 22: + _context5.prev = 22; + _iterator3.f(); + return _context5.finish(22); + case 25: + // 4. + /** @type {ReturnType[]} */ + fetchControllers = []; // 5. + _iterator4 = _createForOfIteratorHelper(requests); + _context5.prev = 27; + _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() { + var request, r, responsePromise; + return _regeneratorRuntime().wrap(function _loop$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + request = _step4.value; + // 5.1 + r = new Request(request)[kState]; // 5.2 + if (urlIsHttpHttpsScheme(r.url)) { + _context4.next = 4; + break; + } + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme.' + }); + case 4: + // 5.4 + r.initiator = 'fetch'; + r.destination = 'subresource'; + + // 5.5 + requestList.push(r); + + // 5.6 + responsePromise = createDeferredPromise(); // 5.7 + fetchControllers.push(fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse: function processResponse(response) { + // 1. + if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Received an invalid status code or the request failed.' + })); + } else if (response.headersList.contains('vary')) { + // 2. + // 2.1 + var fieldValues = getFieldValues(response.headersList.get('vary')); + + // 2.2 + var _iterator6 = _createForOfIteratorHelper(fieldValues), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var fieldValue = _step6.value; + // 2.2.1 + if (fieldValue === '*') { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'invalid vary field value' + })); + for (var _i2 = 0, _fetchControllers = fetchControllers; _i2 < _fetchControllers.length; _i2++) { + var controller = _fetchControllers[_i2]; + controller.abort(); + } + return; + } + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + } + }, + processResponseEndOfBody: function processResponseEndOfBody(response) { + // 1. + if (response.aborted) { + responsePromise.reject(new DOMException('aborted', 'AbortError')); + return; + } + + // 2. + responsePromise.resolve(response); + } + })); + + // 5.8 + responsePromises.push(responsePromise.promise); + case 10: + case "end": + return _context4.stop(); + } + }, _loop); + }); + _iterator4.s(); + case 30: + if ((_step4 = _iterator4.n()).done) { + _context5.next = 34; + break; + } + return _context5.delegateYield(_loop(), "t1", 32); + case 32: + _context5.next = 30; + break; + case 34: + _context5.next = 39; + break; + case 36: + _context5.prev = 36; + _context5.t2 = _context5["catch"](27); + _iterator4.e(_context5.t2); + case 39: + _context5.prev = 39; + _iterator4.f(); + return _context5.finish(39); + case 42: + // 6. + p = Promise.all(responsePromises); // 7. + _context5.next = 45; + return p; + case 45: + responses = _context5.sent; + // 7.1 + operations = []; // 7.2 + index = 0; // 7.3 + _iterator5 = _createForOfIteratorHelper(responses); + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + response = _step5.value; + // 7.3.1 + /** @type {CacheBatchOperation} */ + operation = { + type: 'put', + // 7.3.2 + request: requestList[index], + // 7.3.3 + response: response // 7.3.4 + }; + operations.push(operation); // 7.3.5 + + index++; // 7.3.6 + } + + // 7.5 + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + cacheJobPromise = createDeferredPromise(); // 7.6.1 + errorData = null; // 7.6.2 + try { + _assertClassBrand(_Cache_brand, this, _batchCacheOperations).call(this, operations); + } catch (e) { + errorData = e; + } + + // 7.6.3 + queueMicrotask(function () { + // 7.6.3.1 + if (errorData === null) { + cacheJobPromise.resolve(undefined); + } else { + // 7.6.3.2 + cacheJobPromise.reject(errorData); + } + }); + + // 7.7 + return _context5.abrupt("return", cacheJobPromise.promise); + case 55: + case "end": + return _context5.stop(); + } + }, _callee4, this, [[6, 19, 22, 25], [27, 36, 39, 42]]); + })); + function addAll(_x3) { + return _addAll.apply(this, arguments); + } + return addAll; + }() + }, { + key: "put", + value: function () { + var _put = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(request, response) { + var innerRequest, + innerResponse, + fieldValues, + _iterator7, + _step7, + fieldValue, + clonedResponse, + bodyReadPromise, + stream, + reader, + operations, + operation, + bytes, + cacheJobPromise, + errorData, + _args6 = arguments; + return _regeneratorRuntime().wrap(function _callee5$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + webidl.brandCheck(this, Cache); + webidl.argumentLengthCheck(_args6, 2, { + header: 'Cache.put' + }); + request = webidl.converters.RequestInfo(request); + response = webidl.converters.Response(response); + + // 1. + innerRequest = null; // 2. + if (request instanceof Request) { + innerRequest = request[kState]; + } else { + // 3. + innerRequest = new Request(request)[kState]; + } + + // 4. + if (!(!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET')) { + _context6.next = 8; + break; + } + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Expected an http/s scheme when method is not GET' + }); + case 8: + // 5. + innerResponse = response[kState]; // 6. + if (!(innerResponse.status === 206)) { + _context6.next = 11; + break; + } + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got 206 status' + }); + case 11: + if (!innerResponse.headersList.contains('vary')) { + _context6.next = 30; + break; + } + // 7.1. + fieldValues = getFieldValues(innerResponse.headersList.get('vary')); // 7.2. + _iterator7 = _createForOfIteratorHelper(fieldValues); + _context6.prev = 14; + _iterator7.s(); + case 16: + if ((_step7 = _iterator7.n()).done) { + _context6.next = 22; + break; + } + fieldValue = _step7.value; + if (!(fieldValue === '*')) { + _context6.next = 20; + break; + } + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got * vary field value' + }); + case 20: + _context6.next = 16; + break; + case 22: + _context6.next = 27; + break; + case 24: + _context6.prev = 24; + _context6.t0 = _context6["catch"](14); + _iterator7.e(_context6.t0); + case 27: + _context6.prev = 27; + _iterator7.f(); + return _context6.finish(27); + case 30: + if (!(innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked))) { + _context6.next = 32; + break; + } + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Response body is locked or disturbed' + }); + case 32: + // 9. + clonedResponse = cloneResponse(innerResponse); // 10. + bodyReadPromise = createDeferredPromise(); // 11. + if (innerResponse.body != null) { + // 11.1 + stream = innerResponse.body.stream; // 11.2 + reader = stream.getReader(); // 11.3 + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); + } else { + bodyReadPromise.resolve(undefined); + } + + // 12. + /** @type {CacheBatchOperation[]} */ + operations = []; // 13. + /** @type {CacheBatchOperation} */ + operation = { + type: 'put', + // 14. + request: innerRequest, + // 15. + response: clonedResponse // 16. + }; // 17. + + operations.push(operation); + + // 19. + _context6.next = 40; + return bodyReadPromise.promise; + case 40: + bytes = _context6.sent; + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes; + } + + // 19.1 + cacheJobPromise = createDeferredPromise(); // 19.2.1 + errorData = null; // 19.2.2 + try { + _assertClassBrand(_Cache_brand, this, _batchCacheOperations).call(this, operations); + } catch (e) { + errorData = e; + } + + // 19.2.3 + queueMicrotask(function () { + // 19.2.3.1 + if (errorData === null) { + cacheJobPromise.resolve(); + } else { + // 19.2.3.2 + cacheJobPromise.reject(errorData); + } + }); + return _context6.abrupt("return", cacheJobPromise.promise); + case 47: + case "end": + return _context6.stop(); + } + }, _callee5, this, [[14, 24, 27, 30]]); + })); + function put(_x4, _x5) { + return _put.apply(this, arguments); + } + return put; + }() + }, { + key: "delete", + value: function () { + var _delete2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(request) { + var options, + r, + operations, + operation, + cacheJobPromise, + errorData, + requestResponses, + _args7 = arguments; + return _regeneratorRuntime().wrap(function _callee6$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + options = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {}; + webidl.brandCheck(this, Cache); + webidl.argumentLengthCheck(_args7, 1, { + header: 'Cache.delete' + }); + request = webidl.converters.RequestInfo(request); + options = webidl.converters.CacheQueryOptions(options); + + /** + * @type {Request} + */ + r = null; + if (!(request instanceof Request)) { + _context7.next = 12; + break; + } + r = request[kState]; + if (!(r.method !== 'GET' && !options.ignoreMethod)) { + _context7.next = 10; + break; + } + return _context7.abrupt("return", false); + case 10: + _context7.next = 14; + break; + case 12: + assert(typeof request === 'string'); + r = new Request(request)[kState]; + case 14: + /** @type {CacheBatchOperation[]} */ + operations = []; + /** @type {CacheBatchOperation} */ + operation = { + type: 'delete', + request: r, + options: options + }; + operations.push(operation); + cacheJobPromise = createDeferredPromise(); + errorData = null; + try { + requestResponses = _assertClassBrand(_Cache_brand, this, _batchCacheOperations).call(this, operations); + } catch (e) { + errorData = e; + } + queueMicrotask(function () { + if (errorData === null) { + var _requestResponses; + cacheJobPromise.resolve(!!((_requestResponses = requestResponses) !== null && _requestResponses !== void 0 && _requestResponses.length)); + } else { + cacheJobPromise.reject(errorData); + } + }); + return _context7.abrupt("return", cacheJobPromise.promise); + case 22: + case "end": + return _context7.stop(); + } + }, _callee6, this); + })); + function _delete(_x6) { + return _delete2.apply(this, arguments); + } + return _delete; + }() + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} + */ + }, { + key: "keys", + value: (function () { + var _keys = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() { + var request, + options, + r, + promise, + requests, + _iterator8, + _step8, + requestResponse, + requestResponses, + _iterator9, + _step9, + _requestResponse2, + _args8 = arguments; + return _regeneratorRuntime().wrap(function _callee7$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + request = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : undefined; + options = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : {}; + webidl.brandCheck(this, Cache); + if (request !== undefined) request = webidl.converters.RequestInfo(request); + options = webidl.converters.CacheQueryOptions(options); + + // 1. + r = null; // 2. + if (!(request !== undefined)) { + _context8.next = 14; + break; + } + if (!(request instanceof Request)) { + _context8.next = 13; + break; + } + // 2.1.1 + r = request[kState]; + + // 2.1.2 + if (!(r.method !== 'GET' && !options.ignoreMethod)) { + _context8.next = 11; + break; + } + return _context8.abrupt("return", []); + case 11: + _context8.next = 14; + break; + case 13: + if (typeof request === 'string') { + // 2.2 + r = new Request(request)[kState]; + } + case 14: + // 4. + promise = createDeferredPromise(); // 5. + // 5.1 + requests = []; // 5.2 + if (request === undefined) { + // 5.2.1 + _iterator8 = _createForOfIteratorHelper(_classPrivateFieldGet(_relevantRequestResponseList, this)); + try { + for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { + requestResponse = _step8.value; + // 5.2.1.1 + requests.push(requestResponse[0]); + } + } catch (err) { + _iterator8.e(err); + } finally { + _iterator8.f(); + } + } else { + // 5.3 + // 5.3.1 + requestResponses = _assertClassBrand(_Cache_brand, this, _queryCache).call(this, r, options); // 5.3.2 + _iterator9 = _createForOfIteratorHelper(requestResponses); + try { + for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { + _requestResponse2 = _step9.value; + // 5.3.2.1 + requests.push(_requestResponse2[0]); + } + } catch (err) { + _iterator9.e(err); + } finally { + _iterator9.f(); + } + } + + // 5.4 + queueMicrotask(function () { + // 5.4.1 + var requestList = []; + + // 5.4.2 + for (var _i3 = 0, _requests = requests; _i3 < _requests.length; _i3++) { + var _request = _requests[_i3]; + var requestObject = new Request('https://a'); + requestObject[kState] = _request; + requestObject[kHeaders][kHeadersList] = _request.headersList; + requestObject[kHeaders][kGuard] = 'immutable'; + requestObject[kRealm] = _request.client; + + // 5.4.2.1 + requestList.push(requestObject); + } + + // 5.4.3 + promise.resolve(Object.freeze(requestList)); + }); + return _context8.abrupt("return", promise.promise); + case 19: + case "end": + return _context8.stop(); + } + }, _callee7, this); + })); + function keys() { + return _keys.apply(this, arguments); + } + return keys; + }()) + }]); +}(); +function _batchCacheOperations(operations) { + // 1. + var cache = _classPrivateFieldGet(_relevantRequestResponseList, this); + + // 2. + var backupCache = _toConsumableArray(cache); + + // 3. + var addedItems = []; + + // 4.1 + var resultList = []; + try { + // 4.2 + var _iterator10 = _createForOfIteratorHelper(operations), + _step10; + try { + for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { + var operation = _step10.value; + // 4.2.1 + if (operation.type !== 'delete' && operation.type !== 'put') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'operation type does not match "delete" or "put"' + }); + } + + // 4.2.2 + if (operation.type === 'delete' && operation.response != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'delete operation should not have an associated response' + }); + } + + // 4.2.3 + if (_assertClassBrand(_Cache_brand, this, _queryCache).call(this, operation.request, operation.options, addedItems).length) { + throw new DOMException('???', 'InvalidStateError'); + } + + // 4.2.4 + var requestResponses = void 0; + + // 4.2.5 + if (operation.type === 'delete') { + // 4.2.5.1 + requestResponses = _assertClassBrand(_Cache_brand, this, _queryCache).call(this, operation.request, operation.options); + + // TODO: the spec is wrong, this is needed to pass WPTs + if (requestResponses.length === 0) { + return []; + } + + // 4.2.5.2 + var _iterator11 = _createForOfIteratorHelper(requestResponses), + _step11; + try { + for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { + var requestResponse = _step11.value; + var idx = cache.indexOf(requestResponse); + assert(idx !== -1); + + // 4.2.5.2.1 + cache.splice(idx, 1); + } + } catch (err) { + _iterator11.e(err); + } finally { + _iterator11.f(); + } + } else if (operation.type === 'put') { + // 4.2.6 + // 4.2.6.1 + if (operation.response == null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'put operation should have an associated response' + }); + } + + // 4.2.6.2 + var r = operation.request; + + // 4.2.6.3 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'expected http or https scheme' + }); + } + + // 4.2.6.4 + if (r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'not get method' + }); + } + + // 4.2.6.5 + if (operation.options != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'options must not be defined' + }); + } + + // 4.2.6.6 + requestResponses = _assertClassBrand(_Cache_brand, this, _queryCache).call(this, operation.request); + + // 4.2.6.7 + var _iterator12 = _createForOfIteratorHelper(requestResponses), + _step12; + try { + for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { + var _requestResponse3 = _step12.value; + var _idx = cache.indexOf(_requestResponse3); + assert(_idx !== -1); + + // 4.2.6.7.1 + cache.splice(_idx, 1); + } + + // 4.2.6.8 + } catch (err) { + _iterator12.e(err); + } finally { + _iterator12.f(); + } + cache.push([operation.request, operation.response]); + + // 4.2.6.10 + addedItems.push([operation.request, operation.response]); + } + + // 4.2.7 + resultList.push([operation.request, operation.response]); + } + + // 4.3 + } catch (err) { + _iterator10.e(err); + } finally { + _iterator10.f(); + } + return resultList; + } catch (e) { + // 5. + // 5.1 + _classPrivateFieldGet(_relevantRequestResponseList, this).length = 0; + + // 5.2 + _classPrivateFieldSet(_relevantRequestResponseList, this, backupCache); + + // 5.3 + throw e; + } +} +/** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ +function _queryCache(requestQuery, options, targetStorage) { + /** @type {requestResponseList} */ + var resultList = []; + var storage = targetStorage !== null && targetStorage !== void 0 ? targetStorage : _classPrivateFieldGet(_relevantRequestResponseList, this); + var _iterator13 = _createForOfIteratorHelper(storage), + _step13; + try { + for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { + var requestResponse = _step13.value; + var _requestResponse4 = _slicedToArray(requestResponse, 2), + cachedRequest = _requestResponse4[0], + cachedResponse = _requestResponse4[1]; + if (_assertClassBrand(_Cache_brand, this, _requestMatchesCachedItem).call(this, requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse); + } + } + } catch (err) { + _iterator13.e(err); + } finally { + _iterator13.f(); + } + return resultList; +} +/** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ +function _requestMatchesCachedItem(requestQuery, request) { + var response = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var options = arguments.length > 3 ? arguments[3] : undefined; + // if (options?.ignoreMethod === false && request.method === 'GET') { + // return false + // } + + var queryURL = new URL(requestQuery.url); + var cachedURL = new URL(request.url); + if (options !== null && options !== void 0 && options.ignoreSearch) { + cachedURL.search = ''; + queryURL.search = ''; + } + if (!urlEquals(queryURL, cachedURL, true)) { + return false; + } + if (response == null || options !== null && options !== void 0 && options.ignoreVary || !response.headersList.contains('vary')) { + return true; + } + var fieldValues = getFieldValues(response.headersList.get('vary')); + var _iterator14 = _createForOfIteratorHelper(fieldValues), + _step14; + try { + for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) { + var fieldValue = _step14.value; + if (fieldValue === '*') { + return false; + } + var requestValue = request.headersList.get(fieldValue); + var queryValue = requestQuery.headersList.get(fieldValue); + + // If one has the header and the other doesn't, or one has + // a different value than the other, return false + if (requestValue !== queryValue) { + return false; + } + } + } catch (err) { + _iterator14.e(err); + } finally { + _iterator14.f(); + } + return true; +} +Object.defineProperties(Cache.prototype, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Symbol.toStringTag, { + value: 'Cache', + configurable: true +}), "match", kEnumerableProperty), "matchAll", kEnumerableProperty), "add", kEnumerableProperty), "addAll", kEnumerableProperty), "put", kEnumerableProperty), "delete", kEnumerableProperty), "keys", kEnumerableProperty)); +var cacheQueryOptionConverters = [{ + key: 'ignoreSearch', + converter: webidl.converters["boolean"], + defaultValue: false +}, { + key: 'ignoreMethod', + converter: webidl.converters["boolean"], + defaultValue: false +}, { + key: 'ignoreVary', + converter: webidl.converters["boolean"], + defaultValue: false +}]; +webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); +webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([].concat(cacheQueryOptionConverters, [{ + key: 'cacheName', + converter: webidl.converters.DOMString +}])); +webidl.converters.Response = webidl.interfaceConverter(Response); +webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.RequestInfo); +module.exports = { + Cache: Cache +}; + +/***/ }), + +/***/ 5674: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _defineProperty = (__webpack_require__(3693)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _classPrivateFieldInitSpec = (__webpack_require__(2459)["default"]); +var _classPrivateFieldGet = (__webpack_require__(6668)["default"]); +var _require = __webpack_require__(1568), + kConstruct = _require.kConstruct; +var _require2 = __webpack_require__(9319), + Cache = _require2.Cache; +var _require3 = __webpack_require__(3702), + webidl = _require3.webidl; +var _require4 = __webpack_require__(6632), + kEnumerableProperty = _require4.kEnumerableProperty; +var _caches = /*#__PURE__*/new WeakMap(); +var CacheStorage = /*#__PURE__*/function () { + function CacheStorage() { + _classCallCheck(this, CacheStorage); + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map 1 && _args[1] !== undefined ? _args[1] : {}; + webidl.brandCheck(this, CacheStorage); + webidl.argumentLengthCheck(_args, 1, { + header: 'CacheStorage.match' + }); + request = webidl.converters.RequestInfo(request); + options = webidl.converters.MultiCacheQueryOptions(options); + + // 1. + if (!(options.cacheName != null)) { + _context.next = 14; + break; + } + if (!_classPrivateFieldGet(_caches, this).has(options.cacheName)) { + _context.next = 12; + break; + } + // 1.1.1.1.1 + cacheList = _classPrivateFieldGet(_caches, this).get(options.cacheName); + cache = new Cache(kConstruct, cacheList); + _context.next = 11; + return cache.match(request, options); + case 11: + return _context.abrupt("return", _context.sent); + case 12: + _context.next = 35; + break; + case 14: + // 2. + // 2.2 + _iterator = _createForOfIteratorHelper(_classPrivateFieldGet(_caches, this).values()); + _context.prev = 15; + _iterator.s(); + case 17: + if ((_step = _iterator.n()).done) { + _context.next = 27; + break; + } + _cacheList = _step.value; + _cache = new Cache(kConstruct, _cacheList); // 2.2.1.2 + _context.next = 22; + return _cache.match(request, options); + case 22: + response = _context.sent; + if (!(response !== undefined)) { + _context.next = 25; + break; + } + return _context.abrupt("return", response); + case 25: + _context.next = 17; + break; + case 27: + _context.next = 32; + break; + case 29: + _context.prev = 29; + _context.t0 = _context["catch"](15); + _iterator.e(_context.t0); + case 32: + _context.prev = 32; + _iterator.f(); + return _context.finish(32); + case 35: + case "end": + return _context.stop(); + } + }, _callee, this, [[15, 29, 32, 35]]); + })); + function match(_x) { + return _match.apply(this, arguments); + } + return match; + }() + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-has + * @param {string} cacheName + * @returns {Promise} + */ + }, { + key: "has", + value: (function () { + var _has = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(cacheName) { + var _args2 = arguments; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + webidl.brandCheck(this, CacheStorage); + webidl.argumentLengthCheck(_args2, 1, { + header: 'CacheStorage.has' + }); + cacheName = webidl.converters.DOMString(cacheName); + + // 2.1.1 + // 2.2 + return _context2.abrupt("return", _classPrivateFieldGet(_caches, this).has(cacheName)); + case 4: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function has(_x2) { + return _has.apply(this, arguments); + } + return has; + }() + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + ) + }, { + key: "open", + value: (function () { + var _open = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(cacheName) { + var _cache2, + cache, + _args3 = arguments; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + webidl.brandCheck(this, CacheStorage); + webidl.argumentLengthCheck(_args3, 1, { + header: 'CacheStorage.open' + }); + cacheName = webidl.converters.DOMString(cacheName); + + // 2.1 + if (!_classPrivateFieldGet(_caches, this).has(cacheName)) { + _context3.next = 6; + break; + } + // await caches.open('v1') !== await caches.open('v1') + // 2.1.1 + _cache2 = _classPrivateFieldGet(_caches, this).get(cacheName); // 2.1.1.1 + return _context3.abrupt("return", new Cache(kConstruct, _cache2)); + case 6: + // 2.2 + cache = []; // 2.3 + _classPrivateFieldGet(_caches, this).set(cacheName, cache); + + // 2.4 + return _context3.abrupt("return", new Cache(kConstruct, cache)); + case 9: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function open(_x3) { + return _open.apply(this, arguments); + } + return open; + }() + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + ) + }, { + key: "delete", + value: (function () { + var _delete2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(cacheName) { + var _args4 = arguments; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + webidl.brandCheck(this, CacheStorage); + webidl.argumentLengthCheck(_args4, 1, { + header: 'CacheStorage.delete' + }); + cacheName = webidl.converters.DOMString(cacheName); + return _context4.abrupt("return", _classPrivateFieldGet(_caches, this)["delete"](cacheName)); + case 4: + case "end": + return _context4.stop(); + } + }, _callee4, this); + })); + function _delete(_x4) { + return _delete2.apply(this, arguments); + } + return _delete; + }() + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} + */ + ) + }, { + key: "keys", + value: (function () { + var _keys = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() { + var keys; + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + webidl.brandCheck(this, CacheStorage); + + // 2.1 + keys = _classPrivateFieldGet(_caches, this).keys(); // 2.2 + return _context5.abrupt("return", _toConsumableArray(keys)); + case 3: + case "end": + return _context5.stop(); + } + }, _callee5, this); + })); + function keys() { + return _keys.apply(this, arguments); + } + return keys; + }()) + }]); +}(); +Object.defineProperties(CacheStorage.prototype, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Symbol.toStringTag, { + value: 'CacheStorage', + configurable: true +}), "match", kEnumerableProperty), "has", kEnumerableProperty), "open", kEnumerableProperty), "delete", kEnumerableProperty), "keys", kEnumerableProperty)); +module.exports = { + CacheStorage: CacheStorage +}; + +/***/ }), + +/***/ 1568: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +module.exports = { + kConstruct: (__webpack_require__(6771).kConstruct) +}; + +/***/ }), + +/***/ 2465: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var assert = __webpack_require__(2613); +var _require = __webpack_require__(9738), + URLSerializer = _require.URLSerializer; +var _require2 = __webpack_require__(1035), + isValidHeaderName = _require2.isValidHeaderName; + +/** + * @see https://url.spec.whatwg.org/#concept-url-equals + * @param {URL} A + * @param {URL} B + * @param {boolean | undefined} excludeFragment + * @returns {boolean} + */ +function urlEquals(A, B) { + var excludeFragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var serializedA = URLSerializer(A, excludeFragment); + var serializedB = URLSerializer(B, excludeFragment); + return serializedA === serializedB; +} + +/** + * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 + * @param {string} header + */ +function fieldValues(header) { + assert(header !== null); + var values = []; + var _iterator = _createForOfIteratorHelper(header.split(',')), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var value = _step.value; + value = value.trim(); + if (!value.length) { + continue; + } else if (!isValidHeaderName(value)) { + continue; + } + values.push(value); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return values; +} +module.exports = { + urlEquals: urlEquals, + fieldValues: fieldValues +}; + +/***/ }), + +/***/ 7885: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// @ts-check + + + +/* global WebAssembly */ +var _objectWithoutProperties = (__webpack_require__(1847)["default"]); +var _toPropertyKey = (__webpack_require__(7736)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _asyncIterator = (__webpack_require__(2881)["default"]); +var assert = __webpack_require__(2613); +var net = __webpack_require__(9278); +var http = __webpack_require__(8611); +var _require = __webpack_require__(2203), + pipeline = _require.pipeline; +var util = __webpack_require__(6632); +var timers = __webpack_require__(5900); +var Request = __webpack_require__(5591); +var DispatcherBase = __webpack_require__(8281); +var _require2 = __webpack_require__(3515), + RequestContentLengthMismatchError = _require2.RequestContentLengthMismatchError, + ResponseContentLengthMismatchError = _require2.ResponseContentLengthMismatchError, + InvalidArgumentError = _require2.InvalidArgumentError, + RequestAbortedError = _require2.RequestAbortedError, + HeadersTimeoutError = _require2.HeadersTimeoutError, + HeadersOverflowError = _require2.HeadersOverflowError, + SocketError = _require2.SocketError, + InformationalError = _require2.InformationalError, + BodyTimeoutError = _require2.BodyTimeoutError, + HTTPParserError = _require2.HTTPParserError, + ResponseExceededMaxSizeError = _require2.ResponseExceededMaxSizeError, + ClientDestroyedError = _require2.ClientDestroyedError; +var buildConnector = __webpack_require__(200); +var _require3 = __webpack_require__(6771), + kUrl = _require3.kUrl, + kReset = _require3.kReset, + kServerName = _require3.kServerName, + kClient = _require3.kClient, + kBusy = _require3.kBusy, + kParser = _require3.kParser, + kConnect = _require3.kConnect, + kBlocking = _require3.kBlocking, + kResuming = _require3.kResuming, + kRunning = _require3.kRunning, + kPending = _require3.kPending, + kSize = _require3.kSize, + kWriting = _require3.kWriting, + kQueue = _require3.kQueue, + kConnected = _require3.kConnected, + kConnecting = _require3.kConnecting, + kNeedDrain = _require3.kNeedDrain, + kNoRef = _require3.kNoRef, + kKeepAliveDefaultTimeout = _require3.kKeepAliveDefaultTimeout, + kHostHeader = _require3.kHostHeader, + kPendingIdx = _require3.kPendingIdx, + kRunningIdx = _require3.kRunningIdx, + kError = _require3.kError, + kPipelining = _require3.kPipelining, + kSocket = _require3.kSocket, + kKeepAliveTimeoutValue = _require3.kKeepAliveTimeoutValue, + kMaxHeadersSize = _require3.kMaxHeadersSize, + kKeepAliveMaxTimeout = _require3.kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold = _require3.kKeepAliveTimeoutThreshold, + kHeadersTimeout = _require3.kHeadersTimeout, + kBodyTimeout = _require3.kBodyTimeout, + kStrictContentLength = _require3.kStrictContentLength, + kConnector = _require3.kConnector, + kMaxRedirections = _require3.kMaxRedirections, + kMaxRequests = _require3.kMaxRequests, + kCounter = _require3.kCounter, + kClose = _require3.kClose, + kDestroy = _require3.kDestroy, + kDispatch = _require3.kDispatch, + kInterceptors = _require3.kInterceptors, + kLocalAddress = _require3.kLocalAddress, + kMaxResponseSize = _require3.kMaxResponseSize, + kHTTPConnVersion = _require3.kHTTPConnVersion, + kHost = _require3.kHost, + kHTTP2Session = _require3.kHTTP2Session, + kHTTP2SessionState = _require3.kHTTP2SessionState, + kHTTP2BuildRequest = _require3.kHTTP2BuildRequest, + kHTTP2CopyHeaders = _require3.kHTTP2CopyHeaders, + kHTTP1BuildRequest = _require3.kHTTP1BuildRequest; + +/** @type {import('http2')} */ +var http2; +try { + http2 = __webpack_require__(5675); +} catch (_unused) { + // @ts-ignore + http2 = { + constants: {} + }; +} +var _http = http2, + _http$constants = _http.constants, + HTTP2_HEADER_AUTHORITY = _http$constants.HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD = _http$constants.HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH = _http$constants.HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME = _http$constants.HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH = _http$constants.HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT = _http$constants.HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS = _http$constants.HTTP2_HEADER_STATUS; + +// Experimental +var h2ExperimentalWarned = false; +var FastBuffer = Buffer[Symbol.species]; +var kClosedResolve = Symbol('kClosedResolve'); +var channels = {}; +try { + var diagnosticsChannel = __webpack_require__(1637); + channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders'); + channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect'); + channels.connectError = diagnosticsChannel.channel('undici:client:connectError'); + channels.connected = diagnosticsChannel.channel('undici:client:connected'); +} catch (_unused2) { + channels.sendHeaders = { + hasSubscribers: false + }; + channels.beforeConnect = { + hasSubscribers: false + }; + channels.connectError = { + hasSubscribers: false + }; + channels.connected = { + hasSubscribers: false + }; +} + +/** + * @type {import('../types/client').default} + */ +var Client = /*#__PURE__*/function (_DispatcherBase) { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + function Client(url) { + var _this; + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + interceptors = _ref.interceptors, + maxHeaderSize = _ref.maxHeaderSize, + headersTimeout = _ref.headersTimeout, + socketTimeout = _ref.socketTimeout, + requestTimeout = _ref.requestTimeout, + connectTimeout = _ref.connectTimeout, + bodyTimeout = _ref.bodyTimeout, + idleTimeout = _ref.idleTimeout, + keepAlive = _ref.keepAlive, + keepAliveTimeout = _ref.keepAliveTimeout, + maxKeepAliveTimeout = _ref.maxKeepAliveTimeout, + keepAliveMaxTimeout = _ref.keepAliveMaxTimeout, + keepAliveTimeoutThreshold = _ref.keepAliveTimeoutThreshold, + socketPath = _ref.socketPath, + pipelining = _ref.pipelining, + tls = _ref.tls, + strictContentLength = _ref.strictContentLength, + maxCachedSessions = _ref.maxCachedSessions, + maxRedirections = _ref.maxRedirections, + connect = _ref.connect, + maxRequestsPerClient = _ref.maxRequestsPerClient, + localAddress = _ref.localAddress, + maxResponseSize = _ref.maxResponseSize, + autoSelectFamily = _ref.autoSelectFamily, + autoSelectFamilyAttemptTimeout = _ref.autoSelectFamilyAttemptTimeout, + allowH2 = _ref.allowH2, + maxConcurrentStreams = _ref.maxConcurrentStreams; + _classCallCheck(this, Client); + _this = _callSuper(this, Client); + if (keepAlive !== undefined) { + throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead'); + } + if (socketTimeout !== undefined) { + throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead'); + } + if (requestTimeout !== undefined) { + throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead'); + } + if (idleTimeout !== undefined) { + throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead'); + } + if (maxKeepAliveTimeout !== undefined) { + throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead'); + } + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError('invalid maxHeaderSize'); + } + if (socketPath != null && typeof socketPath !== 'string') { + throw new InvalidArgumentError('invalid socketPath'); + } + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError('invalid connectTimeout'); + } + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveTimeout'); + } + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveMaxTimeout'); + } + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold'); + } + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('headersTimeout must be a positive integer or zero'); + } + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero'); + } + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); + } + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError('maxRequestsPerClient must be a positive number'); + } + if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError('localAddress must be valid string IP address'); + } + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError('maxResponseSize must be a positive number'); + } + if (autoSelectFamilyAttemptTimeout != null && (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)) { + throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number'); + } + + // h2 + if (allowH2 != null && typeof allowH2 !== 'boolean') { + throw new InvalidArgumentError('allowH2 must be a valid boolean value'); + } + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0'); + } + if (typeof connect !== 'function') { + connect = buildConnector(_objectSpread(_objectSpread(_objectSpread({}, tls), {}, { + maxCachedSessions: maxCachedSessions, + allowH2: allowH2, + socketPath: socketPath, + timeout: connectTimeout + }, util.nodeHasAutoSelectFamily && autoSelectFamily ? { + autoSelectFamily: autoSelectFamily, + autoSelectFamilyAttemptTimeout: autoSelectFamilyAttemptTimeout + } : undefined), connect)); + } + _this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) ? interceptors.Client : [createRedirectInterceptor({ + maxRedirections: maxRedirections + })]; + _this[kUrl] = util.parseOrigin(url); + _this[kConnector] = connect; + _this[kSocket] = null; + _this[kPipelining] = pipelining != null ? pipelining : 1; + _this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; + _this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; + _this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout; + _this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; + _this[kKeepAliveTimeoutValue] = _this[kKeepAliveDefaultTimeout]; + _this[kServerName] = null; + _this[kLocalAddress] = localAddress != null ? localAddress : null; + _this[kResuming] = 0; // 0, idle, 1, scheduled, 2 resuming + _this[kNeedDrain] = 0; // 0, idle, 1, scheduled, 2 resuming + _this[kHostHeader] = "host: ".concat(_this[kUrl].hostname).concat(_this[kUrl].port ? ":".concat(_this[kUrl].port) : '', "\r\n"); + _this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3; + _this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3; + _this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + _this[kMaxRedirections] = maxRedirections; + _this[kMaxRequests] = maxRequestsPerClient; + _this[kClosedResolve] = null; + _this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; + _this[kHTTPConnVersion] = 'h1'; + + // HTTP/2 + _this[kHTTP2Session] = null; + _this[kHTTP2SessionState] = !allowH2 ? null : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, + // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server + }; + _this[kHost] = "".concat(_this[kUrl].hostname).concat(_this[kUrl].port ? ":".concat(_this[kUrl].port) : ''); + + // kQueue is built up of 3 sections separated by + // the kRunningIdx and kPendingIdx indices. + // | complete | running | pending | + // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length + // kRunningIdx points to the first running element. + // kPendingIdx points to the first pending element. + // This implements a fast queue with an amortized + // time of O(1). + + _this[kQueue] = []; + _this[kRunningIdx] = 0; + _this[kPendingIdx] = 0; + return _this; + } + _inherits(Client, _DispatcherBase); + return _createClass(Client, [{ + key: "pipelining", + get: function get() { + return this[kPipelining]; + }, + set: function set(value) { + this[kPipelining] = value; + resume(this, true); + } + }, { + key: kPending, + get: function get() { + return this[kQueue].length - this[kPendingIdx]; + } + }, { + key: kRunning, + get: function get() { + return this[kPendingIdx] - this[kRunningIdx]; + } + }, { + key: kSize, + get: function get() { + return this[kQueue].length - this[kRunningIdx]; + } + }, { + key: kConnected, + get: function get() { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; + } + }, { + key: kBusy, + get: function get() { + var socket = this[kSocket]; + return socket && (socket[kReset] || socket[kWriting] || socket[kBlocking]) || this[kSize] >= (this[kPipelining] || 1) || this[kPending] > 0; + } + + /* istanbul ignore: only used for test */ + }, { + key: kConnect, + value: function value(cb) { + connect(this); + this.once('connect', cb); + } + }, { + key: kDispatch, + value: function value(opts, handler) { + var origin = opts.origin || this[kUrl].origin; + var request = this[kHTTPConnVersion] === 'h2' ? Request[kHTTP2BuildRequest](origin, opts, handler) : Request[kHTTP1BuildRequest](origin, opts, handler); + this[kQueue].push(request); + if (this[kResuming]) { + // Do nothing. + } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { + // Wait a tick in case stream/iterator is ended in the same tick. + this[kResuming] = 1; + process.nextTick(resume, this); + } else { + resume(this, true); + } + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2; + } + return this[kNeedDrain] < 2; + } + }, { + key: kClose, + value: function () { + var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var _this2 = this; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", new Promise(function (resolve) { + if (!_this2[kSize]) { + resolve(null); + } else { + _this2[kClosedResolve] = resolve; + } + })); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + function value() { + return _value.apply(this, arguments); + } + return value; + }() + }, { + key: kDestroy, + value: function () { + var _value2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(err) { + var _this3 = this; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", new Promise(function (resolve) { + var requests = _this3[kQueue].splice(_this3[kPendingIdx]); + for (var i = 0; i < requests.length; i++) { + var request = requests[i]; + errorRequest(_this3, request, err); + } + var callback = function callback() { + if (_this3[kClosedResolve]) { + // TODO (fix): Should we error here with ClientDestroyedError? + _this3[kClosedResolve](); + _this3[kClosedResolve] = null; + } + resolve(); + }; + if (_this3[kHTTP2Session] != null) { + util.destroy(_this3[kHTTP2Session], err); + _this3[kHTTP2Session] = null; + _this3[kHTTP2SessionState] = null; + } + if (!_this3[kSocket]) { + queueMicrotask(callback); + } else { + util.destroy(_this3[kSocket].on('close', callback), err); + } + resume(_this3); + })); + case 1: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + function value(_x) { + return _value2.apply(this, arguments); + } + return value; + }() + }]); +}(DispatcherBase); +function onHttp2SessionError(err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + this[kSocket][kError] = err; + onError(this[kClient], err); +} +function onHttp2FrameError(type, code, id) { + var err = new InformationalError("HTTP/2: \"frameError\" received - type ".concat(type, ", code ").concat(code)); + if (id === 0) { + this[kSocket][kError] = err; + onError(this[kClient], err); + } +} +function onHttp2SessionEnd() { + util.destroy(this, new SocketError('other side closed')); + util.destroy(this[kSocket], new SocketError('other side closed')); +} +function onHTTP2GoAway(code) { + var client = this[kClient]; + var err = new InformationalError("HTTP/2: \"GOAWAY\" frame received with code ".concat(code)); + client[kSocket] = null; + client[kHTTP2Session] = null; + if (client.destroyed) { + assert(this[kPending] === 0); + + // Fail entire queue. + var requests = client[kQueue].splice(client[kRunningIdx]); + for (var i = 0; i < requests.length; i++) { + var request = requests[i]; + errorRequest(this, request, err); + } + } else if (client[kRunning] > 0) { + // Fail head of pipeline. + var _request = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, _request, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit('disconnect', client[kUrl], [client], err); + resume(client); +} +var constants = __webpack_require__(5584); +var createRedirectInterceptor = __webpack_require__(5031); +var EMPTY_BUF = Buffer.alloc(0); +function lazyllhttp() { + return _lazyllhttp.apply(this, arguments); +} +function _lazyllhttp() { + _lazyllhttp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + var llhttpWasmData, mod; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + llhttpWasmData = process.env.JEST_WORKER_ID ? __webpack_require__(4438) : undefined; + _context3.prev = 1; + _context3.next = 4; + return WebAssembly.compile(Buffer.from(__webpack_require__(7810), 'base64')); + case 4: + mod = _context3.sent; + _context3.next = 12; + break; + case 7: + _context3.prev = 7; + _context3.t0 = _context3["catch"](1); + _context3.next = 11; + return WebAssembly.compile(Buffer.from(llhttpWasmData || __webpack_require__(4438), 'base64')); + case 11: + mod = _context3.sent; + case 12: + _context3.next = 14; + return WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + + wasm_on_url: function wasm_on_url(p, at, len) { + /* istanbul ignore next */ + return 0; + }, + wasm_on_status: function wasm_on_status(p, at, len) { + assert.strictEqual(currentParser.ptr, p); + var start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_begin: function wasm_on_message_begin(p) { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageBegin() || 0; + }, + wasm_on_header_field: function wasm_on_header_field(p, at, len) { + assert.strictEqual(currentParser.ptr, p); + var start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_header_value: function wasm_on_header_value(p, at, len) { + assert.strictEqual(currentParser.ptr, p); + var start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_headers_complete: function wasm_on_headers_complete(p, statusCode, upgrade, shouldKeepAlive) { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; + }, + wasm_on_body: function wasm_on_body(p, at, len) { + assert.strictEqual(currentParser.ptr, p); + var start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_complete: function wasm_on_message_complete(p) { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageComplete() || 0; + } + + /* eslint-enable camelcase */ + } + }); + case 14: + return _context3.abrupt("return", _context3.sent); + case 15: + case "end": + return _context3.stop(); + } + }, _callee3, null, [[1, 7]]); + })); + return _lazyllhttp.apply(this, arguments); +} +var llhttpInstance = null; +var llhttpPromise = lazyllhttp(); +llhttpPromise["catch"](); +var currentParser = null; +var currentBufferRef = null; +var currentBufferSize = 0; +var currentBufferPtr = null; +var TIMEOUT_HEADERS = 1; +var TIMEOUT_BODY = 2; +var TIMEOUT_IDLE = 3; +var Parser = /*#__PURE__*/function () { + function Parser(client, socket, _ref2) { + var exports = _ref2.exports; + _classCallCheck(this, Parser); + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); + this.llhttp = exports; + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); + this.client = client; + this.socket = socket; + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.statusCode = null; + this.statusText = ''; + this.upgrade = false; + this.headers = []; + this.headersSize = 0; + this.headersMaxSize = client[kMaxHeadersSize]; + this.shouldKeepAlive = false; + this.paused = false; + this.resume = this.resume.bind(this); + this.bytesRead = 0; + this.keepAlive = ''; + this.contentLength = ''; + this.connection = ''; + this.maxResponseSize = client[kMaxResponseSize]; + } + return _createClass(Parser, [{ + key: "setTimeout", + value: function setTimeout(value, type) { + this.timeoutType = type; + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout); + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this); + // istanbul ignore else: only for jest + if (this.timeout.unref) { + this.timeout.unref(); + } + } else { + this.timeout = null; + } + this.timeoutValue = value; + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + } + }, { + key: "resume", + value: function resume() { + if (this.socket.destroyed || !this.paused) { + return; + } + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_resume(this.ptr); + assert(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + this.paused = false; + this.execute(this.socket.read() || EMPTY_BUF); // Flush parser. + this.readMore(); + } + }, { + key: "readMore", + value: function readMore() { + while (!this.paused && this.ptr) { + var chunk = this.socket.read(); + if (chunk === null) { + break; + } + this.execute(chunk); + } + } + }, { + key: "execute", + value: function execute(data) { + assert(this.ptr != null); + assert(currentParser == null); + assert(!this.paused); + var socket = this.socket, + llhttp = this.llhttp; + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr); + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096; + currentBufferPtr = llhttp.malloc(currentBufferSize); + } + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); + + // Call `execute` on the wasm parser. + // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, + // and finally the length of bytes to parse. + // The return value is an error code or `constants.ERROR.OK`. + try { + var ret; + try { + currentBufferRef = data; + currentParser = this; + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); + /* eslint-disable-next-line no-useless-catch */ + } catch (err) { + /* istanbul ignore next: difficult to make a test case for */ + throw err; + } finally { + currentParser = null; + currentBufferRef = null; + } + var offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)); + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true; + socket.unshift(data.slice(offset)); + } else if (ret !== constants.ERROR.OK) { + var ptr = llhttp.llhttp_get_error_reason(this.ptr); + var message = ''; + /* istanbul ignore else: difficult to make a test case for */ + if (ptr) { + var len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); + message = 'Response does not match the HTTP/1.1 protocol (' + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ')'; + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); + } + } catch (err) { + util.destroy(socket, err); + } + } + }, { + key: "destroy", + value: function destroy() { + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_free(this.ptr); + this.ptr = null; + timers.clearTimeout(this.timeout); + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.paused = false; + } + }, { + key: "onStatus", + value: function onStatus(buf) { + this.statusText = buf.toString(); + } + }, { + key: "onMessageBegin", + value: function onMessageBegin() { + var socket = this.socket, + client = this.client; + + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1; + } + var request = client[kQueue][client[kRunningIdx]]; + if (!request) { + return -1; + } + } + }, { + key: "onHeaderField", + value: function onHeaderField(buf) { + var len = this.headers.length; + if ((len & 1) === 0) { + this.headers.push(buf); + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + this.trackHeader(buf.length); + } + }, { + key: "onHeaderValue", + value: function onHeaderValue(buf) { + var len = this.headers.length; + if ((len & 1) === 1) { + this.headers.push(buf); + len += 1; + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + var key = this.headers[len - 2]; + if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { + this.keepAlive += buf.toString(); + } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') { + this.connection += buf.toString(); + } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { + this.contentLength += buf.toString(); + } + this.trackHeader(buf.length); + } + }, { + key: "trackHeader", + value: function trackHeader(len) { + this.headersSize += len; + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()); + } + } + }, { + key: "onUpgrade", + value: function onUpgrade(head) { + var upgrade = this.upgrade, + client = this.client, + socket = this.socket, + headers = this.headers, + statusCode = this.statusCode; + assert(upgrade); + var request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert(!socket.destroyed); + assert(socket === client[kSocket]); + assert(!this.paused); + assert(request.upgrade || request.method === 'CONNECT'); + this.statusCode = null; + this.statusText = ''; + this.shouldKeepAlive = null; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + socket.unshift(head); + socket[kParser].destroy(); + socket[kParser] = null; + socket[kClient] = null; + socket[kError] = null; + socket.removeListener('error', onSocketError).removeListener('readable', onSocketReadable).removeListener('end', onSocketEnd).removeListener('close', onSocketClose); + client[kSocket] = null; + client[kQueue][client[kRunningIdx]++] = null; + client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')); + try { + request.onUpgrade(statusCode, headers, socket); + } catch (err) { + util.destroy(socket, err); + } + resume(client); + } + }, { + key: "onHeadersComplete", + value: function onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { + var client = this.client, + socket = this.socket, + headers = this.headers, + statusText = this.statusText; + + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1; + } + var request = client[kQueue][client[kRunningIdx]]; + + /* istanbul ignore next: difficult to make a test case for */ + if (!request) { + return -1; + } + assert(!this.upgrade); + assert(this.statusCode < 200); + if (statusCode === 100) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))); + return -1; + } + + /* this can only happen if server is misbehaving */ + if (upgrade && !request.upgrade) { + util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))); + return -1; + } + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); + this.statusCode = statusCode; + this.shouldKeepAlive = shouldKeepAlive || + // Override llhttp value which does not allow keepAlive for HEAD. + request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive'; + if (this.statusCode >= 200) { + var bodyTimeout = request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout]; + this.setTimeout(bodyTimeout, TIMEOUT_BODY); + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + if (request.method === 'CONNECT') { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + if (upgrade) { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (this.shouldKeepAlive && client[kPipelining]) { + var keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null; + if (keepAliveTimeout != null) { + var timeout = Math.min(keepAliveTimeout - client[kKeepAliveTimeoutThreshold], client[kKeepAliveMaxTimeout]); + if (timeout <= 0) { + socket[kReset] = true; + } else { + client[kKeepAliveTimeoutValue] = timeout; + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; + } + } else { + // Stop more requests from being dispatched. + socket[kReset] = true; + } + var pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false; + if (request.aborted) { + return -1; + } + if (request.method === 'HEAD') { + return 1; + } + if (statusCode < 200) { + return 1; + } + if (socket[kBlocking]) { + socket[kBlocking] = false; + resume(client); + } + return pause ? constants.ERROR.PAUSED : 0; + } + }, { + key: "onBody", + value: function onBody(buf) { + var client = this.client, + socket = this.socket, + statusCode = this.statusCode, + maxResponseSize = this.maxResponseSize; + if (socket.destroyed) { + return -1; + } + var request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert.strictEqual(this.timeoutType, TIMEOUT_BODY); + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + assert(statusCode >= 200); + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()); + return -1; + } + this.bytesRead += buf.length; + if (request.onData(buf) === false) { + return constants.ERROR.PAUSED; + } + } + }, { + key: "onMessageComplete", + value: function onMessageComplete() { + var client = this.client, + socket = this.socket, + statusCode = this.statusCode, + upgrade = this.upgrade, + headers = this.headers, + contentLength = this.contentLength, + bytesRead = this.bytesRead, + shouldKeepAlive = this.shouldKeepAlive; + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1; + } + if (upgrade) { + return; + } + var request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert(statusCode >= 100); + this.statusCode = null; + this.statusText = ''; + this.bytesRead = 0; + this.contentLength = ''; + this.keepAlive = ''; + this.connection = ''; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (statusCode < 200) { + return; + } + + /* istanbul ignore next: should be handled by llhttp? */ + if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()); + return -1; + } + request.onComplete(headers); + client[kQueue][client[kRunningIdx]++] = null; + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0); + // Response completed before request. + util.destroy(socket, new InformationalError('reset')); + return constants.ERROR.PAUSED; + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError('reset')); + return constants.ERROR.PAUSED; + } else if (socket[kReset] && client[kRunning] === 0) { + // Destroy socket once all requests have completed. + // The request at the tail of the pipeline is the one + // that requested reset and no further requests should + // have been queued since then. + util.destroy(socket, new InformationalError('reset')); + return constants.ERROR.PAUSED; + } else if (client[kPipelining] === 1) { + // We must wait a full event loop cycle to reuse this socket to make sure + // that non-spec compliant servers are not closing the connection even if they + // said they won't. + setImmediate(resume, client); + } else { + resume(client); + } + } + }]); +}(); +function onParserTimeout(parser) { + var socket = parser.socket, + timeoutType = parser.timeoutType, + client = parser.client; + + /* istanbul ignore else */ + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, 'cannot be paused while waiting for headers'); + util.destroy(socket, new HeadersTimeoutError()); + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()); + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); + util.destroy(socket, new InformationalError('socket idle timeout')); + } +} +function onSocketReadable() { + var parser = this[kParser]; + if (parser) { + parser.readMore(); + } +} +function onSocketError(err) { + var client = this[kClient], + parser = this[kParser]; + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + if (client[kHTTPConnVersion] !== 'h2') { + // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded + // to the user. + if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so for as a valid response. + parser.onMessageComplete(); + return; + } + } + this[kError] = err; + onError(this[kClient], err); +} +function onError(client, err) { + if (client[kRunning] === 0 && err.code !== 'UND_ERR_INFO' && err.code !== 'UND_ERR_SOCKET') { + // Error is not caused by running request and not a recoverable + // socket error. + + assert(client[kPendingIdx] === client[kRunningIdx]); + var requests = client[kQueue].splice(client[kRunningIdx]); + for (var i = 0; i < requests.length; i++) { + var request = requests[i]; + errorRequest(client, request, err); + } + assert(client[kSize] === 0); + } +} +function onSocketEnd() { + var parser = this[kParser], + client = this[kClient]; + if (client[kHTTPConnVersion] !== 'h2') { + if (parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete(); + return; + } + } + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))); +} +function onSocketClose() { + var client = this[kClient], + parser = this[kParser]; + if (client[kHTTPConnVersion] === 'h1' && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete(); + } + this[kParser].destroy(); + this[kParser] = null; + } + var err = this[kError] || new SocketError('closed', util.getSocketInfo(this)); + client[kSocket] = null; + if (client.destroyed) { + assert(client[kPending] === 0); + + // Fail entire queue. + var requests = client[kQueue].splice(client[kRunningIdx]); + for (var i = 0; i < requests.length; i++) { + var request = requests[i]; + errorRequest(client, request, err); + } + } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + // Fail head of pipeline. + var _request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, _request2, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit('disconnect', client[kUrl], [client], err); + resume(client); +} +function connect(_x2) { + return _connect.apply(this, arguments); +} +function _connect() { + _connect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(client) { + var _client$kUrl, host, hostname, protocol, port, idx, ip, socket, isH2, session, request; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + assert(!client[kConnecting]); + assert(!client[kSocket]); + _client$kUrl = client[kUrl], host = _client$kUrl.host, hostname = _client$kUrl.hostname, protocol = _client$kUrl.protocol, port = _client$kUrl.port; // Resolve ipv6 + if (hostname[0] === '[') { + idx = hostname.indexOf(']'); + assert(idx !== -1); + ip = hostname.substring(1, idx); + assert(net.isIP(ip)); + hostname = ip; + } + client[kConnecting] = true; + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host: host, + hostname: hostname, + protocol: protocol, + port: port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }); + } + _context4.prev = 6; + _context4.next = 9; + return new Promise(function (resolve, reject) { + client[kConnector]({ + host: host, + hostname: hostname, + protocol: protocol, + port: port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, function (err, socket) { + if (err) { + reject(err); + } else { + resolve(socket); + } + }); + }); + case 9: + socket = _context4.sent; + if (!client.destroyed) { + _context4.next = 13; + break; + } + util.destroy(socket.on('error', function () {}), new ClientDestroyedError()); + return _context4.abrupt("return"); + case 13: + client[kConnecting] = false; + assert(socket); + isH2 = socket.alpnProtocol === 'h2'; + if (!isH2) { + _context4.next = 32; + break; + } + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true; + process.emitWarning('H2 support is experimental, expect them to change at any time.', { + code: 'UNDICI-H2' + }); + } + session = http2.connect(client[kUrl], { + createConnection: function createConnection() { + return socket; + }, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }); + client[kHTTPConnVersion] = 'h2'; + session[kClient] = client; + session[kSocket] = socket; + session.on('error', onHttp2SessionError); + session.on('frameError', onHttp2FrameError); + session.on('end', onHttp2SessionEnd); + session.on('goaway', onHTTP2GoAway); + session.on('close', onSocketClose); + session.unref(); + client[kHTTP2Session] = session; + socket[kHTTP2Session] = session; + _context4.next = 42; + break; + case 32: + if (llhttpInstance) { + _context4.next = 37; + break; + } + _context4.next = 35; + return llhttpPromise; + case 35: + llhttpInstance = _context4.sent; + llhttpPromise = null; + case 37: + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset] = false; + socket[kBlocking] = false; + socket[kParser] = new Parser(client, socket, llhttpInstance); + case 42: + socket[kCounter] = 0; + socket[kMaxRequests] = client[kMaxRequests]; + socket[kClient] = client; + socket[kError] = null; + socket.on('error', onSocketError).on('readable', onSocketReadable).on('end', onSocketEnd).on('close', onSocketClose); + client[kSocket] = socket; + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host: host, + hostname: hostname, + protocol: protocol, + port: port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket: socket + }); + } + client.emit('connect', client[kUrl], [client]); + _context4.next = 60; + break; + case 52: + _context4.prev = 52; + _context4.t0 = _context4["catch"](6); + if (!client.destroyed) { + _context4.next = 56; + break; + } + return _context4.abrupt("return"); + case 56: + client[kConnecting] = false; + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host: host, + hostname: hostname, + protocol: protocol, + port: port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: _context4.t0 + }); + } + if (_context4.t0.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + assert(client[kRunning] === 0); + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + request = client[kQueue][client[kPendingIdx]++]; + errorRequest(client, request, _context4.t0); + } + } else { + onError(client, _context4.t0); + } + client.emit('connectionError', client[kUrl], [client], _context4.t0); + case 60: + resume(client); + case 61: + case "end": + return _context4.stop(); + } + }, _callee4, null, [[6, 52]]); + })); + return _connect.apply(this, arguments); +} +function emitDrain(client) { + client[kNeedDrain] = 0; + client.emit('drain', client[kUrl], [client]); +} +function resume(client, sync) { + if (client[kResuming] === 2) { + return; + } + client[kResuming] = 2; + _resume(client, sync); + client[kResuming] = 0; + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]); + client[kPendingIdx] -= client[kRunningIdx]; + client[kRunningIdx] = 0; + } +} +function _resume(client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0); + return; + } + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve](); + client[kClosedResolve] = null; + return; + } + var socket = client[kSocket]; + if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref(); + socket[kNoRef] = true; + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref(); + socket[kNoRef] = false; + } + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + var _request3 = client[kQueue][client[kRunningIdx]]; + var headersTimeout = _request3.headersTimeout != null ? _request3.headersTimeout : client[kHeadersTimeout]; + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); + } + } + } + if (client[kBusy]) { + client[kNeedDrain] = 2; + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1; + process.nextTick(emitDrain, client); + } else { + emitDrain(client); + } + continue; + } + if (client[kPending] === 0) { + return; + } + if (client[kRunning] >= (client[kPipelining] || 1)) { + return; + } + var request = client[kQueue][client[kPendingIdx]]; + if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { + if (client[kRunning] > 0) { + return; + } + client[kServerName] = request.servername; + if (socket && socket.servername !== request.servername) { + util.destroy(socket, new InformationalError('servername changed')); + return; + } + } + if (client[kConnecting]) { + return; + } + if (!socket && !client[kHTTP2Session]) { + connect(client); + return; + } + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return; + } + if (client[kRunning] > 0 && !request.idempotent) { + // Non-idempotent request cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return; + } + if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { + // Don't dispatch an upgrade until all preceding requests have completed. + // A misbehaving server might upgrade the connection before all pipelined + // request has completed. + return; + } + if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 && (util.isStream(request.body) || util.isAsyncIterable(request.body))) { + // Request with stream or iterator body can error while other requests + // are inflight and indirectly error those as well. + // Ensure this doesn't happen by waiting for inflight + // to complete before dispatching. + + // Request with stream or iterator body cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return; + } + if (!request.aborted && write(client, request)) { + client[kPendingIdx]++; + } else { + client[kQueue].splice(client[kPendingIdx], 1); + } + } +} + +// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 +function shouldSendContentLength(method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'; +} +function write(client, request) { + if (client[kHTTPConnVersion] === 'h2') { + writeH2(client, client[kHTTP2Session], request); + return; + } + var body = request.body, + method = request.method, + path = request.path, + host = request.host, + upgrade = request.upgrade, + headers = request.headers, + blocking = request.blocking, + reset = request.reset; + + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. + + var expectsPayload = method === 'PUT' || method === 'POST' || method === 'PATCH'; + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0); + } + var bodyLength = util.bodyLength(body); + var contentLength = bodyLength; + if (contentLength === null) { + contentLength = request.contentLength; + } + if (contentLength === 0 && !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + + contentLength = null; + } + + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + var socket = client[kSocket]; + try { + request.onConnect(function (err) { + if (request.aborted || request.completed) { + return; + } + errorRequest(client, request, err || new RequestAbortedError()); + util.destroy(socket, new InformationalError('aborted')); + }); + } catch (err) { + errorRequest(client, request, err); + } + if (request.aborted) { + return false; + } + if (method === 'HEAD') { + // https://github.com/mcollina/undici/issues/258 + // Close after a HEAD request to interop with misbehaving servers + // that may send a body in the response. + + socket[kReset] = true; + } + if (upgrade || method === 'CONNECT') { + // On CONNECT or upgrade, block pipeline from dispatching further + // requests on this connection. + + socket[kReset] = true; + } + if (reset != null) { + socket[kReset] = reset; + } + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true; + } + if (blocking) { + socket[kBlocking] = true; + } + var header = "".concat(method, " ").concat(path, " HTTP/1.1\r\n"); + if (typeof host === 'string') { + header += "host: ".concat(host, "\r\n"); + } else { + header += client[kHostHeader]; + } + if (upgrade) { + header += "connection: upgrade\r\nupgrade: ".concat(upgrade, "\r\n"); + } else if (client[kPipelining] && !socket[kReset]) { + header += 'connection: keep-alive\r\n'; + } else { + header += 'connection: close\r\n'; + } + if (headers) { + header += headers; + } + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ + request: request, + headers: header, + socket: socket + }); + } + + /* istanbul ignore else: assertion */ + if (!body || bodyLength === 0) { + if (contentLength === 0) { + socket.write("".concat(header, "content-length: 0\r\n\r\n"), 'latin1'); + } else { + assert(contentLength === null, 'no body must not have content length'); + socket.write("".concat(header, "\r\n"), 'latin1'); + } + request.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length'); + socket.cork(); + socket.write("".concat(header, "content-length: ").concat(contentLength, "\r\n\r\n"), 'latin1'); + socket.write(body); + socket.uncork(); + request.onBodySent(body); + request.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ + body: body.stream(), + client: client, + request: request, + socket: socket, + contentLength: contentLength, + header: header, + expectsPayload: expectsPayload + }); + } else { + writeBlob({ + body: body, + client: client, + request: request, + socket: socket, + contentLength: contentLength, + header: header, + expectsPayload: expectsPayload + }); + } + } else if (util.isStream(body)) { + writeStream({ + body: body, + client: client, + request: request, + socket: socket, + contentLength: contentLength, + header: header, + expectsPayload: expectsPayload + }); + } else if (util.isIterable(body)) { + writeIterable({ + body: body, + client: client, + request: request, + socket: socket, + contentLength: contentLength, + header: header, + expectsPayload: expectsPayload + }); + } else { + assert(false); + } + return true; +} +function writeH2(client, session, request) { + var _this4 = this; + var body = request.body, + method = request.method, + path = request.path, + host = request.host, + upgrade = request.upgrade, + expectContinue = request.expectContinue, + signal = request.signal, + reqHeaders = request.headers; + var headers; + if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim());else headers = reqHeaders; + if (upgrade) { + errorRequest(client, request, new Error('Upgrade not supported for H2')); + return false; + } + try { + // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event? + request.onConnect(function (err) { + if (request.aborted || request.completed) { + return; + } + errorRequest(client, request, err || new RequestAbortedError()); + }); + } catch (err) { + errorRequest(client, request, err); + } + if (request.aborted) { + return false; + } + + /** @type {import('node:http2').ClientHttp2Stream} */ + var stream; + var h2State = client[kHTTP2SessionState]; + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]; + headers[HTTP2_HEADER_METHOD] = method; + if (method === 'CONNECT') { + session.ref(); + // we are already connected, streams are pending, first request + // will create a new stream. We trigger a request to create the stream and wait until + // `ready` event is triggered + // We disabled endStream to allow the user to write to the stream + stream = session.request(headers, { + endStream: false, + signal: signal + }); + if (stream.id && !stream.pending) { + request.onUpgrade(null, null, stream); + ++h2State.openStreams; + } else { + stream.once('ready', function () { + request.onUpgrade(null, null, stream); + ++h2State.openStreams; + }); + } + stream.once('close', function () { + h2State.openStreams -= 1; + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) session.unref(); + }); + return true; + } + + // https://tools.ietf.org/html/rfc7540#section-8.3 + // :path and :scheme headers must be omited when sending CONNECT + + headers[HTTP2_HEADER_PATH] = path; + headers[HTTP2_HEADER_SCHEME] = 'https'; + + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. + + var expectsPayload = method === 'PUT' || method === 'POST' || method === 'PATCH'; + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0); + } + var contentLength = util.bodyLength(body); + if (contentLength == null) { + contentLength = request.contentLength; + } + if (contentLength === 0 || !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + + contentLength = null; + } + + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + if (contentLength != null) { + assert(body, 'no body must not have content length'); + headers[HTTP2_HEADER_CONTENT_LENGTH] = "".concat(contentLength); + } + session.ref(); + var shouldEndStream = method === 'GET' || method === 'HEAD'; + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue'; + stream = session.request(headers, { + endStream: shouldEndStream, + signal: signal + }); + stream.once('continue', writeBodyH2); + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal: signal + }); + writeBodyH2(); + } + + // Increment counter as we have new several streams open + ++h2State.openStreams; + stream.once('response', function (headers) { + var statusCode = headers[HTTP2_HEADER_STATUS], + realHeaders = _objectWithoutProperties(headers, [HTTP2_HEADER_STATUS].map(_toPropertyKey)); + if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) { + stream.pause(); + } + }); + stream.once('end', function () { + request.onComplete([]); + }); + stream.on('data', function (chunk) { + if (request.onData(chunk) === false) { + stream.pause(); + } + }); + stream.once('close', function () { + h2State.openStreams -= 1; + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) { + session.unref(); + } + }); + stream.once('error', function (err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + stream.once('frameError', function (type, code) { + var err = new InformationalError("HTTP/2: \"frameError\" received - type ".concat(type, ", code ").concat(code)); + errorRequest(client, request, err); + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !_this4.closed && !_this4.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + + // stream.on('aborted', () => { + // // TODO(HTTP/2): Support aborted + // }) + + // stream.on('timeout', () => { + // // TODO(HTTP/2): Support timeout + // }) + + // stream.on('push', headers => { + // // TODO(HTTP/2): Suppor push + // }) + + // stream.on('trailers', headers => { + // // TODO(HTTP/2): Support trailers + // }) + + return true; + function writeBodyH2() { + /* istanbul ignore else: assertion */ + if (!body) { + request.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length'); + stream.cork(); + stream.write(body); + stream.uncork(); + stream.end(); + request.onBodySent(body); + request.onRequestSent(); + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ + client: client, + request: request, + contentLength: contentLength, + h2stream: stream, + expectsPayload: expectsPayload, + body: body.stream(), + socket: client[kSocket], + header: '' + }); + } else { + writeBlob({ + body: body, + client: client, + request: request, + contentLength: contentLength, + expectsPayload: expectsPayload, + h2stream: stream, + header: '', + socket: client[kSocket] + }); + } + } else if (util.isStream(body)) { + writeStream({ + body: body, + client: client, + request: request, + contentLength: contentLength, + expectsPayload: expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: '' + }); + } else if (util.isIterable(body)) { + writeIterable({ + body: body, + client: client, + request: request, + contentLength: contentLength, + expectsPayload: expectsPayload, + header: '', + h2stream: stream, + socket: client[kSocket] + }); + } else { + assert(false); + } + } +} +function writeStream(_ref3) { + var h2stream = _ref3.h2stream, + body = _ref3.body, + client = _ref3.client, + request = _ref3.request, + socket = _ref3.socket, + contentLength = _ref3.contentLength, + header = _ref3.header, + expectsPayload = _ref3.expectsPayload; + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined'); + if (client[kHTTPConnVersion] === 'h2') { + var onPipeData = function onPipeData(chunk) { + request.onBodySent(chunk); + }; + // For HTTP/2, is enough to pipe the stream + var pipe = pipeline(body, h2stream, function (err) { + if (err) { + util.destroy(body, err); + util.destroy(h2stream, err); + } else { + request.onRequestSent(); + } + }); + pipe.on('data', onPipeData); + pipe.once('end', function () { + pipe.removeListener('data', onPipeData); + util.destroy(pipe); + }); + return; + } + var finished = false; + var writer = new AsyncWriter({ + socket: socket, + request: request, + contentLength: contentLength, + client: client, + expectsPayload: expectsPayload, + header: header + }); + var onData = function onData(chunk) { + if (finished) { + return; + } + try { + if (!writer.write(chunk) && this.pause) { + this.pause(); + } + } catch (err) { + util.destroy(this, err); + } + }; + var onDrain = function onDrain() { + if (finished) { + return; + } + if (body.resume) { + body.resume(); + } + }; + var onAbort = function onAbort() { + if (finished) { + return; + } + var err = new RequestAbortedError(); + queueMicrotask(function () { + return _onFinished(err); + }); + }; + var _onFinished = function onFinished(err) { + if (finished) { + return; + } + finished = true; + assert(socket.destroyed || socket[kWriting] && client[kRunning] <= 1); + socket.off('drain', onDrain).off('error', _onFinished); + body.removeListener('data', onData).removeListener('end', _onFinished).removeListener('error', _onFinished).removeListener('close', onAbort); + if (!err) { + try { + writer.end(); + } catch (er) { + err = er; + } + } + writer.destroy(err); + if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { + util.destroy(body, err); + } else { + util.destroy(body); + } + }; + body.on('data', onData).on('end', _onFinished).on('error', _onFinished).on('close', onAbort); + if (body.resume) { + body.resume(); + } + socket.on('drain', onDrain).on('error', _onFinished); +} +function writeBlob(_x3) { + return _writeBlob.apply(this, arguments); +} +function _writeBlob() { + _writeBlob = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref4) { + var h2stream, body, client, request, socket, contentLength, header, expectsPayload, isH2, buffer; + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + h2stream = _ref4.h2stream, body = _ref4.body, client = _ref4.client, request = _ref4.request, socket = _ref4.socket, contentLength = _ref4.contentLength, header = _ref4.header, expectsPayload = _ref4.expectsPayload; + assert(contentLength === body.size, 'blob body must have content length'); + isH2 = client[kHTTPConnVersion] === 'h2'; + _context5.prev = 3; + if (!(contentLength != null && contentLength !== body.size)) { + _context5.next = 6; + break; + } + throw new RequestContentLengthMismatchError(); + case 6: + _context5.t0 = Buffer; + _context5.next = 9; + return body.arrayBuffer(); + case 9: + _context5.t1 = _context5.sent; + buffer = _context5.t0.from.call(_context5.t0, _context5.t1); + if (isH2) { + h2stream.cork(); + h2stream.write(buffer); + h2stream.uncork(); + } else { + socket.cork(); + socket.write("".concat(header, "content-length: ").concat(contentLength, "\r\n\r\n"), 'latin1'); + socket.write(buffer); + socket.uncork(); + } + request.onBodySent(buffer); + request.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + resume(client); + _context5.next = 21; + break; + case 18: + _context5.prev = 18; + _context5.t2 = _context5["catch"](3); + util.destroy(isH2 ? h2stream : socket, _context5.t2); + case 21: + case "end": + return _context5.stop(); + } + }, _callee5, null, [[3, 18]]); + })); + return _writeBlob.apply(this, arguments); +} +function writeIterable(_x4) { + return _writeIterable.apply(this, arguments); +} +function _writeIterable() { + _writeIterable = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_ref5) { + var h2stream, body, client, request, socket, contentLength, header, expectsPayload, callback, onDrain, waitForDrain, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, res, writer, _iteratorAbruptCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _chunk; + return _regeneratorRuntime().wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + onDrain = function _onDrain() { + if (callback) { + var cb = callback; + callback = null; + cb(); + } + }; + h2stream = _ref5.h2stream, body = _ref5.body, client = _ref5.client, request = _ref5.request, socket = _ref5.socket, contentLength = _ref5.contentLength, header = _ref5.header, expectsPayload = _ref5.expectsPayload; + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined'); + callback = null; + waitForDrain = function waitForDrain() { + return new Promise(function (resolve, reject) { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve; + } + }); + }; + if (!(client[kHTTPConnVersion] === 'h2')) { + _context6.next = 53; + break; + } + h2stream.on('close', onDrain).on('drain', onDrain); + _context6.prev = 7; + // It's up to the user to somehow abort the async iterable. + _iteratorAbruptCompletion = false; + _didIteratorError = false; + _context6.prev = 10; + _iterator = _asyncIterator(body); + case 12: + _context6.next = 14; + return _iterator.next(); + case 14: + if (!(_iteratorAbruptCompletion = !(_step = _context6.sent).done)) { + _context6.next = 26; + break; + } + chunk = _step.value; + if (!socket[kError]) { + _context6.next = 18; + break; + } + throw socket[kError]; + case 18: + res = h2stream.write(chunk); + request.onBodySent(chunk); + if (res) { + _context6.next = 23; + break; + } + _context6.next = 23; + return waitForDrain(); + case 23: + _iteratorAbruptCompletion = false; + _context6.next = 12; + break; + case 26: + _context6.next = 32; + break; + case 28: + _context6.prev = 28; + _context6.t0 = _context6["catch"](10); + _didIteratorError = true; + _iteratorError = _context6.t0; + case 32: + _context6.prev = 32; + _context6.prev = 33; + if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) { + _context6.next = 37; + break; + } + _context6.next = 37; + return _iterator["return"](); + case 37: + _context6.prev = 37; + if (!_didIteratorError) { + _context6.next = 40; + break; + } + throw _iteratorError; + case 40: + return _context6.finish(37); + case 41: + return _context6.finish(32); + case 42: + _context6.next = 47; + break; + case 44: + _context6.prev = 44; + _context6.t1 = _context6["catch"](7); + h2stream.destroy(_context6.t1); + case 47: + _context6.prev = 47; + request.onRequestSent(); + h2stream.end(); + h2stream.off('close', onDrain).off('drain', onDrain); + return _context6.finish(47); + case 52: + return _context6.abrupt("return"); + case 53: + socket.on('close', onDrain).on('drain', onDrain); + writer = new AsyncWriter({ + socket: socket, + request: request, + contentLength: contentLength, + client: client, + expectsPayload: expectsPayload, + header: header + }); + _context6.prev = 55; + // It's up to the user to somehow abort the async iterable. + _iteratorAbruptCompletion2 = false; + _didIteratorError2 = false; + _context6.prev = 58; + _iterator2 = _asyncIterator(body); + case 60: + _context6.next = 62; + return _iterator2.next(); + case 62: + if (!(_iteratorAbruptCompletion2 = !(_step2 = _context6.sent).done)) { + _context6.next = 72; + break; + } + _chunk = _step2.value; + if (!socket[kError]) { + _context6.next = 66; + break; + } + throw socket[kError]; + case 66: + if (writer.write(_chunk)) { + _context6.next = 69; + break; + } + _context6.next = 69; + return waitForDrain(); + case 69: + _iteratorAbruptCompletion2 = false; + _context6.next = 60; + break; + case 72: + _context6.next = 78; + break; + case 74: + _context6.prev = 74; + _context6.t2 = _context6["catch"](58); + _didIteratorError2 = true; + _iteratorError2 = _context6.t2; + case 78: + _context6.prev = 78; + _context6.prev = 79; + if (!(_iteratorAbruptCompletion2 && _iterator2["return"] != null)) { + _context6.next = 83; + break; + } + _context6.next = 83; + return _iterator2["return"](); + case 83: + _context6.prev = 83; + if (!_didIteratorError2) { + _context6.next = 86; + break; + } + throw _iteratorError2; + case 86: + return _context6.finish(83); + case 87: + return _context6.finish(78); + case 88: + writer.end(); + _context6.next = 94; + break; + case 91: + _context6.prev = 91; + _context6.t3 = _context6["catch"](55); + writer.destroy(_context6.t3); + case 94: + _context6.prev = 94; + socket.off('close', onDrain).off('drain', onDrain); + return _context6.finish(94); + case 97: + case "end": + return _context6.stop(); + } + }, _callee6, null, [[7, 44, 47, 52], [10, 28, 32, 42], [33,, 37, 41], [55, 91, 94, 97], [58, 74, 78, 88], [79,, 83, 87]]); + })); + return _writeIterable.apply(this, arguments); +} +var AsyncWriter = /*#__PURE__*/function () { + function AsyncWriter(_ref6) { + var socket = _ref6.socket, + request = _ref6.request, + contentLength = _ref6.contentLength, + client = _ref6.client, + expectsPayload = _ref6.expectsPayload, + header = _ref6.header; + _classCallCheck(this, AsyncWriter); + this.socket = socket; + this.request = request; + this.contentLength = contentLength; + this.client = client; + this.bytesWritten = 0; + this.expectsPayload = expectsPayload; + this.header = header; + socket[kWriting] = true; + } + return _createClass(AsyncWriter, [{ + key: "write", + value: function write(chunk) { + var socket = this.socket, + request = this.request, + contentLength = this.contentLength, + client = this.client, + bytesWritten = this.bytesWritten, + expectsPayload = this.expectsPayload, + header = this.header; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return false; + } + var len = Buffer.byteLength(chunk); + if (!len) { + return true; + } + + // We should defer writing chunks. + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + socket.cork(); + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true; + } + if (contentLength === null) { + socket.write("".concat(header, "transfer-encoding: chunked\r\n"), 'latin1'); + } else { + socket.write("".concat(header, "content-length: ").concat(contentLength, "\r\n\r\n"), 'latin1'); + } + } + if (contentLength === null) { + socket.write("\r\n".concat(len.toString(16), "\r\n"), 'latin1'); + } + this.bytesWritten += len; + var ret = socket.write(chunk); + socket.uncork(); + request.onBodySent(chunk); + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + } + return ret; + } + }, { + key: "end", + value: function end() { + var socket = this.socket, + contentLength = this.contentLength, + client = this.client, + bytesWritten = this.bytesWritten, + expectsPayload = this.expectsPayload, + header = this.header, + request = this.request; + request.onRequestSent(); + socket[kWriting] = false; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return; + } + if (bytesWritten === 0) { + if (expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD send a Content-Length in a request message when + // no Transfer-Encoding is sent and the request method defines a meaning + // for an enclosed payload body. + + socket.write("".concat(header, "content-length: 0\r\n\r\n"), 'latin1'); + } else { + socket.write("".concat(header, "\r\n"), 'latin1'); + } + } else if (contentLength === null) { + socket.write('\r\n0\r\n\r\n', 'latin1'); + } + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } else { + process.emitWarning(new RequestContentLengthMismatchError()); + } + } + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + resume(client); + } + }, { + key: "destroy", + value: function destroy(err) { + var socket = this.socket, + client = this.client; + socket[kWriting] = false; + if (err) { + assert(client[kRunning] <= 1, 'pipeline should only contain this request'); + util.destroy(socket, err); + } + } + }]); +}(); +function errorRequest(client, request, err) { + try { + request.onError(err); + assert(request.aborted); + } catch (err) { + client.emit('error', err); + } +} +module.exports = Client; + +/***/ }), + +/***/ 4994: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +/* istanbul ignore file: only for Node 12 */ +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(6771), + kConnected = _require.kConnected, + kSize = _require.kSize; +var CompatWeakRef = /*#__PURE__*/function () { + function CompatWeakRef(value) { + _classCallCheck(this, CompatWeakRef); + this.value = value; + } + return _createClass(CompatWeakRef, [{ + key: "deref", + value: function deref() { + return this.value[kConnected] === 0 && this.value[kSize] === 0 ? undefined : this.value; + } + }]); +}(); +var CompatFinalizer = /*#__PURE__*/function () { + function CompatFinalizer(finalizer) { + _classCallCheck(this, CompatFinalizer); + this.finalizer = finalizer; + } + return _createClass(CompatFinalizer, [{ + key: "register", + value: function register(dispatcher, key) { + var _this = this; + if (dispatcher.on) { + dispatcher.on('disconnect', function () { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + _this.finalizer(key); + } + }); + } + } + }]); +}(); +module.exports = function () { + // FIXME: remove workaround when the Node bug is fixed + // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + }; + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + }; +}; + +/***/ }), + +/***/ 1165: +/***/ ((module) => { + +"use strict"; + + +// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size +var maxAttributeValueSize = 1024; + +// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size +var maxNameValuePairSize = 4096; +module.exports = { + maxAttributeValueSize: maxAttributeValueSize, + maxNameValuePairSize: maxNameValuePairSize +}; + +/***/ }), + +/***/ 3112: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _toArray = (__webpack_require__(8053)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _require = __webpack_require__(7659), + parseSetCookie = _require.parseSetCookie; +var _require2 = __webpack_require__(9794), + stringify = _require2.stringify, + getHeadersList = _require2.getHeadersList; +var _require3 = __webpack_require__(3702), + webidl = _require3.webidl; +var _require4 = __webpack_require__(5893), + Headers = _require4.Headers; + +/** + * @typedef {Object} Cookie + * @property {string} name + * @property {string} value + * @property {Date|number|undefined} expires + * @property {number|undefined} maxAge + * @property {string|undefined} domain + * @property {string|undefined} path + * @property {boolean|undefined} secure + * @property {boolean|undefined} httpOnly + * @property {'Strict'|'Lax'|'None'} sameSite + * @property {string[]} unparsed + */ + +/** + * @param {Headers} headers + * @returns {Record} + */ +function getCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { + header: 'getCookies' + }); + webidl.brandCheck(headers, Headers, { + strict: false + }); + var cookie = headers.get('cookie'); + var out = {}; + if (!cookie) { + return out; + } + var _iterator = _createForOfIteratorHelper(cookie.split(';')), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var piece = _step.value; + var _piece$split = piece.split('='), + _piece$split2 = _toArray(_piece$split), + name = _piece$split2[0], + value = _piece$split2.slice(1); + out[name.trim()] = value.join('='); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return out; +} + +/** + * @param {Headers} headers + * @param {string} name + * @param {{ path?: string, domain?: string }|undefined} attributes + * @returns {void} + */ +function deleteCookie(headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { + header: 'deleteCookie' + }); + webidl.brandCheck(headers, Headers, { + strict: false + }); + name = webidl.converters.DOMString(name); + attributes = webidl.converters.DeleteCookieAttributes(attributes); + + // Matches behavior of + // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 + setCookie(headers, _objectSpread({ + name: name, + value: '', + expires: new Date(0) + }, attributes)); +} + +/** + * @param {Headers} headers + * @returns {Cookie[]} + */ +function getSetCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { + header: 'getSetCookies' + }); + webidl.brandCheck(headers, Headers, { + strict: false + }); + var cookies = getHeadersList(headers).cookies; + if (!cookies) { + return []; + } + + // In older versions of undici, cookies is a list of name:value. + return cookies.map(function (pair) { + return parseSetCookie(Array.isArray(pair) ? pair[1] : pair); + }); +} + +/** + * @param {Headers} headers + * @param {Cookie} cookie + * @returns {void} + */ +function setCookie(headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { + header: 'setCookie' + }); + webidl.brandCheck(headers, Headers, { + strict: false + }); + cookie = webidl.converters.Cookie(cookie); + var str = stringify(cookie); + if (str) { + headers.append('Set-Cookie', stringify(cookie)); + } +} +webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([{ + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null +}, { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null +}]); +webidl.converters.Cookie = webidl.dictionaryConverter([{ + converter: webidl.converters.DOMString, + key: 'name' +}, { + converter: webidl.converters.DOMString, + key: 'value' +}, { + converter: webidl.nullableConverter(function (value) { + if (typeof value === 'number') { + return webidl.converters['unsigned long long'](value); + } + return new Date(value); + }), + key: 'expires', + defaultValue: null +}, { + converter: webidl.nullableConverter(webidl.converters['long long']), + key: 'maxAge', + defaultValue: null +}, { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null +}, { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null +}, { + converter: webidl.nullableConverter(webidl.converters["boolean"]), + key: 'secure', + defaultValue: null +}, { + converter: webidl.nullableConverter(webidl.converters["boolean"]), + key: 'httpOnly', + defaultValue: null +}, { + converter: webidl.converters.USVString, + key: 'sameSite', + allowedValues: ['Strict', 'Lax', 'None'] +}, { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: 'unparsed', + defaultValue: [] +}]); +module.exports = { + getCookies: getCookies, + deleteCookie: deleteCookie, + getSetCookies: getSetCookies, + setCookie: setCookie +}; + +/***/ }), + +/***/ 7659: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _require = __webpack_require__(1165), + maxNameValuePairSize = _require.maxNameValuePairSize, + maxAttributeValueSize = _require.maxAttributeValueSize; +var _require2 = __webpack_require__(9794), + isCTLExcludingHtab = _require2.isCTLExcludingHtab; +var _require3 = __webpack_require__(9738), + collectASequenceOfCodePointsFast = _require3.collectASequenceOfCodePointsFast; +var assert = __webpack_require__(2613); + +/** + * @description Parses the field-value attributes of a set-cookie header string. + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} header + * @returns if the header is invalid, null will be returned + */ +function parseSetCookie(header) { + // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F + // character (CTL characters excluding HTAB): Abort these steps and + // ignore the set-cookie-string entirely. + if (isCTLExcludingHtab(header)) { + return null; + } + var nameValuePair = ''; + var unparsedAttributes = ''; + var name = ''; + var value = ''; + + // 2. If the set-cookie-string contains a %x3B (";") character: + if (header.includes(';')) { + // 1. The name-value-pair string consists of the characters up to, + // but not including, the first %x3B (";"), and the unparsed- + // attributes consist of the remainder of the set-cookie-string + // (including the %x3B (";") in question). + var position = { + position: 0 + }; + nameValuePair = collectASequenceOfCodePointsFast(';', header, position); + unparsedAttributes = header.slice(position.position); + } else { + // Otherwise: + + // 1. The name-value-pair string consists of all the characters + // contained in the set-cookie-string, and the unparsed- + // attributes is the empty string. + nameValuePair = header; + } + + // 3. If the name-value-pair string lacks a %x3D ("=") character, then + // the name string is empty, and the value string is the value of + // name-value-pair. + if (!nameValuePair.includes('=')) { + value = nameValuePair; + } else { + // Otherwise, the name string consists of the characters up to, but + // not including, the first %x3D ("=") character, and the (possibly + // empty) value string consists of the characters after the first + // %x3D ("=") character. + var _position = { + position: 0 + }; + name = collectASequenceOfCodePointsFast('=', nameValuePair, _position); + value = nameValuePair.slice(_position.position + 1); + } + + // 4. Remove any leading or trailing WSP characters from the name + // string and the value string. + name = name.trim(); + value = value.trim(); + + // 5. If the sum of the lengths of the name string and the value string + // is more than 4096 octets, abort these steps and ignore the set- + // cookie-string entirely. + if (name.length + value.length > maxNameValuePairSize) { + return null; + } + + // 6. The cookie-name is the name string, and the cookie-value is the + // value string. + return _objectSpread({ + name: name, + value: value + }, parseUnparsedAttributes(unparsedAttributes)); +} + +/** + * Parses the remaining attributes of a set-cookie header + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} unparsedAttributes + * @param {[Object.]={}} cookieAttributeList + */ +function parseUnparsedAttributes(unparsedAttributes) { + var cookieAttributeList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // 1. If the unparsed-attributes string is empty, skip the rest of + // these steps. + if (unparsedAttributes.length === 0) { + return cookieAttributeList; + } + + // 2. Discard the first character of the unparsed-attributes (which + // will be a %x3B (";") character). + assert(unparsedAttributes[0] === ';'); + unparsedAttributes = unparsedAttributes.slice(1); + var cookieAv = ''; + + // 3. If the remaining unparsed-attributes contains a %x3B (";") + // character: + if (unparsedAttributes.includes(';')) { + // 1. Consume the characters of the unparsed-attributes up to, but + // not including, the first %x3B (";") character. + cookieAv = collectASequenceOfCodePointsFast(';', unparsedAttributes, { + position: 0 + }); + unparsedAttributes = unparsedAttributes.slice(cookieAv.length); + } else { + // Otherwise: + + // 1. Consume the remainder of the unparsed-attributes. + cookieAv = unparsedAttributes; + unparsedAttributes = ''; + } + + // Let the cookie-av string be the characters consumed in this step. + + var attributeName = ''; + var attributeValue = ''; + + // 4. If the cookie-av string contains a %x3D ("=") character: + if (cookieAv.includes('=')) { + // 1. The (possibly empty) attribute-name string consists of the + // characters up to, but not including, the first %x3D ("=") + // character, and the (possibly empty) attribute-value string + // consists of the characters after the first %x3D ("=") + // character. + var position = { + position: 0 + }; + attributeName = collectASequenceOfCodePointsFast('=', cookieAv, position); + attributeValue = cookieAv.slice(position.position + 1); + } else { + // Otherwise: + + // 1. The attribute-name string consists of the entire cookie-av + // string, and the attribute-value string is empty. + attributeName = cookieAv; + } + + // 5. Remove any leading or trailing WSP characters from the attribute- + // name string and the attribute-value string. + attributeName = attributeName.trim(); + attributeValue = attributeValue.trim(); + + // 6. If the attribute-value is longer than 1024 octets, ignore the + // cookie-av string and return to Step 1 of this algorithm. + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + + // 7. Process the attribute-name and attribute-value according to the + // requirements in the following subsections. (Notice that + // attributes with unrecognized attribute-names are ignored.) + var attributeNameLowercase = attributeName.toLowerCase(); + + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 + // If the attribute-name case-insensitively matches the string + // "Expires", the user agent MUST process the cookie-av as follows. + if (attributeNameLowercase === 'expires') { + // 1. Let the expiry-time be the result of parsing the attribute-value + // as cookie-date (see Section 5.1.1). + var expiryTime = new Date(attributeValue); + + // 2. If the attribute-value failed to parse as a cookie date, ignore + // the cookie-av. + + cookieAttributeList.expires = expiryTime; + } else if (attributeNameLowercase === 'max-age') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 + // If the attribute-name case-insensitively matches the string "Max- + // Age", the user agent MUST process the cookie-av as follows. + + // 1. If the first character of the attribute-value is not a DIGIT or a + // "-" character, ignore the cookie-av. + var charCode = attributeValue.charCodeAt(0); + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + + // 2. If the remainder of attribute-value contains a non-DIGIT + // character, ignore the cookie-av. + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + + // 3. Let delta-seconds be the attribute-value converted to an integer. + var deltaSeconds = Number(attributeValue); + + // 4. Let cookie-age-limit be the maximum age of the cookie (which + // SHOULD be 400 days or less, see Section 4.1.2.2). + + // 5. Set delta-seconds to the smaller of its present value and cookie- + // age-limit. + // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) + + // 6. If delta-seconds is less than or equal to zero (0), let expiry- + // time be the earliest representable date and time. Otherwise, let + // the expiry-time be the current date and time plus delta-seconds + // seconds. + // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds + + // 7. Append an attribute to the cookie-attribute-list with an + // attribute-name of Max-Age and an attribute-value of expiry-time. + cookieAttributeList.maxAge = deltaSeconds; + } else if (attributeNameLowercase === 'domain') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 + // If the attribute-name case-insensitively matches the string "Domain", + // the user agent MUST process the cookie-av as follows. + + // 1. Let cookie-domain be the attribute-value. + var cookieDomain = attributeValue; + + // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be + // cookie-domain without its leading %x2E ("."). + if (cookieDomain[0] === '.') { + cookieDomain = cookieDomain.slice(1); + } + + // 3. Convert the cookie-domain to lower case. + cookieDomain = cookieDomain.toLowerCase(); + + // 4. Append an attribute to the cookie-attribute-list with an + // attribute-name of Domain and an attribute-value of cookie-domain. + cookieAttributeList.domain = cookieDomain; + } else if (attributeNameLowercase === 'path') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 + // If the attribute-name case-insensitively matches the string "Path", + // the user agent MUST process the cookie-av as follows. + + // 1. If the attribute-value is empty or if the first character of the + // attribute-value is not %x2F ("/"): + var cookiePath = ''; + if (attributeValue.length === 0 || attributeValue[0] !== '/') { + // 1. Let cookie-path be the default-path. + cookiePath = '/'; + } else { + // Otherwise: + + // 1. Let cookie-path be the attribute-value. + cookiePath = attributeValue; + } + + // 2. Append an attribute to the cookie-attribute-list with an + // attribute-name of Path and an attribute-value of cookie-path. + cookieAttributeList.path = cookiePath; + } else if (attributeNameLowercase === 'secure') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 + // If the attribute-name case-insensitively matches the string "Secure", + // the user agent MUST append an attribute to the cookie-attribute-list + // with an attribute-name of Secure and an empty attribute-value. + + cookieAttributeList.secure = true; + } else if (attributeNameLowercase === 'httponly') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 + // If the attribute-name case-insensitively matches the string + // "HttpOnly", the user agent MUST append an attribute to the cookie- + // attribute-list with an attribute-name of HttpOnly and an empty + // attribute-value. + + cookieAttributeList.httpOnly = true; + } else if (attributeNameLowercase === 'samesite') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 + // If the attribute-name case-insensitively matches the string + // "SameSite", the user agent MUST process the cookie-av as follows: + + // 1. Let enforcement be "Default". + var enforcement = 'Default'; + var attributeValueLowercase = attributeValue.toLowerCase(); + // 2. If cookie-av's attribute-value is a case-insensitive match for + // "None", set enforcement to "None". + if (attributeValueLowercase.includes('none')) { + enforcement = 'None'; + } + + // 3. If cookie-av's attribute-value is a case-insensitive match for + // "Strict", set enforcement to "Strict". + if (attributeValueLowercase.includes('strict')) { + enforcement = 'Strict'; + } + + // 4. If cookie-av's attribute-value is a case-insensitive match for + // "Lax", set enforcement to "Lax". + if (attributeValueLowercase.includes('lax')) { + enforcement = 'Lax'; + } + + // 5. Append an attribute to the cookie-attribute-list with an + // attribute-name of "SameSite" and an attribute-value of + // enforcement. + cookieAttributeList.sameSite = enforcement; + } else { + var _cookieAttributeList$; + (_cookieAttributeList$ = cookieAttributeList.unparsed) !== null && _cookieAttributeList$ !== void 0 ? _cookieAttributeList$ : cookieAttributeList.unparsed = []; + cookieAttributeList.unparsed.push("".concat(attributeName, "=").concat(attributeValue)); + } + + // 8. Return to Step 1 of this algorithm. + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); +} +module.exports = { + parseSetCookie: parseSetCookie, + parseUnparsedAttributes: parseUnparsedAttributes +}; + +/***/ }), + +/***/ 9794: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _toArray = (__webpack_require__(8053)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var assert = __webpack_require__(2613); +var _require = __webpack_require__(6771), + kHeadersList = _require.kHeadersList; +function isCTLExcludingHtab(value) { + if (value.length === 0) { + return false; + } + var _iterator = _createForOfIteratorHelper(value), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _char = _step.value; + var code = _char.charCodeAt(0); + if (code >= 0x00 || code <= 0x08 || code >= 0x0A || code <= 0x1F || code === 0x7F) { + return false; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } +} + +/** + CHAR = + token = 1* + separators = "(" | ")" | "<" | ">" | "@" + | "," | ";" | ":" | "\" | <"> + | "/" | "[" | "]" | "?" | "=" + | "{" | "}" | SP | HT + * @param {string} name + */ +function validateCookieName(name) { + var _iterator2 = _createForOfIteratorHelper(name), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _char2 = _step2.value; + var code = _char2.charCodeAt(0); + if (code <= 0x20 || code > 0x7F || _char2 === '(' || _char2 === ')' || _char2 === '>' || _char2 === '<' || _char2 === '@' || _char2 === ',' || _char2 === ';' || _char2 === ':' || _char2 === '\\' || _char2 === '"' || _char2 === '/' || _char2 === '[' || _char2 === ']' || _char2 === '?' || _char2 === '=' || _char2 === '{' || _char2 === '}') { + throw new Error('Invalid cookie name'); + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } +} + +/** + cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + ; US-ASCII characters excluding CTLs, + ; whitespace DQUOTE, comma, semicolon, + ; and backslash + * @param {string} value + */ +function validateCookieValue(value) { + var _iterator3 = _createForOfIteratorHelper(value), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var _char3 = _step3.value; + var code = _char3.charCodeAt(0); + if (code < 0x21 || + // exclude CTLs (0-31) + code === 0x22 || code === 0x2C || code === 0x3B || code === 0x5C || code > 0x7E // non-ascii + ) { + throw new Error('Invalid header value'); + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } +} + +/** + * path-value = + * @param {string} path + */ +function validateCookiePath(path) { + var _iterator4 = _createForOfIteratorHelper(path), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _char4 = _step4.value; + var code = _char4.charCodeAt(0); + if (code < 0x21 || _char4 === ';') { + throw new Error('Invalid cookie path'); + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } +} + +/** + * I have no idea why these values aren't allowed to be honest, + * but Deno tests these. - Khafra + * @param {string} domain + */ +function validateCookieDomain(domain) { + if (domain.startsWith('-') || domain.endsWith('.') || domain.endsWith('-')) { + throw new Error('Invalid cookie domain'); + } +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 + * @param {number|Date} date + IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT + ; fixed length/zone/capitalization subset of the format + ; see Section 3.3 of [RFC5322] + + day-name = %x4D.6F.6E ; "Mon", case-sensitive + / %x54.75.65 ; "Tue", case-sensitive + / %x57.65.64 ; "Wed", case-sensitive + / %x54.68.75 ; "Thu", case-sensitive + / %x46.72.69 ; "Fri", case-sensitive + / %x53.61.74 ; "Sat", case-sensitive + / %x53.75.6E ; "Sun", case-sensitive + date1 = day SP month SP year + ; e.g., 02 Jun 1982 + + day = 2DIGIT + month = %x4A.61.6E ; "Jan", case-sensitive + / %x46.65.62 ; "Feb", case-sensitive + / %x4D.61.72 ; "Mar", case-sensitive + / %x41.70.72 ; "Apr", case-sensitive + / %x4D.61.79 ; "May", case-sensitive + / %x4A.75.6E ; "Jun", case-sensitive + / %x4A.75.6C ; "Jul", case-sensitive + / %x41.75.67 ; "Aug", case-sensitive + / %x53.65.70 ; "Sep", case-sensitive + / %x4F.63.74 ; "Oct", case-sensitive + / %x4E.6F.76 ; "Nov", case-sensitive + / %x44.65.63 ; "Dec", case-sensitive + year = 4DIGIT + + GMT = %x47.4D.54 ; "GMT", case-sensitive + + time-of-day = hour ":" minute ":" second + ; 00:00:00 - 23:59:60 (leap second) + + hour = 2DIGIT + minute = 2DIGIT + second = 2DIGIT + */ +function toIMFDate(date) { + if (typeof date === 'number') { + date = new Date(date); + } + var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; + var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + var dayName = days[date.getUTCDay()]; + var day = date.getUTCDate().toString().padStart(2, '0'); + var month = months[date.getUTCMonth()]; + var year = date.getUTCFullYear(); + var hour = date.getUTCHours().toString().padStart(2, '0'); + var minute = date.getUTCMinutes().toString().padStart(2, '0'); + var second = date.getUTCSeconds().toString().padStart(2, '0'); + return "".concat(dayName, ", ").concat(day, " ").concat(month, " ").concat(year, " ").concat(hour, ":").concat(minute, ":").concat(second, " GMT"); +} + +/** + max-age-av = "Max-Age=" non-zero-digit *DIGIT + ; In practice, both expires-av and max-age-av + ; are limited to dates representable by the + ; user agent. + * @param {number} maxAge + */ +function validateCookieMaxAge(maxAge) { + if (maxAge < 0) { + throw new Error('Invalid cookie max-age'); + } +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 + * @param {import('./index').Cookie} cookie + */ +function stringify(cookie) { + if (cookie.name.length === 0) { + return null; + } + validateCookieName(cookie.name); + validateCookieValue(cookie.value); + var out = ["".concat(cookie.name, "=").concat(cookie.value)]; + + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 + if (cookie.name.startsWith('__Secure-')) { + cookie.secure = true; + } + if (cookie.name.startsWith('__Host-')) { + cookie.secure = true; + cookie.domain = null; + cookie.path = '/'; + } + if (cookie.secure) { + out.push('Secure'); + } + if (cookie.httpOnly) { + out.push('HttpOnly'); + } + if (typeof cookie.maxAge === 'number') { + validateCookieMaxAge(cookie.maxAge); + out.push("Max-Age=".concat(cookie.maxAge)); + } + if (cookie.domain) { + validateCookieDomain(cookie.domain); + out.push("Domain=".concat(cookie.domain)); + } + if (cookie.path) { + validateCookiePath(cookie.path); + out.push("Path=".concat(cookie.path)); + } + if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { + out.push("Expires=".concat(toIMFDate(cookie.expires))); + } + if (cookie.sameSite) { + out.push("SameSite=".concat(cookie.sameSite)); + } + var _iterator5 = _createForOfIteratorHelper(cookie.unparsed), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var part = _step5.value; + if (!part.includes('=')) { + throw new Error('Invalid unparsed'); + } + var _part$split = part.split('='), + _part$split2 = _toArray(_part$split), + key = _part$split2[0], + value = _part$split2.slice(1); + out.push("".concat(key.trim(), "=").concat(value.join('='))); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + return out.join('; '); +} +var kHeadersListNode; +function getHeadersList(headers) { + if (headers[kHeadersList]) { + return headers[kHeadersList]; + } + if (!kHeadersListNode) { + kHeadersListNode = Object.getOwnPropertySymbols(headers).find(function (symbol) { + return symbol.description === 'headers list'; + }); + assert(kHeadersListNode, 'Headers cannot be parsed'); + } + var headersList = headers[kHeadersListNode]; + assert(headersList); + return headersList; +} +module.exports = { + isCTLExcludingHtab: isCTLExcludingHtab, + stringify: stringify, + getHeadersList: getHeadersList +}; + +/***/ }), + +/***/ 200: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _objectWithoutProperties = (__webpack_require__(1847)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _excluded = ["allowH2", "maxCachedSessions", "socketPath", "timeout"]; +var net = __webpack_require__(9278); +var assert = __webpack_require__(2613); +var util = __webpack_require__(6632); +var _require = __webpack_require__(3515), + InvalidArgumentError = _require.InvalidArgumentError, + ConnectTimeoutError = _require.ConnectTimeoutError; +var tls; // include tls conditionally since it is not always available + +// TODO: session re-use does not wait for the first +// connection to resolve the session and might therefore +// resolve the same servername multiple times even when +// re-use is enabled. + +var SessionCache; +// FIXME: remove workaround when the Node bug is fixed +// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 +if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = /*#__PURE__*/function () { + function WeakSessionCache(maxCachedSessions) { + var _this = this; + _classCallCheck(this, WeakSessionCache); + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = new Map(); + this._sessionRegistry = new global.FinalizationRegistry(function (key) { + if (_this._sessionCache.size < _this._maxCachedSessions) { + return; + } + var ref = _this._sessionCache.get(key); + if (ref !== undefined && ref.deref() === undefined) { + _this._sessionCache["delete"](key); + } + }); + } + return _createClass(WeakSessionCache, [{ + key: "get", + value: function get(sessionKey) { + var ref = this._sessionCache.get(sessionKey); + return ref ? ref.deref() : null; + } + }, { + key: "set", + value: function set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + this._sessionCache.set(sessionKey, new WeakRef(session)); + this._sessionRegistry.register(session, sessionKey); + } + }]); + }(); +} else { + SessionCache = /*#__PURE__*/function () { + function SimpleSessionCache(maxCachedSessions) { + _classCallCheck(this, SimpleSessionCache); + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = new Map(); + } + return _createClass(SimpleSessionCache, [{ + key: "get", + value: function get(sessionKey) { + return this._sessionCache.get(sessionKey); + } + }, { + key: "set", + value: function set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + if (this._sessionCache.size >= this._maxCachedSessions) { + // remove the oldest session + var _this$_sessionCache$k = this._sessionCache.keys().next(), + oldestKey = _this$_sessionCache$k.value; + this._sessionCache["delete"](oldestKey); + } + this._sessionCache.set(sessionKey, session); + } + }]); + }(); +} +function buildConnector(_ref) { + var allowH2 = _ref.allowH2, + maxCachedSessions = _ref.maxCachedSessions, + socketPath = _ref.socketPath, + timeout = _ref.timeout, + opts = _objectWithoutProperties(_ref, _excluded); + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero'); + } + var options = _objectSpread({ + path: socketPath + }, opts); + var sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); + timeout = timeout == null ? 10e3 : timeout; + allowH2 = allowH2 != null ? allowH2 : false; + return function connect(_ref2, callback) { + var hostname = _ref2.hostname, + host = _ref2.host, + protocol = _ref2.protocol, + port = _ref2.port, + servername = _ref2.servername, + localAddress = _ref2.localAddress, + httpSocket = _ref2.httpSocket; + var socket; + if (protocol === 'https:') { + if (!tls) { + tls = __webpack_require__(4756); + } + servername = servername || options.servername || util.getServerName(host) || null; + var sessionKey = servername || hostname; + var session = sessionCache.get(sessionKey) || null; + assert(sessionKey); + socket = tls.connect(_objectSpread(_objectSpread({ + highWaterMark: 16384 + }, options), {}, { + servername: servername, + session: session, + localAddress: localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], + socket: httpSocket, + // upgrade socket connection + port: port || 443, + host: hostname + })); + socket.on('session', function (session) { + // TODO (fix): Can a session become invalid once established? Don't think so? + sessionCache.set(sessionKey, session); + }); + } else { + assert(!httpSocket, 'httpSocket can only be sent on TLS update'); + socket = net.connect(_objectSpread(_objectSpread({ + highWaterMark: 64 * 1024 + }, options), {}, { + localAddress: localAddress, + port: port || 80, + host: hostname + })); + } + + // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket + if (options.keepAlive == null || options.keepAlive) { + var keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay; + socket.setKeepAlive(true, keepAliveInitialDelay); + } + var cancelTimeout = setupTimeout(function () { + return onConnectTimeout(socket); + }, timeout); + socket.setNoDelay(true).once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { + cancelTimeout(); + if (callback) { + var cb = callback; + callback = null; + cb(null, this); + } + }).on('error', function (err) { + cancelTimeout(); + if (callback) { + var cb = callback; + callback = null; + cb(err); + } + }); + return socket; + }; +} +function setupTimeout(onConnectTimeout, timeout) { + if (!timeout) { + return function () {}; + } + var s1 = null; + var s2 = null; + var timeoutId = setTimeout(function () { + // setImmediate is added to make sure that we priotorise socket error events over timeouts + s1 = setImmediate(function () { + if (process.platform === 'win32') { + // Windows needs an extra setImmediate probably due to implementation differences in the socket logic + s2 = setImmediate(function () { + return onConnectTimeout(); + }); + } else { + onConnectTimeout(); + } + }); + }, timeout); + return function () { + clearTimeout(timeoutId); + clearImmediate(s1); + clearImmediate(s2); + }; +} +function onConnectTimeout(socket) { + util.destroy(socket, new ConnectTimeoutError()); +} +module.exports = buildConnector; + +/***/ }), + +/***/ 5751: +/***/ ((module) => { + +"use strict"; + + +/** @type {Record} */ +var headerNameLowerCasedRecord = {}; + +// https://developer.mozilla.org/docs/Web/HTTP/Headers +var wellknownHeaderNames = ['Accept', 'Accept-Encoding', 'Accept-Language', 'Accept-Ranges', 'Access-Control-Allow-Credentials', 'Access-Control-Allow-Headers', 'Access-Control-Allow-Methods', 'Access-Control-Allow-Origin', 'Access-Control-Expose-Headers', 'Access-Control-Max-Age', 'Access-Control-Request-Headers', 'Access-Control-Request-Method', 'Age', 'Allow', 'Alt-Svc', 'Alt-Used', 'Authorization', 'Cache-Control', 'Clear-Site-Data', 'Connection', 'Content-Disposition', 'Content-Encoding', 'Content-Language', 'Content-Length', 'Content-Location', 'Content-Range', 'Content-Security-Policy', 'Content-Security-Policy-Report-Only', 'Content-Type', 'Cookie', 'Cross-Origin-Embedder-Policy', 'Cross-Origin-Opener-Policy', 'Cross-Origin-Resource-Policy', 'Date', 'Device-Memory', 'Downlink', 'ECT', 'ETag', 'Expect', 'Expect-CT', 'Expires', 'Forwarded', 'From', 'Host', 'If-Match', 'If-Modified-Since', 'If-None-Match', 'If-Range', 'If-Unmodified-Since', 'Keep-Alive', 'Last-Modified', 'Link', 'Location', 'Max-Forwards', 'Origin', 'Permissions-Policy', 'Pragma', 'Proxy-Authenticate', 'Proxy-Authorization', 'RTT', 'Range', 'Referer', 'Referrer-Policy', 'Refresh', 'Retry-After', 'Sec-WebSocket-Accept', 'Sec-WebSocket-Extensions', 'Sec-WebSocket-Key', 'Sec-WebSocket-Protocol', 'Sec-WebSocket-Version', 'Server', 'Server-Timing', 'Service-Worker-Allowed', 'Service-Worker-Navigation-Preload', 'Set-Cookie', 'SourceMap', 'Strict-Transport-Security', 'Supports-Loading-Mode', 'TE', 'Timing-Allow-Origin', 'Trailer', 'Transfer-Encoding', 'Upgrade', 'Upgrade-Insecure-Requests', 'User-Agent', 'Vary', 'Via', 'WWW-Authenticate', 'X-Content-Type-Options', 'X-DNS-Prefetch-Control', 'X-Frame-Options', 'X-Permitted-Cross-Domain-Policies', 'X-Powered-By', 'X-Requested-With', 'X-XSS-Protection']; +for (var i = 0; i < wellknownHeaderNames.length; ++i) { + var key = wellknownHeaderNames[i]; + var lowerCasedKey = key.toLowerCase(); + headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = lowerCasedKey; +} + +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(headerNameLowerCasedRecord, null); +module.exports = { + wellknownHeaderNames: wellknownHeaderNames, + headerNameLowerCasedRecord: headerNameLowerCasedRecord +}; + +/***/ }), + +/***/ 3515: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createClass = (__webpack_require__(4579)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _wrapNativeSuper = (__webpack_require__(1837)["default"]); +var UndiciError = /*#__PURE__*/function (_Error) { + function UndiciError(message) { + var _this; + _classCallCheck(this, UndiciError); + _this = _callSuper(this, UndiciError, [message]); + _this.name = 'UndiciError'; + _this.code = 'UND_ERR'; + return _this; + } + _inherits(UndiciError, _Error); + return _createClass(UndiciError); +}( /*#__PURE__*/_wrapNativeSuper(Error)); +var ConnectTimeoutError = /*#__PURE__*/function (_UndiciError) { + function ConnectTimeoutError(message) { + var _this2; + _classCallCheck(this, ConnectTimeoutError); + _this2 = _callSuper(this, ConnectTimeoutError, [message]); + Error.captureStackTrace(_this2, ConnectTimeoutError); + _this2.name = 'ConnectTimeoutError'; + _this2.message = message || 'Connect Timeout Error'; + _this2.code = 'UND_ERR_CONNECT_TIMEOUT'; + return _this2; + } + _inherits(ConnectTimeoutError, _UndiciError); + return _createClass(ConnectTimeoutError); +}(UndiciError); +var HeadersTimeoutError = /*#__PURE__*/function (_UndiciError2) { + function HeadersTimeoutError(message) { + var _this3; + _classCallCheck(this, HeadersTimeoutError); + _this3 = _callSuper(this, HeadersTimeoutError, [message]); + Error.captureStackTrace(_this3, HeadersTimeoutError); + _this3.name = 'HeadersTimeoutError'; + _this3.message = message || 'Headers Timeout Error'; + _this3.code = 'UND_ERR_HEADERS_TIMEOUT'; + return _this3; + } + _inherits(HeadersTimeoutError, _UndiciError2); + return _createClass(HeadersTimeoutError); +}(UndiciError); +var HeadersOverflowError = /*#__PURE__*/function (_UndiciError3) { + function HeadersOverflowError(message) { + var _this4; + _classCallCheck(this, HeadersOverflowError); + _this4 = _callSuper(this, HeadersOverflowError, [message]); + Error.captureStackTrace(_this4, HeadersOverflowError); + _this4.name = 'HeadersOverflowError'; + _this4.message = message || 'Headers Overflow Error'; + _this4.code = 'UND_ERR_HEADERS_OVERFLOW'; + return _this4; + } + _inherits(HeadersOverflowError, _UndiciError3); + return _createClass(HeadersOverflowError); +}(UndiciError); +var BodyTimeoutError = /*#__PURE__*/function (_UndiciError4) { + function BodyTimeoutError(message) { + var _this5; + _classCallCheck(this, BodyTimeoutError); + _this5 = _callSuper(this, BodyTimeoutError, [message]); + Error.captureStackTrace(_this5, BodyTimeoutError); + _this5.name = 'BodyTimeoutError'; + _this5.message = message || 'Body Timeout Error'; + _this5.code = 'UND_ERR_BODY_TIMEOUT'; + return _this5; + } + _inherits(BodyTimeoutError, _UndiciError4); + return _createClass(BodyTimeoutError); +}(UndiciError); +var ResponseStatusCodeError = /*#__PURE__*/function (_UndiciError5) { + function ResponseStatusCodeError(message, statusCode, headers, body) { + var _this6; + _classCallCheck(this, ResponseStatusCodeError); + _this6 = _callSuper(this, ResponseStatusCodeError, [message]); + Error.captureStackTrace(_this6, ResponseStatusCodeError); + _this6.name = 'ResponseStatusCodeError'; + _this6.message = message || 'Response Status Code Error'; + _this6.code = 'UND_ERR_RESPONSE_STATUS_CODE'; + _this6.body = body; + _this6.status = statusCode; + _this6.statusCode = statusCode; + _this6.headers = headers; + return _this6; + } + _inherits(ResponseStatusCodeError, _UndiciError5); + return _createClass(ResponseStatusCodeError); +}(UndiciError); +var InvalidArgumentError = /*#__PURE__*/function (_UndiciError6) { + function InvalidArgumentError(message) { + var _this7; + _classCallCheck(this, InvalidArgumentError); + _this7 = _callSuper(this, InvalidArgumentError, [message]); + Error.captureStackTrace(_this7, InvalidArgumentError); + _this7.name = 'InvalidArgumentError'; + _this7.message = message || 'Invalid Argument Error'; + _this7.code = 'UND_ERR_INVALID_ARG'; + return _this7; + } + _inherits(InvalidArgumentError, _UndiciError6); + return _createClass(InvalidArgumentError); +}(UndiciError); +var InvalidReturnValueError = /*#__PURE__*/function (_UndiciError7) { + function InvalidReturnValueError(message) { + var _this8; + _classCallCheck(this, InvalidReturnValueError); + _this8 = _callSuper(this, InvalidReturnValueError, [message]); + Error.captureStackTrace(_this8, InvalidReturnValueError); + _this8.name = 'InvalidReturnValueError'; + _this8.message = message || 'Invalid Return Value Error'; + _this8.code = 'UND_ERR_INVALID_RETURN_VALUE'; + return _this8; + } + _inherits(InvalidReturnValueError, _UndiciError7); + return _createClass(InvalidReturnValueError); +}(UndiciError); +var RequestAbortedError = /*#__PURE__*/function (_UndiciError8) { + function RequestAbortedError(message) { + var _this9; + _classCallCheck(this, RequestAbortedError); + _this9 = _callSuper(this, RequestAbortedError, [message]); + Error.captureStackTrace(_this9, RequestAbortedError); + _this9.name = 'AbortError'; + _this9.message = message || 'Request aborted'; + _this9.code = 'UND_ERR_ABORTED'; + return _this9; + } + _inherits(RequestAbortedError, _UndiciError8); + return _createClass(RequestAbortedError); +}(UndiciError); +var InformationalError = /*#__PURE__*/function (_UndiciError9) { + function InformationalError(message) { + var _this10; + _classCallCheck(this, InformationalError); + _this10 = _callSuper(this, InformationalError, [message]); + Error.captureStackTrace(_this10, InformationalError); + _this10.name = 'InformationalError'; + _this10.message = message || 'Request information'; + _this10.code = 'UND_ERR_INFO'; + return _this10; + } + _inherits(InformationalError, _UndiciError9); + return _createClass(InformationalError); +}(UndiciError); +var RequestContentLengthMismatchError = /*#__PURE__*/function (_UndiciError10) { + function RequestContentLengthMismatchError(message) { + var _this11; + _classCallCheck(this, RequestContentLengthMismatchError); + _this11 = _callSuper(this, RequestContentLengthMismatchError, [message]); + Error.captureStackTrace(_this11, RequestContentLengthMismatchError); + _this11.name = 'RequestContentLengthMismatchError'; + _this11.message = message || 'Request body length does not match content-length header'; + _this11.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'; + return _this11; + } + _inherits(RequestContentLengthMismatchError, _UndiciError10); + return _createClass(RequestContentLengthMismatchError); +}(UndiciError); +var ResponseContentLengthMismatchError = /*#__PURE__*/function (_UndiciError11) { + function ResponseContentLengthMismatchError(message) { + var _this12; + _classCallCheck(this, ResponseContentLengthMismatchError); + _this12 = _callSuper(this, ResponseContentLengthMismatchError, [message]); + Error.captureStackTrace(_this12, ResponseContentLengthMismatchError); + _this12.name = 'ResponseContentLengthMismatchError'; + _this12.message = message || 'Response body length does not match content-length header'; + _this12.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'; + return _this12; + } + _inherits(ResponseContentLengthMismatchError, _UndiciError11); + return _createClass(ResponseContentLengthMismatchError); +}(UndiciError); +var ClientDestroyedError = /*#__PURE__*/function (_UndiciError12) { + function ClientDestroyedError(message) { + var _this13; + _classCallCheck(this, ClientDestroyedError); + _this13 = _callSuper(this, ClientDestroyedError, [message]); + Error.captureStackTrace(_this13, ClientDestroyedError); + _this13.name = 'ClientDestroyedError'; + _this13.message = message || 'The client is destroyed'; + _this13.code = 'UND_ERR_DESTROYED'; + return _this13; + } + _inherits(ClientDestroyedError, _UndiciError12); + return _createClass(ClientDestroyedError); +}(UndiciError); +var ClientClosedError = /*#__PURE__*/function (_UndiciError13) { + function ClientClosedError(message) { + var _this14; + _classCallCheck(this, ClientClosedError); + _this14 = _callSuper(this, ClientClosedError, [message]); + Error.captureStackTrace(_this14, ClientClosedError); + _this14.name = 'ClientClosedError'; + _this14.message = message || 'The client is closed'; + _this14.code = 'UND_ERR_CLOSED'; + return _this14; + } + _inherits(ClientClosedError, _UndiciError13); + return _createClass(ClientClosedError); +}(UndiciError); +var SocketError = /*#__PURE__*/function (_UndiciError14) { + function SocketError(message, socket) { + var _this15; + _classCallCheck(this, SocketError); + _this15 = _callSuper(this, SocketError, [message]); + Error.captureStackTrace(_this15, SocketError); + _this15.name = 'SocketError'; + _this15.message = message || 'Socket error'; + _this15.code = 'UND_ERR_SOCKET'; + _this15.socket = socket; + return _this15; + } + _inherits(SocketError, _UndiciError14); + return _createClass(SocketError); +}(UndiciError); +var NotSupportedError = /*#__PURE__*/function (_UndiciError15) { + function NotSupportedError(message) { + var _this16; + _classCallCheck(this, NotSupportedError); + _this16 = _callSuper(this, NotSupportedError, [message]); + Error.captureStackTrace(_this16, NotSupportedError); + _this16.name = 'NotSupportedError'; + _this16.message = message || 'Not supported error'; + _this16.code = 'UND_ERR_NOT_SUPPORTED'; + return _this16; + } + _inherits(NotSupportedError, _UndiciError15); + return _createClass(NotSupportedError); +}(UndiciError); +var BalancedPoolMissingUpstreamError = /*#__PURE__*/function (_UndiciError16) { + function BalancedPoolMissingUpstreamError(message) { + var _this17; + _classCallCheck(this, BalancedPoolMissingUpstreamError); + _this17 = _callSuper(this, BalancedPoolMissingUpstreamError, [message]); + Error.captureStackTrace(_this17, NotSupportedError); + _this17.name = 'MissingUpstreamError'; + _this17.message = message || 'No upstream has been added to the BalancedPool'; + _this17.code = 'UND_ERR_BPL_MISSING_UPSTREAM'; + return _this17; + } + _inherits(BalancedPoolMissingUpstreamError, _UndiciError16); + return _createClass(BalancedPoolMissingUpstreamError); +}(UndiciError); +var HTTPParserError = /*#__PURE__*/function (_Error2) { + function HTTPParserError(message, code, data) { + var _this18; + _classCallCheck(this, HTTPParserError); + _this18 = _callSuper(this, HTTPParserError, [message]); + Error.captureStackTrace(_this18, HTTPParserError); + _this18.name = 'HTTPParserError'; + _this18.code = code ? "HPE_".concat(code) : undefined; + _this18.data = data ? data.toString() : undefined; + return _this18; + } + _inherits(HTTPParserError, _Error2); + return _createClass(HTTPParserError); +}( /*#__PURE__*/_wrapNativeSuper(Error)); +var ResponseExceededMaxSizeError = /*#__PURE__*/function (_UndiciError17) { + function ResponseExceededMaxSizeError(message) { + var _this19; + _classCallCheck(this, ResponseExceededMaxSizeError); + _this19 = _callSuper(this, ResponseExceededMaxSizeError, [message]); + Error.captureStackTrace(_this19, ResponseExceededMaxSizeError); + _this19.name = 'ResponseExceededMaxSizeError'; + _this19.message = message || 'Response content exceeded max size'; + _this19.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'; + return _this19; + } + _inherits(ResponseExceededMaxSizeError, _UndiciError17); + return _createClass(ResponseExceededMaxSizeError); +}(UndiciError); +var RequestRetryError = /*#__PURE__*/function (_UndiciError18) { + function RequestRetryError(message, code, _ref) { + var _this20; + var headers = _ref.headers, + data = _ref.data; + _classCallCheck(this, RequestRetryError); + _this20 = _callSuper(this, RequestRetryError, [message]); + Error.captureStackTrace(_this20, RequestRetryError); + _this20.name = 'RequestRetryError'; + _this20.message = message || 'Request retry error'; + _this20.code = 'UND_ERR_REQ_RETRY'; + _this20.statusCode = code; + _this20.data = data; + _this20.headers = headers; + return _this20; + } + _inherits(RequestRetryError, _UndiciError18); + return _createClass(RequestRetryError); +}(UndiciError); +module.exports = { + HTTPParserError: HTTPParserError, + UndiciError: UndiciError, + HeadersTimeoutError: HeadersTimeoutError, + HeadersOverflowError: HeadersOverflowError, + BodyTimeoutError: BodyTimeoutError, + RequestContentLengthMismatchError: RequestContentLengthMismatchError, + ConnectTimeoutError: ConnectTimeoutError, + ResponseStatusCodeError: ResponseStatusCodeError, + InvalidArgumentError: InvalidArgumentError, + InvalidReturnValueError: InvalidReturnValueError, + RequestAbortedError: RequestAbortedError, + ClientDestroyedError: ClientDestroyedError, + ClientClosedError: ClientClosedError, + InformationalError: InformationalError, + SocketError: SocketError, + NotSupportedError: NotSupportedError, + ResponseContentLengthMismatchError: ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError: BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError: ResponseExceededMaxSizeError, + RequestRetryError: RequestRetryError +}; + +/***/ }), + +/***/ 5591: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(3515), + InvalidArgumentError = _require.InvalidArgumentError, + NotSupportedError = _require.NotSupportedError; +var assert = __webpack_require__(2613); +var _require2 = __webpack_require__(6771), + kHTTP2BuildRequest = _require2.kHTTP2BuildRequest, + kHTTP2CopyHeaders = _require2.kHTTP2CopyHeaders, + kHTTP1BuildRequest = _require2.kHTTP1BuildRequest; +var util = __webpack_require__(6632); + +// tokenRegExp and headerCharRegex have been lifted from +// https://github.com/nodejs/node/blob/main/lib/_http_common.js + +/** + * Verifies that the given val is a valid HTTP token + * per the rules defined in RFC 7230 + * See https://tools.ietf.org/html/rfc7230#section-3.2.6 + */ +var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; + +/** + * Matches if val contains an invalid field-vchar + * field-value = *( field-content / obs-fold ) + * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] + * field-vchar = VCHAR / obs-text + */ +var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + +// Verifies that a given path is valid does not contain control chars \x00 to \x20 +var invalidPathRegex = /[^\u0021-\u00ff]/; +var kHandler = Symbol('handler'); +var channels = {}; +var extractBody; +try { + var diagnosticsChannel = __webpack_require__(1637); + channels.create = diagnosticsChannel.channel('undici:request:create'); + channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent'); + channels.headers = diagnosticsChannel.channel('undici:request:headers'); + channels.trailers = diagnosticsChannel.channel('undici:request:trailers'); + channels.error = diagnosticsChannel.channel('undici:request:error'); +} catch (_unused) { + channels.create = { + hasSubscribers: false + }; + channels.bodySent = { + hasSubscribers: false + }; + channels.headers = { + hasSubscribers: false + }; + channels.trailers = { + hasSubscribers: false + }; + channels.error = { + hasSubscribers: false + }; +} +var Request = /*#__PURE__*/function () { + function Request(origin, _ref, handler) { + var _this = this; + var path = _ref.path, + method = _ref.method, + body = _ref.body, + headers = _ref.headers, + query = _ref.query, + idempotent = _ref.idempotent, + blocking = _ref.blocking, + upgrade = _ref.upgrade, + headersTimeout = _ref.headersTimeout, + bodyTimeout = _ref.bodyTimeout, + reset = _ref.reset, + throwOnError = _ref.throwOnError, + expectContinue = _ref.expectContinue; + _classCallCheck(this, Request); + if (typeof path !== 'string') { + throw new InvalidArgumentError('path must be a string'); + } else if (path[0] !== '/' && !(path.startsWith('http://') || path.startsWith('https://')) && method !== 'CONNECT') { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash'); + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError('invalid request path'); + } + if (typeof method !== 'string') { + throw new InvalidArgumentError('method must be a string'); + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError('invalid request method'); + } + if (upgrade && typeof upgrade !== 'string') { + throw new InvalidArgumentError('upgrade must be a string'); + } + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('invalid headersTimeout'); + } + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('invalid bodyTimeout'); + } + if (reset != null && typeof reset !== 'boolean') { + throw new InvalidArgumentError('invalid reset'); + } + if (expectContinue != null && typeof expectContinue !== 'boolean') { + throw new InvalidArgumentError('invalid expectContinue'); + } + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.throwOnError = throwOnError === true; + this.method = method; + this.abort = null; + if (body == null) { + this.body = null; + } else if (util.isStream(body)) { + this.body = body; + var rState = this.body._readableState; + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy() { + util.destroy(this); + }; + this.body.on('end', this.endHandler); + } + this.errorHandler = function (err) { + if (_this.abort) { + _this.abort(err); + } else { + _this.error = err; + } + }; + this.body.on('error', this.errorHandler); + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null; + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null; + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null; + } else if (typeof body === 'string') { + this.body = body.length ? Buffer.from(body) : null; + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body; + } else { + throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable'); + } + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query ? util.buildURL(path, query) : path; + this.origin = origin; + this.idempotent = idempotent == null ? method === 'HEAD' || method === 'GET' : idempotent; + this.blocking = blocking == null ? false : blocking; + this.reset = reset == null ? null : reset; + this.host = null; + this.contentLength = null; + this.contentType = null; + this.headers = ''; + + // Only for H2 + this.expectContinue = expectContinue != null ? expectContinue : false; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even'); + } + for (var i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); + } + } else if (headers && typeof headers === 'object') { + var keys = Object.keys(headers); + for (var _i = 0; _i < keys.length; _i++) { + var key = keys[_i]; + processHeader(this, key, headers[key]); + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array'); + } + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || util.nodeMajor === 16 && util.nodeMinor < 8) { + throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.'); + } + if (!extractBody) { + extractBody = (__webpack_require__(5491).extractBody); + } + var _extractBody = extractBody(body), + _extractBody2 = _slicedToArray(_extractBody, 2), + bodyStream = _extractBody2[0], + contentType = _extractBody2[1]; + if (this.contentType == null) { + this.contentType = contentType; + this.headers += "content-type: ".concat(contentType, "\r\n"); + } + this.body = bodyStream.stream; + this.contentLength = bodyStream.length; + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type; + this.headers += "content-type: ".concat(body.type, "\r\n"); + } + util.validateHandler(handler, method, upgrade); + this.servername = util.getServerName(this.host); + this[kHandler] = handler; + if (channels.create.hasSubscribers) { + channels.create.publish({ + request: this + }); + } + } + return _createClass(Request, [{ + key: "onBodySent", + value: function onBodySent(chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk); + } catch (err) { + this.abort(err); + } + } + } + }, { + key: "onRequestSent", + value: function onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ + request: this + }); + } + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent(); + } catch (err) { + this.abort(err); + } + } + } + }, { + key: "onConnect", + value: function onConnect(abort) { + assert(!this.aborted); + assert(!this.completed); + if (this.error) { + abort(this.error); + } else { + this.abort = abort; + return this[kHandler].onConnect(abort); + } + } + }, { + key: "onHeaders", + value: function onHeaders(statusCode, headers, resume, statusText) { + assert(!this.aborted); + assert(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ + request: this, + response: { + statusCode: statusCode, + headers: headers, + statusText: statusText + } + }); + } + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText); + } catch (err) { + this.abort(err); + } + } + }, { + key: "onData", + value: function onData(chunk) { + assert(!this.aborted); + assert(!this.completed); + try { + return this[kHandler].onData(chunk); + } catch (err) { + this.abort(err); + return false; + } + } + }, { + key: "onUpgrade", + value: function onUpgrade(statusCode, headers, socket) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onUpgrade(statusCode, headers, socket); + } + }, { + key: "onComplete", + value: function onComplete(trailers) { + this.onFinally(); + assert(!this.aborted); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ + request: this, + trailers: trailers + }); + } + try { + return this[kHandler].onComplete(trailers); + } catch (err) { + // TODO (fix): This might be a bad idea? + this.onError(err); + } + } + }, { + key: "onError", + value: function onError(error) { + this.onFinally(); + if (channels.error.hasSubscribers) { + channels.error.publish({ + request: this, + error: error + }); + } + if (this.aborted) { + return; + } + this.aborted = true; + return this[kHandler].onError(error); + } + }, { + key: "onFinally", + value: function onFinally() { + if (this.errorHandler) { + this.body.off('error', this.errorHandler); + this.errorHandler = null; + } + if (this.endHandler) { + this.body.off('end', this.endHandler); + this.endHandler = null; + } + } + + // TODO: adjust to support H2 + }, { + key: "addHeader", + value: function addHeader(key, value) { + processHeader(this, key, value); + return this; + } + }], [{ + key: kHTTP1BuildRequest, + value: function value(origin, opts, handler) { + // TODO: Migrate header parsing here, to make Requests + // HTTP agnostic + return new Request(origin, opts, handler); + } + }, { + key: kHTTP2BuildRequest, + value: function value(origin, opts, handler) { + var headers = opts.headers; + opts = _objectSpread(_objectSpread({}, opts), {}, { + headers: null + }); + var request = new Request(origin, opts, handler); + request.headers = {}; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even'); + } + for (var i = 0; i < headers.length; i += 2) { + processHeader(request, headers[i], headers[i + 1], true); + } + } else if (headers && typeof headers === 'object') { + var keys = Object.keys(headers); + for (var _i2 = 0; _i2 < keys.length; _i2++) { + var key = keys[_i2]; + processHeader(request, key, headers[key], true); + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array'); + } + return request; + } + }, { + key: kHTTP2CopyHeaders, + value: function value(raw) { + var rawHeaders = raw.split('\r\n'); + var headers = {}; + var _iterator = _createForOfIteratorHelper(rawHeaders), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var header = _step.value; + var _header$split = header.split(': '), + _header$split2 = _slicedToArray(_header$split, 2), + key = _header$split2[0], + value = _header$split2[1]; + if (value == null || value.length === 0) continue; + if (headers[key]) headers[key] += ",".concat(value);else headers[key] = value; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return headers; + } + }]); +}(); +function processHeaderValue(key, val, skipAppend) { + if (val && typeof val === 'object') { + throw new InvalidArgumentError("invalid ".concat(key, " header")); + } + val = val != null ? "".concat(val) : ''; + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError("invalid ".concat(key, " header")); + } + return skipAppend ? val : "".concat(key, ": ").concat(val, "\r\n"); +} +function processHeader(request, key, val) { + var skipAppend = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + if (val && typeof val === 'object' && !Array.isArray(val)) { + throw new InvalidArgumentError("invalid ".concat(key, " header")); + } else if (val === undefined) { + return; + } + if (request.host === null && key.length === 4 && key.toLowerCase() === 'host') { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError("invalid ".concat(key, " header")); + } + // Consumed by Client + request.host = val; + } else if (request.contentLength === null && key.length === 14 && key.toLowerCase() === 'content-length') { + request.contentLength = parseInt(val, 10); + if (!Number.isFinite(request.contentLength)) { + throw new InvalidArgumentError('invalid content-length header'); + } + } else if (request.contentType === null && key.length === 12 && key.toLowerCase() === 'content-type') { + request.contentType = val; + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend);else request.headers += processHeaderValue(key, val); + } else if (key.length === 17 && key.toLowerCase() === 'transfer-encoding') { + throw new InvalidArgumentError('invalid transfer-encoding header'); + } else if (key.length === 10 && key.toLowerCase() === 'connection') { + var value = typeof val === 'string' ? val.toLowerCase() : null; + if (value !== 'close' && value !== 'keep-alive') { + throw new InvalidArgumentError('invalid connection header'); + } else if (value === 'close') { + request.reset = true; + } + } else if (key.length === 10 && key.toLowerCase() === 'keep-alive') { + throw new InvalidArgumentError('invalid keep-alive header'); + } else if (key.length === 7 && key.toLowerCase() === 'upgrade') { + throw new InvalidArgumentError('invalid upgrade header'); + } else if (key.length === 6 && key.toLowerCase() === 'expect') { + throw new NotSupportedError('expect header not supported'); + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError('invalid header key'); + } else { + if (Array.isArray(val)) { + for (var i = 0; i < val.length; i++) { + if (skipAppend) { + if (request.headers[key]) request.headers[key] += ",".concat(processHeaderValue(key, val[i], skipAppend));else request.headers[key] = processHeaderValue(key, val[i], skipAppend); + } else { + request.headers += processHeaderValue(key, val[i]); + } + } + } else { + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend);else request.headers += processHeaderValue(key, val); + } + } +} +module.exports = Request; + +/***/ }), + +/***/ 6771: +/***/ ((module) => { + +module.exports = { + kClose: Symbol('close'), + kDestroy: Symbol('destroy'), + kDispatch: Symbol('dispatch'), + kUrl: Symbol('url'), + kWriting: Symbol('writing'), + kResuming: Symbol('resuming'), + kQueue: Symbol('queue'), + kConnect: Symbol('connect'), + kConnecting: Symbol('connecting'), + kHeadersList: Symbol('headers list'), + kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), + kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), + kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), + kKeepAliveTimeoutValue: Symbol('keep alive timeout'), + kKeepAlive: Symbol('keep alive'), + kHeadersTimeout: Symbol('headers timeout'), + kBodyTimeout: Symbol('body timeout'), + kServerName: Symbol('server name'), + kLocalAddress: Symbol('local address'), + kHost: Symbol('host'), + kNoRef: Symbol('no ref'), + kBodyUsed: Symbol('used'), + kRunning: Symbol('running'), + kBlocking: Symbol('blocking'), + kPending: Symbol('pending'), + kSize: Symbol('size'), + kBusy: Symbol('busy'), + kQueued: Symbol('queued'), + kFree: Symbol('free'), + kConnected: Symbol('connected'), + kClosed: Symbol('closed'), + kNeedDrain: Symbol('need drain'), + kReset: Symbol('reset'), + kDestroyed: Symbol["for"]('nodejs.stream.destroyed'), + kMaxHeadersSize: Symbol('max headers size'), + kRunningIdx: Symbol('running index'), + kPendingIdx: Symbol('pending index'), + kError: Symbol('error'), + kClients: Symbol('clients'), + kClient: Symbol('client'), + kParser: Symbol('parser'), + kOnDestroyed: Symbol('destroy callbacks'), + kPipelining: Symbol('pipelining'), + kSocket: Symbol('socket'), + kHostHeader: Symbol('host header'), + kConnector: Symbol('connector'), + kStrictContentLength: Symbol('strict content length'), + kMaxRedirections: Symbol('maxRedirections'), + kMaxRequests: Symbol('maxRequestsPerClient'), + kProxy: Symbol('proxy agent options'), + kCounter: Symbol('socket request counter'), + kInterceptors: Symbol('dispatch interceptors'), + kMaxResponseSize: Symbol('max response size'), + kHTTP2Session: Symbol('http2Session'), + kHTTP2SessionState: Symbol('http2Session state'), + kHTTP2BuildRequest: Symbol('http2 build request'), + kHTTP1BuildRequest: Symbol('http1 build request'), + kHTTP2CopyHeaders: Symbol('http2 copy headers'), + kHTTPConnVersion: Symbol('http connection version'), + kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), + kConstruct: Symbol('constructable') +}; + +/***/ }), + +/***/ 6632: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _awaitAsyncGenerator = (__webpack_require__(3344)["default"]); +var _wrapAsyncGenerator = (__webpack_require__(2958)["default"]); +var _asyncIterator = (__webpack_require__(2881)["default"]); +var assert = __webpack_require__(2613); +var _require = __webpack_require__(6771), + kDestroyed = _require.kDestroyed, + kBodyUsed = _require.kBodyUsed; +var _require2 = __webpack_require__(8611), + IncomingMessage = _require2.IncomingMessage; +var stream = __webpack_require__(2203); +var net = __webpack_require__(9278); +var _require3 = __webpack_require__(3515), + InvalidArgumentError = _require3.InvalidArgumentError; +var _require4 = __webpack_require__(181), + Blob = _require4.Blob; +var nodeUtil = __webpack_require__(9023); +var _require5 = __webpack_require__(3480), + stringify = _require5.stringify; +var _require6 = __webpack_require__(5751), + headerNameLowerCasedRecord = _require6.headerNameLowerCasedRecord; +var _process$versions$nod = process.versions.node.split('.').map(function (v) { + return Number(v); + }), + _process$versions$nod2 = _slicedToArray(_process$versions$nod, 2), + nodeMajor = _process$versions$nod2[0], + nodeMinor = _process$versions$nod2[1]; +function nop() {} +function isStream(obj) { + return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'; +} + +// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) +function isBlobLike(object) { + return Blob && object instanceof Blob || object && typeof object === 'object' && (typeof object.stream === 'function' || typeof object.arrayBuffer === 'function') && /^(Blob|File)$/.test(object[Symbol.toStringTag]); +} +function buildURL(url, queryParams) { + if (url.includes('?') || url.includes('#')) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".'); + } + var stringified = stringify(queryParams); + if (stringified) { + url += '?' + stringified; + } + return url; +} +function parseURL(url) { + if (typeof url === 'string') { + url = new URL(url); + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.'); + } + return url; + } + if (!url || typeof url !== 'object') { + throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.'); + } + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.'); + } + if (!(url instanceof URL)) { + if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.'); + } + if (url.path != null && typeof url.path !== 'string') { + throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.'); + } + if (url.pathname != null && typeof url.pathname !== 'string') { + throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.'); + } + if (url.hostname != null && typeof url.hostname !== 'string') { + throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.'); + } + if (url.origin != null && typeof url.origin !== 'string') { + throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.'); + } + var port = url.port != null ? url.port : url.protocol === 'https:' ? 443 : 80; + var origin = url.origin != null ? url.origin : "".concat(url.protocol, "//").concat(url.hostname, ":").concat(port); + var path = url.path != null ? url.path : "".concat(url.pathname || '').concat(url.search || ''); + if (origin.endsWith('/')) { + origin = origin.substring(0, origin.length - 1); + } + if (path && !path.startsWith('/')) { + path = "/".concat(path); + } + // new URL(path, origin) is unsafe when `path` contains an absolute URL + // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: + // If first parameter is a relative URL, second param is required, and will be used as the base URL. + // If first parameter is an absolute URL, a given second param will be ignored. + url = new URL(origin + path); + } + return url; +} +function parseOrigin(url) { + url = parseURL(url); + if (url.pathname !== '/' || url.search || url.hash) { + throw new InvalidArgumentError('invalid url'); + } + return url; +} +function getHostname(host) { + if (host[0] === '[') { + var _idx = host.indexOf(']'); + assert(_idx !== -1); + return host.substring(1, _idx); + } + var idx = host.indexOf(':'); + if (idx === -1) return host; + return host.substring(0, idx); +} + +// IP addresses are not valid server names per RFC6066 +// > Currently, the only server names supported are DNS hostnames +function getServerName(host) { + if (!host) { + return null; + } + assert.strictEqual(typeof host, 'string'); + var servername = getHostname(host); + if (net.isIP(servername)) { + return ''; + } + return servername; +} +function deepClone(obj) { + return JSON.parse(JSON.stringify(obj)); +} +function isAsyncIterable(obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function'); +} +function isIterable(obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')); +} +function bodyLength(body) { + if (body == null) { + return 0; + } else if (isStream(body)) { + var state = body._readableState; + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null; + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null; + } else if (isBuffer(body)) { + return body.byteLength; + } + return null; +} +function isDestroyed(stream) { + return !stream || !!(stream.destroyed || stream[kDestroyed]); +} +function isReadableAborted(stream) { + var state = stream && stream._readableState; + return isDestroyed(stream) && state && !state.endEmitted; +} +function destroy(stream, err) { + if (stream == null || !isStream(stream) || isDestroyed(stream)) { + return; + } + if (typeof stream.destroy === 'function') { + if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { + // See: https://github.com/nodejs/node/pull/38505/files + stream.socket = null; + } + stream.destroy(err); + } else if (err) { + process.nextTick(function (stream, err) { + stream.emit('error', err); + }, stream, err); + } + if (stream.destroyed !== true) { + stream[kDestroyed] = true; + } +} +var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; +function parseKeepAliveTimeout(val) { + var m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); + return m ? parseInt(m[1], 10) * 1000 : null; +} + +/** + * Retrieves a header name and returns its lowercase value. + * @param {string | Buffer} value Header name + * @returns {string} + */ +function headerNameToString(value) { + return headerNameLowerCasedRecord[value] || value.toLowerCase(); +} +function parseHeaders(headers) { + var obj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // For H2 support + if (!Array.isArray(headers)) return headers; + for (var i = 0; i < headers.length; i += 2) { + var key = headers[i].toString().toLowerCase(); + var val = obj[key]; + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1].map(function (x) { + return x.toString('utf8'); + }); + } else { + obj[key] = headers[i + 1].toString('utf8'); + } + } else { + if (!Array.isArray(val)) { + val = [val]; + obj[key] = val; + } + val.push(headers[i + 1].toString('utf8')); + } + } + + // See https://github.com/nodejs/node/pull/46528 + if ('content-length' in obj && 'content-disposition' in obj) { + obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1'); + } + return obj; +} +function parseRawHeaders(headers) { + var ret = []; + var hasContentLength = false; + var contentDispositionIdx = -1; + for (var n = 0; n < headers.length; n += 2) { + var key = headers[n + 0].toString(); + var val = headers[n + 1].toString('utf8'); + if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) { + ret.push(key, val); + hasContentLength = true; + } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { + contentDispositionIdx = ret.push(key, val) - 1; + } else { + ret.push(key, val); + } + } + + // See https://github.com/nodejs/node/pull/46528 + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1'); + } + return ret; +} +function isBuffer(buffer) { + // See, https://github.com/mcollina/undici/pull/319 + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); +} +function validateHandler(handler, method, upgrade) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object'); + } + if (typeof handler.onConnect !== 'function') { + throw new InvalidArgumentError('invalid onConnect method'); + } + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method'); + } + if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) { + throw new InvalidArgumentError('invalid onBodySent method'); + } + if (upgrade || method === 'CONNECT') { + if (typeof handler.onUpgrade !== 'function') { + throw new InvalidArgumentError('invalid onUpgrade method'); + } + } else { + if (typeof handler.onHeaders !== 'function') { + throw new InvalidArgumentError('invalid onHeaders method'); + } + if (typeof handler.onData !== 'function') { + throw new InvalidArgumentError('invalid onData method'); + } + if (typeof handler.onComplete !== 'function') { + throw new InvalidArgumentError('invalid onComplete method'); + } + } +} + +// A body is disturbed if it has been read from and it cannot +// be re-used without losing state or data. +function isDisturbed(body) { + return !!(body && (stream.isDisturbed ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? + : body[kBodyUsed] || body.readableDidRead || body._readableState && body._readableState.dataEmitted || isReadableAborted(body))); +} +function isErrored(body) { + return !!(body && (stream.isErrored ? stream.isErrored(body) : /state: 'errored'/.test(nodeUtil.inspect(body)))); +} +function isReadable(body) { + return !!(body && (stream.isReadable ? stream.isReadable(body) : /state: 'readable'/.test(nodeUtil.inspect(body)))); +} +function getSocketInfo(socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + }; +} +function convertIterableToBuffer(_x) { + return _convertIterableToBuffer.apply(this, arguments); +} +function _convertIterableToBuffer() { + _convertIterableToBuffer = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(iterable) { + var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _iteratorAbruptCompletion = false; + _didIteratorError = false; + _context.prev = 2; + _iterator = _asyncIterator(iterable); + case 4: + _context.next = 6; + return _awaitAsyncGenerator(_iterator.next()); + case 6: + if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) { + _context.next = 13; + break; + } + chunk = _step.value; + _context.next = 10; + return Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); + case 10: + _iteratorAbruptCompletion = false; + _context.next = 4; + break; + case 13: + _context.next = 19; + break; + case 15: + _context.prev = 15; + _context.t0 = _context["catch"](2); + _didIteratorError = true; + _iteratorError = _context.t0; + case 19: + _context.prev = 19; + _context.prev = 20; + if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) { + _context.next = 24; + break; + } + _context.next = 24; + return _awaitAsyncGenerator(_iterator["return"]()); + case 24: + _context.prev = 24; + if (!_didIteratorError) { + _context.next = 27; + break; + } + throw _iteratorError; + case 27: + return _context.finish(24); + case 28: + return _context.finish(19); + case 29: + case "end": + return _context.stop(); + } + }, _callee, null, [[2, 15, 19, 29], [20,, 24, 28]]); + })); + return _convertIterableToBuffer.apply(this, arguments); +} +var ReadableStream; +function ReadableStreamFrom(iterable) { + if (!ReadableStream) { + ReadableStream = (__webpack_require__(3774).ReadableStream); + } + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)); + } + var iterator; + return new ReadableStream({ + start: function start() { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + iterator = iterable[Symbol.asyncIterator](); + case 1: + case "end": + return _context2.stop(); + } + }, _callee2); + }))(); + }, + pull: function pull(controller) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + var _yield$iterator$next, done, value, buf; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return iterator.next(); + case 2: + _yield$iterator$next = _context3.sent; + done = _yield$iterator$next.done; + value = _yield$iterator$next.value; + if (done) { + queueMicrotask(function () { + controller.close(); + }); + } else { + buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + controller.enqueue(new Uint8Array(buf)); + } + return _context3.abrupt("return", controller.desiredSize > 0); + case 7: + case "end": + return _context3.stop(); + } + }, _callee3); + }))(); + }, + cancel: function cancel(reason) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() { + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return iterator["return"](); + case 2: + case "end": + return _context4.stop(); + } + }, _callee4); + }))(); + } + }, 0); +} + +// The chunk should be a FormData instance and contains +// all the required methods. +function isFormDataLike(object) { + return object && typeof object === 'object' && typeof object.append === 'function' && typeof object["delete"] === 'function' && typeof object.get === 'function' && typeof object.getAll === 'function' && typeof object.has === 'function' && typeof object.set === 'function' && object[Symbol.toStringTag] === 'FormData'; +} +function throwIfAborted(signal) { + if (!signal) { + return; + } + if (typeof signal.throwIfAborted === 'function') { + signal.throwIfAborted(); + } else { + if (signal.aborted) { + // DOMException not available < v17.0.0 + var err = new Error('The operation was aborted'); + err.name = 'AbortError'; + throw err; + } + } +} +function addAbortListener(signal, listener) { + if ('addEventListener' in signal) { + signal.addEventListener('abort', listener, { + once: true + }); + return function () { + return signal.removeEventListener('abort', listener); + }; + } + signal.addListener('abort', listener); + return function () { + return signal.removeListener('abort', listener); + }; +} +var hasToWellFormed = !!String.prototype.toWellFormed; + +/** + * @param {string} val + */ +function toUSVString(val) { + if (hasToWellFormed) { + return "".concat(val).toWellFormed(); + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val); + } + return "".concat(val); +} + +// Parsed accordingly to RFC 9110 +// https://www.rfc-editor.org/rfc/rfc9110#field.content-range +function parseRangeHeader(range) { + if (range == null || range === '') return { + start: 0, + end: null, + size: null + }; + var m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null; + return m ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] ? parseInt(m[3]) : null + } : null; +} +var kEnumerableProperty = Object.create(null); +kEnumerableProperty.enumerable = true; +module.exports = { + kEnumerableProperty: kEnumerableProperty, + nop: nop, + isDisturbed: isDisturbed, + isErrored: isErrored, + isReadable: isReadable, + toUSVString: toUSVString, + isReadableAborted: isReadableAborted, + isBlobLike: isBlobLike, + parseOrigin: parseOrigin, + parseURL: parseURL, + getServerName: getServerName, + isStream: isStream, + isIterable: isIterable, + isAsyncIterable: isAsyncIterable, + isDestroyed: isDestroyed, + headerNameToString: headerNameToString, + parseRawHeaders: parseRawHeaders, + parseHeaders: parseHeaders, + parseKeepAliveTimeout: parseKeepAliveTimeout, + destroy: destroy, + bodyLength: bodyLength, + deepClone: deepClone, + ReadableStreamFrom: ReadableStreamFrom, + isBuffer: isBuffer, + validateHandler: validateHandler, + getSocketInfo: getSocketInfo, + isFormDataLike: isFormDataLike, + buildURL: buildURL, + throwIfAborted: throwIfAborted, + addAbortListener: addAbortListener, + parseRangeHeader: parseRangeHeader, + nodeMajor: nodeMajor, + nodeMinor: nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 13, + safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +}; + +/***/ }), + +/***/ 8281: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var Dispatcher = __webpack_require__(4171); +var _require = __webpack_require__(3515), + ClientDestroyedError = _require.ClientDestroyedError, + ClientClosedError = _require.ClientClosedError, + InvalidArgumentError = _require.InvalidArgumentError; +var _require2 = __webpack_require__(6771), + kDestroy = _require2.kDestroy, + kClose = _require2.kClose, + kDispatch = _require2.kDispatch, + kInterceptors = _require2.kInterceptors; +var kDestroyed = Symbol('destroyed'); +var kClosed = Symbol('closed'); +var kOnDestroyed = Symbol('onDestroyed'); +var kOnClosed = Symbol('onClosed'); +var kInterceptedDispatch = Symbol('Intercepted Dispatch'); +var DispatcherBase = /*#__PURE__*/function (_Dispatcher) { + function DispatcherBase() { + var _this; + _classCallCheck(this, DispatcherBase); + _this = _callSuper(this, DispatcherBase); + _this[kDestroyed] = false; + _this[kOnDestroyed] = null; + _this[kClosed] = false; + _this[kOnClosed] = []; + return _this; + } + _inherits(DispatcherBase, _Dispatcher); + return _createClass(DispatcherBase, [{ + key: "destroyed", + get: function get() { + return this[kDestroyed]; + } + }, { + key: "closed", + get: function get() { + return this[kClosed]; + } + }, { + key: "interceptors", + get: function get() { + return this[kInterceptors]; + }, + set: function set(newInterceptors) { + if (newInterceptors) { + for (var i = newInterceptors.length - 1; i >= 0; i--) { + var interceptor = this[kInterceptors][i]; + if (typeof interceptor !== 'function') { + throw new InvalidArgumentError('interceptor must be an function'); + } + } + } + this[kInterceptors] = newInterceptors; + } + }, { + key: "close", + value: function close(callback) { + var _this2 = this; + if (callback === undefined) { + return new Promise(function (resolve, reject) { + _this2.close(function (err, data) { + return err ? reject(err) : resolve(data); + }); + }); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (this[kDestroyed]) { + queueMicrotask(function () { + return callback(new ClientDestroyedError(), null); + }); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); + } else { + queueMicrotask(function () { + return callback(null, null); + }); + } + return; + } + this[kClosed] = true; + this[kOnClosed].push(callback); + var onClosed = function onClosed() { + var callbacks = _this2[kOnClosed]; + _this2[kOnClosed] = null; + for (var i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + + // Should not error. + this[kClose]().then(function () { + return _this2.destroy(); + }).then(function () { + queueMicrotask(onClosed); + }); + } + }, { + key: "destroy", + value: function destroy(err, callback) { + var _this3 = this; + if (typeof err === 'function') { + callback = err; + err = null; + } + if (callback === undefined) { + return new Promise(function (resolve, reject) { + _this3.destroy(err, function (err, data) { + return err ? /* istanbul ignore next: should never error */reject(err) : resolve(data); + }); + }); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback); + } else { + queueMicrotask(function () { + return callback(null, null); + }); + } + return; + } + if (!err) { + err = new ClientDestroyedError(); + } + this[kDestroyed] = true; + this[kOnDestroyed] = this[kOnDestroyed] || []; + this[kOnDestroyed].push(callback); + var onDestroyed = function onDestroyed() { + var callbacks = _this3[kOnDestroyed]; + _this3[kOnDestroyed] = null; + for (var i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + + // Should not error. + this[kDestroy](err).then(function () { + queueMicrotask(onDestroyed); + }); + } + }, { + key: kInterceptedDispatch, + value: function value(opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch]; + return this[kDispatch](opts, handler); + } + var dispatch = this[kDispatch].bind(this); + for (var i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch); + } + this[kInterceptedDispatch] = dispatch; + return dispatch(opts, handler); + } + }, { + key: "dispatch", + value: function dispatch(opts, handler) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object'); + } + try { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object.'); + } + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kInterceptedDispatch](opts, handler); + } catch (err) { + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method'); + } + handler.onError(err); + return false; + } + } + }]); +}(Dispatcher); +module.exports = DispatcherBase; + +/***/ }), + +/***/ 4171: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var EventEmitter = __webpack_require__(4434); +var Dispatcher = /*#__PURE__*/function (_EventEmitter) { + function Dispatcher() { + _classCallCheck(this, Dispatcher); + return _callSuper(this, Dispatcher, arguments); + } + _inherits(Dispatcher, _EventEmitter); + return _createClass(Dispatcher, [{ + key: "dispatch", + value: function dispatch() { + throw new Error('not implemented'); + } + }, { + key: "close", + value: function close() { + throw new Error('not implemented'); + } + }, { + key: "destroy", + value: function destroy() { + throw new Error('not implemented'); + } + }]); +}(EventEmitter); +module.exports = Dispatcher; + +/***/ }), + +/***/ 5491: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _wrapAsyncGenerator = (__webpack_require__(2958)["default"]); +var _awaitAsyncGenerator = (__webpack_require__(3344)["default"]); +var _asyncGeneratorDelegate = (__webpack_require__(3513)["default"]); +var _asyncIterator = (__webpack_require__(2881)["default"]); +var Busboy = __webpack_require__(581); +var util = __webpack_require__(6632); +var _require = __webpack_require__(1035), + ReadableStreamFrom = _require.ReadableStreamFrom, + isBlobLike = _require.isBlobLike, + isReadableStreamLike = _require.isReadableStreamLike, + readableStreamClose = _require.readableStreamClose, + createDeferredPromise = _require.createDeferredPromise, + fullyReadBody = _require.fullyReadBody; +var _require2 = __webpack_require__(7609), + FormData = _require2.FormData; +var _require3 = __webpack_require__(6614), + kState = _require3.kState; +var _require4 = __webpack_require__(3702), + webidl = _require4.webidl; +var _require5 = __webpack_require__(8422), + DOMException = _require5.DOMException, + structuredClone = _require5.structuredClone; +var _require6 = __webpack_require__(181), + Blob = _require6.Blob, + NativeFile = _require6.File; +var _require7 = __webpack_require__(6771), + kBodyUsed = _require7.kBodyUsed; +var assert = __webpack_require__(2613); +var _require8 = __webpack_require__(6632), + isErrored = _require8.isErrored; +var _require9 = __webpack_require__(8253), + isUint8Array = _require9.isUint8Array, + isArrayBuffer = _require9.isArrayBuffer; +var _require10 = __webpack_require__(1049), + UndiciFile = _require10.File; +var _require11 = __webpack_require__(9738), + parseMIMEType = _require11.parseMIMEType, + serializeAMimeType = _require11.serializeAMimeType; +var ReadableStream = globalThis.ReadableStream; + +/** @type {globalThis['File']} */ +var File = NativeFile !== null && NativeFile !== void 0 ? NativeFile : UndiciFile; +var textEncoder = new TextEncoder(); +var textDecoder = new TextDecoder(); + +// https://fetch.spec.whatwg.org/#concept-bodyinit-extract +function extractBody(object) { + var keepalive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + if (!ReadableStream) { + ReadableStream = (__webpack_require__(3774).ReadableStream); + } + + // 1. Let stream be null. + var stream = null; + + // 2. If object is a ReadableStream object, then set stream to object. + if (object instanceof ReadableStream) { + stream = object; + } else if (isBlobLike(object)) { + // 3. Otherwise, if object is a Blob object, set stream to the + // result of running object’s get stream. + stream = object.stream(); + } else { + // 4. Otherwise, set stream to a new ReadableStream object, and set + // up stream. + stream = new ReadableStream({ + pull: function pull(controller) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + controller.enqueue(typeof source === 'string' ? textEncoder.encode(source) : source); + queueMicrotask(function () { + return readableStreamClose(controller); + }); + case 2: + case "end": + return _context.stop(); + } + }, _callee); + }))(); + }, + start: function start() {}, + type: undefined + }); + } + + // 5. Assert: stream is a ReadableStream object. + assert(isReadableStreamLike(stream)); + + // 6. Let action be null. + var action = null; + + // 7. Let source be null. + var source = null; + + // 8. Let length be null. + var length = null; + + // 9. Let type be null. + var type = null; + + // 10. Switch on object: + if (typeof object === 'string') { + // Set source to the UTF-8 encoding of object. + // Note: setting source to a Uint8Array here breaks some mocking assumptions. + source = object; + + // Set type to `text/plain;charset=UTF-8`. + type = 'text/plain;charset=UTF-8'; + } else if (object instanceof URLSearchParams) { + // URLSearchParams + + // spec says to run application/x-www-form-urlencoded on body.list + // this is implemented in Node.js as apart of an URLSearchParams instance toString method + // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 + // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 + + // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. + source = object.toString(); + + // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. + type = 'application/x-www-form-urlencoded;charset=UTF-8'; + } else if (isArrayBuffer(object)) { + // BufferSource/ArrayBuffer + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.slice()); + } else if (ArrayBuffer.isView(object)) { + // BufferSource/ArrayBufferView + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); + } else if (util.isFormDataLike(object)) { + var boundary = "----formdata-undici-0".concat("".concat(Math.floor(Math.random() * 1e11)).padStart(11, '0')); + var prefix = "--".concat(boundary, "\r\nContent-Disposition: form-data"); + + /*! formdata-polyfill. MIT License. Jimmy Wärting */ + var _escape = function _escape(str) { + return str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22'); + }; + var normalizeLinefeeds = function normalizeLinefeeds(value) { + return value.replace(/\r?\n|\r/g, '\r\n'); + }; + + // Set action to this step: run the multipart/form-data + // encoding algorithm, with object’s entry list and UTF-8. + // - This ensures that the body is immutable and can't be changed afterwords + // - That the content-length is calculated in advance. + // - And that all parts are pre-encoded and ready to be sent. + + var blobParts = []; + var rn = new Uint8Array([13, 10]); // '\r\n' + length = 0; + var hasUnknownSizeValue = false; + var _iterator3 = _createForOfIteratorHelper(object), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var _step3$value = _slicedToArray(_step3.value, 2), + name = _step3$value[0], + value = _step3$value[1]; + if (typeof value === 'string') { + var _chunk = textEncoder.encode(prefix + "; name=\"".concat(_escape(normalizeLinefeeds(name)), "\"") + "\r\n\r\n".concat(normalizeLinefeeds(value), "\r\n")); + blobParts.push(_chunk); + length += _chunk.byteLength; + } else { + var _chunk2 = textEncoder.encode("".concat(prefix, "; name=\"").concat(_escape(normalizeLinefeeds(name)), "\"") + (value.name ? "; filename=\"".concat(_escape(value.name), "\"") : '') + '\r\n' + "Content-Type: ".concat(value.type || 'application/octet-stream', "\r\n\r\n")); + blobParts.push(_chunk2, value, rn); + if (typeof value.size === 'number') { + length += _chunk2.byteLength + value.size + rn.byteLength; + } else { + hasUnknownSizeValue = true; + } + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + var chunk = textEncoder.encode("--".concat(boundary, "--")); + blobParts.push(chunk); + length += chunk.byteLength; + if (hasUnknownSizeValue) { + length = null; + } + + // Set source to object. + source = object; + action = /*#__PURE__*/function () { + var _ref = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + var _i, _blobParts, part; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _i = 0, _blobParts = blobParts; + case 1: + if (!(_i < _blobParts.length)) { + _context2.next = 12; + break; + } + part = _blobParts[_i]; + if (!part.stream) { + _context2.next = 7; + break; + } + return _context2.delegateYield(_asyncGeneratorDelegate(_asyncIterator(part.stream()), _awaitAsyncGenerator), "t0", 5); + case 5: + _context2.next = 9; + break; + case 7: + _context2.next = 9; + return part; + case 9: + _i++; + _context2.next = 1; + break; + case 12: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return function action() { + return _ref.apply(this, arguments); + }; + }(); + + // Set type to `multipart/form-data; boundary=`, + // followed by the multipart/form-data boundary string generated + // by the multipart/form-data encoding algorithm. + type = 'multipart/form-data; boundary=' + boundary; + } else if (isBlobLike(object)) { + // Blob + + // Set source to object. + source = object; + + // Set length to object’s size. + length = object.size; + + // If object’s type attribute is not the empty byte sequence, set + // type to its value. + if (object.type) { + type = object.type; + } + } else if (typeof object[Symbol.asyncIterator] === 'function') { + // If keepalive is true, then throw a TypeError. + if (keepalive) { + throw new TypeError('keepalive'); + } + + // If object is disturbed or locked, then throw a TypeError. + if (util.isDisturbed(object) || object.locked) { + throw new TypeError('Response body object should not be disturbed or locked'); + } + stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); + } + + // 11. If source is a byte sequence, then set action to a + // step that returns source and length to source’s length. + if (typeof source === 'string' || util.isBuffer(source)) { + length = Buffer.byteLength(source); + } + + // 12. If action is non-null, then run these steps in in parallel: + if (action != null) { + // Run action. + var iterator; + stream = new ReadableStream({ + start: function start() { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + iterator = action(object)[Symbol.asyncIterator](); + case 1: + case "end": + return _context3.stop(); + } + }, _callee3); + }))(); + }, + pull: function pull(controller) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() { + var _yield$iterator$next, value, done; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return iterator.next(); + case 2: + _yield$iterator$next = _context4.sent; + value = _yield$iterator$next.value; + done = _yield$iterator$next.done; + if (done) { + // When running action is done, close stream. + queueMicrotask(function () { + controller.close(); + }); + } else { + // Whenever one or more bytes are available and stream is not errored, + // enqueue a Uint8Array wrapping an ArrayBuffer containing the available + // bytes into stream. + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)); + } + } + return _context4.abrupt("return", controller.desiredSize > 0); + case 7: + case "end": + return _context4.stop(); + } + }, _callee4); + }))(); + }, + cancel: function cancel(reason) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() { + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + _context5.next = 2; + return iterator["return"](); + case 2: + case "end": + return _context5.stop(); + } + }, _callee5); + }))(); + }, + type: undefined + }); + } + + // 13. Let body be a body whose stream is stream, source is source, + // and length is length. + var body = { + stream: stream, + source: source, + length: length + }; + + // 14. Return (body, type). + return [body, type]; +} + +// https://fetch.spec.whatwg.org/#bodyinit-safely-extract +function safelyExtractBody(object) { + var keepalive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + if (!ReadableStream) { + // istanbul ignore next + ReadableStream = (__webpack_require__(3774).ReadableStream); + } + + // To safely extract a body and a `Content-Type` value from + // a byte sequence or BodyInit object object, run these steps: + + // 1. If object is a ReadableStream object, then: + if (object instanceof ReadableStream) { + // Assert: object is neither disturbed nor locked. + // istanbul ignore next + assert(!util.isDisturbed(object), 'The body has already been consumed.'); + // istanbul ignore next + assert(!object.locked, 'The stream is locked.'); + } + + // 2. Return the results of extracting object. + return extractBody(object, keepalive); +} +function cloneBody(body) { + // To clone a body body, run these steps: + + // https://fetch.spec.whatwg.org/#concept-body-clone + + // 1. Let « out1, out2 » be the result of teeing body’s stream. + var _body$stream$tee = body.stream.tee(), + _body$stream$tee2 = _slicedToArray(_body$stream$tee, 2), + out1 = _body$stream$tee2[0], + out2 = _body$stream$tee2[1]; + var out2Clone = structuredClone(out2, { + transfer: [out2] + }); + // This, for whatever reasons, unrefs out2Clone which allows + // the process to exit by itself. + var _out2Clone$tee = out2Clone.tee(), + _out2Clone$tee2 = _slicedToArray(_out2Clone$tee, 2), + finalClone = _out2Clone$tee2[1]; + + // 2. Set body’s stream to out1. + body.stream = out1; + + // 3. Return a body whose stream is out2 and other members are copied from body. + return { + stream: finalClone, + length: body.length, + source: body.source + }; +} +function consumeBody(_x) { + return _consumeBody.apply(this, arguments); +} +function _consumeBody() { + _consumeBody = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(body) { + var stream; + return _regeneratorRuntime().wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + if (!body) { + _context6.next = 13; + break; + } + if (!isUint8Array(body)) { + _context6.next = 6; + break; + } + _context6.next = 4; + return body; + case 4: + _context6.next = 13; + break; + case 6: + stream = body.stream; + if (!util.isDisturbed(stream)) { + _context6.next = 9; + break; + } + throw new TypeError('The body has already been consumed.'); + case 9: + if (!stream.locked) { + _context6.next = 11; + break; + } + throw new TypeError('The stream is locked.'); + case 11: + // Compat. + stream[kBodyUsed] = true; + return _context6.delegateYield(_asyncGeneratorDelegate(_asyncIterator(stream), _awaitAsyncGenerator), "t0", 13); + case 13: + case "end": + return _context6.stop(); + } + }, _callee6); + })); + return _consumeBody.apply(this, arguments); +} +function throwIfAborted(state) { + if (state.aborted) { + throw new DOMException('The operation was aborted.', 'AbortError'); + } +} +function bodyMixinMethods(instance) { + var methods = { + blob: function blob() { + var _this = this; + // The blob() method steps are to return the result of + // running consume body with this and the following step + // given a byte sequence bytes: return a Blob whose + // contents are bytes and whose type attribute is this’s + // MIME type. + return specConsumeBody(this, function (bytes) { + var mimeType = bodyMimeType(_this); + if (mimeType === 'failure') { + mimeType = ''; + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType); + } + + // Return a Blob whose contents are bytes and type attribute + // is mimeType. + return new Blob([bytes], { + type: mimeType + }); + }, instance); + }, + arrayBuffer: function arrayBuffer() { + // The arrayBuffer() method steps are to return the result + // of running consume body with this and the following step + // given a byte sequence bytes: return a new ArrayBuffer + // whose contents are bytes. + return specConsumeBody(this, function (bytes) { + return new Uint8Array(bytes).buffer; + }, instance); + }, + text: function text() { + // The text() method steps are to return the result of running + // consume body with this and UTF-8 decode. + return specConsumeBody(this, utf8DecodeBytes, instance); + }, + json: function json() { + // The json() method steps are to return the result of running + // consume body with this and parse JSON from bytes. + return specConsumeBody(this, parseJSONFromBytes, instance); + }, + formData: function formData() { + var _this2 = this; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() { + var contentType, headers, _iterator4, _step4, _step4$value, key, value, responseFormData, busboy, busboyResolve, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, entries, text, streamingDecoder, _iteratorAbruptCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _chunk3, formData, _iterator5, _step5, _step5$value, name, _value; + return _regeneratorRuntime().wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + webidl.brandCheck(_this2, instance); + throwIfAborted(_this2[kState]); + contentType = _this2.headers.get('Content-Type'); // If mimeType’s essence is "multipart/form-data", then: + if (!/multipart\/form-data/.test(contentType)) { + _context7.next = 53; + break; + } + headers = {}; + _iterator4 = _createForOfIteratorHelper(_this2.headers); + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + _step4$value = _slicedToArray(_step4.value, 2), key = _step4$value[0], value = _step4$value[1]; + headers[key.toLowerCase()] = value; + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + responseFormData = new FormData(); + _context7.prev = 8; + busboy = new Busboy({ + headers: headers, + preservePath: true + }); + _context7.next = 15; + break; + case 12: + _context7.prev = 12; + _context7.t0 = _context7["catch"](8); + throw new DOMException("".concat(_context7.t0), 'AbortError'); + case 15: + busboy.on('field', function (name, value) { + responseFormData.append(name, value); + }); + busboy.on('file', function (name, value, filename, encoding, mimeType) { + var chunks = []; + if (encoding === 'base64' || encoding.toLowerCase() === 'base64') { + var base64chunk = ''; + value.on('data', function (chunk) { + base64chunk += chunk.toString().replace(/[\r\n]/gm, ''); + var end = base64chunk.length - base64chunk.length % 4; + chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64')); + base64chunk = base64chunk.slice(end); + }); + value.on('end', function () { + chunks.push(Buffer.from(base64chunk, 'base64')); + responseFormData.append(name, new File(chunks, filename, { + type: mimeType + })); + }); + } else { + value.on('data', function (chunk) { + chunks.push(chunk); + }); + value.on('end', function () { + responseFormData.append(name, new File(chunks, filename, { + type: mimeType + })); + }); + } + }); + busboyResolve = new Promise(function (resolve, reject) { + busboy.on('finish', resolve); + busboy.on('error', function (err) { + return reject(new TypeError(err)); + }); + }); + if (!(_this2.body !== null)) { + _context7.next = 47; + break; + } + _iteratorAbruptCompletion = false; + _didIteratorError = false; + _context7.prev = 21; + _iterator = _asyncIterator(consumeBody(_this2[kState].body)); + case 23: + _context7.next = 25; + return _iterator.next(); + case 25: + if (!(_iteratorAbruptCompletion = !(_step = _context7.sent).done)) { + _context7.next = 31; + break; + } + chunk = _step.value; + busboy.write(chunk); + case 28: + _iteratorAbruptCompletion = false; + _context7.next = 23; + break; + case 31: + _context7.next = 37; + break; + case 33: + _context7.prev = 33; + _context7.t1 = _context7["catch"](21); + _didIteratorError = true; + _iteratorError = _context7.t1; + case 37: + _context7.prev = 37; + _context7.prev = 38; + if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) { + _context7.next = 42; + break; + } + _context7.next = 42; + return _iterator["return"](); + case 42: + _context7.prev = 42; + if (!_didIteratorError) { + _context7.next = 45; + break; + } + throw _iteratorError; + case 45: + return _context7.finish(42); + case 46: + return _context7.finish(37); + case 47: + busboy.end(); + _context7.next = 50; + return busboyResolve; + case 50: + return _context7.abrupt("return", responseFormData); + case 53: + if (!/application\/x-www-form-urlencoded/.test(contentType)) { + _context7.next = 100; + break; + } + _context7.prev = 54; + text = ''; // application/x-www-form-urlencoded parser will keep the BOM. + // https://url.spec.whatwg.org/#concept-urlencoded-parser + // Note that streaming decoder is stateful and cannot be reused + streamingDecoder = new TextDecoder('utf-8', { + ignoreBOM: true + }); + _iteratorAbruptCompletion2 = false; + _didIteratorError2 = false; + _context7.prev = 59; + _iterator2 = _asyncIterator(consumeBody(_this2[kState].body)); + case 61: + _context7.next = 63; + return _iterator2.next(); + case 63: + if (!(_iteratorAbruptCompletion2 = !(_step2 = _context7.sent).done)) { + _context7.next = 71; + break; + } + _chunk3 = _step2.value; + if (isUint8Array(_chunk3)) { + _context7.next = 67; + break; + } + throw new TypeError('Expected Uint8Array chunk'); + case 67: + text += streamingDecoder.decode(_chunk3, { + stream: true + }); + case 68: + _iteratorAbruptCompletion2 = false; + _context7.next = 61; + break; + case 71: + _context7.next = 77; + break; + case 73: + _context7.prev = 73; + _context7.t2 = _context7["catch"](59); + _didIteratorError2 = true; + _iteratorError2 = _context7.t2; + case 77: + _context7.prev = 77; + _context7.prev = 78; + if (!(_iteratorAbruptCompletion2 && _iterator2["return"] != null)) { + _context7.next = 82; + break; + } + _context7.next = 82; + return _iterator2["return"](); + case 82: + _context7.prev = 82; + if (!_didIteratorError2) { + _context7.next = 85; + break; + } + throw _iteratorError2; + case 85: + return _context7.finish(82); + case 86: + return _context7.finish(77); + case 87: + text += streamingDecoder.decode(); + entries = new URLSearchParams(text); + _context7.next = 94; + break; + case 91: + _context7.prev = 91; + _context7.t3 = _context7["catch"](54); + throw Object.assign(new TypeError(), { + cause: _context7.t3 + }); + case 94: + // 3. Return a new FormData object whose entries are entries. + formData = new FormData(); + _iterator5 = _createForOfIteratorHelper(entries); + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + _step5$value = _slicedToArray(_step5.value, 2), name = _step5$value[0], _value = _step5$value[1]; + formData.append(name, _value); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + return _context7.abrupt("return", formData); + case 100: + _context7.next = 102; + return Promise.resolve(); + case 102: + throwIfAborted(_this2[kState]); + + // Otherwise, throw a TypeError. + throw webidl.errors.exception({ + header: "".concat(instance.name, ".formData"), + message: 'Could not parse content as FormData.' + }); + case 104: + case "end": + return _context7.stop(); + } + }, _callee7, null, [[8, 12], [21, 33, 37, 47], [38,, 42, 46], [54, 91], [59, 73, 77, 87], [78,, 82, 86]]); + }))(); + } + }; + return methods; +} +function mixinBody(prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)); +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-consume-body + * @param {Response|Request} object + * @param {(value: unknown) => unknown} convertBytesToJSValue + * @param {Response|Request} instance + */ +function specConsumeBody(_x2, _x3, _x4) { + return _specConsumeBody.apply(this, arguments); +} // https://fetch.spec.whatwg.org/#body-unusable +function _specConsumeBody() { + _specConsumeBody = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(object, convertBytesToJSValue, instance) { + var promise, errorSteps, successSteps; + return _regeneratorRuntime().wrap(function _callee8$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + webidl.brandCheck(object, instance); + throwIfAborted(object[kState]); + + // 1. If object is unusable, then return a promise rejected + // with a TypeError. + if (!bodyUnusable(object[kState].body)) { + _context8.next = 4; + break; + } + throw new TypeError('Body is unusable'); + case 4: + // 2. Let promise be a new promise. + promise = createDeferredPromise(); // 3. Let errorSteps given error be to reject promise with error. + errorSteps = function errorSteps(error) { + return promise.reject(error); + }; // 4. Let successSteps given a byte sequence data be to resolve + // promise with the result of running convertBytesToJSValue + // with data. If that threw an exception, then run errorSteps + // with that exception. + successSteps = function successSteps(data) { + try { + promise.resolve(convertBytesToJSValue(data)); + } catch (e) { + errorSteps(e); + } + }; // 5. If object’s body is null, then run successSteps with an + // empty byte sequence. + if (!(object[kState].body == null)) { + _context8.next = 10; + break; + } + successSteps(new Uint8Array()); + return _context8.abrupt("return", promise.promise); + case 10: + _context8.next = 12; + return fullyReadBody(object[kState].body, successSteps, errorSteps); + case 12: + return _context8.abrupt("return", promise.promise); + case 13: + case "end": + return _context8.stop(); + } + }, _callee8); + })); + return _specConsumeBody.apply(this, arguments); +} +function bodyUnusable(body) { + // An object including the Body interface mixin is + // said to be unusable if its body is non-null and + // its body’s stream is disturbed or locked. + return body != null && (body.stream.locked || util.isDisturbed(body.stream)); +} + +/** + * @see https://encoding.spec.whatwg.org/#utf-8-decode + * @param {Buffer} buffer + */ +function utf8DecodeBytes(buffer) { + if (buffer.length === 0) { + return ''; + } + + // 1. Let buffer be the result of peeking three bytes from + // ioQueue, converted to a byte sequence. + + // 2. If buffer is 0xEF 0xBB 0xBF, then read three + // bytes from ioQueue. (Do nothing with those bytes.) + if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { + buffer = buffer.subarray(3); + } + + // 3. Process a queue with an instance of UTF-8’s + // decoder, ioQueue, output, and "replacement". + var output = textDecoder.decode(buffer); + + // 4. Return output. + return output; +} + +/** + * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value + * @param {Uint8Array} bytes + */ +function parseJSONFromBytes(bytes) { + return JSON.parse(utf8DecodeBytes(bytes)); +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-mime-type + * @param {import('./response').Response|import('./request').Request} object + */ +function bodyMimeType(object) { + var headersList = object[kState].headersList; + var contentType = headersList.get('content-type'); + if (contentType === null) { + return 'failure'; + } + return parseMIMEType(contentType); +} +module.exports = { + extractBody: extractBody, + safelyExtractBody: safelyExtractBody, + cloneBody: cloneBody, + mixinBody: mixinBody +}; + +/***/ }), + +/***/ 8422: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _globalThis$DOMExcept, _globalThis$structure; +var _require = __webpack_require__(8167), + MessageChannel = _require.MessageChannel, + receiveMessageOnPort = _require.receiveMessageOnPort; +var corsSafeListedMethods = ['GET', 'HEAD', 'POST']; +var corsSafeListedMethodsSet = new Set(corsSafeListedMethods); +var nullBodyStatus = [101, 204, 205, 304]; +var redirectStatus = [301, 302, 303, 307, 308]; +var redirectStatusSet = new Set(redirectStatus); + +// https://fetch.spec.whatwg.org/#block-bad-port +var badPorts = ['1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697', '10080']; +var badPortsSet = new Set(badPorts); + +// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies +var referrerPolicy = ['', 'no-referrer', 'no-referrer-when-downgrade', 'same-origin', 'origin', 'strict-origin', 'origin-when-cross-origin', 'strict-origin-when-cross-origin', 'unsafe-url']; +var referrerPolicySet = new Set(referrerPolicy); +var requestRedirect = ['follow', 'manual', 'error']; +var safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']; +var safeMethodsSet = new Set(safeMethods); +var requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']; +var requestCredentials = ['omit', 'same-origin', 'include']; +var requestCache = ['default', 'no-store', 'reload', 'no-cache', 'force-cache', 'only-if-cached']; + +// https://fetch.spec.whatwg.org/#request-body-header-name +var requestBodyHeader = ['content-encoding', 'content-language', 'content-location', 'content-type', +// See https://github.com/nodejs/undici/issues/2021 +// 'Content-Length' is a forbidden header name, which is typically +// removed in the Headers implementation. However, undici doesn't +// filter out headers, so we add it here. +'content-length']; + +// https://fetch.spec.whatwg.org/#enumdef-requestduplex +var requestDuplex = ['half']; + +// http://fetch.spec.whatwg.org/#forbidden-method +var forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']; +var forbiddenMethodsSet = new Set(forbiddenMethods); +var subresource = ['audio', 'audioworklet', 'font', 'image', 'manifest', 'paintworklet', 'script', 'style', 'track', 'video', 'xslt', '']; +var subresourceSet = new Set(subresource); + +/** @type {globalThis['DOMException']} */ +var DOMException = (_globalThis$DOMExcept = globalThis.DOMException) !== null && _globalThis$DOMExcept !== void 0 ? _globalThis$DOMExcept : function () { + // DOMException was only made a global in Node v17.0.0, + // but fetch supports >= v16.8. + try { + atob('~'); + } catch (err) { + return Object.getPrototypeOf(err).constructor; + } +}(); +var channel; + +/** @type {globalThis['structuredClone']} */ +var structuredClone = (_globalThis$structure = globalThis.structuredClone) !== null && _globalThis$structure !== void 0 ? _globalThis$structure : +// https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js +// structuredClone was added in v17.0.0, but fetch supports v16.8 +function structuredClone(value) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + if (arguments.length === 0) { + throw new TypeError('missing argument'); + } + if (!channel) { + channel = new MessageChannel(); + } + channel.port1.unref(); + channel.port2.unref(); + channel.port1.postMessage(value, options === null || options === void 0 ? void 0 : options.transfer); + return receiveMessageOnPort(channel.port2).message; +}; +module.exports = { + DOMException: DOMException, + structuredClone: structuredClone, + subresource: subresource, + forbiddenMethods: forbiddenMethods, + requestBodyHeader: requestBodyHeader, + referrerPolicy: referrerPolicy, + requestRedirect: requestRedirect, + requestMode: requestMode, + requestCredentials: requestCredentials, + requestCache: requestCache, + redirectStatus: redirectStatus, + corsSafeListedMethods: corsSafeListedMethods, + nullBodyStatus: nullBodyStatus, + safeMethods: safeMethods, + badPorts: badPorts, + requestDuplex: requestDuplex, + subresourceSet: subresourceSet, + badPortsSet: badPortsSet, + redirectStatusSet: redirectStatusSet, + corsSafeListedMethodsSet: corsSafeListedMethodsSet, + safeMethodsSet: safeMethodsSet, + forbiddenMethodsSet: forbiddenMethodsSet, + referrerPolicySet: referrerPolicySet +}; + +/***/ }), + +/***/ 9738: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var assert = __webpack_require__(2613); +var _require = __webpack_require__(181), + atob = _require.atob; +var _require2 = __webpack_require__(1035), + isomorphicDecode = _require2.isomorphicDecode; +var encoder = new TextEncoder(); + +/** + * @see https://mimesniff.spec.whatwg.org/#http-token-code-point + */ +var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/; +var HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/; // eslint-disable-line +/** + * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point + */ +var HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/; // eslint-disable-line + +// https://fetch.spec.whatwg.org/#data-url-processor +/** @param {URL} dataURL */ +function dataURLProcessor(dataURL) { + // 1. Assert: dataURL’s scheme is "data". + assert(dataURL.protocol === 'data:'); + + // 2. Let input be the result of running the URL + // serializer on dataURL with exclude fragment + // set to true. + var input = URLSerializer(dataURL, true); + + // 3. Remove the leading "data:" string from input. + input = input.slice(5); + + // 4. Let position point at the start of input. + var position = { + position: 0 + }; + + // 5. Let mimeType be the result of collecting a + // sequence of code points that are not equal + // to U+002C (,), given position. + var mimeType = collectASequenceOfCodePointsFast(',', input, position); + + // 6. Strip leading and trailing ASCII whitespace + // from mimeType. + // Undici implementation note: we need to store the + // length because if the mimetype has spaces removed, + // the wrong amount will be sliced from the input in + // step #9 + var mimeTypeLength = mimeType.length; + mimeType = removeASCIIWhitespace(mimeType, true, true); + + // 7. If position is past the end of input, then + // return failure + if (position.position >= input.length) { + return 'failure'; + } + + // 8. Advance position by 1. + position.position++; + + // 9. Let encodedBody be the remainder of input. + var encodedBody = input.slice(mimeTypeLength + 1); + + // 10. Let body be the percent-decoding of encodedBody. + var body = stringPercentDecode(encodedBody); + + // 11. If mimeType ends with U+003B (;), followed by + // zero or more U+0020 SPACE, followed by an ASCII + // case-insensitive match for "base64", then: + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + // 1. Let stringBody be the isomorphic decode of body. + var stringBody = isomorphicDecode(body); + + // 2. Set body to the forgiving-base64 decode of + // stringBody. + body = forgivingBase64(stringBody); + + // 3. If body is failure, then return failure. + if (body === 'failure') { + return 'failure'; + } + + // 4. Remove the last 6 code points from mimeType. + mimeType = mimeType.slice(0, -6); + + // 5. Remove trailing U+0020 SPACE code points from mimeType, + // if any. + mimeType = mimeType.replace(/(\u0020)+$/, ''); + + // 6. Remove the last U+003B (;) code point from mimeType. + mimeType = mimeType.slice(0, -1); + } + + // 12. If mimeType starts with U+003B (;), then prepend + // "text/plain" to mimeType. + if (mimeType.startsWith(';')) { + mimeType = 'text/plain' + mimeType; + } + + // 13. Let mimeTypeRecord be the result of parsing + // mimeType. + var mimeTypeRecord = parseMIMEType(mimeType); + + // 14. If mimeTypeRecord is failure, then set + // mimeTypeRecord to text/plain;charset=US-ASCII. + if (mimeTypeRecord === 'failure') { + mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII'); + } + + // 15. Return a new data: URL struct whose MIME + // type is mimeTypeRecord and body is body. + // https://fetch.spec.whatwg.org/#data-url-struct + return { + mimeType: mimeTypeRecord, + body: body + }; +} + +// https://url.spec.whatwg.org/#concept-url-serializer +/** + * @param {URL} url + * @param {boolean} excludeFragment + */ +function URLSerializer(url) { + var excludeFragment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + if (!excludeFragment) { + return url.href; + } + var href = url.href; + var hashLength = url.hash.length; + return hashLength === 0 ? href : href.substring(0, href.length - hashLength); +} + +// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points +/** + * @param {(char: string) => boolean} condition + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePoints(condition, input, position) { + // 1. Let result be the empty string. + var result = ''; + + // 2. While position doesn’t point past the end of input and the + // code point at position within input meets the condition condition: + while (position.position < input.length && condition(input[position.position])) { + // 1. Append that code point to the end of result. + result += input[position.position]; + + // 2. Advance position by 1. + position.position++; + } + + // 3. Return result. + return result; +} + +/** + * A faster collectASequenceOfCodePoints that only works when comparing a single character. + * @param {string} char + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePointsFast(_char, input, position) { + var idx = input.indexOf(_char, position.position); + var start = position.position; + if (idx === -1) { + position.position = input.length; + return input.slice(start); + } + position.position = idx; + return input.slice(start, position.position); +} + +// https://url.spec.whatwg.org/#string-percent-decode +/** @param {string} input */ +function stringPercentDecode(input) { + // 1. Let bytes be the UTF-8 encoding of input. + var bytes = encoder.encode(input); + + // 2. Return the percent-decoding of bytes. + return percentDecode(bytes); +} + +// https://url.spec.whatwg.org/#percent-decode +/** @param {Uint8Array} input */ +function percentDecode(input) { + // 1. Let output be an empty byte sequence. + /** @type {number[]} */ + var output = []; + + // 2. For each byte byte in input: + for (var i = 0; i < input.length; i++) { + var _byte = input[i]; + + // 1. If byte is not 0x25 (%), then append byte to output. + if (_byte !== 0x25) { + output.push(_byte); + + // 2. Otherwise, if byte is 0x25 (%) and the next two bytes + // after byte in input are not in the ranges + // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), + // and 0x61 (a) to 0x66 (f), all inclusive, append byte + // to output. + } else if (_byte === 0x25 && !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))) { + output.push(0x25); + + // 3. Otherwise: + } else { + // 1. Let bytePoint be the two bytes after byte in input, + // decoded, and then interpreted as hexadecimal number. + var nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); + var bytePoint = Number.parseInt(nextTwoBytes, 16); + + // 2. Append a byte whose value is bytePoint to output. + output.push(bytePoint); + + // 3. Skip the next two bytes in input. + i += 2; + } + } + + // 3. Return output. + return Uint8Array.from(output); +} + +// https://mimesniff.spec.whatwg.org/#parse-a-mime-type +/** @param {string} input */ +function parseMIMEType(input) { + // 1. Remove any leading and trailing HTTP whitespace + // from input. + input = removeHTTPWhitespace(input, true, true); + + // 2. Let position be a position variable for input, + // initially pointing at the start of input. + var position = { + position: 0 + }; + + // 3. Let type be the result of collecting a sequence + // of code points that are not U+002F (/) from + // input, given position. + var type = collectASequenceOfCodePointsFast('/', input, position); + + // 4. If type is the empty string or does not solely + // contain HTTP token code points, then return failure. + // https://mimesniff.spec.whatwg.org/#http-token-code-point + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return 'failure'; + } + + // 5. If position is past the end of input, then return + // failure + if (position.position > input.length) { + return 'failure'; + } + + // 6. Advance position by 1. (This skips past U+002F (/).) + position.position++; + + // 7. Let subtype be the result of collecting a sequence of + // code points that are not U+003B (;) from input, given + // position. + var subtype = collectASequenceOfCodePointsFast(';', input, position); + + // 8. Remove any trailing HTTP whitespace from subtype. + subtype = removeHTTPWhitespace(subtype, false, true); + + // 9. If subtype is the empty string or does not solely + // contain HTTP token code points, then return failure. + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return 'failure'; + } + var typeLowercase = type.toLowerCase(); + var subtypeLowercase = subtype.toLowerCase(); + + // 10. Let mimeType be a new MIME type record whose type + // is type, in ASCII lowercase, and subtype is subtype, + // in ASCII lowercase. + // https://mimesniff.spec.whatwg.org/#mime-type + var mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: "".concat(typeLowercase, "/").concat(subtypeLowercase) + }; + + // 11. While position is not past the end of input: + while (position.position < input.length) { + // 1. Advance position by 1. (This skips past U+003B (;).) + position.position++; + + // 2. Collect a sequence of code points that are HTTP + // whitespace from input given position. + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + function (_char2) { + return HTTP_WHITESPACE_REGEX.test(_char2); + }, input, position); + + // 3. Let parameterName be the result of collecting a + // sequence of code points that are not U+003B (;) + // or U+003D (=) from input, given position. + var parameterName = collectASequenceOfCodePoints(function (_char3) { + return _char3 !== ';' && _char3 !== '='; + }, input, position); + + // 4. Set parameterName to parameterName, in ASCII + // lowercase. + parameterName = parameterName.toLowerCase(); + + // 5. If position is not past the end of input, then: + if (position.position < input.length) { + // 1. If the code point at position within input is + // U+003B (;), then continue. + if (input[position.position] === ';') { + continue; + } + + // 2. Advance position by 1. (This skips past U+003D (=).) + position.position++; + } + + // 6. If position is past the end of input, then break. + if (position.position > input.length) { + break; + } + + // 7. Let parameterValue be null. + var parameterValue = null; + + // 8. If the code point at position within input is + // U+0022 ("), then: + if (input[position.position] === '"') { + // 1. Set parameterValue to the result of collecting + // an HTTP quoted string from input, given position + // and the extract-value flag. + parameterValue = collectAnHTTPQuotedString(input, position, true); + + // 2. Collect a sequence of code points that are not + // U+003B (;) from input, given position. + collectASequenceOfCodePointsFast(';', input, position); + + // 9. Otherwise: + } else { + // 1. Set parameterValue to the result of collecting + // a sequence of code points that are not U+003B (;) + // from input, given position. + parameterValue = collectASequenceOfCodePointsFast(';', input, position); + + // 2. Remove any trailing HTTP whitespace from parameterValue. + parameterValue = removeHTTPWhitespace(parameterValue, false, true); + + // 3. If parameterValue is the empty string, then continue. + if (parameterValue.length === 0) { + continue; + } + } + + // 10. If all of the following are true + // - parameterName is not the empty string + // - parameterName solely contains HTTP token code points + // - parameterValue solely contains HTTP quoted-string token code points + // - mimeType’s parameters[parameterName] does not exist + // then set mimeType’s parameters[parameterName] to parameterValue. + if (parameterName.length !== 0 && HTTP_TOKEN_CODEPOINTS.test(parameterName) && (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && !mimeType.parameters.has(parameterName)) { + mimeType.parameters.set(parameterName, parameterValue); + } + } + + // 12. Return mimeType. + return mimeType; +} + +// https://infra.spec.whatwg.org/#forgiving-base64-decode +/** @param {string} data */ +function forgivingBase64(data) { + // 1. Remove all ASCII whitespace from data. + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ''); // eslint-disable-line + + // 2. If data’s code point length divides by 4 leaving + // no remainder, then: + if (data.length % 4 === 0) { + // 1. If data ends with one or two U+003D (=) code points, + // then remove them from data. + data = data.replace(/=?=$/, ''); + } + + // 3. If data’s code point length divides by 4 leaving + // a remainder of 1, then return failure. + if (data.length % 4 === 1) { + return 'failure'; + } + + // 4. If data contains a code point that is not one of + // U+002B (+) + // U+002F (/) + // ASCII alphanumeric + // then return failure. + if (/[^+/0-9A-Za-z]/.test(data)) { + return 'failure'; + } + var binary = atob(data); + var bytes = new Uint8Array(binary.length); + for (var _byte2 = 0; _byte2 < binary.length; _byte2++) { + bytes[_byte2] = binary.charCodeAt(_byte2); + } + return bytes; +} + +// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string +// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string +/** + * @param {string} input + * @param {{ position: number }} position + * @param {boolean?} extractValue + */ +function collectAnHTTPQuotedString(input, position, extractValue) { + // 1. Let positionStart be position. + var positionStart = position.position; + + // 2. Let value be the empty string. + var value = ''; + + // 3. Assert: the code point at position within input + // is U+0022 ("). + assert(input[position.position] === '"'); + + // 4. Advance position by 1. + position.position++; + + // 5. While true: + while (true) { + // 1. Append the result of collecting a sequence of code points + // that are not U+0022 (") or U+005C (\) from input, given + // position, to value. + value += collectASequenceOfCodePoints(function (_char4) { + return _char4 !== '"' && _char4 !== '\\'; + }, input, position); + + // 2. If position is past the end of input, then break. + if (position.position >= input.length) { + break; + } + + // 3. Let quoteOrBackslash be the code point at position within + // input. + var quoteOrBackslash = input[position.position]; + + // 4. Advance position by 1. + position.position++; + + // 5. If quoteOrBackslash is U+005C (\), then: + if (quoteOrBackslash === '\\') { + // 1. If position is past the end of input, then append + // U+005C (\) to value and break. + if (position.position >= input.length) { + value += '\\'; + break; + } + + // 2. Append the code point at position within input to value. + value += input[position.position]; + + // 3. Advance position by 1. + position.position++; + + // 6. Otherwise: + } else { + // 1. Assert: quoteOrBackslash is U+0022 ("). + assert(quoteOrBackslash === '"'); + + // 2. Break. + break; + } + } + + // 6. If the extract-value flag is set, then return value. + if (extractValue) { + return value; + } + + // 7. Return the code points from positionStart to position, + // inclusive, within input. + return input.slice(positionStart, position.position); +} + +/** + * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type + */ +function serializeAMimeType(mimeType) { + assert(mimeType !== 'failure'); + var parameters = mimeType.parameters, + essence = mimeType.essence; + + // 1. Let serialization be the concatenation of mimeType’s + // type, U+002F (/), and mimeType’s subtype. + var serialization = essence; + + // 2. For each name → value of mimeType’s parameters: + var _iterator = _createForOfIteratorHelper(parameters.entries()), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _slicedToArray(_step.value, 2), + name = _step$value[0], + value = _step$value[1]; + // 1. Append U+003B (;) to serialization. + serialization += ';'; + + // 2. Append name to serialization. + serialization += name; + + // 3. Append U+003D (=) to serialization. + serialization += '='; + + // 4. If value does not solely contain HTTP token code + // points or value is the empty string, then: + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + // 1. Precede each occurence of U+0022 (") or + // U+005C (\) in value with U+005C (\). + value = value.replace(/(\\|")/g, '\\$1'); + + // 2. Prepend U+0022 (") to value. + value = '"' + value; + + // 3. Append U+0022 (") to value. + value += '"'; + } + + // 5. Append value to serialization. + serialization += value; + } + + // 3. Return serialization. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return serialization; +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} char + */ +function isHTTPWhiteSpace(_char5) { + return _char5 === '\r' || _char5 === '\n' || _char5 === '\t' || _char5 === ' '; +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} str + */ +function removeHTTPWhitespace(str) { + var leading = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var trailing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var lead = 0; + var trail = str.length - 1; + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); + } + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); + } + return str.slice(lead, trail + 1); +} + +/** + * @see https://infra.spec.whatwg.org/#ascii-whitespace + * @param {string} char + */ +function isASCIIWhitespace(_char6) { + return _char6 === '\r' || _char6 === '\n' || _char6 === '\t' || _char6 === '\f' || _char6 === ' '; +} + +/** + * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace + */ +function removeASCIIWhitespace(str) { + var leading = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var trailing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var lead = 0; + var trail = str.length - 1; + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); + } + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); + } + return str.slice(lead, trail + 1); +} +module.exports = { + dataURLProcessor: dataURLProcessor, + URLSerializer: URLSerializer, + collectASequenceOfCodePoints: collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast: collectASequenceOfCodePointsFast, + stringPercentDecode: stringPercentDecode, + parseMIMEType: parseMIMEType, + collectAnHTTPQuotedString: collectAnHTTPQuotedString, + serializeAMimeType: serializeAMimeType +}; + +/***/ }), + +/***/ 1049: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _defineProperty = (__webpack_require__(3693)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(181), + Blob = _require.Blob, + NativeFile = _require.File; +var _require2 = __webpack_require__(9023), + types = _require2.types; +var _require3 = __webpack_require__(6614), + kState = _require3.kState; +var _require4 = __webpack_require__(1035), + isBlobLike = _require4.isBlobLike; +var _require5 = __webpack_require__(3702), + webidl = _require5.webidl; +var _require6 = __webpack_require__(9738), + parseMIMEType = _require6.parseMIMEType, + serializeAMimeType = _require6.serializeAMimeType; +var _require7 = __webpack_require__(6632), + kEnumerableProperty = _require7.kEnumerableProperty; +var encoder = new TextEncoder(); +var File = /*#__PURE__*/function (_Blob) { + function File(fileBits, fileName) { + var _this; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + _classCallCheck(this, File); + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + webidl.argumentLengthCheck(arguments, 2, { + header: 'File constructor' + }); + fileBits = webidl.converters['sequence'](fileBits); + fileName = webidl.converters.USVString(fileName); + options = webidl.converters.FilePropertyBag(options); + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + // Note: Blob handles this for us + + // 2. Let n be the fileName argument to the constructor. + var n = fileName; + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // 2. Convert every character in t to ASCII lowercase. + var t = options.type; + var d; + + // eslint-disable-next-line no-labels + substep: { + if (t) { + t = parseMIMEType(t); + if (t === 'failure') { + t = ''; + // eslint-disable-next-line no-labels + break substep; + } + t = serializeAMimeType(t).toLowerCase(); + } + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + d = options.lastModified; + } + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + _this = _callSuper(this, File, [processBlobParts(fileBits, options), { + type: t + }]); + _this[kState] = { + name: n, + lastModified: d, + type: t + }; + return _this; + } + _inherits(File, _Blob); + return _createClass(File, [{ + key: "name", + get: function get() { + webidl.brandCheck(this, File); + return this[kState].name; + } + }, { + key: "lastModified", + get: function get() { + webidl.brandCheck(this, File); + return this[kState].lastModified; + } + }, { + key: "type", + get: function get() { + webidl.brandCheck(this, File); + return this[kState].type; + } + }]); +}(Blob); +var FileLike = /*#__PURE__*/function () { + function FileLike(blobLike, fileName) { + var _options$lastModified; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + _classCallCheck(this, FileLike); + // TODO: argument idl type check + + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + + // 2. Let n be the fileName argument to the constructor. + var n = fileName; + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // TODO + var t = options.type; + + // 2. Convert every character in t to ASCII lowercase. + // TODO + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + var d = (_options$lastModified = options.lastModified) !== null && _options$lastModified !== void 0 ? _options$lastModified : Date.now(); + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + this[kState] = { + blobLike: blobLike, + name: n, + type: t, + lastModified: d + }; + } + return _createClass(FileLike, [{ + key: "stream", + value: function stream() { + var _this$kState$blobLike; + webidl.brandCheck(this, FileLike); + return (_this$kState$blobLike = this[kState].blobLike).stream.apply(_this$kState$blobLike, arguments); + } + }, { + key: "arrayBuffer", + value: function arrayBuffer() { + var _this$kState$blobLike2; + webidl.brandCheck(this, FileLike); + return (_this$kState$blobLike2 = this[kState].blobLike).arrayBuffer.apply(_this$kState$blobLike2, arguments); + } + }, { + key: "slice", + value: function slice() { + var _this$kState$blobLike3; + webidl.brandCheck(this, FileLike); + return (_this$kState$blobLike3 = this[kState].blobLike).slice.apply(_this$kState$blobLike3, arguments); + } + }, { + key: "text", + value: function text() { + var _this$kState$blobLike4; + webidl.brandCheck(this, FileLike); + return (_this$kState$blobLike4 = this[kState].blobLike).text.apply(_this$kState$blobLike4, arguments); + } + }, { + key: "size", + get: function get() { + webidl.brandCheck(this, FileLike); + return this[kState].blobLike.size; + } + }, { + key: "type", + get: function get() { + webidl.brandCheck(this, FileLike); + return this[kState].blobLike.type; + } + }, { + key: "name", + get: function get() { + webidl.brandCheck(this, FileLike); + return this[kState].name; + } + }, { + key: "lastModified", + get: function get() { + webidl.brandCheck(this, FileLike); + return this[kState].lastModified; + } + }, { + key: Symbol.toStringTag, + get: function get() { + return 'File'; + } + }]); +}(); +Object.defineProperties(File.prototype, _defineProperty(_defineProperty(_defineProperty({}, Symbol.toStringTag, { + value: 'File', + configurable: true +}), "name", kEnumerableProperty), "lastModified", kEnumerableProperty)); +webidl.converters.Blob = webidl.interfaceConverter(Blob); +webidl.converters.BlobPart = function (V, opts) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { + strict: false + }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V, opts); + } + } + return webidl.converters.USVString(V, opts); +}; +webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.BlobPart); + +// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag +webidl.converters.FilePropertyBag = webidl.dictionaryConverter([{ + key: 'lastModified', + converter: webidl.converters['long long'], + get defaultValue() { + return Date.now(); + } +}, { + key: 'type', + converter: webidl.converters.DOMString, + defaultValue: '' +}, { + key: 'endings', + converter: function converter(value) { + value = webidl.converters.DOMString(value); + value = value.toLowerCase(); + if (value !== 'native') { + value = 'transparent'; + } + return value; + }, + defaultValue: 'transparent' +}]); + +/** + * @see https://www.w3.org/TR/FileAPI/#process-blob-parts + * @param {(NodeJS.TypedArray|Blob|string)[]} parts + * @param {{ type: string, endings: string }} options + */ +function processBlobParts(parts, options) { + // 1. Let bytes be an empty sequence of bytes. + /** @type {NodeJS.TypedArray[]} */ + var bytes = []; + + // 2. For each element in parts: + var _iterator = _createForOfIteratorHelper(parts), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var element = _step.value; + // 1. If element is a USVString, run the following substeps: + if (typeof element === 'string') { + // 1. Let s be element. + var s = element; + + // 2. If the endings member of options is "native", set s + // to the result of converting line endings to native + // of element. + if (options.endings === 'native') { + s = convertLineEndingsNative(s); + } + + // 3. Append the result of UTF-8 encoding s to bytes. + bytes.push(encoder.encode(s)); + } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { + // 2. If element is a BufferSource, get a copy of the + // bytes held by the buffer source, and append those + // bytes to bytes. + if (!element.buffer) { + // ArrayBuffer + bytes.push(new Uint8Array(element)); + } else { + bytes.push(new Uint8Array(element.buffer, element.byteOffset, element.byteLength)); + } + } else if (isBlobLike(element)) { + // 3. If element is a Blob, append the bytes it represents + // to bytes. + bytes.push(element); + } + } + + // 3. Return bytes. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return bytes; +} + +/** + * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native + * @param {string} s + */ +function convertLineEndingsNative(s) { + // 1. Let native line ending be be the code point U+000A LF. + var nativeLineEnding = '\n'; + + // 2. If the underlying platform’s conventions are to + // represent newlines as a carriage return and line feed + // sequence, set native line ending to the code point + // U+000D CR followed by the code point U+000A LF. + if (process.platform === 'win32') { + nativeLineEnding = '\r\n'; + } + return s.replace(/\r?\n/g, nativeLineEnding); +} + +// If this function is moved to ./util.js, some tools (such as +// rollup) will warn about circular dependencies. See: +// https://github.com/nodejs/undici/issues/1629 +function isFileLike(object) { + return NativeFile && object instanceof NativeFile || object instanceof File || object && (typeof object.stream === 'function' || typeof object.arrayBuffer === 'function') && object[Symbol.toStringTag] === 'File'; +} +module.exports = { + File: File, + FileLike: FileLike, + isFileLike: isFileLike +}; + +/***/ }), + +/***/ 7609: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _defineProperty = (__webpack_require__(3693)["default"]); +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(1035), + isBlobLike = _require.isBlobLike, + toUSVString = _require.toUSVString, + makeIterator = _require.makeIterator; +var _require2 = __webpack_require__(6614), + kState = _require2.kState; +var _require3 = __webpack_require__(1049), + UndiciFile = _require3.File, + FileLike = _require3.FileLike, + isFileLike = _require3.isFileLike; +var _require4 = __webpack_require__(3702), + webidl = _require4.webidl; +var _require5 = __webpack_require__(181), + Blob = _require5.Blob, + NativeFile = _require5.File; + +/** @type {globalThis['File']} */ +var File = NativeFile !== null && NativeFile !== void 0 ? NativeFile : UndiciFile; + +// https://xhr.spec.whatwg.org/#formdata +var FormData = /*#__PURE__*/function () { + function FormData(form) { + _classCallCheck(this, FormData); + if (form !== undefined) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }); + } + this[kState] = []; + } + return _createClass(FormData, [{ + key: "append", + value: function append(name, value) { + var filename = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + webidl.brandCheck(this, FormData); + webidl.argumentLengthCheck(arguments, 2, { + header: 'FormData.append' + }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"); + } + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { + strict: false + }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? webidl.converters.USVString(filename) : undefined; + + // 2. Let entry be the result of creating an entry with + // name, value, and filename if given. + var entry = makeEntry(name, value, filename); + + // 3. Append entry to this’s entry list. + this[kState].push(entry); + } + }, { + key: "delete", + value: function _delete(name) { + webidl.brandCheck(this, FormData); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FormData.delete' + }); + name = webidl.converters.USVString(name); + + // The delete(name) method steps are to remove all entries whose name + // is name from this’s entry list. + this[kState] = this[kState].filter(function (entry) { + return entry.name !== name; + }); + } + }, { + key: "get", + value: function get(name) { + webidl.brandCheck(this, FormData); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FormData.get' + }); + name = webidl.converters.USVString(name); + + // 1. If there is no entry whose name is name in this’s entry list, + // then return null. + var idx = this[kState].findIndex(function (entry) { + return entry.name === name; + }); + if (idx === -1) { + return null; + } + + // 2. Return the value of the first entry whose name is name from + // this’s entry list. + return this[kState][idx].value; + } + }, { + key: "getAll", + value: function getAll(name) { + webidl.brandCheck(this, FormData); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FormData.getAll' + }); + name = webidl.converters.USVString(name); + + // 1. If there is no entry whose name is name in this’s entry list, + // then return the empty list. + // 2. Return the values of all entries whose name is name, in order, + // from this’s entry list. + return this[kState].filter(function (entry) { + return entry.name === name; + }).map(function (entry) { + return entry.value; + }); + } + }, { + key: "has", + value: function has(name) { + webidl.brandCheck(this, FormData); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FormData.has' + }); + name = webidl.converters.USVString(name); + + // The has(name) method steps are to return true if there is an entry + // whose name is name in this’s entry list; otherwise false. + return this[kState].findIndex(function (entry) { + return entry.name === name; + }) !== -1; + } + }, { + key: "set", + value: function set(name, value) { + var filename = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + webidl.brandCheck(this, FormData); + webidl.argumentLengthCheck(arguments, 2, { + header: 'FormData.set' + }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"); + } + + // The set(name, value) and set(name, blobValue, filename) method steps + // are: + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { + strict: false + }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? toUSVString(filename) : undefined; + + // 2. Let entry be the result of creating an entry with name, value, and + // filename if given. + var entry = makeEntry(name, value, filename); + + // 3. If there are entries in this’s entry list whose name is name, then + // replace the first such entry with entry and remove the others. + var idx = this[kState].findIndex(function (entry) { + return entry.name === name; + }); + if (idx !== -1) { + this[kState] = [].concat(_toConsumableArray(this[kState].slice(0, idx)), [entry], _toConsumableArray(this[kState].slice(idx + 1).filter(function (entry) { + return entry.name !== name; + }))); + } else { + // 4. Otherwise, append entry to this’s entry list. + this[kState].push(entry); + } + } + }, { + key: "entries", + value: function entries() { + var _this = this; + webidl.brandCheck(this, FormData); + return makeIterator(function () { + return _this[kState].map(function (pair) { + return [pair.name, pair.value]; + }); + }, 'FormData', 'key+value'); + } + }, { + key: "keys", + value: function keys() { + var _this2 = this; + webidl.brandCheck(this, FormData); + return makeIterator(function () { + return _this2[kState].map(function (pair) { + return [pair.name, pair.value]; + }); + }, 'FormData', 'key'); + } + }, { + key: "values", + value: function values() { + var _this3 = this; + webidl.brandCheck(this, FormData); + return makeIterator(function () { + return _this3[kState].map(function (pair) { + return [pair.name, pair.value]; + }); + }, 'FormData', 'value'); + } + + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + }, { + key: "forEach", + value: function forEach(callbackFn) { + var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis; + webidl.brandCheck(this, FormData); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FormData.forEach' + }); + if (typeof callbackFn !== 'function') { + throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'."); + } + var _iterator = _createForOfIteratorHelper(this), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _slicedToArray(_step.value, 2), + key = _step$value[0], + value = _step$value[1]; + callbackFn.apply(thisArg, [value, key, this]); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + }]); +}(); +FormData.prototype[Symbol.iterator] = FormData.prototype.entries; +Object.defineProperties(FormData.prototype, _defineProperty({}, Symbol.toStringTag, { + value: 'FormData', + configurable: true +})); + +/** + * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry + * @param {string} name + * @param {string|Blob} value + * @param {?string} filename + * @returns + */ +function makeEntry(name, value, filename) { + // 1. Set name to the result of converting name into a scalar value string. + // "To convert a string into a scalar value string, replace any surrogates + // with U+FFFD." + // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end + name = Buffer.from(name).toString('utf8'); + + // 2. If value is a string, then set value to the result of converting + // value into a scalar value string. + if (typeof value === 'string') { + value = Buffer.from(value).toString('utf8'); + } else { + // 3. Otherwise: + + // 1. If value is not a File object, then set value to a new File object, + // representing the same bytes, whose name attribute value is "blob" + if (!isFileLike(value)) { + value = value instanceof Blob ? new File([value], 'blob', { + type: value.type + }) : new FileLike(value, 'blob', { + type: value.type + }); + } + + // 2. If filename is given, then set value to a new File object, + // representing the same bytes, whose name attribute is filename. + if (filename !== undefined) { + /** @type {FilePropertyBag} */ + var options = { + type: value.type, + lastModified: value.lastModified + }; + value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File([value], filename, options) : new FileLike(value, filename, options); + } + } + + // 4. Return an entry whose name is name and whose value is value. + return { + name: name, + value: value + }; +} +module.exports = { + FormData: FormData +}; + +/***/ }), + +/***/ 9956: +/***/ ((module) => { + +"use strict"; + + +// In case of breaking changes, increase the version +// number to avoid conflicts. +var globalOrigin = Symbol["for"]('undici.globalOrigin.1'); +function getGlobalOrigin() { + return globalThis[globalOrigin]; +} +function setGlobalOrigin(newOrigin) { + if (newOrigin === undefined) { + Object.defineProperty(globalThis, globalOrigin, { + value: undefined, + writable: true, + enumerable: false, + configurable: false + }); + return; + } + var parsedURL = new URL(newOrigin); + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError("Only http & https urls are allowed, received ".concat(parsedURL.protocol)); + } + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }); +} +module.exports = { + getGlobalOrigin: getGlobalOrigin, + setGlobalOrigin: setGlobalOrigin +}; + +/***/ }), + +/***/ 5893: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch + + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _defineProperty = (__webpack_require__(3693)["default"]); +var _require = __webpack_require__(6771), + kHeadersList = _require.kHeadersList, + kConstruct = _require.kConstruct; +var _require2 = __webpack_require__(6614), + kGuard = _require2.kGuard; +var _require3 = __webpack_require__(6632), + kEnumerableProperty = _require3.kEnumerableProperty; +var _require4 = __webpack_require__(1035), + makeIterator = _require4.makeIterator, + isValidHeaderName = _require4.isValidHeaderName, + isValidHeaderValue = _require4.isValidHeaderValue; +var _require5 = __webpack_require__(3702), + webidl = _require5.webidl; +var assert = __webpack_require__(2613); +var kHeadersMap = Symbol('headers map'); +var kHeadersSortedMap = Symbol('headers map sorted'); + +/** + * @param {number} code + */ +function isHTTPWhiteSpaceCharCode(code) { + return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020; +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize + * @param {string} potentialValue + */ +function headerValueNormalize(potentialValue) { + // To normalize a byte sequence potentialValue, remove + // any leading and trailing HTTP whitespace bytes from + // potentialValue. + var i = 0; + var j = potentialValue.length; + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j; + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i; + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j); +} +function fill(headers, object) { + // To fill a Headers object headers with a given object object, run these steps: + + // 1. If object is a sequence, then for each header in object: + // Note: webidl conversion to array has already been done. + if (Array.isArray(object)) { + for (var i = 0; i < object.length; ++i) { + var header = object[i]; + // 1. If header does not contain exactly two items, then throw a TypeError. + if (header.length !== 2) { + throw webidl.errors.exception({ + header: 'Headers constructor', + message: "expected name/value pair to be length 2, found ".concat(header.length, ".") + }); + } + + // 2. Append (header’s first item, header’s second item) to headers. + appendHeader(headers, header[0], header[1]); + } + } else if (typeof object === 'object' && object !== null) { + // Note: null should throw + + // 2. Otherwise, object is a record, then for each key → value in object, + // append (key, value) to headers + var keys = Object.keys(object); + for (var _i = 0; _i < keys.length; ++_i) { + appendHeader(headers, keys[_i], object[keys[_i]]); + } + } else { + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }); + } +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-headers-append + */ +function appendHeader(headers, name, value) { + // 1. Normalize value. + value = headerValueNormalize(value); + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: value, + type: 'header value' + }); + } + + // 3. If headers’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if headers’s guard is "request" and name is a + // forbidden header name, return. + // Note: undici does not implement forbidden header names + if (headers[kGuard] === 'immutable') { + throw new TypeError('immutable'); + } else if (headers[kGuard] === 'request-no-cors') { + // 5. Otherwise, if headers’s guard is "request-no-cors": + // TODO + } + + // 6. Otherwise, if headers’s guard is "response" and name is a + // forbidden response-header name, return. + + // 7. Append (name, value) to headers’s header list. + return headers[kHeadersList].append(name, value); + + // 8. If headers’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from headers +} +var HeadersList = /*#__PURE__*/function () { + function HeadersList(init) { + _classCallCheck(this, HeadersList); + /** @type {[string, string][]|null} */ + _defineProperty(this, "cookies", null); + if (init instanceof HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]); + this[kHeadersSortedMap] = init[kHeadersSortedMap]; + this.cookies = init.cookies === null ? null : _toConsumableArray(init.cookies); + } else { + this[kHeadersMap] = new Map(init); + this[kHeadersSortedMap] = null; + } + } + + // https://fetch.spec.whatwg.org/#header-list-contains + return _createClass(HeadersList, [{ + key: "contains", + value: function contains(name) { + // A header list list contains a header name name if list + // contains a header whose name is a byte-case-insensitive + // match for name. + name = name.toLowerCase(); + return this[kHeadersMap].has(name); + } + }, { + key: "clear", + value: function clear() { + this[kHeadersMap].clear(); + this[kHeadersSortedMap] = null; + this.cookies = null; + } + + // https://fetch.spec.whatwg.org/#concept-header-list-append + }, { + key: "append", + value: function append(name, value) { + this[kHeadersSortedMap] = null; + + // 1. If list contains name, then set name to the first such + // header’s name. + var lowercaseName = name.toLowerCase(); + var exists = this[kHeadersMap].get(lowercaseName); + + // 2. Append (name, value) to list. + if (exists) { + var delimiter = lowercaseName === 'cookie' ? '; ' : ', '; + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: "".concat(exists.value).concat(delimiter).concat(value) + }); + } else { + this[kHeadersMap].set(lowercaseName, { + name: name, + value: value + }); + } + if (lowercaseName === 'set-cookie') { + var _this$cookies; + (_this$cookies = this.cookies) !== null && _this$cookies !== void 0 ? _this$cookies : this.cookies = []; + this.cookies.push(value); + } + } + + // https://fetch.spec.whatwg.org/#concept-header-list-set + }, { + key: "set", + value: function set(name, value) { + this[kHeadersSortedMap] = null; + var lowercaseName = name.toLowerCase(); + if (lowercaseName === 'set-cookie') { + this.cookies = [value]; + } + + // 1. If list contains name, then set the value of + // the first such header to value and remove the + // others. + // 2. Otherwise, append header (name, value) to list. + this[kHeadersMap].set(lowercaseName, { + name: name, + value: value + }); + } + + // https://fetch.spec.whatwg.org/#concept-header-list-delete + }, { + key: "delete", + value: function _delete(name) { + this[kHeadersSortedMap] = null; + name = name.toLowerCase(); + if (name === 'set-cookie') { + this.cookies = null; + } + this[kHeadersMap]["delete"](name); + } + + // https://fetch.spec.whatwg.org/#concept-header-list-get + }, { + key: "get", + value: function get(name) { + var value = this[kHeadersMap].get(name.toLowerCase()); + + // 1. If list does not contain name, then return null. + // 2. Return the values of all headers in list whose name + // is a byte-case-insensitive match for name, + // separated from each other by 0x2C 0x20, in order. + return value === undefined ? null : value.value; + } + }, { + key: Symbol.iterator, + value: /*#__PURE__*/_regeneratorRuntime().mark(function value() { + var _iterator, _step, _step$value, name, value; + return _regeneratorRuntime().wrap(function value$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + // use the lowercased name + _iterator = _createForOfIteratorHelper(this[kHeadersMap]); + _context.prev = 1; + _iterator.s(); + case 3: + if ((_step = _iterator.n()).done) { + _context.next = 9; + break; + } + _step$value = _slicedToArray(_step.value, 2), name = _step$value[0], value = _step$value[1].value; + _context.next = 7; + return [name, value]; + case 7: + _context.next = 3; + break; + case 9: + _context.next = 14; + break; + case 11: + _context.prev = 11; + _context.t0 = _context["catch"](1); + _iterator.e(_context.t0); + case 14: + _context.prev = 14; + _iterator.f(); + return _context.finish(14); + case 17: + case "end": + return _context.stop(); + } + }, value, this, [[1, 11, 14, 17]]); + }) + }, { + key: "entries", + get: function get() { + var headers = {}; + if (this[kHeadersMap].size) { + var _iterator2 = _createForOfIteratorHelper(this[kHeadersMap].values()), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _step2$value = _step2.value, + name = _step2$value.name, + value = _step2$value.value; + headers[name] = value; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + return headers; + } + }]); +}(); // https://fetch.spec.whatwg.org/#headers-class +var Headers = /*#__PURE__*/function () { + function Headers() { + var init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; + _classCallCheck(this, Headers); + if (init === kConstruct) { + return; + } + this[kHeadersList] = new HeadersList(); + + // The new Headers(init) constructor steps are: + + // 1. Set this’s guard to "none". + this[kGuard] = 'none'; + + // 2. If init is given, then fill this with init. + if (init !== undefined) { + init = webidl.converters.HeadersInit(init); + fill(this, init); + } + } + + // https://fetch.spec.whatwg.org/#dom-headers-append + return _createClass(Headers, [{ + key: "append", + value: function append(name, value) { + webidl.brandCheck(this, Headers); + webidl.argumentLengthCheck(arguments, 2, { + header: 'Headers.append' + }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + return appendHeader(this, name, value); + } + + // https://fetch.spec.whatwg.org/#dom-headers-delete + }, { + key: "delete", + value: function _delete(name) { + webidl.brandCheck(this, Headers); + webidl.argumentLengthCheck(arguments, 1, { + header: 'Headers.delete' + }); + name = webidl.converters.ByteString(name); + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }); + } + + // 2. If this’s guard is "immutable", then throw a TypeError. + // 3. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 4. Otherwise, if this’s guard is "request-no-cors", name + // is not a no-CORS-safelisted request-header name, and + // name is not a privileged no-CORS request-header name, + // return. + // 5. Otherwise, if this’s guard is "response" and name is + // a forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable'); + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 6. If this’s header list does not contain name, then + // return. + if (!this[kHeadersList].contains(name)) { + return; + } + + // 7. Delete name from this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this. + this[kHeadersList]["delete"](name); + } + + // https://fetch.spec.whatwg.org/#dom-headers-get + }, { + key: "get", + value: function get(name) { + webidl.brandCheck(this, Headers); + webidl.argumentLengthCheck(arguments, 1, { + header: 'Headers.get' + }); + name = webidl.converters.ByteString(name); + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.get', + value: name, + type: 'header name' + }); + } + + // 2. Return the result of getting name from this’s header + // list. + return this[kHeadersList].get(name); + } + + // https://fetch.spec.whatwg.org/#dom-headers-has + }, { + key: "has", + value: function has(name) { + webidl.brandCheck(this, Headers); + webidl.argumentLengthCheck(arguments, 1, { + header: 'Headers.has' + }); + name = webidl.converters.ByteString(name); + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.has', + value: name, + type: 'header name' + }); + } + + // 2. Return true if this’s header list contains name; + // otherwise false. + return this[kHeadersList].contains(name); + } + + // https://fetch.spec.whatwg.org/#dom-headers-set + }, { + key: "set", + value: function set(name, value) { + webidl.brandCheck(this, Headers); + webidl.argumentLengthCheck(arguments, 2, { + header: 'Headers.set' + }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + + // 1. Normalize value. + value = headerValueNormalize(value); + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value: name, + type: 'header name' + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value: value, + type: 'header value' + }); + } + + // 3. If this’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 5. Otherwise, if this’s guard is "request-no-cors" and + // name/value is not a no-CORS-safelisted request-header, + // return. + // 6. Otherwise, if this’s guard is "response" and name is a + // forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable'); + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 7. Set (name, value) in this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this + this[kHeadersList].set(name, value); + } + + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + }, { + key: "getSetCookie", + value: function getSetCookie() { + webidl.brandCheck(this, Headers); + + // 1. If this’s header list does not contain `Set-Cookie`, then return « ». + // 2. Return the values of all headers in this’s header list whose name is + // a byte-case-insensitive match for `Set-Cookie`, in order. + + var list = this[kHeadersList].cookies; + if (list) { + return _toConsumableArray(list); + } + return []; + } + + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + }, { + key: kHeadersSortedMap, + get: function get() { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap]; + } + + // 1. Let headers be an empty list of headers with the key being the name + // and value the value. + var headers = []; + + // 2. Let names be the result of convert header names to a sorted-lowercase + // set with all the names of the headers in list. + var names = _toConsumableArray(this[kHeadersList]).sort(function (a, b) { + return a[0] < b[0] ? -1 : 1; + }); + var cookies = this[kHeadersList].cookies; + + // 3. For each name of names: + for (var i = 0; i < names.length; ++i) { + var _names$i = _slicedToArray(names[i], 2), + name = _names$i[0], + value = _names$i[1]; + // 1. If name is `set-cookie`, then: + if (name === 'set-cookie') { + // 1. Let values be a list of all values of headers in list whose name + // is a byte-case-insensitive match for name, in order. + + // 2. For each value of values: + // 1. Append (name, value) to headers. + for (var j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]); + } + } else { + // 2. Otherwise: + + // 1. Let value be the result of getting name from list. + + // 2. Assert: value is non-null. + assert(value !== null); + + // 3. Append (name, value) to headers. + headers.push([name, value]); + } + } + this[kHeadersList][kHeadersSortedMap] = headers; + + // 4. Return headers. + return headers; + } + }, { + key: "keys", + value: function keys() { + var _this = this; + webidl.brandCheck(this, Headers); + if (this[kGuard] === 'immutable') { + var value = this[kHeadersSortedMap]; + return makeIterator(function () { + return value; + }, 'Headers', 'key'); + } + return makeIterator(function () { + return _toConsumableArray(_this[kHeadersSortedMap].values()); + }, 'Headers', 'key'); + } + }, { + key: "values", + value: function values() { + var _this2 = this; + webidl.brandCheck(this, Headers); + if (this[kGuard] === 'immutable') { + var value = this[kHeadersSortedMap]; + return makeIterator(function () { + return value; + }, 'Headers', 'value'); + } + return makeIterator(function () { + return _toConsumableArray(_this2[kHeadersSortedMap].values()); + }, 'Headers', 'value'); + } + }, { + key: "entries", + value: function entries() { + var _this3 = this; + webidl.brandCheck(this, Headers); + if (this[kGuard] === 'immutable') { + var value = this[kHeadersSortedMap]; + return makeIterator(function () { + return value; + }, 'Headers', 'key+value'); + } + return makeIterator(function () { + return _toConsumableArray(_this3[kHeadersSortedMap].values()); + }, 'Headers', 'key+value'); + } + + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + }, { + key: "forEach", + value: function forEach(callbackFn) { + var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis; + webidl.brandCheck(this, Headers); + webidl.argumentLengthCheck(arguments, 1, { + header: 'Headers.forEach' + }); + if (typeof callbackFn !== 'function') { + throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'."); + } + var _iterator3 = _createForOfIteratorHelper(this), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var _step3$value = _slicedToArray(_step3.value, 2), + key = _step3$value[0], + value = _step3$value[1]; + callbackFn.apply(thisArg, [value, key, this]); + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + }, { + key: Symbol["for"]('nodejs.util.inspect.custom'), + value: function value() { + webidl.brandCheck(this, Headers); + return this[kHeadersList]; + } + }]); +}(); +Headers.prototype[Symbol.iterator] = Headers.prototype.entries; +Object.defineProperties(Headers.prototype, _defineProperty(_defineProperty({ + append: kEnumerableProperty, + "delete": kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty +}, Symbol.iterator, { + enumerable: false +}), Symbol.toStringTag, { + value: 'Headers', + configurable: true +})); +webidl.converters.HeadersInit = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (V[Symbol.iterator]) { + return webidl.converters['sequence>'](V); + } + return webidl.converters['record'](V); + } + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }); +}; +module.exports = { + fill: fill, + Headers: Headers, + HeadersList: HeadersList +}; + +/***/ }), + +/***/ 4435: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch + + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _asyncGeneratorDelegate = (__webpack_require__(3513)["default"]); +var _asyncIterator = (__webpack_require__(2881)["default"]); +var _awaitAsyncGenerator = (__webpack_require__(3344)["default"]); +var _wrapAsyncGenerator = (__webpack_require__(2958)["default"]); +var _require = __webpack_require__(4284), + Response = _require.Response, + makeNetworkError = _require.makeNetworkError, + makeAppropriateNetworkError = _require.makeAppropriateNetworkError, + filterResponse = _require.filterResponse, + makeResponse = _require.makeResponse; +var _require2 = __webpack_require__(5893), + Headers = _require2.Headers; +var _require3 = __webpack_require__(4930), + Request = _require3.Request, + makeRequest = _require3.makeRequest; +var zlib = __webpack_require__(3106); +var _require4 = __webpack_require__(1035), + bytesMatch = _require4.bytesMatch, + makePolicyContainer = _require4.makePolicyContainer, + clonePolicyContainer = _require4.clonePolicyContainer, + requestBadPort = _require4.requestBadPort, + TAOCheck = _require4.TAOCheck, + appendRequestOriginHeader = _require4.appendRequestOriginHeader, + responseLocationURL = _require4.responseLocationURL, + requestCurrentURL = _require4.requestCurrentURL, + setRequestReferrerPolicyOnRedirect = _require4.setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL = _require4.tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo = _require4.createOpaqueTimingInfo, + appendFetchMetadata = _require4.appendFetchMetadata, + corsCheck = _require4.corsCheck, + crossOriginResourcePolicyCheck = _require4.crossOriginResourcePolicyCheck, + determineRequestsReferrer = _require4.determineRequestsReferrer, + coarsenedSharedCurrentTime = _require4.coarsenedSharedCurrentTime, + createDeferredPromise = _require4.createDeferredPromise, + isBlobLike = _require4.isBlobLike, + sameOrigin = _require4.sameOrigin, + isCancelled = _require4.isCancelled, + isAborted = _require4.isAborted, + isErrorLike = _require4.isErrorLike, + fullyReadBody = _require4.fullyReadBody, + readableStreamClose = _require4.readableStreamClose, + isomorphicEncode = _require4.isomorphicEncode, + urlIsLocal = _require4.urlIsLocal, + urlIsHttpHttpsScheme = _require4.urlIsHttpHttpsScheme, + urlHasHttpsScheme = _require4.urlHasHttpsScheme; +var _require5 = __webpack_require__(6614), + kState = _require5.kState, + kHeaders = _require5.kHeaders, + kGuard = _require5.kGuard, + kRealm = _require5.kRealm; +var assert = __webpack_require__(2613); +var _require6 = __webpack_require__(5491), + safelyExtractBody = _require6.safelyExtractBody; +var _require7 = __webpack_require__(8422), + redirectStatusSet = _require7.redirectStatusSet, + nullBodyStatus = _require7.nullBodyStatus, + safeMethodsSet = _require7.safeMethodsSet, + requestBodyHeader = _require7.requestBodyHeader, + subresourceSet = _require7.subresourceSet, + DOMException = _require7.DOMException; +var _require8 = __webpack_require__(6771), + kHeadersList = _require8.kHeadersList; +var EE = __webpack_require__(4434); +var _require9 = __webpack_require__(2203), + Readable = _require9.Readable, + pipeline = _require9.pipeline; +var _require10 = __webpack_require__(6632), + addAbortListener = _require10.addAbortListener, + isErrored = _require10.isErrored, + isReadable = _require10.isReadable, + nodeMajor = _require10.nodeMajor, + nodeMinor = _require10.nodeMinor; +var _require11 = __webpack_require__(9738), + dataURLProcessor = _require11.dataURLProcessor, + serializeAMimeType = _require11.serializeAMimeType; +var _require12 = __webpack_require__(3774), + TransformStream = _require12.TransformStream; +var _require13 = __webpack_require__(4397), + getGlobalDispatcher = _require13.getGlobalDispatcher; +var _require14 = __webpack_require__(3702), + webidl = _require14.webidl; +var _require15 = __webpack_require__(8611), + STATUS_CODES = _require15.STATUS_CODES; +var GET_OR_HEAD = ['GET', 'HEAD']; + +/** @type {import('buffer').resolveObjectURL} */ +var resolveObjectURL; +var ReadableStream = globalThis.ReadableStream; +var Fetch = /*#__PURE__*/function (_EE) { + function Fetch(dispatcher) { + var _this; + _classCallCheck(this, Fetch); + _this = _callSuper(this, Fetch); + _this.dispatcher = dispatcher; + _this.connection = null; + _this.dump = false; + _this.state = 'ongoing'; + // 2 terminated listeners get added per request, + // but only 1 gets removed. If there are 20 redirects, + // 21 listeners will be added. + // See https://github.com/nodejs/undici/issues/1711 + // TODO (fix): Find and fix root cause for leaked listener. + _this.setMaxListeners(21); + return _this; + } + _inherits(Fetch, _EE); + return _createClass(Fetch, [{ + key: "terminate", + value: function terminate(reason) { + var _this$connection; + if (this.state !== 'ongoing') { + return; + } + this.state = 'terminated'; + (_this$connection = this.connection) === null || _this$connection === void 0 || _this$connection.destroy(reason); + this.emit('terminated', reason); + } + + // https://fetch.spec.whatwg.org/#fetch-controller-abort + }, { + key: "abort", + value: function abort(error) { + var _this$connection2; + if (this.state !== 'ongoing') { + return; + } + + // 1. Set controller’s state to "aborted". + this.state = 'aborted'; + + // 2. Let fallbackError be an "AbortError" DOMException. + // 3. Set error to fallbackError if it is not given. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError'); + } + + // 4. Let serializedError be StructuredSerialize(error). + // If that threw an exception, catch it, and let + // serializedError be StructuredSerialize(fallbackError). + + // 5. Set controller’s serialized abort reason to serializedError. + this.serializedAbortReason = error; + (_this$connection2 = this.connection) === null || _this$connection2 === void 0 || _this$connection2.destroy(error); + this.emit('terminated', error); + } + }]); +}(EE); // https://fetch.spec.whatwg.org/#fetch-method +function fetch(input) { + var _globalObject$constru, _init$dispatcher; + var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + webidl.argumentLengthCheck(arguments, 1, { + header: 'globalThis.fetch' + }); + + // 1. Let p be a new promise. + var p = createDeferredPromise(); + + // 2. Let requestObject be the result of invoking the initial value of + // Request as constructor with input and init as arguments. If this throws + // an exception, reject p with it and return p. + var requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } + + // 3. Let request be requestObject’s request. + var request = requestObject[kState]; + + // 4. If requestObject’s signal’s aborted flag is set, then: + if (requestObject.signal.aborted) { + // 1. Abort the fetch() call with p, request, null, and + // requestObject’s signal’s abort reason. + abortFetch(p, request, null, requestObject.signal.reason); + + // 2. Return p. + return p.promise; + } + + // 5. Let globalObject be request’s client’s global object. + var globalObject = request.client.globalObject; + + // 6. If globalObject is a ServiceWorkerGlobalScope object, then set + // request’s service-workers mode to "none". + if ((globalObject === null || globalObject === void 0 || (_globalObject$constru = globalObject.constructor) === null || _globalObject$constru === void 0 ? void 0 : _globalObject$constru.name) === 'ServiceWorkerGlobalScope') { + request.serviceWorkers = 'none'; + } + + // 7. Let responseObject be null. + var responseObject = null; + + // 8. Let relevantRealm be this’s relevant Realm. + var relevantRealm = null; + + // 9. Let locallyAborted be false. + var locallyAborted = false; + + // 10. Let controller be null. + var controller = null; + + // 11. Add the following abort steps to requestObject’s signal: + addAbortListener(requestObject.signal, function () { + // 1. Set locallyAborted to true. + locallyAborted = true; + + // 2. Assert: controller is non-null. + assert(controller != null); + + // 3. Abort controller with requestObject’s signal’s abort reason. + controller.abort(requestObject.signal.reason); + + // 4. Abort the fetch() call with p, request, responseObject, + // and requestObject’s signal’s abort reason. + abortFetch(p, request, responseObject, requestObject.signal.reason); + }); + + // 12. Let handleFetchDone given response response be to finalize and + // report timing with response, globalObject, and "fetch". + var handleFetchDone = function handleFetchDone(response) { + return finalizeAndReportTiming(response, 'fetch'); + }; + + // 13. Set controller to the result of calling fetch given request, + // with processResponseEndOfBody set to handleFetchDone, and processResponse + // given response being these substeps: + + var processResponse = function processResponse(response) { + // 1. If locallyAborted is true, terminate these substeps. + if (locallyAborted) { + return Promise.resolve(); + } + + // 2. If response’s aborted flag is set, then: + if (response.aborted) { + // 1. Let deserializedError be the result of deserialize a serialized + // abort reason given controller’s serialized abort reason and + // relevantRealm. + + // 2. Abort the fetch() call with p, request, responseObject, and + // deserializedError. + + abortFetch(p, request, responseObject, controller.serializedAbortReason); + return Promise.resolve(); + } + + // 3. If response is a network error, then reject p with a TypeError + // and terminate these substeps. + if (response.type === 'error') { + p.reject(Object.assign(new TypeError('fetch failed'), { + cause: response.error + })); + return Promise.resolve(); + } + + // 4. Set responseObject to the result of creating a Response object, + // given response, "immutable", and relevantRealm. + responseObject = new Response(); + responseObject[kState] = response; + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = 'immutable'; + responseObject[kHeaders][kRealm] = relevantRealm; + + // 5. Resolve p with responseObject. + p.resolve(responseObject); + }; + controller = fetching({ + request: request, + processResponseEndOfBody: handleFetchDone, + processResponse: processResponse, + dispatcher: (_init$dispatcher = init.dispatcher) !== null && _init$dispatcher !== void 0 ? _init$dispatcher : getGlobalDispatcher() // undici + }); + + // 14. Return p. + return p.promise; +} + +// https://fetch.spec.whatwg.org/#finalize-and-report-timing +function finalizeAndReportTiming(response) { + var _response$urlList; + var initiatorType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'other'; + // 1. If response is an aborted network error, then return. + if (response.type === 'error' && response.aborted) { + return; + } + + // 2. If response’s URL list is null or empty, then return. + if (!((_response$urlList = response.urlList) !== null && _response$urlList !== void 0 && _response$urlList.length)) { + return; + } + + // 3. Let originalURL be response’s URL list[0]. + var originalURL = response.urlList[0]; + + // 4. Let timingInfo be response’s timing info. + var timingInfo = response.timingInfo; + + // 5. Let cacheState be response’s cache state. + var cacheState = response.cacheState; + + // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. + if (!urlIsHttpHttpsScheme(originalURL)) { + return; + } + + // 7. If timingInfo is null, then return. + if (timingInfo === null) { + return; + } + + // 8. If response’s timing allow passed flag is not set, then: + if (!response.timingAllowPassed) { + // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }); + + // 2. Set cacheState to the empty string. + cacheState = ''; + } + + // 9. Set timingInfo’s end time to the coarsened shared current time + // given global’s relevant settings object’s cross-origin isolated + // capability. + // TODO: given global’s relevant settings object’s cross-origin isolated + // capability? + timingInfo.endTime = coarsenedSharedCurrentTime(); + + // 10. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo; + + // 11. Mark resource timing for timingInfo, originalURL, initiatorType, + // global, and cacheState. + markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState); +} + +// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing +function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState) { + if (nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 2) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState); + } +} + +// https://fetch.spec.whatwg.org/#abort-fetch +function abortFetch(p, request, responseObject, error) { + var _request$body, _response$body; + // Note: AbortSignal.reason was added in node v17.2.0 + // which would give us an undefined error to reject with. + // Remove this once node v16 is no longer supported. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError'); + } + + // 1. Reject promise with error. + p.reject(error); + + // 2. If request’s body is not null and is readable, then cancel request’s + // body with error. + if (request.body != null && isReadable((_request$body = request.body) === null || _request$body === void 0 ? void 0 : _request$body.stream)) { + request.body.stream.cancel(error)["catch"](function (err) { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return; + } + throw err; + }); + } + + // 3. If responseObject is null, then return. + if (responseObject == null) { + return; + } + + // 4. Let response be responseObject’s response. + var response = responseObject[kState]; + + // 5. If response’s body is not null and is readable, then error response’s + // body with error. + if (response.body != null && isReadable((_response$body = response.body) === null || _response$body === void 0 ? void 0 : _response$body.stream)) { + response.body.stream.cancel(error)["catch"](function (err) { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return; + } + throw err; + }); + } +} + +// https://fetch.spec.whatwg.org/#fetching +function fetching(_ref2) { + var request = _ref2.request, + processRequestBodyChunkLength = _ref2.processRequestBodyChunkLength, + processRequestEndOfBody = _ref2.processRequestEndOfBody, + processResponse = _ref2.processResponse, + processResponseEndOfBody = _ref2.processResponseEndOfBody, + processResponseConsumeBody = _ref2.processResponseConsumeBody, + _ref2$useParallelQueu = _ref2.useParallelQueue, + useParallelQueue = _ref2$useParallelQueu === void 0 ? false : _ref2$useParallelQueu, + dispatcher = _ref2.dispatcher; + // 1. Let taskDestination be null. + var taskDestination = null; + + // 2. Let crossOriginIsolatedCapability be false. + var crossOriginIsolatedCapability = false; + + // 3. If request’s client is non-null, then: + if (request.client != null) { + // 1. Set taskDestination to request’s client’s global object. + taskDestination = request.client.globalObject; + + // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin + // isolated capability. + crossOriginIsolatedCapability = request.client.crossOriginIsolatedCapability; + } + + // 4. If useParallelQueue is true, then set taskDestination to the result of + // starting a new parallel queue. + // TODO + + // 5. Let timingInfo be a new fetch timing info whose start time and + // post-redirect start time are the coarsened shared current time given + // crossOriginIsolatedCapability. + var currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); + var timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }); + + // 6. Let fetchParams be a new fetch params whose + // request is request, + // timing info is timingInfo, + // process request body chunk length is processRequestBodyChunkLength, + // process request end-of-body is processRequestEndOfBody, + // process response is processResponse, + // process response consume body is processResponseConsumeBody, + // process response end-of-body is processResponseEndOfBody, + // task destination is taskDestination, + // and cross-origin isolated capability is crossOriginIsolatedCapability. + var fetchParams = { + controller: new Fetch(dispatcher), + request: request, + timingInfo: timingInfo, + processRequestBodyChunkLength: processRequestBodyChunkLength, + processRequestEndOfBody: processRequestEndOfBody, + processResponse: processResponse, + processResponseConsumeBody: processResponseConsumeBody, + processResponseEndOfBody: processResponseEndOfBody, + taskDestination: taskDestination, + crossOriginIsolatedCapability: crossOriginIsolatedCapability + }; + + // 7. If request’s body is a byte sequence, then set request’s body to + // request’s body as a body. + // NOTE: Since fetching is only called from fetch, body should already be + // extracted. + assert(!request.body || request.body.stream); + + // 8. If request’s window is "client", then set request’s window to request’s + // client, if request’s client’s global object is a Window object; otherwise + // "no-window". + if (request.window === 'client') { + var _request$client; + // TODO: What if request.client is null? + request.window = ((_request$client = request.client) === null || _request$client === void 0 || (_request$client = _request$client.globalObject) === null || _request$client === void 0 || (_request$client = _request$client.constructor) === null || _request$client === void 0 ? void 0 : _request$client.name) === 'Window' ? request.client : 'no-window'; + } + + // 9. If request’s origin is "client", then set request’s origin to request’s + // client’s origin. + if (request.origin === 'client') { + var _request$client2; + // TODO: What if request.client is null? + request.origin = (_request$client2 = request.client) === null || _request$client2 === void 0 ? void 0 : _request$client2.origin; + } + + // 10. If all of the following conditions are true: + // TODO + + // 11. If request’s policy container is "client", then: + if (request.policyContainer === 'client') { + // 1. If request’s client is non-null, then set request’s policy + // container to a clone of request’s client’s policy container. [HTML] + if (request.client != null) { + request.policyContainer = clonePolicyContainer(request.client.policyContainer); + } else { + // 2. Otherwise, set request’s policy container to a new policy + // container. + request.policyContainer = makePolicyContainer(); + } + } + + // 12. If request’s header list does not contain `Accept`, then: + if (!request.headersList.contains('accept')) { + // 1. Let value be `*/*`. + var value = '*/*'; + + // 2. A user agent should set value to the first matching statement, if + // any, switching on request’s destination: + // "document" + // "frame" + // "iframe" + // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` + // "image" + // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` + // "style" + // `text/css,*/*;q=0.1` + // TODO + + // 3. Append `Accept`/value to request’s header list. + request.headersList.append('accept', value); + } + + // 13. If request’s header list does not contain `Accept-Language`, then + // user agents should append `Accept-Language`/an appropriate value to + // request’s header list. + if (!request.headersList.contains('accept-language')) { + request.headersList.append('accept-language', '*'); + } + + // 14. If request’s priority is null, then use request’s initiator and + // destination appropriately in setting request’s priority to a + // user-agent-defined object. + if (request.priority === null) { + // TODO + } + + // 15. If request is a subresource request, then: + if (subresourceSet.has(request.destination)) { + // TODO + } + + // 16. Run main fetch given fetchParams. + mainFetch(fetchParams)["catch"](function (err) { + fetchParams.controller.terminate(err); + }); + + // 17. Return fetchParam's controller + return fetchParams.controller; +} + +// https://fetch.spec.whatwg.org/#concept-main-fetch +function mainFetch(_x2) { + return _mainFetch.apply(this, arguments); +} // https://fetch.spec.whatwg.org/#concept-scheme-fetch +// given a fetch params fetchParams +function _mainFetch() { + _mainFetch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(fetchParams) { + var recursive, + request, + response, + internalResponse, + _internalResponse$url, + processBodyError, + processBody, + _args2 = arguments; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + recursive = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : false; + // 1. Let request be fetchParams’s request. + request = fetchParams.request; // 2. Let response be null. + response = null; // 3. If request’s local-URLs-only flag is set and request’s current URL is + // not local, then set response to a network error. + if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { + response = makeNetworkError('local URLs only'); + } + + // 4. Run report Content Security Policy violations for request. + // TODO + + // 5. Upgrade request to a potentially trustworthy URL, if appropriate. + tryUpgradeRequestToAPotentiallyTrustworthyURL(request); + + // 6. If should request be blocked due to a bad port, should fetching request + // be blocked as mixed content, or should request be blocked by Content + // Security Policy returns blocked, then set response to a network error. + if (requestBadPort(request) === 'blocked') { + response = makeNetworkError('bad port'); + } + // TODO: should fetching request be blocked as mixed content? + // TODO: should request be blocked by Content Security Policy? + + // 7. If request’s referrer policy is the empty string, then set request’s + // referrer policy to request’s policy container’s referrer policy. + if (request.referrerPolicy === '') { + request.referrerPolicy = request.policyContainer.referrerPolicy; + } + + // 8. If request’s referrer is not "no-referrer", then set request’s + // referrer to the result of invoking determine request’s referrer. + if (request.referrer !== 'no-referrer') { + request.referrer = determineRequestsReferrer(request); + } + + // 9. Set request’s current URL’s scheme to "https" if all of the following + // conditions are true: + // - request’s current URL’s scheme is "http" + // - request’s current URL’s host is a domain + // - Matching request’s current URL’s host per Known HSTS Host Domain Name + // Matching results in either a superdomain match with an asserted + // includeSubDomains directive or a congruent match (with or without an + // asserted includeSubDomains directive). [HSTS] + // TODO + + // 10. If recursive is false, then run the remaining steps in parallel. + // TODO + + // 11. If response is null, then set response to the result of running + // the steps corresponding to the first matching statement: + if (!(response === null)) { + _context2.next = 12; + break; + } + _context2.next = 11; + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var currentURL; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + currentURL = requestCurrentURL(request); + if (!( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + sameOrigin(currentURL, request.url) && request.responseTainting === 'basic' || + // request’s current URL’s scheme is "data" + currentURL.protocol === 'data:' || + // - request’s mode is "navigate" or "websocket" + request.mode === 'navigate' || request.mode === 'websocket')) { + _context.next = 6; + break; + } + // 1. Set request’s response tainting to "basic". + request.responseTainting = 'basic'; + + // 2. Return the result of running scheme fetch given fetchParams. + _context.next = 5; + return schemeFetch(fetchParams); + case 5: + return _context.abrupt("return", _context.sent); + case 6: + if (!(request.mode === 'same-origin')) { + _context.next = 8; + break; + } + return _context.abrupt("return", makeNetworkError('request mode cannot be "same-origin"')); + case 8: + if (!(request.mode === 'no-cors')) { + _context.next = 15; + break; + } + if (!(request.redirect !== 'follow')) { + _context.next = 11; + break; + } + return _context.abrupt("return", makeNetworkError('redirect mode cannot be "follow" for "no-cors" request')); + case 11: + // 2. Set request’s response tainting to "opaque". + request.responseTainting = 'opaque'; + + // 3. Return the result of running scheme fetch given fetchParams. + _context.next = 14; + return schemeFetch(fetchParams); + case 14: + return _context.abrupt("return", _context.sent); + case 15: + if (urlIsHttpHttpsScheme(requestCurrentURL(request))) { + _context.next = 17; + break; + } + return _context.abrupt("return", makeNetworkError('URL scheme must be a HTTP(S) scheme')); + case 17: + // - request’s use-CORS-preflight flag is set + // - request’s unsafe-request flag is set and either request’s method is + // not a CORS-safelisted method or CORS-unsafe request-header names with + // request’s header list is not empty + // 1. Set request’s response tainting to "cors". + // 2. Let corsWithPreflightResponse be the result of running HTTP fetch + // given fetchParams and true. + // 3. If corsWithPreflightResponse is a network error, then clear cache + // entries using request. + // 4. Return corsWithPreflightResponse. + // TODO + + // Otherwise + // 1. Set request’s response tainting to "cors". + request.responseTainting = 'cors'; + + // 2. Return the result of running HTTP fetch given fetchParams. + _context.next = 20; + return httpFetch(fetchParams); + case 20: + return _context.abrupt("return", _context.sent); + case 21: + case "end": + return _context.stop(); + } + }, _callee); + }))(); + case 11: + response = _context2.sent; + case 12: + if (!recursive) { + _context2.next = 14; + break; + } + return _context2.abrupt("return", response); + case 14: + // 13. If response is not a network error and response is not a filtered + // response, then: + if (response.status !== 0 && !response.internalResponse) { + // If request’s response tainting is "cors", then: + if (request.responseTainting === 'cors') { + // 1. Let headerNames be the result of extracting header list values + // given `Access-Control-Expose-Headers` and response’s header list. + // TODO + // 2. If request’s credentials mode is not "include" and headerNames + // contains `*`, then set response’s CORS-exposed header-name list to + // all unique header names in response’s header list. + // TODO + // 3. Otherwise, if headerNames is not null or failure, then set + // response’s CORS-exposed header-name list to headerNames. + // TODO + } + + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (request.responseTainting === 'basic') { + response = filterResponse(response, 'basic'); + } else if (request.responseTainting === 'cors') { + response = filterResponse(response, 'cors'); + } else if (request.responseTainting === 'opaque') { + response = filterResponse(response, 'opaque'); + } else { + assert(false); + } + } + + // 14. Let internalResponse be response, if response is a network error, + // and response’s internal response otherwise. + internalResponse = response.status === 0 ? response : response.internalResponse; // 15. If internalResponse’s URL list is empty, then set it to a clone of + // request’s URL list. + if (internalResponse.urlList.length === 0) { + (_internalResponse$url = internalResponse.urlList).push.apply(_internalResponse$url, _toConsumableArray(request.urlList)); + } + + // 16. If request’s timing allow failed flag is unset, then set + // internalResponse’s timing allow passed flag. + if (!request.timingAllowFailed) { + response.timingAllowPassed = true; + } + + // 17. If response is not a network error and any of the following returns + // blocked + // - should internalResponse to request be blocked as mixed content + // - should internalResponse to request be blocked by Content Security Policy + // - should internalResponse to request be blocked due to its MIME type + // - should internalResponse to request be blocked due to nosniff + // TODO + + // 18. If response’s type is "opaque", internalResponse’s status is 206, + // internalResponse’s range-requested flag is set, and request’s header + // list does not contain `Range`, then set response and internalResponse + // to a network error. + if (response.type === 'opaque' && internalResponse.status === 206 && internalResponse.rangeRequested && !request.headers.contains('range')) { + response = internalResponse = makeNetworkError(); + } + + // 19. If response is not a network error and either request’s method is + // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, + // set internalResponse’s body to null and disregard any enqueuing toward + // it (if any). + if (response.status !== 0 && (request.method === 'HEAD' || request.method === 'CONNECT' || nullBodyStatus.includes(internalResponse.status))) { + internalResponse.body = null; + fetchParams.controller.dump = true; + } + + // 20. If request’s integrity metadata is not the empty string, then: + if (!request.integrity) { + _context2.next = 30; + break; + } + // 1. Let processBodyError be this step: run fetch finale given fetchParams + // and a network error. + processBodyError = function processBodyError(reason) { + return fetchFinale(fetchParams, makeNetworkError(reason)); + }; // 2. If request’s response tainting is "opaque", or response’s body is null, + // then run processBodyError and abort these steps. + if (!(request.responseTainting === 'opaque' || response.body == null)) { + _context2.next = 25; + break; + } + processBodyError(response.error); + return _context2.abrupt("return"); + case 25: + // 3. Let processBody given bytes be these steps: + processBody = function processBody(bytes) { + // 1. If bytes do not match request’s integrity metadata, + // then run processBodyError and abort these steps. [SRI] + if (!bytesMatch(bytes, request.integrity)) { + processBodyError('integrity mismatch'); + return; + } + + // 2. Set response’s body to bytes as a body. + response.body = safelyExtractBody(bytes)[0]; + + // 3. Run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response); + }; // 4. Fully read response’s body given processBody and processBodyError. + _context2.next = 28; + return fullyReadBody(response.body, processBody, processBodyError); + case 28: + _context2.next = 31; + break; + case 30: + // 21. Otherwise, run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response); + case 31: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return _mainFetch.apply(this, arguments); +} +function schemeFetch(fetchParams) { + // Note: since the connection is destroyed on redirect, which sets fetchParams to a + // cancelled state, we do not want this condition to trigger *unless* there have been + // no redirects. See https://github.com/nodejs/undici/issues/1776 + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)); + } + + // 2. Let request be fetchParams’s request. + var request = fetchParams.request; + var _requestCurrentURL = requestCurrentURL(request), + scheme = _requestCurrentURL.protocol; + + // 3. Switch on request’s current URL’s scheme and run the associated steps: + switch (scheme) { + case 'about:': + { + // If request’s current URL’s path is the string "blank", then return a new response + // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », + // and body is the empty byte sequence as a body. + + // Otherwise, return a network error. + return Promise.resolve(makeNetworkError('about scheme is not supported')); + } + case 'blob:': + { + var _bodyWithType$; + if (!resolveObjectURL) { + resolveObjectURL = (__webpack_require__(181).resolveObjectURL); + } + + // 1. Let blobURLEntry be request’s current URL’s blob URL entry. + var blobURLEntry = requestCurrentURL(request); + + // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 + // Buffer.resolveObjectURL does not ignore URL queries. + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')); + } + var blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()); + + // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s + // object is not a Blob object, then return a network error. + if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError('invalid method')); + } + + // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object. + var bodyWithType = safelyExtractBody(blobURLEntryObject); + + // 4. Let body be bodyWithType’s body. + var body = bodyWithType[0]; + + // 5. Let length be body’s length, serialized and isomorphic encoded. + var length = isomorphicEncode("".concat(body.length)); + + // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence. + var type = (_bodyWithType$ = bodyWithType[1]) !== null && _bodyWithType$ !== void 0 ? _bodyWithType$ : ''; + + // 7. Return a new response whose status message is `OK`, header list is + // « (`Content-Length`, length), (`Content-Type`, type) », and body is body. + var response = makeResponse({ + statusText: 'OK', + headersList: [['content-length', { + name: 'Content-Length', + value: length + }], ['content-type', { + name: 'Content-Type', + value: type + }]] + }); + response.body = body; + return Promise.resolve(response); + } + case 'data:': + { + // 1. Let dataURLStruct be the result of running the + // data: URL processor on request’s current URL. + var currentURL = requestCurrentURL(request); + var dataURLStruct = dataURLProcessor(currentURL); + + // 2. If dataURLStruct is failure, then return a + // network error. + if (dataURLStruct === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')); + } + + // 3. Let mimeType be dataURLStruct’s MIME type, serialized. + var mimeType = serializeAMimeType(dataURLStruct.mimeType); + + // 4. Return a response whose status message is `OK`, + // header list is « (`Content-Type`, mimeType) », + // and body is dataURLStruct’s body as a body. + return Promise.resolve(makeResponse({ + statusText: 'OK', + headersList: [['content-type', { + name: 'Content-Type', + value: mimeType + }]], + body: safelyExtractBody(dataURLStruct.body)[0] + })); + } + case 'file:': + { + // For now, unfortunate as it is, file URLs are left as an exercise for the reader. + // When in doubt, return a network error. + return Promise.resolve(makeNetworkError('not implemented... yet...')); + } + case 'http:': + case 'https:': + { + // Return the result of running HTTP fetch given fetchParams. + + return httpFetch(fetchParams)["catch"](function (err) { + return makeNetworkError(err); + }); + } + default: + { + return Promise.resolve(makeNetworkError('unknown scheme')); + } + } +} + +// https://fetch.spec.whatwg.org/#finalize-response +function finalizeResponse(fetchParams, response) { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true; + + // 2, If fetchParams’s process response done is not null, then queue a fetch + // task to run fetchParams’s process response done given response, with + // fetchParams’s task destination. + if (fetchParams.processResponseDone != null) { + queueMicrotask(function () { + return fetchParams.processResponseDone(response); + }); + } +} + +// https://fetch.spec.whatwg.org/#fetch-finale +function fetchFinale(fetchParams, response) { + // 1. If response is a network error, then: + if (response.type === 'error') { + // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». + response.urlList = [fetchParams.request.urlList[0]]; + + // 2. Set response’s timing info to the result of creating an opaque timing + // info for fetchParams’s timing info. + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }); + } + + // 2. Let processResponseEndOfBody be the following steps: + var processResponseEndOfBody = function processResponseEndOfBody() { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true; + + // If fetchParams’s process response end-of-body is not null, + // then queue a fetch task to run fetchParams’s process response + // end-of-body given response with fetchParams’s task destination. + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(function () { + return fetchParams.processResponseEndOfBody(response); + }); + } + }; + + // 3. If fetchParams’s process response is non-null, then queue a fetch task + // to run fetchParams’s process response given response, with fetchParams’s + // task destination. + if (fetchParams.processResponse != null) { + queueMicrotask(function () { + return fetchParams.processResponse(response); + }); + } + + // 4. If response’s body is null, then run processResponseEndOfBody. + if (response.body == null) { + processResponseEndOfBody(); + } else { + // 5. Otherwise: + + // 1. Let transformStream be a new a TransformStream. + + // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, + // enqueues chunk in transformStream. + var identityTransformAlgorithm = function identityTransformAlgorithm(chunk, controller) { + controller.enqueue(chunk); + }; + + // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm + // and flushAlgorithm set to processResponseEndOfBody. + var transformStream = new TransformStream({ + start: function start() {}, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, { + size: function size() { + return 1; + } + }, { + size: function size() { + return 1; + } + }); + + // 4. Set response’s body to the result of piping response’s body through transformStream. + response.body = { + stream: response.body.stream.pipeThrough(transformStream) + }; + } + + // 6. If fetchParams’s process response consume body is non-null, then: + if (fetchParams.processResponseConsumeBody != null) { + // 1. Let processBody given nullOrBytes be this step: run fetchParams’s + // process response consume body given response and nullOrBytes. + var processBody = function processBody(nullOrBytes) { + return fetchParams.processResponseConsumeBody(response, nullOrBytes); + }; + + // 2. Let processBodyError be this step: run fetchParams’s process + // response consume body given response and failure. + var processBodyError = function processBodyError(failure) { + return fetchParams.processResponseConsumeBody(response, failure); + }; + + // 3. If response’s body is null, then queue a fetch task to run processBody + // given null, with fetchParams’s task destination. + if (response.body == null) { + queueMicrotask(function () { + return processBody(null); + }); + } else { + // 4. Otherwise, fully read response’s body given processBody, processBodyError, + // and fetchParams’s task destination. + return fullyReadBody(response.body, processBody, processBodyError); + } + return Promise.resolve(); + } +} + +// https://fetch.spec.whatwg.org/#http-fetch +function httpFetch(_x3) { + return _httpFetch.apply(this, arguments); +} // https://fetch.spec.whatwg.org/#http-redirect-fetch +function _httpFetch() { + _httpFetch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(fetchParams) { + var request, response, actualResponse, timingInfo; + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + // 1. Let request be fetchParams’s request. + request = fetchParams.request; // 2. Let response be null. + response = null; // 3. Let actualResponse be null. + actualResponse = null; // 4. Let timingInfo be fetchParams’s timing info. + timingInfo = fetchParams.timingInfo; // 5. If request’s service-workers mode is "all", then: + if (request.serviceWorkers === 'all') { + // TODO + } + + // 6. If response is null, then: + if (!(response === null)) { + _context3.next = 13; + break; + } + // 1. If makeCORSPreflight is true and one of these conditions is true: + // TODO + + // 2. If request’s redirect mode is "follow", then set request’s + // service-workers mode to "none". + if (request.redirect === 'follow') { + request.serviceWorkers = 'none'; + } + + // 3. Set response and actualResponse to the result of running + // HTTP-network-or-cache fetch given fetchParams. + _context3.next = 9; + return httpNetworkOrCacheFetch(fetchParams); + case 9: + actualResponse = response = _context3.sent; + if (!(request.responseTainting === 'cors' && corsCheck(request, response) === 'failure')) { + _context3.next = 12; + break; + } + return _context3.abrupt("return", makeNetworkError('cors failure')); + case 12: + // 5. If the TAO check for request and response returns failure, then set + // request’s timing allow failed flag. + if (TAOCheck(request, response) === 'failure') { + request.timingAllowFailed = true; + } + case 13: + if (!((request.responseTainting === 'opaque' || response.type === 'opaque') && crossOriginResourcePolicyCheck(request.origin, request.client, request.destination, actualResponse) === 'blocked')) { + _context3.next = 15; + break; + } + return _context3.abrupt("return", makeNetworkError('blocked')); + case 15: + if (!redirectStatusSet.has(actualResponse.status)) { + _context3.next = 32; + break; + } + // 1. If actualResponse’s status is not 303, request’s body is not null, + // and the connection uses HTTP/2, then user agents may, and are even + // encouraged to, transmit an RST_STREAM frame. + // See, https://github.com/whatwg/fetch/issues/1288 + if (request.redirect !== 'manual') { + fetchParams.controller.connection.destroy(); + } + + // 2. Switch on request’s redirect mode: + if (!(request.redirect === 'error')) { + _context3.next = 21; + break; + } + // Set response to a network error. + response = makeNetworkError('unexpected redirect'); + _context3.next = 32; + break; + case 21: + if (!(request.redirect === 'manual')) { + _context3.next = 25; + break; + } + // Set response to an opaque-redirect filtered response whose internal + // response is actualResponse. + // NOTE(spec): On the web this would return an `opaqueredirect` response, + // but that doesn't make sense server side. + // See https://github.com/nodejs/undici/issues/1193. + response = actualResponse; + _context3.next = 32; + break; + case 25: + if (!(request.redirect === 'follow')) { + _context3.next = 31; + break; + } + _context3.next = 28; + return httpRedirectFetch(fetchParams, response); + case 28: + response = _context3.sent; + _context3.next = 32; + break; + case 31: + assert(false); + case 32: + // 9. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo; + + // 10. Return response. + return _context3.abrupt("return", response); + case 34: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + return _httpFetch.apply(this, arguments); +} +function httpRedirectFetch(fetchParams, response) { + // 1. Let request be fetchParams’s request. + var request = fetchParams.request; + + // 2. Let actualResponse be response, if response is not a filtered response, + // and response’s internal response otherwise. + var actualResponse = response.internalResponse ? response.internalResponse : response; + + // 3. Let locationURL be actualResponse’s location URL given request’s current + // URL’s fragment. + var locationURL; + try { + locationURL = responseLocationURL(actualResponse, requestCurrentURL(request).hash); + + // 4. If locationURL is null, then return response. + if (locationURL == null) { + return response; + } + } catch (err) { + // 5. If locationURL is failure, then return a network error. + return Promise.resolve(makeNetworkError(err)); + } + + // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network + // error. + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')); + } + + // 7. If request’s redirect count is 20, then return a network error. + if (request.redirectCount === 20) { + return Promise.resolve(makeNetworkError('redirect count exceeded')); + } + + // 8. Increase request’s redirect count by 1. + request.redirectCount += 1; + + // 9. If request’s mode is "cors", locationURL includes credentials, and + // request’s origin is not same origin with locationURL’s origin, then return + // a network error. + if (request.mode === 'cors' && (locationURL.username || locationURL.password) && !sameOrigin(request, locationURL)) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); + } + + // 10. If request’s response tainting is "cors" and locationURL includes + // credentials, then return a network error. + if (request.responseTainting === 'cors' && (locationURL.username || locationURL.password)) { + return Promise.resolve(makeNetworkError('URL cannot contain credentials for request mode "cors"')); + } + + // 11. If actualResponse’s status is not 303, request’s body is non-null, + // and request’s body’s source is null, then return a network error. + if (actualResponse.status !== 303 && request.body != null && request.body.source == null) { + return Promise.resolve(makeNetworkError()); + } + + // 12. If one of the following is true + // - actualResponse’s status is 301 or 302 and request’s method is `POST` + // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` + if ([301, 302].includes(actualResponse.status) && request.method === 'POST' || actualResponse.status === 303 && !GET_OR_HEAD.includes(request.method)) { + // then: + // 1. Set request’s method to `GET` and request’s body to null. + request.method = 'GET'; + request.body = null; + + // 2. For each headerName of request-body-header name, delete headerName from + // request’s header list. + var _iterator2 = _createForOfIteratorHelper(requestBodyHeader), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var headerName = _step2.value; + request.headersList["delete"](headerName); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + + // 13. If request’s current URL’s origin is not same origin with locationURL’s + // origin, then for each headerName of CORS non-wildcard request-header name, + // delete headerName from request’s header list. + if (!sameOrigin(requestCurrentURL(request), locationURL)) { + // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name + request.headersList["delete"]('authorization'); + + // https://fetch.spec.whatwg.org/#authentication-entries + request.headersList["delete"]('proxy-authorization', true); + + // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. + request.headersList["delete"]('cookie'); + request.headersList["delete"]('host'); + } + + // 14. If request’s body is non-null, then set request’s body to the first return + // value of safely extracting request’s body’s source. + if (request.body != null) { + assert(request.body.source != null); + request.body = safelyExtractBody(request.body.source)[0]; + } + + // 15. Let timingInfo be fetchParams’s timing info. + var timingInfo = fetchParams.timingInfo; + + // 16. Set timingInfo’s redirect end time and post-redirect start time to the + // coarsened shared current time given fetchParams’s cross-origin isolated + // capability. + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + + // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s + // redirect start time to timingInfo’s start time. + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime; + } + + // 18. Append locationURL to request’s URL list. + request.urlList.push(locationURL); + + // 19. Invoke set request’s referrer policy on redirect on request and + // actualResponse. + setRequestReferrerPolicyOnRedirect(request, actualResponse); + + // 20. Return the result of running main fetch given fetchParams and true. + return mainFetch(fetchParams, true); +} + +// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch +function httpNetworkOrCacheFetch(_x4) { + return _httpNetworkOrCacheFetch.apply(this, arguments); +} // https://fetch.spec.whatwg.org/#http-network-fetch +function _httpNetworkOrCacheFetch() { + _httpNetworkOrCacheFetch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(fetchParams) { + var isAuthenticationFetch, + isNewConnectionFetch, + request, + httpFetchParams, + httpRequest, + response, + httpCache, + revalidatingFlag, + includeCredentials, + contentLength, + contentLengthHeaderValue, + forwardResponse, + _args4 = arguments; + return _regeneratorRuntime().wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + isAuthenticationFetch = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : false; + isNewConnectionFetch = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : false; + // 1. Let request be fetchParams’s request. + request = fetchParams.request; // 2. Let httpFetchParams be null. + httpFetchParams = null; // 3. Let httpRequest be null. + httpRequest = null; // 4. Let response be null. + response = null; // 5. Let storedResponse be null. + // TODO: cache + // 6. Let httpCache be null. + httpCache = null; // 7. Let the revalidatingFlag be unset. + revalidatingFlag = false; // 8. Run these steps, but abort when the ongoing fetch is terminated: + // 1. If request’s window is "no-window" and request’s redirect mode is + // "error", then set httpFetchParams to fetchParams and httpRequest to + // request. + if (request.window === 'no-window' && request.redirect === 'error') { + httpFetchParams = fetchParams; + httpRequest = request; + } else { + // Otherwise: + + // 1. Set httpRequest to a clone of request. + httpRequest = makeRequest(request); + + // 2. Set httpFetchParams to a copy of fetchParams. + httpFetchParams = _objectSpread({}, fetchParams); + + // 3. Set httpFetchParams’s request to httpRequest. + httpFetchParams.request = httpRequest; + } + + // 3. Let includeCredentials be true if one of + includeCredentials = request.credentials === 'include' || request.credentials === 'same-origin' && request.responseTainting === 'basic'; // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s + // body is non-null; otherwise null. + contentLength = httpRequest.body ? httpRequest.body.length : null; // 5. Let contentLengthHeaderValue be null. + contentLengthHeaderValue = null; // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or + // `PUT`, then set contentLengthHeaderValue to `0`. + if (httpRequest.body == null && ['POST', 'PUT'].includes(httpRequest.method)) { + contentLengthHeaderValue = '0'; + } + + // 7. If contentLength is non-null, then set contentLengthHeaderValue to + // contentLength, serialized and isomorphic encoded. + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode("".concat(contentLength)); + } + + // 8. If contentLengthHeaderValue is non-null, then append + // `Content-Length`/contentLengthHeaderValue to httpRequest’s header + // list. + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue); + } + + // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, + // contentLengthHeaderValue) to httpRequest’s header list. + + // 10. If contentLength is non-null and httpRequest’s keepalive is true, + // then: + if (contentLength != null && httpRequest.keepalive) { + // NOTE: keepalive is a noop outside of browser context. + } + + // 11. If httpRequest’s referrer is a URL, then append + // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, + // to httpRequest’s header list. + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href)); + } + + // 12. Append a request `Origin` header for httpRequest. + appendRequestOriginHeader(httpRequest); + + // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] + appendFetchMetadata(httpRequest); + + // 14. If httpRequest’s header list does not contain `User-Agent`, then + // user agents should append `User-Agent`/default `User-Agent` value to + // httpRequest’s header list. + if (!httpRequest.headersList.contains('user-agent')) { + httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node'); + } + + // 15. If httpRequest’s cache mode is "default" and httpRequest’s header + // list contains `If-Modified-Since`, `If-None-Match`, + // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set + // httpRequest’s cache mode to "no-store". + if (httpRequest.cache === 'default' && (httpRequest.headersList.contains('if-modified-since') || httpRequest.headersList.contains('if-none-match') || httpRequest.headersList.contains('if-unmodified-since') || httpRequest.headersList.contains('if-match') || httpRequest.headersList.contains('if-range'))) { + httpRequest.cache = 'no-store'; + } + + // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent + // no-cache cache-control header modification flag is unset, and + // httpRequest’s header list does not contain `Cache-Control`, then append + // `Cache-Control`/`max-age=0` to httpRequest’s header list. + if (httpRequest.cache === 'no-cache' && !httpRequest.preventNoCacheCacheControlHeaderModification && !httpRequest.headersList.contains('cache-control')) { + httpRequest.headersList.append('cache-control', 'max-age=0'); + } + + // 17. If httpRequest’s cache mode is "no-store" or "reload", then: + if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { + // 1. If httpRequest’s header list does not contain `Pragma`, then append + // `Pragma`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('pragma')) { + httpRequest.headersList.append('pragma', 'no-cache'); + } + + // 2. If httpRequest’s header list does not contain `Cache-Control`, + // then append `Cache-Control`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('cache-control')) { + httpRequest.headersList.append('cache-control', 'no-cache'); + } + } + + // 18. If httpRequest’s header list contains `Range`, then append + // `Accept-Encoding`/`identity` to httpRequest’s header list. + if (httpRequest.headersList.contains('range')) { + httpRequest.headersList.append('accept-encoding', 'identity'); + } + + // 19. Modify httpRequest’s header list per HTTP. Do not append a given + // header if httpRequest’s header list contains that header’s name. + // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 + if (!httpRequest.headersList.contains('accept-encoding')) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate'); + } else { + httpRequest.headersList.append('accept-encoding', 'gzip, deflate'); + } + } + httpRequest.headersList["delete"]('host'); + + // 20. If includeCredentials is true, then: + if (includeCredentials) { + // 1. If the user agent is not configured to block cookies for httpRequest + // (see section 7 of [COOKIES]), then: + // TODO: credentials + // 2. If httpRequest’s header list does not contain `Authorization`, then: + // TODO: credentials + } + + // 21. If there’s a proxy-authentication entry, use it as appropriate. + // TODO: proxy-authentication + + // 22. Set httpCache to the result of determining the HTTP cache + // partition, given httpRequest. + // TODO: cache + + // 23. If httpCache is null, then set httpRequest’s cache mode to + // "no-store". + if (httpCache == null) { + httpRequest.cache = 'no-store'; + } + + // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", + // then: + if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') { + // TODO: cache + } + + // 9. If aborted, then return the appropriate network error for fetchParams. + // TODO + + // 10. If response is null, then: + if (!(response == null)) { + _context4.next = 38; + break; + } + if (!(httpRequest.mode === 'only-if-cached')) { + _context4.next = 32; + break; + } + return _context4.abrupt("return", makeNetworkError('only if cached')); + case 32: + _context4.next = 34; + return httpNetworkFetch(httpFetchParams, includeCredentials, isNewConnectionFetch); + case 34: + forwardResponse = _context4.sent; + // 3. If httpRequest’s method is unsafe and forwardResponse’s status is + // in the range 200 to 399, inclusive, invalidate appropriate stored + // responses in httpCache, as per the "Invalidation" chapter of HTTP + // Caching, and set storedResponse to null. [HTTP-CACHING] + if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) { + // TODO: cache + } + + // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, + // then: + if (revalidatingFlag && forwardResponse.status === 304) { + // TODO: cache + } + + // 5. If response is null, then: + if (response == null) { + // 1. Set response to forwardResponse. + response = forwardResponse; + + // 2. Store httpRequest and forwardResponse in httpCache, as per the + // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] + // TODO: cache + } + case 38: + // 11. Set response’s URL list to a clone of httpRequest’s URL list. + response.urlList = _toConsumableArray(httpRequest.urlList); + + // 12. If httpRequest’s header list contains `Range`, then set response’s + // range-requested flag. + if (httpRequest.headersList.contains('range')) { + response.rangeRequested = true; + } + + // 13. Set response’s request-includes-credentials to includeCredentials. + response.requestIncludesCredentials = includeCredentials; + + // 14. If response’s status is 401, httpRequest’s response tainting is not + // "cors", includeCredentials is true, and request’s window is an environment + // settings object, then: + // TODO + + // 15. If response’s status is 407, then: + if (!(response.status === 407)) { + _context4.next = 47; + break; + } + if (!(request.window === 'no-window')) { + _context4.next = 44; + break; + } + return _context4.abrupt("return", makeNetworkError()); + case 44: + if (!isCancelled(fetchParams)) { + _context4.next = 46; + break; + } + return _context4.abrupt("return", makeAppropriateNetworkError(fetchParams)); + case 46: + return _context4.abrupt("return", makeNetworkError('proxy authentication required')); + case 47: + if (!( + // response’s status is 421 + response.status === 421 && + // isNewConnectionFetch is false + !isNewConnectionFetch && ( + // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + request.body == null || request.body.source != null))) { + _context4.next = 54; + break; + } + if (!isCancelled(fetchParams)) { + _context4.next = 50; + break; + } + return _context4.abrupt("return", makeAppropriateNetworkError(fetchParams)); + case 50: + // 2. Set response to the result of running HTTP-network-or-cache + // fetch given fetchParams, isAuthenticationFetch, and true. + + // TODO (spec): The spec doesn't specify this but we need to cancel + // the active response before we can start a new one. + // https://github.com/whatwg/fetch/issues/1293 + fetchParams.controller.connection.destroy(); + _context4.next = 53; + return httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch, true); + case 53: + response = _context4.sent; + case 54: + // 17. If isAuthenticationFetch is true, then create an authentication entry + if (isAuthenticationFetch) { + // TODO + } + + // 18. Return response. + return _context4.abrupt("return", response); + case 56: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + return _httpNetworkOrCacheFetch.apply(this, arguments); +} +function httpNetworkFetch(_x5) { + return _httpNetworkFetch.apply(this, arguments); +} +function _httpNetworkFetch() { + _httpNetworkFetch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(fetchParams) { + var includeCredentials, + forceNewConnection, + request, + response, + timingInfo, + httpCache, + newConnection, + requestBody, + processBodyChunk, + processEndOfBody, + _processBodyError, + _yield$dispatch, + body, + status, + statusText, + headersList, + socket, + iterator, + pullAlgorithm, + cancelAlgorithm, + stream, + onAborted, + dispatch, + _dispatch, + _args12 = arguments; + return _regeneratorRuntime().wrap(function _callee12$(_context12) { + while (1) switch (_context12.prev = _context12.next) { + case 0: + _dispatch = function _dispatch3() { + _dispatch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(_ref5) { + var body, url, agent; + return _regeneratorRuntime().wrap(function _callee11$(_context11) { + while (1) switch (_context11.prev = _context11.next) { + case 0: + body = _ref5.body; + url = requestCurrentURL(request); + /** @type {import('../..').Agent} */ + agent = fetchParams.controller.dispatcher; + return _context11.abrupt("return", new Promise(function (resolve, reject) { + return agent.dispatch({ + path: url.pathname + url.search, + origin: url.origin, + method: request.method, + body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body, + headers: request.headersList.entries, + maxRedirections: 0, + upgrade: request.mode === 'websocket' ? 'websocket' : undefined + }, { + body: null, + abort: null, + onConnect: function onConnect(abort) { + // TODO (fix): Do we need connection here? + var connection = fetchParams.controller.connection; + if (connection.destroyed) { + abort(new DOMException('The operation was aborted.', 'AbortError')); + } else { + fetchParams.controller.on('terminated', abort); + this.abort = connection.abort = abort; + } + }, + onHeaders: function onHeaders(status, headersList, resume, statusText) { + if (status < 200) { + return; + } + var codings = []; + var location = ''; + var headers = new Headers(); + + // For H2, the headers are a plain JS object + // We distinguish between them and iterate accordingly + if (Array.isArray(headersList)) { + for (var n = 0; n < headersList.length; n += 2) { + var key = headersList[n + 0].toString('latin1'); + var val = headersList[n + 1].toString('latin1'); + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map(function (x) { + return x.trim(); + }); + } else if (key.toLowerCase() === 'location') { + location = val; + } + headers[kHeadersList].append(key, val); + } + } else { + var keys = Object.keys(headersList); + for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { + var _key = _keys[_i]; + var _val = headersList[_key]; + if (_key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = _val.toLowerCase().split(',').map(function (x) { + return x.trim(); + }).reverse(); + } else if (_key.toLowerCase() === 'location') { + location = _val; + } + headers[kHeadersList].append(_key, _val); + } + } + this.body = new Readable({ + read: resume + }); + var decoders = []; + var willFollow = request.redirect === 'follow' && location && redirectStatusSet.has(status); + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding + if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) { + var _iterator3 = _createForOfIteratorHelper(codings), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var coding = _step3.value; + // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 + if (coding === 'x-gzip' || coding === 'gzip') { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })); + } else if (coding === 'deflate') { + decoders.push(zlib.createInflate()); + } else if (coding === 'br') { + decoders.push(zlib.createBrotliDecompress()); + } else { + decoders.length = 0; + break; + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + resolve({ + status: status, + statusText: statusText, + headersList: headers[kHeadersList], + body: decoders.length ? pipeline.apply(void 0, [this.body].concat(decoders, [function () {}])) : this.body.on('error', function () {}) + }); + return true; + }, + onData: function onData(chunk) { + if (fetchParams.controller.dump) { + return; + } + + // 1. If one or more bytes have been transmitted from response’s + // message body, then: + + // 1. Let bytes be the transmitted bytes. + var bytes = chunk; + + // 2. Let codings be the result of extracting header list values + // given `Content-Encoding` and response’s header list. + // See pullAlgorithm. + + // 3. Increase timingInfo’s encoded body size by bytes’s length. + timingInfo.encodedBodySize += bytes.byteLength; + + // 4. See pullAlgorithm... + + return this.body.push(bytes); + }, + onComplete: function onComplete() { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort); + } + fetchParams.controller.ended = true; + this.body.push(null); + }, + onError: function onError(error) { + var _this$body; + if (this.abort) { + fetchParams.controller.off('terminated', this.abort); + } + (_this$body = this.body) === null || _this$body === void 0 || _this$body.destroy(error); + fetchParams.controller.terminate(error); + reject(error); + }, + onUpgrade: function onUpgrade(status, headersList, socket) { + if (status !== 101) { + return; + } + var headers = new Headers(); + for (var n = 0; n < headersList.length; n += 2) { + var key = headersList[n + 0].toString('latin1'); + var val = headersList[n + 1].toString('latin1'); + headers[kHeadersList].append(key, val); + } + resolve({ + status: status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket: socket + }); + return true; + } + }); + })); + case 4: + case "end": + return _context11.stop(); + } + }, _callee11); + })); + return _dispatch.apply(this, arguments); + }; + dispatch = function _dispatch2(_x6) { + return _dispatch.apply(this, arguments); + }; + onAborted = function _onAborted(reason) { + // 2. If fetchParams is aborted, then: + if (isAborted(fetchParams)) { + // 1. Set response’s aborted flag. + response.aborted = true; + + // 2. If stream is readable, then error stream with the result of + // deserialize a serialized abort reason given fetchParams’s + // controller’s serialized abort reason and an + // implementation-defined realm. + if (isReadable(stream)) { + fetchParams.controller.controller.error(fetchParams.controller.serializedAbortReason); + } + } else { + // 3. Otherwise, if stream is readable, error stream with a TypeError. + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError('terminated', { + cause: isErrorLike(reason) ? reason : undefined + })); + } + } + + // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. + // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. + fetchParams.controller.connection.destroy(); + }; + includeCredentials = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : false; + forceNewConnection = _args12.length > 2 && _args12[2] !== undefined ? _args12[2] : false; + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy: function destroy(err) { + if (!this.destroyed) { + var _this$abort; + this.destroyed = true; + (_this$abort = this.abort) === null || _this$abort === void 0 || _this$abort.call(this, err !== null && err !== void 0 ? err : new DOMException('The operation was aborted.', 'AbortError')); + } + } + }; + + // 1. Let request be fetchParams’s request. + request = fetchParams.request; // 2. Let response be null. + response = null; // 3. Let timingInfo be fetchParams’s timing info. + timingInfo = fetchParams.timingInfo; // 4. Let httpCache be the result of determining the HTTP cache partition, + // given request. + // TODO: cache + httpCache = null; // 5. If httpCache is null, then set request’s cache mode to "no-store". + if (httpCache == null) { + request.cache = 'no-store'; + } + + // 6. Let networkPartitionKey be the result of determining the network + // partition key given request. + // TODO + + // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise + // "no". + newConnection = forceNewConnection ? 'yes' : 'no'; // eslint-disable-line no-unused-vars + // 8. Switch on request’s mode: + if (request.mode === 'websocket') { + // Let connection be the result of obtaining a WebSocket connection, + // given request’s current URL. + // TODO + } else { + // Let connection be the result of obtaining a connection, given + // networkPartitionKey, request’s current URL’s origin, + // includeCredentials, and forceNewConnection. + // TODO + } + + // 9. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If connection is failure, then return a network error. + + // 2. Set timingInfo’s final connection timing info to the result of + // calling clamp and coarsen connection timing info with connection’s + // timing info, timingInfo’s post-redirect start time, and fetchParams’s + // cross-origin isolated capability. + + // 3. If connection is not an HTTP/2 connection, request’s body is non-null, + // and request’s body’s source is null, then append (`Transfer-Encoding`, + // `chunked`) to request’s header list. + + // 4. Set timingInfo’s final network-request start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated + // capability. + + // 5. Set response to the result of making an HTTP request over connection + // using request with the following caveats: + + // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] + // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] + + // - If request’s body is non-null, and request’s body’s source is null, + // then the user agent may have a buffer of up to 64 kibibytes and store + // a part of request’s body in that buffer. If the user agent reads from + // request’s body beyond that buffer’s size and the user agent needs to + // resend request, then instead return a network error. + + // - Set timingInfo’s final network-response start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated capability, + // immediately after the user agent’s HTTP parser receives the first byte + // of the response (e.g., frame header bytes for HTTP/2 or response status + // line for HTTP/1.x). + + // - Wait until all the headers are transmitted. + + // - Any responses whose status is in the range 100 to 199, inclusive, + // and is not 101, are to be ignored, except for the purposes of setting + // timingInfo’s final network-response start time above. + + // - If request’s header list contains `Transfer-Encoding`/`chunked` and + // response is transferred via HTTP/1.0 or older, then return a network + // error. + + // - If the HTTP request results in a TLS client certificate dialog, then: + + // 1. If request’s window is an environment settings object, make the + // dialog available in request’s window. + + // 2. Otherwise, return a network error. + + // To transmit request’s body body, run these steps: + requestBody = null; // 1. If body is null and fetchParams’s process request end-of-body is + // non-null, then queue a fetch task given fetchParams’s process request + // end-of-body and fetchParams’s task destination. + if (request.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(function () { + return fetchParams.processRequestEndOfBody(); + }); + } else if (request.body != null) { + // 2. Otherwise, if body is non-null: + // 1. Let processBodyChunk given bytes be these steps: + processBodyChunk = /*#__PURE__*/function () { + var _ref = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(bytes) { + var _fetchParams$processR; + return _regeneratorRuntime().wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + if (!isCancelled(fetchParams)) { + _context5.next = 2; + break; + } + return _context5.abrupt("return"); + case 2: + _context5.next = 4; + return bytes; + case 4: + // 3. If fetchParams’s process request body is non-null, then run + // fetchParams’s process request body given bytes’s length. + (_fetchParams$processR = fetchParams.processRequestBodyChunkLength) === null || _fetchParams$processR === void 0 || _fetchParams$processR.call(fetchParams, bytes.byteLength); + case 5: + case "end": + return _context5.stop(); + } + }, _callee5); + })); + return function processBodyChunk(_x) { + return _ref.apply(this, arguments); + }; + }(); // 2. Let processEndOfBody be these steps: + processEndOfBody = function processEndOfBody() { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return; + } + + // 2. If fetchParams’s process request end-of-body is non-null, + // then run fetchParams’s process request end-of-body. + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody(); + } + }; // 3. Let processBodyError given e be these steps: + _processBodyError = function _processBodyError(e) { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return; + } + + // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. + if (e.name === 'AbortError') { + fetchParams.controller.abort(); + } else { + fetchParams.controller.terminate(e); + } + }; // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, + // processBodyError, and fetchParams’s task destination. + requestBody = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() { + var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, bytes; + return _regeneratorRuntime().wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + _context6.prev = 0; + _iteratorAbruptCompletion = false; + _didIteratorError = false; + _context6.prev = 3; + _iterator = _asyncIterator(request.body.stream); + case 5: + _context6.next = 7; + return _awaitAsyncGenerator(_iterator.next()); + case 7: + if (!(_iteratorAbruptCompletion = !(_step = _context6.sent).done)) { + _context6.next = 13; + break; + } + bytes = _step.value; + return _context6.delegateYield(_asyncGeneratorDelegate(_asyncIterator(processBodyChunk(bytes)), _awaitAsyncGenerator), "t0", 10); + case 10: + _iteratorAbruptCompletion = false; + _context6.next = 5; + break; + case 13: + _context6.next = 19; + break; + case 15: + _context6.prev = 15; + _context6.t1 = _context6["catch"](3); + _didIteratorError = true; + _iteratorError = _context6.t1; + case 19: + _context6.prev = 19; + _context6.prev = 20; + if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) { + _context6.next = 24; + break; + } + _context6.next = 24; + return _awaitAsyncGenerator(_iterator["return"]()); + case 24: + _context6.prev = 24; + if (!_didIteratorError) { + _context6.next = 27; + break; + } + throw _iteratorError; + case 27: + return _context6.finish(24); + case 28: + return _context6.finish(19); + case 29: + processEndOfBody(); + _context6.next = 35; + break; + case 32: + _context6.prev = 32; + _context6.t2 = _context6["catch"](0); + _processBodyError(_context6.t2); + case 35: + case "end": + return _context6.stop(); + } + }, _callee6, null, [[0, 32], [3, 15, 19, 29], [20,, 24, 28]]); + }))(); + } + _context12.prev = 16; + _context12.next = 19; + return dispatch({ + body: requestBody + }); + case 19: + _yield$dispatch = _context12.sent; + body = _yield$dispatch.body; + status = _yield$dispatch.status; + statusText = _yield$dispatch.statusText; + headersList = _yield$dispatch.headersList; + socket = _yield$dispatch.socket; + if (socket) { + response = makeResponse({ + status: status, + statusText: statusText, + headersList: headersList, + socket: socket + }); + } else { + iterator = body[Symbol.asyncIterator](); + fetchParams.controller.next = function () { + return iterator.next(); + }; + response = makeResponse({ + status: status, + statusText: statusText, + headersList: headersList + }); + } + _context12.next = 34; + break; + case 28: + _context12.prev = 28; + _context12.t0 = _context12["catch"](16); + if (!(_context12.t0.name === 'AbortError')) { + _context12.next = 33; + break; + } + // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. + fetchParams.controller.connection.destroy(); + + // 2. Return the appropriate network error for fetchParams. + return _context12.abrupt("return", makeAppropriateNetworkError(fetchParams, _context12.t0)); + case 33: + return _context12.abrupt("return", makeNetworkError(_context12.t0)); + case 34: + // 11. Let pullAlgorithm be an action that resumes the ongoing fetch + // if it is suspended. + pullAlgorithm = function pullAlgorithm() { + fetchParams.controller.resume(); + }; // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s + // controller with reason, given reason. + cancelAlgorithm = function cancelAlgorithm(reason) { + fetchParams.controller.abort(reason); + }; // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by + // the user agent. + // TODO + // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object + // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. + // TODO + // 15. Let stream be a new ReadableStream. + // 16. Set up stream with pullAlgorithm set to pullAlgorithm, + // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to + // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. + if (!ReadableStream) { + ReadableStream = (__webpack_require__(3774).ReadableStream); + } + stream = new ReadableStream({ + start: function start(controller) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() { + return _regeneratorRuntime().wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + fetchParams.controller.controller = controller; + case 1: + case "end": + return _context7.stop(); + } + }, _callee7); + }))(); + }, + pull: function pull(controller) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() { + return _regeneratorRuntime().wrap(function _callee8$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + _context8.next = 2; + return pullAlgorithm(controller); + case 2: + case "end": + return _context8.stop(); + } + }, _callee8); + }))(); + }, + cancel: function cancel(reason) { + return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() { + return _regeneratorRuntime().wrap(function _callee9$(_context9) { + while (1) switch (_context9.prev = _context9.next) { + case 0: + _context9.next = 2; + return cancelAlgorithm(reason); + case 2: + case "end": + return _context9.stop(); + } + }, _callee9); + }))(); + } + }, { + highWaterMark: 0, + size: function size() { + return 1; + } + }); // 17. Run these steps, but abort when the ongoing fetch is terminated: + // 1. Set response’s body to a new body whose stream is stream. + response.body = { + stream: stream + }; + + // 2. If response is not a network error and request’s cache mode is + // not "no-store", then update response in httpCache for request. + // TODO + + // 3. If includeCredentials is true and the user agent is not configured + // to block cookies for request (see section 7 of [COOKIES]), then run the + // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on + // the value of each header whose name is a byte-case-insensitive match for + // `Set-Cookie` in response’s header list, if any, and request’s current URL. + // TODO + + // 18. If aborted, then: + // TODO + + // 19. Run these steps in parallel: + + // 1. Run these steps, but abort when fetchParams is canceled: + fetchParams.controller.on('terminated', onAborted); + fetchParams.controller.resume = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() { + var _bytes$byteLength, _bytes, bytes, isFailure, _yield$fetchParams$co, done, value; + return _regeneratorRuntime().wrap(function _callee10$(_context10) { + while (1) switch (_context10.prev = _context10.next) { + case 0: + if (false) {} + // 1-3. See onData... + // 4. Set bytes to the result of handling content codings given + // codings and bytes. + bytes = void 0; + isFailure = void 0; + _context10.prev = 3; + _context10.next = 6; + return fetchParams.controller.next(); + case 6: + _yield$fetchParams$co = _context10.sent; + done = _yield$fetchParams$co.done; + value = _yield$fetchParams$co.value; + if (!isAborted(fetchParams)) { + _context10.next = 11; + break; + } + return _context10.abrupt("break", 33); + case 11: + bytes = done ? undefined : value; + _context10.next = 17; + break; + case 14: + _context10.prev = 14; + _context10.t0 = _context10["catch"](3); + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + // zlib doesn't like empty streams. + bytes = undefined; + } else { + bytes = _context10.t0; + + // err may be propagated from the result of calling readablestream.cancel, + // which might not be an error. https://github.com/nodejs/undici/issues/2009 + isFailure = true; + } + case 17: + if (!(bytes === undefined)) { + _context10.next = 21; + break; + } + // 2. Otherwise, if the bytes transmission for response’s message + // body is done normally and stream is readable, then close + // stream, finalize response for fetchParams and response, and + // abort these in-parallel steps. + readableStreamClose(fetchParams.controller.controller); + finalizeResponse(fetchParams, response); + return _context10.abrupt("return"); + case 21: + // 5. Increase timingInfo’s decoded body size by bytes’s length. + timingInfo.decodedBodySize += (_bytes$byteLength = (_bytes = bytes) === null || _bytes === void 0 ? void 0 : _bytes.byteLength) !== null && _bytes$byteLength !== void 0 ? _bytes$byteLength : 0; + + // 6. If bytes is failure, then terminate fetchParams’s controller. + if (!isFailure) { + _context10.next = 25; + break; + } + fetchParams.controller.terminate(bytes); + return _context10.abrupt("return"); + case 25: + // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes + // into stream. + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); + + // 8. If stream is errored, then terminate the ongoing fetch. + if (!isErrored(stream)) { + _context10.next = 29; + break; + } + fetchParams.controller.terminate(); + return _context10.abrupt("return"); + case 29: + if (fetchParams.controller.controller.desiredSize) { + _context10.next = 31; + break; + } + return _context10.abrupt("return"); + case 31: + _context10.next = 0; + break; + case 33: + case "end": + return _context10.stop(); + } + }, _callee10, null, [[3, 14]]); + })); + + // 2. If aborted, then: + return _context12.abrupt("return", response); + case 42: + case "end": + return _context12.stop(); + } + }, _callee12, null, [[16, 28]]); + })); + return _httpNetworkFetch.apply(this, arguments); +} +module.exports = { + fetch: fetch, + Fetch: Fetch, + fetching: fetching, + finalizeAndReportTiming: finalizeAndReportTiming +}; + +/***/ }), + +/***/ 4930: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/* globals AbortController */ + + + +var _defineProperty = (__webpack_require__(3693)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(5491), + extractBody = _require.extractBody, + mixinBody = _require.mixinBody, + cloneBody = _require.cloneBody; +var _require2 = __webpack_require__(5893), + Headers = _require2.Headers, + fillHeaders = _require2.fill, + HeadersList = _require2.HeadersList; +var _require3 = __webpack_require__(4994)(), + FinalizationRegistry = _require3.FinalizationRegistry; +var util = __webpack_require__(6632); +var _require4 = __webpack_require__(1035), + isValidHTTPToken = _require4.isValidHTTPToken, + sameOrigin = _require4.sameOrigin, + normalizeMethod = _require4.normalizeMethod, + makePolicyContainer = _require4.makePolicyContainer, + normalizeMethodRecord = _require4.normalizeMethodRecord; +var _require5 = __webpack_require__(8422), + forbiddenMethodsSet = _require5.forbiddenMethodsSet, + corsSafeListedMethodsSet = _require5.corsSafeListedMethodsSet, + referrerPolicy = _require5.referrerPolicy, + requestRedirect = _require5.requestRedirect, + requestMode = _require5.requestMode, + requestCredentials = _require5.requestCredentials, + requestCache = _require5.requestCache, + requestDuplex = _require5.requestDuplex; +var kEnumerableProperty = util.kEnumerableProperty; +var _require6 = __webpack_require__(6614), + kHeaders = _require6.kHeaders, + kSignal = _require6.kSignal, + kState = _require6.kState, + kGuard = _require6.kGuard, + kRealm = _require6.kRealm; +var _require7 = __webpack_require__(3702), + webidl = _require7.webidl; +var _require8 = __webpack_require__(9956), + getGlobalOrigin = _require8.getGlobalOrigin; +var _require9 = __webpack_require__(9738), + URLSerializer = _require9.URLSerializer; +var _require10 = __webpack_require__(6771), + kHeadersList = _require10.kHeadersList, + kConstruct = _require10.kConstruct; +var assert = __webpack_require__(2613); +var _require11 = __webpack_require__(4434), + getMaxListeners = _require11.getMaxListeners, + setMaxListeners = _require11.setMaxListeners, + getEventListeners = _require11.getEventListeners, + defaultMaxListeners = _require11.defaultMaxListeners; +var TransformStream = globalThis.TransformStream; +var kAbortController = Symbol('abortController'); +var requestFinalizer = new FinalizationRegistry(function (_ref) { + var signal = _ref.signal, + abort = _ref.abort; + signal.removeEventListener('abort', abort); +}); + +// https://fetch.spec.whatwg.org/#request-class +var Request = /*#__PURE__*/function () { + // https://fetch.spec.whatwg.org/#dom-request + function Request(input) { + var _request$window, _initBody; + var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + _classCallCheck(this, Request); + if (input === kConstruct) { + return; + } + webidl.argumentLengthCheck(arguments, 1, { + header: 'Request constructor' + }); + input = webidl.converters.RequestInfo(input); + init = webidl.converters.RequestInit(init); + + // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin() { + var _this$baseUrl; + return (_this$baseUrl = this.baseUrl) === null || _this$baseUrl === void 0 ? void 0 : _this$baseUrl.origin; + }, + policyContainer: makePolicyContainer() + } + }; + + // 1. Let request be null. + var request = null; + + // 2. Let fallbackMode be null. + var fallbackMode = null; + + // 3. Let baseURL be this’s relevant settings object’s API base URL. + var baseUrl = this[kRealm].settingsObject.baseUrl; + + // 4. Let signal be null. + var signal = null; + + // 5. If input is a string, then: + if (typeof input === 'string') { + // 1. Let parsedURL be the result of parsing input with baseURL. + // 2. If parsedURL is failure, then throw a TypeError. + var parsedURL; + try { + parsedURL = new URL(input, baseUrl); + } catch (err) { + throw new TypeError('Failed to parse URL from ' + input, { + cause: err + }); + } + + // 3. If parsedURL includes credentials, then throw a TypeError. + if (parsedURL.username || parsedURL.password) { + throw new TypeError('Request cannot be constructed from a URL that includes credentials: ' + input); + } + + // 4. Set request to a new request whose URL is parsedURL. + request = makeRequest({ + urlList: [parsedURL] + }); + + // 5. Set fallbackMode to "cors". + fallbackMode = 'cors'; + } else { + // 6. Otherwise: + + // 7. Assert: input is a Request object. + assert(input instanceof Request); + + // 8. Set request to input’s request. + request = input[kState]; + + // 9. Set signal to input’s signal. + signal = input[kSignal]; + } + + // 7. Let origin be this’s relevant settings object’s origin. + var origin = this[kRealm].settingsObject.origin; + + // 8. Let window be "client". + var window = 'client'; + + // 9. If request’s window is an environment settings object and its origin + // is same origin with origin, then set window to request’s window. + if (((_request$window = request.window) === null || _request$window === void 0 || (_request$window = _request$window.constructor) === null || _request$window === void 0 ? void 0 : _request$window.name) === 'EnvironmentSettingsObject' && sameOrigin(request.window, origin)) { + window = request.window; + } + + // 10. If init["window"] exists and is non-null, then throw a TypeError. + if (init.window != null) { + throw new TypeError("'window' option '".concat(window, "' must be null")); + } + + // 11. If init["window"] exists, then set window to "no-window". + if ('window' in init) { + window = 'no-window'; + } + + // 12. Set request to a new request with the following properties: + request = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request.headersList, + // unsafe-request flag Set. + unsafeRequest: request.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window: window, + // priority request’s priority. + priority: request.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request.origin, + // referrer request’s referrer. + referrer: request.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request.referrerPolicy, + // mode request’s mode. + mode: request.mode, + // credentials mode request’s credentials mode. + credentials: request.credentials, + // cache mode request’s cache mode. + cache: request.cache, + // redirect mode request’s redirect mode. + redirect: request.redirect, + // integrity metadata request’s integrity metadata. + integrity: request.integrity, + // keepalive request’s keepalive. + keepalive: request.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request.historyNavigation, + // URL list A clone of request’s URL list. + urlList: _toConsumableArray(request.urlList) + }); + var initHasKey = Object.keys(init).length !== 0; + + // 13. If init is not empty, then: + if (initHasKey) { + // 1. If request’s mode is "navigate", then set it to "same-origin". + if (request.mode === 'navigate') { + request.mode = 'same-origin'; + } + + // 2. Unset request’s reload-navigation flag. + request.reloadNavigation = false; + + // 3. Unset request’s history-navigation flag. + request.historyNavigation = false; + + // 4. Set request’s origin to "client". + request.origin = 'client'; + + // 5. Set request’s referrer to "client" + request.referrer = 'client'; + + // 6. Set request’s referrer policy to the empty string. + request.referrerPolicy = ''; + + // 7. Set request’s URL to request’s current URL. + request.url = request.urlList[request.urlList.length - 1]; + + // 8. Set request’s URL list to « request’s URL ». + request.urlList = [request.url]; + } + + // 14. If init["referrer"] exists, then: + if (init.referrer !== undefined) { + // 1. Let referrer be init["referrer"]. + var referrer = init.referrer; + + // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". + if (referrer === '') { + request.referrer = 'no-referrer'; + } else { + // 1. Let parsedReferrer be the result of parsing referrer with + // baseURL. + // 2. If parsedReferrer is failure, then throw a TypeError. + var parsedReferrer; + try { + parsedReferrer = new URL(referrer, baseUrl); + } catch (err) { + throw new TypeError("Referrer \"".concat(referrer, "\" is not a valid URL."), { + cause: err + }); + } + + // 3. If one of the following is true + // - parsedReferrer’s scheme is "about" and path is the string "client" + // - parsedReferrer’s origin is not same origin with origin + // then set request’s referrer to "client". + if (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client' || origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) { + request.referrer = 'client'; + } else { + // 4. Otherwise, set request’s referrer to parsedReferrer. + request.referrer = parsedReferrer; + } + } + } + + // 15. If init["referrerPolicy"] exists, then set request’s referrer policy + // to it. + if (init.referrerPolicy !== undefined) { + request.referrerPolicy = init.referrerPolicy; + } + + // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. + var mode; + if (init.mode !== undefined) { + mode = init.mode; + } else { + mode = fallbackMode; + } + + // 17. If mode is "navigate", then throw a TypeError. + if (mode === 'navigate') { + throw webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }); + } + + // 18. If mode is non-null, set request’s mode to mode. + if (mode != null) { + request.mode = mode; + } + + // 19. If init["credentials"] exists, then set request’s credentials mode + // to it. + if (init.credentials !== undefined) { + request.credentials = init.credentials; + } + + // 18. If init["cache"] exists, then set request’s cache mode to it. + if (init.cache !== undefined) { + request.cache = init.cache; + } + + // 21. If request’s cache mode is "only-if-cached" and request’s mode is + // not "same-origin", then throw a TypeError. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode"); + } + + // 22. If init["redirect"] exists, then set request’s redirect mode to it. + if (init.redirect !== undefined) { + request.redirect = init.redirect; + } + + // 23. If init["integrity"] exists, then set request’s integrity metadata to it. + if (init.integrity != null) { + request.integrity = String(init.integrity); + } + + // 24. If init["keepalive"] exists, then set request’s keepalive to it. + if (init.keepalive !== undefined) { + request.keepalive = Boolean(init.keepalive); + } + + // 25. If init["method"] exists, then: + if (init.method !== undefined) { + var _normalizeMethodRecor; + // 1. Let method be init["method"]. + var method = init.method; + + // 2. If method is not a method or method is a forbidden method, then + // throw a TypeError. + if (!isValidHTTPToken(method)) { + throw new TypeError("'".concat(method, "' is not a valid HTTP method.")); + } + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw new TypeError("'".concat(method, "' HTTP method is unsupported.")); + } + + // 3. Normalize method. + method = (_normalizeMethodRecor = normalizeMethodRecord[method]) !== null && _normalizeMethodRecor !== void 0 ? _normalizeMethodRecor : normalizeMethod(method); + + // 4. Set request’s method to method. + request.method = method; + } + + // 26. If init["signal"] exists, then set signal to it. + if (init.signal !== undefined) { + signal = init.signal; + } + + // 27. Set this’s request to request. + this[kState] = request; + + // 28. Set this’s signal to a new AbortSignal object with this’s relevant + // Realm. + // TODO: could this be simplified with AbortSignal.any + // (https://dom.spec.whatwg.org/#dom-abortsignal-any) + var ac = new AbortController(); + this[kSignal] = ac.signal; + this[kSignal][kRealm] = this[kRealm]; + + // 29. If signal is not null, then make this’s signal follow signal. + if (signal != null) { + if (!signal || typeof signal.aborted !== 'boolean' || typeof signal.addEventListener !== 'function') { + throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal."); + } + if (signal.aborted) { + ac.abort(signal.reason); + } else { + // Keep a strong ref to ac while request object + // is alive. This is needed to prevent AbortController + // from being prematurely garbage collected. + // See, https://github.com/nodejs/undici/issues/1926. + this[kAbortController] = ac; + var acRef = new WeakRef(ac); + var abort = function abort() { + var ac = acRef.deref(); + if (ac !== undefined) { + ac.abort(this.reason); + } + }; + + // Third-party AbortControllers may not work with these. + // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. + try { + // If the max amount of listeners is equal to the default, increase it + // This is only available in node >= v19.9.0 + if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal); + } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { + setMaxListeners(100, signal); + } + } catch (_unused) {} + util.addAbortListener(signal, abort); + requestFinalizer.register(ac, { + signal: signal, + abort: abort + }); + } + } + + // 30. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is request’s header list and guard is + // "request". + this[kHeaders] = new Headers(kConstruct); + this[kHeaders][kHeadersList] = request.headersList; + this[kHeaders][kGuard] = 'request'; + this[kHeaders][kRealm] = this[kRealm]; + + // 31. If this’s request’s mode is "no-cors", then: + if (mode === 'no-cors') { + // 1. If this’s request’s method is not a CORS-safelisted method, + // then throw a TypeError. + if (!corsSafeListedMethodsSet.has(request.method)) { + throw new TypeError("'".concat(request.method, " is unsupported in no-cors mode.")); + } + + // 2. Set this’s headers’s guard to "request-no-cors". + this[kHeaders][kGuard] = 'request-no-cors'; + } + + // 32. If init is not empty, then: + if (initHasKey) { + /** @type {HeadersList} */ + var headersList = this[kHeaders][kHeadersList]; + // 1. Let headers be a copy of this’s headers and its associated header + // list. + // 2. If init["headers"] exists, then set headers to init["headers"]. + var headers = init.headers !== undefined ? init.headers : new HeadersList(headersList); + + // 3. Empty this’s headers’s header list. + headersList.clear(); + + // 4. If headers is a Headers object, then for each header in its header + // list, append header’s name/header’s value to this’s headers. + if (headers instanceof HeadersList) { + var _iterator = _createForOfIteratorHelper(headers), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _slicedToArray(_step.value, 2), + key = _step$value[0], + val = _step$value[1]; + headersList.append(key, val); + } + // Note: Copy the `set-cookie` meta-data. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + headersList.cookies = headers.cookies; + } else { + // 5. Otherwise, fill this’s headers with headers. + fillHeaders(this[kHeaders], headers); + } + } + + // 33. Let inputBody be input’s request’s body if input is a Request + // object; otherwise null. + var inputBody = input instanceof Request ? input[kState].body : null; + + // 34. If either init["body"] exists and is non-null or inputBody is + // non-null, and request’s method is `GET` or `HEAD`, then throw a + // TypeError. + if ((init.body != null || inputBody != null) && (request.method === 'GET' || request.method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body.'); + } + + // 35. Let initBody be null. + var initBody = null; + + // 36. If init["body"] exists and is non-null, then: + if (init.body != null) { + // 1. Let Content-Type be null. + // 2. Set initBody and Content-Type to the result of extracting + // init["body"], with keepalive set to request’s keepalive. + var _extractBody = extractBody(init.body, request.keepalive), + _extractBody2 = _slicedToArray(_extractBody, 2), + extractedBody = _extractBody2[0], + contentType = _extractBody2[1]; + initBody = extractedBody; + + // 3, If Content-Type is non-null and this’s headers’s header list does + // not contain `Content-Type`, then append `Content-Type`/Content-Type to + // this’s headers. + if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) { + this[kHeaders].append('content-type', contentType); + } + } + + // 37. Let inputOrInitBody be initBody if it is non-null; otherwise + // inputBody. + var inputOrInitBody = (_initBody = initBody) !== null && _initBody !== void 0 ? _initBody : inputBody; + + // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is + // null, then: + if (inputOrInitBody != null && inputOrInitBody.source == null) { + // 1. If initBody is non-null and init["duplex"] does not exist, + // then throw a TypeError. + if (initBody != null && init.duplex == null) { + throw new TypeError('RequestInit: duplex option is required when sending a body.'); + } + + // 2. If this’s request’s mode is neither "same-origin" nor "cors", + // then throw a TypeError. + if (request.mode !== 'same-origin' && request.mode !== 'cors') { + throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"'); + } + + // 3. Set this’s request’s use-CORS-preflight flag. + request.useCORSPreflightFlag = true; + } + + // 39. Let finalBody be inputOrInitBody. + var finalBody = inputOrInitBody; + + // 40. If initBody is null and inputBody is non-null, then: + if (initBody == null && inputBody != null) { + // 1. If input is unusable, then throw a TypeError. + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError('Cannot construct a Request with a Request object that has already been used.'); + } + + // 2. Set finalBody to the result of creating a proxy for inputBody. + if (!TransformStream) { + TransformStream = (__webpack_require__(3774).TransformStream); + } + + // https://streams.spec.whatwg.org/#readablestream-create-a-proxy + var identityTransform = new TransformStream(); + inputBody.stream.pipeThrough(identityTransform); + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + }; + } + + // 41. Set this’s request’s body to finalBody. + this[kState].body = finalBody; + } + + // Returns request’s HTTP method, which is "GET" by default. + return _createClass(Request, [{ + key: "method", + get: function get() { + webidl.brandCheck(this, Request); + + // The method getter steps are to return this’s request’s method. + return this[kState].method; + } + + // Returns the URL of request as a string. + }, { + key: "url", + get: function get() { + webidl.brandCheck(this, Request); + + // The url getter steps are to return this’s request’s URL, serialized. + return URLSerializer(this[kState].url); + } + + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + }, { + key: "headers", + get: function get() { + webidl.brandCheck(this, Request); + + // The headers getter steps are to return this’s headers. + return this[kHeaders]; + } + + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + }, { + key: "destination", + get: function get() { + webidl.brandCheck(this, Request); + + // The destination getter are to return this’s request’s destination. + return this[kState].destination; + } + + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + }, { + key: "referrer", + get: function get() { + webidl.brandCheck(this, Request); + + // 1. If this’s request’s referrer is "no-referrer", then return the + // empty string. + if (this[kState].referrer === 'no-referrer') { + return ''; + } + + // 2. If this’s request’s referrer is "client", then return + // "about:client". + if (this[kState].referrer === 'client') { + return 'about:client'; + } + + // Return this’s request’s referrer, serialized. + return this[kState].referrer.toString(); + } + + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + }, { + key: "referrerPolicy", + get: function get() { + webidl.brandCheck(this, Request); + + // The referrerPolicy getter steps are to return this’s request’s referrer policy. + return this[kState].referrerPolicy; + } + + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + }, { + key: "mode", + get: function get() { + webidl.brandCheck(this, Request); + + // The mode getter steps are to return this’s request’s mode. + return this[kState].mode; + } + + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + }, { + key: "credentials", + get: function get() { + // The credentials getter steps are to return this’s request’s credentials mode. + return this[kState].credentials; + } + + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + }, { + key: "cache", + get: function get() { + webidl.brandCheck(this, Request); + + // The cache getter steps are to return this’s request’s cache mode. + return this[kState].cache; + } + + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + }, { + key: "redirect", + get: function get() { + webidl.brandCheck(this, Request); + + // The redirect getter steps are to return this’s request’s redirect mode. + return this[kState].redirect; + } + + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + }, { + key: "integrity", + get: function get() { + webidl.brandCheck(this, Request); + + // The integrity getter steps are to return this’s request’s integrity + // metadata. + return this[kState].integrity; + } + + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + }, { + key: "keepalive", + get: function get() { + webidl.brandCheck(this, Request); + + // The keepalive getter steps are to return this’s request’s keepalive. + return this[kState].keepalive; + } + + // Returns a boolean indicating whether or not request is for a reload + // navigation. + }, { + key: "isReloadNavigation", + get: function get() { + webidl.brandCheck(this, Request); + + // The isReloadNavigation getter steps are to return true if this’s + // request’s reload-navigation flag is set; otherwise false. + return this[kState].reloadNavigation; + } + + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + }, { + key: "isHistoryNavigation", + get: function get() { + webidl.brandCheck(this, Request); + + // The isHistoryNavigation getter steps are to return true if this’s request’s + // history-navigation flag is set; otherwise false. + return this[kState].historyNavigation; + } + + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + }, { + key: "signal", + get: function get() { + webidl.brandCheck(this, Request); + + // The signal getter steps are to return this’s signal. + return this[kSignal]; + } + }, { + key: "body", + get: function get() { + webidl.brandCheck(this, Request); + return this[kState].body ? this[kState].body.stream : null; + } + }, { + key: "bodyUsed", + get: function get() { + webidl.brandCheck(this, Request); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + }, { + key: "duplex", + get: function get() { + webidl.brandCheck(this, Request); + return 'half'; + } + + // Returns a clone of request. + }, { + key: "clone", + value: function clone() { + var _this$body, + _this = this; + webidl.brandCheck(this, Request); + + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || (_this$body = this.body) !== null && _this$body !== void 0 && _this$body.locked) { + throw new TypeError('unusable'); + } + + // 2. Let clonedRequest be the result of cloning this’s request. + var clonedRequest = cloneRequest(this[kState]); + + // 3. Let clonedRequestObject be the result of creating a Request object, + // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. + var clonedRequestObject = new Request(kConstruct); + clonedRequestObject[kState] = clonedRequest; + clonedRequestObject[kRealm] = this[kRealm]; + clonedRequestObject[kHeaders] = new Headers(kConstruct); + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + + // 4. Make clonedRequestObject’s signal follow this’s signal. + var ac = new AbortController(); + if (this.signal.aborted) { + ac.abort(this.signal.reason); + } else { + util.addAbortListener(this.signal, function () { + ac.abort(_this.signal.reason); + }); + } + clonedRequestObject[kSignal] = ac.signal; + + // 4. Return clonedRequestObject. + return clonedRequestObject; + } + }]); +}(); +mixinBody(Request); +function makeRequest(init) { + // https://fetch.spec.whatwg.org/#requests + var request = _objectSpread(_objectSpread({ + method: 'GET', + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: '', + window: 'client', + keepalive: false, + serviceWorkers: 'all', + initiator: '', + destination: '', + priority: null, + origin: 'client', + policyContainer: 'client', + referrer: 'client', + referrerPolicy: '', + mode: 'no-cors', + useCORSPreflightFlag: false, + credentials: 'same-origin', + useCredentials: false, + cache: 'default', + redirect: 'follow', + integrity: '', + cryptoGraphicsNonceMetadata: '', + parserMetadata: '', + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: 'basic', + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false + }, init), {}, { + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() + }); + request.url = request.urlList[0]; + return request; +} + +// https://fetch.spec.whatwg.org/#concept-request-clone +function cloneRequest(request) { + // To clone a request request, run these steps: + + // 1. Let newRequest be a copy of request, except for its body. + var newRequest = makeRequest(_objectSpread(_objectSpread({}, request), {}, { + body: null + })); + + // 2. If request’s body is non-null, set newRequest’s body to the + // result of cloning request’s body. + if (request.body != null) { + newRequest.body = cloneBody(request.body); + } + + // 3. Return newRequest. + return newRequest; +} +Object.defineProperties(Request.prototype, _defineProperty({ + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty +}, Symbol.toStringTag, { + value: 'Request', + configurable: true +})); +webidl.converters.Request = webidl.interfaceConverter(Request); + +// https://fetch.spec.whatwg.org/#requestinfo +webidl.converters.RequestInfo = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V); + } + if (V instanceof Request) { + return webidl.converters.Request(V); + } + return webidl.converters.USVString(V); +}; +webidl.converters.AbortSignal = webidl.interfaceConverter(AbortSignal); + +// https://fetch.spec.whatwg.org/#requestinit +webidl.converters.RequestInit = webidl.dictionaryConverter([{ + key: 'method', + converter: webidl.converters.ByteString +}, { + key: 'headers', + converter: webidl.converters.HeadersInit +}, { + key: 'body', + converter: webidl.nullableConverter(webidl.converters.BodyInit) +}, { + key: 'referrer', + converter: webidl.converters.USVString +}, { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy +}, { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode +}, { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials +}, { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache +}, { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect +}, { + key: 'integrity', + converter: webidl.converters.DOMString +}, { + key: 'keepalive', + converter: webidl.converters["boolean"] +}, { + key: 'signal', + converter: webidl.nullableConverter(function (signal) { + return webidl.converters.AbortSignal(signal, { + strict: false + }); + }) +}, { + key: 'window', + converter: webidl.converters.any +}, { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex +}]); +module.exports = { + Request: Request, + makeRequest: makeRequest +}; + +/***/ }), + +/***/ 4284: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var _defineProperty = (__webpack_require__(3693)["default"]); +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(5893), + Headers = _require.Headers, + HeadersList = _require.HeadersList, + fill = _require.fill; +var _require2 = __webpack_require__(5491), + extractBody = _require2.extractBody, + cloneBody = _require2.cloneBody, + mixinBody = _require2.mixinBody; +var util = __webpack_require__(6632); +var kEnumerableProperty = util.kEnumerableProperty; +var _require3 = __webpack_require__(1035), + isValidReasonPhrase = _require3.isValidReasonPhrase, + isCancelled = _require3.isCancelled, + isAborted = _require3.isAborted, + isBlobLike = _require3.isBlobLike, + serializeJavascriptValueToJSONString = _require3.serializeJavascriptValueToJSONString, + isErrorLike = _require3.isErrorLike, + isomorphicEncode = _require3.isomorphicEncode; +var _require4 = __webpack_require__(8422), + redirectStatusSet = _require4.redirectStatusSet, + nullBodyStatus = _require4.nullBodyStatus, + DOMException = _require4.DOMException; +var _require5 = __webpack_require__(6614), + kState = _require5.kState, + kHeaders = _require5.kHeaders, + kGuard = _require5.kGuard, + kRealm = _require5.kRealm; +var _require6 = __webpack_require__(3702), + webidl = _require6.webidl; +var _require7 = __webpack_require__(7609), + FormData = _require7.FormData; +var _require8 = __webpack_require__(9956), + getGlobalOrigin = _require8.getGlobalOrigin; +var _require9 = __webpack_require__(9738), + URLSerializer = _require9.URLSerializer; +var _require10 = __webpack_require__(6771), + kHeadersList = _require10.kHeadersList, + kConstruct = _require10.kConstruct; +var assert = __webpack_require__(2613); +var _require11 = __webpack_require__(9023), + types = _require11.types; +var ReadableStream = globalThis.ReadableStream || (__webpack_require__(3774).ReadableStream); +var textEncoder = new TextEncoder('utf-8'); + +// https://fetch.spec.whatwg.org/#response-class +var Response = /*#__PURE__*/function () { + // https://fetch.spec.whatwg.org/#dom-response + function Response() { + var body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + _classCallCheck(this, Response); + if (body !== null) { + body = webidl.converters.BodyInit(body); + } + init = webidl.converters.ResponseInit(init); + + // TODO + this[kRealm] = { + settingsObject: {} + }; + + // 1. Set this’s response to a new response. + this[kState] = makeResponse({}); + + // 2. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is this’s response’s header list and guard + // is "response". + this[kHeaders] = new Headers(kConstruct); + this[kHeaders][kGuard] = 'response'; + this[kHeaders][kHeadersList] = this[kState].headersList; + this[kHeaders][kRealm] = this[kRealm]; + + // 3. Let bodyWithType be null. + var bodyWithType = null; + + // 4. If body is non-null, then set bodyWithType to the result of extracting body. + if (body != null) { + var _extractBody = extractBody(body), + _extractBody2 = _slicedToArray(_extractBody, 2), + extractedBody = _extractBody2[0], + type = _extractBody2[1]; + bodyWithType = { + body: extractedBody, + type: type + }; + } + + // 5. Perform initialize a response given this, init, and bodyWithType. + initializeResponse(this, init, bodyWithType); + } + + // Returns response’s type, e.g., "cors". + return _createClass(Response, [{ + key: "type", + get: function get() { + webidl.brandCheck(this, Response); + + // The type getter steps are to return this’s response’s type. + return this[kState].type; + } + + // Returns response’s URL, if it has one; otherwise the empty string. + }, { + key: "url", + get: function get() { + var _urlList; + webidl.brandCheck(this, Response); + var urlList = this[kState].urlList; + + // The url getter steps are to return the empty string if this’s + // response’s URL is null; otherwise this’s response’s URL, + // serialized with exclude fragment set to true. + var url = (_urlList = urlList[urlList.length - 1]) !== null && _urlList !== void 0 ? _urlList : null; + if (url === null) { + return ''; + } + return URLSerializer(url, true); + } + + // Returns whether response was obtained through a redirect. + }, { + key: "redirected", + get: function get() { + webidl.brandCheck(this, Response); + + // The redirected getter steps are to return true if this’s response’s URL + // list has more than one item; otherwise false. + return this[kState].urlList.length > 1; + } + + // Returns response’s status. + }, { + key: "status", + get: function get() { + webidl.brandCheck(this, Response); + + // The status getter steps are to return this’s response’s status. + return this[kState].status; + } + + // Returns whether response’s status is an ok status. + }, { + key: "ok", + get: function get() { + webidl.brandCheck(this, Response); + + // The ok getter steps are to return true if this’s response’s status is an + // ok status; otherwise false. + return this[kState].status >= 200 && this[kState].status <= 299; + } + + // Returns response’s status message. + }, { + key: "statusText", + get: function get() { + webidl.brandCheck(this, Response); + + // The statusText getter steps are to return this’s response’s status + // message. + return this[kState].statusText; + } + + // Returns response’s headers as Headers. + }, { + key: "headers", + get: function get() { + webidl.brandCheck(this, Response); + + // The headers getter steps are to return this’s headers. + return this[kHeaders]; + } + }, { + key: "body", + get: function get() { + webidl.brandCheck(this, Response); + return this[kState].body ? this[kState].body.stream : null; + } + }, { + key: "bodyUsed", + get: function get() { + webidl.brandCheck(this, Response); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + + // Returns a clone of response. + }, { + key: "clone", + value: function clone() { + webidl.brandCheck(this, Response); + + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || this.body && this.body.locked) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }); + } + + // 2. Let clonedResponse be the result of cloning this’s response. + var clonedResponse = cloneResponse(this[kState]); + + // 3. Return the result of creating a Response object, given + // clonedResponse, this’s headers’s guard, and this’s relevant Realm. + var clonedResponseObject = new Response(); + clonedResponseObject[kState] = clonedResponse; + clonedResponseObject[kRealm] = this[kRealm]; + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + return clonedResponseObject; + } + }], [{ + key: "error", + value: + // Creates network error Response. + function error() { + // TODO + var relevantRealm = { + settingsObject: {} + }; + + // The static error() method steps are to return the result of creating a + // Response object, given a new network error, "immutable", and this’s + // relevant Realm. + var responseObject = new Response(); + responseObject[kState] = makeNetworkError(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; + responseObject[kHeaders][kGuard] = 'immutable'; + responseObject[kHeaders][kRealm] = relevantRealm; + return responseObject; + } + + // https://fetch.spec.whatwg.org/#dom-response-json + }, { + key: "json", + value: function json(data) { + var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + webidl.argumentLengthCheck(arguments, 1, { + header: 'Response.json' + }); + if (init !== null) { + init = webidl.converters.ResponseInit(init); + } + + // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. + var bytes = textEncoder.encode(serializeJavascriptValueToJSONString(data)); + + // 2. Let body be the result of extracting bytes. + var body = extractBody(bytes); + + // 3. Let responseObject be the result of creating a Response object, given a new response, + // "response", and this’s relevant Realm. + var relevantRealm = { + settingsObject: {} + }; + var responseObject = new Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = 'response'; + responseObject[kHeaders][kRealm] = relevantRealm; + + // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). + initializeResponse(responseObject, init, { + body: body[0], + type: 'application/json' + }); + + // 5. Return responseObject. + return responseObject; + } + + // Creates a redirect Response that redirects to url with status status. + }, { + key: "redirect", + value: function redirect(url) { + var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 302; + var relevantRealm = { + settingsObject: {} + }; + webidl.argumentLengthCheck(arguments, 1, { + header: 'Response.redirect' + }); + url = webidl.converters.USVString(url); + status = webidl.converters['unsigned short'](status); + + // 1. Let parsedURL be the result of parsing url with current settings + // object’s API base URL. + // 2. If parsedURL is failure, then throw a TypeError. + // TODO: base-URL? + var parsedURL; + try { + parsedURL = new URL(url, getGlobalOrigin()); + } catch (err) { + throw Object.assign(new TypeError('Failed to parse URL from ' + url), { + cause: err + }); + } + + // 3. If status is not a redirect status, then throw a RangeError. + if (!redirectStatusSet.has(status)) { + throw new RangeError('Invalid status code ' + status); + } + + // 4. Let responseObject be the result of creating a Response object, + // given a new response, "immutable", and this’s relevant Realm. + var responseObject = new Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = 'immutable'; + responseObject[kHeaders][kRealm] = relevantRealm; + + // 5. Set responseObject’s response’s status to status. + responseObject[kState].status = status; + + // 6. Let value be parsedURL, serialized and isomorphic encoded. + var value = isomorphicEncode(URLSerializer(parsedURL)); + + // 7. Append `Location`/value to responseObject’s response’s header list. + responseObject[kState].headersList.append('location', value); + + // 8. Return responseObject. + return responseObject; + } + }]); +}(); +mixinBody(Response); +Object.defineProperties(Response.prototype, _defineProperty({ + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty +}, Symbol.toStringTag, { + value: 'Response', + configurable: true +})); +Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty +}); + +// https://fetch.spec.whatwg.org/#concept-response-clone +function cloneResponse(response) { + // To clone a response response, run these steps: + + // 1. If response is a filtered response, then return a new identical + // filtered response whose internal response is a clone of response’s + // internal response. + if (response.internalResponse) { + return filterResponse(cloneResponse(response.internalResponse), response.type); + } + + // 2. Let newResponse be a copy of response, except for its body. + var newResponse = makeResponse(_objectSpread(_objectSpread({}, response), {}, { + body: null + })); + + // 3. If response’s body is non-null, then set newResponse’s body to the + // result of cloning response’s body. + if (response.body != null) { + newResponse.body = cloneBody(response.body); + } + + // 4. Return newResponse. + return newResponse; +} +function makeResponse(init) { + return _objectSpread(_objectSpread({ + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: 'default', + status: 200, + timingInfo: null, + cacheState: '', + statusText: '' + }, init), {}, { + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), + urlList: init.urlList ? _toConsumableArray(init.urlList) : [] + }); +} +function makeNetworkError(reason) { + var isError = isErrorLike(reason); + return makeResponse({ + type: 'error', + status: 0, + error: isError ? reason : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === 'AbortError' + }); +} +function makeFilteredResponse(response, state) { + state = _objectSpread({ + internalResponse: response + }, state); + return new Proxy(response, { + get: function get(target, p) { + return p in state ? state[p] : target[p]; + }, + set: function set(target, p, value) { + assert(!(p in state)); + target[p] = value; + return true; + } + }); +} + +// https://fetch.spec.whatwg.org/#concept-filtered-response +function filterResponse(response, type) { + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (type === 'basic') { + // A basic filtered response is a filtered response whose type is "basic" + // and header list excludes any headers in internal response’s header list + // whose name is a forbidden response-header name. + + // Note: undici does not implement forbidden response-header names + return makeFilteredResponse(response, { + type: 'basic', + headersList: response.headersList + }); + } else if (type === 'cors') { + // A CORS filtered response is a filtered response whose type is "cors" + // and header list excludes any headers in internal response’s header + // list whose name is not a CORS-safelisted response-header name, given + // internal response’s CORS-exposed header-name list. + + // Note: undici does not implement CORS-safelisted response-header names + return makeFilteredResponse(response, { + type: 'cors', + headersList: response.headersList + }); + } else if (type === 'opaque') { + // An opaque filtered response is a filtered response whose type is + // "opaque", URL list is the empty list, status is 0, status message + // is the empty byte sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaque', + urlList: Object.freeze([]), + status: 0, + statusText: '', + body: null + }); + } else if (type === 'opaqueredirect') { + // An opaque-redirect filtered response is a filtered response whose type + // is "opaqueredirect", status is 0, status message is the empty byte + // sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }); + } else { + assert(false); + } +} + +// https://fetch.spec.whatwg.org/#appropriate-network-error +function makeAppropriateNetworkError(fetchParams) { + var err = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + // 1. Assert: fetchParams is canceled. + assert(isCancelled(fetchParams)); + + // 2. Return an aborted network error if fetchParams is aborted; + // otherwise return a network error. + return isAborted(fetchParams) ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { + cause: err + })) : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { + cause: err + })); +} + +// https://whatpr.org/fetch/1392.html#initialize-a-response +function initializeResponse(response, init, body) { + // 1. If init["status"] is not in the range 200 to 599, inclusive, then + // throw a RangeError. + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); + } + + // 2. If init["statusText"] does not match the reason-phrase token production, + // then throw a TypeError. + if ('statusText' in init && init.statusText != null) { + // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: + // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText'); + } + } + + // 3. Set response’s response’s status to init["status"]. + if ('status' in init && init.status != null) { + response[kState].status = init.status; + } + + // 4. Set response’s response’s status message to init["statusText"]. + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText; + } + + // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. + if ('headers' in init && init.headers != null) { + fill(response[kHeaders], init.headers); + } + + // 6. If body was given, then: + if (body) { + // 1. If response's status is a null body status, then throw a TypeError. + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: 'Invalid response status code ' + response.status + }); + } + + // 2. Set response's body to body's body. + response[kState].body = body.body; + + // 3. If body's type is non-null and response's header list does not contain + // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. + if (body.type != null && !response[kState].headersList.contains('Content-Type')) { + response[kState].headersList.append('content-type', body.type); + } + } +} +webidl.converters.ReadableStream = webidl.interfaceConverter(ReadableStream); +webidl.converters.FormData = webidl.interfaceConverter(FormData); +webidl.converters.URLSearchParams = webidl.interfaceConverter(URLSearchParams); + +// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit +webidl.converters.XMLHttpRequestBodyInit = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V); + } + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { + strict: false + }); + } + if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V); + } + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { + strict: false + }); + } + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V); + } + return webidl.converters.DOMString(V); +}; + +// https://fetch.spec.whatwg.org/#bodyinit +webidl.converters.BodyInit = function (V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V); + } + + // Note: the spec doesn't include async iterables, + // this is an undici extension. + if (V !== null && V !== void 0 && V[Symbol.asyncIterator]) { + return V; + } + return webidl.converters.XMLHttpRequestBodyInit(V); +}; +webidl.converters.ResponseInit = webidl.dictionaryConverter([{ + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: 200 +}, { + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: '' +}, { + key: 'headers', + converter: webidl.converters.HeadersInit +}]); +module.exports = { + makeNetworkError: makeNetworkError, + makeResponse: makeResponse, + makeAppropriateNetworkError: makeAppropriateNetworkError, + filterResponse: filterResponse, + Response: Response, + cloneResponse: cloneResponse +}; + +/***/ }), + +/***/ 6614: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kUrl: Symbol('url'), + kHeaders: Symbol('headers'), + kSignal: Symbol('signal'), + kState: Symbol('state'), + kGuard: Symbol('guard'), + kRealm: Symbol('realm') +}; + +/***/ }), + +/***/ 1035: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _defineProperty = (__webpack_require__(3693)["default"]); +var _wrapRegExp = (__webpack_require__(8250)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _require = __webpack_require__(8422), + redirectStatusSet = _require.redirectStatusSet, + referrerPolicyTokens = _require.referrerPolicySet, + badPortsSet = _require.badPortsSet; +var _require2 = __webpack_require__(9956), + getGlobalOrigin = _require2.getGlobalOrigin; +var _require3 = __webpack_require__(5368), + performance = _require3.performance; +var _require4 = __webpack_require__(6632), + isBlobLike = _require4.isBlobLike, + toUSVString = _require4.toUSVString, + ReadableStreamFrom = _require4.ReadableStreamFrom; +var assert = __webpack_require__(2613); +var _require5 = __webpack_require__(8253), + isUint8Array = _require5.isUint8Array; +var supportedHashes = []; + +// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable +/** @type {import('crypto')|undefined} */ +var crypto; +try { + crypto = __webpack_require__(6982); + var possibleRelevantHashes = ['sha256', 'sha384', 'sha512']; + supportedHashes = crypto.getHashes().filter(function (hash) { + return possibleRelevantHashes.includes(hash); + }); + /* c8 ignore next 3 */ +} catch (_unused) {} +function responseURL(response) { + // https://fetch.spec.whatwg.org/#responses + // A response has an associated URL. It is a pointer to the last URL + // in response’s URL list and null if response’s URL list is empty. + var urlList = response.urlList; + var length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); +} + +// https://fetch.spec.whatwg.org/#concept-response-location-url +function responseLocationURL(response, requestFragment) { + // 1. If response’s status is not a redirect status, then return null. + if (!redirectStatusSet.has(response.status)) { + return null; + } + + // 2. Let location be the result of extracting header list values given + // `Location` and response’s header list. + var location = response.headersList.get('location'); + + // 3. If location is a header value, then set location to the result of + // parsing location with response’s URL. + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)); + } + + // 4. If location is a URL whose fragment is null, then set location’s + // fragment to requestFragment. + if (location && !location.hash) { + location.hash = requestFragment; + } + + // 5. Return location. + return location; +} + +/** @returns {URL} */ +function requestCurrentURL(request) { + return request.urlList[request.urlList.length - 1]; +} +function requestBadPort(request) { + // 1. Let url be request’s current URL. + var url = requestCurrentURL(request); + + // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, + // then return blocked. + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked'; + } + + // 3. Return allowed. + return 'allowed'; +} +function isErrorLike(object) { + var _object$constructor, _object$constructor2; + return object instanceof Error || (object === null || object === void 0 || (_object$constructor = object.constructor) === null || _object$constructor === void 0 ? void 0 : _object$constructor.name) === 'Error' || (object === null || object === void 0 || (_object$constructor2 = object.constructor) === null || _object$constructor2 === void 0 ? void 0 : _object$constructor2.name) === 'DOMException'; +} + +// Check whether |statusText| is a ByteString and +// matches the Reason-Phrase token production. +// RFC 2616: https://tools.ietf.org/html/rfc2616 +// RFC 7230: https://tools.ietf.org/html/rfc7230 +// "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" +// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 +function isValidReasonPhrase(statusText) { + for (var i = 0; i < statusText.length; ++i) { + var c = statusText.charCodeAt(i); + if (!(c === 0x09 || + // HTAB + c >= 0x20 && c <= 0x7e || + // SP / VCHAR + c >= 0x80 && c <= 0xff + // obs-text + )) { + return false; + } + } + return true; +} + +/** + * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 + * @param {number} c + */ +function isTokenCharCode(c) { + switch (c) { + case 0x22: + case 0x28: + case 0x29: + case 0x2c: + case 0x2f: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x40: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x7b: + case 0x7d: + // DQUOTE and "(),/:;<=>?@[\]{}" + return false; + default: + // VCHAR %x21-7E + return c >= 0x21 && c <= 0x7e; + } +} + +/** + * @param {string} characters + */ +function isValidHTTPToken(characters) { + if (characters.length === 0) { + return false; + } + for (var i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false; + } + } + return true; +} + +/** + * @see https://fetch.spec.whatwg.org/#header-name + * @param {string} potentialValue + */ +function isValidHeaderName(potentialValue) { + return isValidHTTPToken(potentialValue); +} + +/** + * @see https://fetch.spec.whatwg.org/#header-value + * @param {string} potentialValue + */ +function isValidHeaderValue(potentialValue) { + // - Has no leading or trailing HTTP tab or space bytes. + // - Contains no 0x00 (NUL) or HTTP newline bytes. + if (potentialValue.startsWith('\t') || potentialValue.startsWith(' ') || potentialValue.endsWith('\t') || potentialValue.endsWith(' ')) { + return false; + } + if (potentialValue.includes('\0') || potentialValue.includes('\r') || potentialValue.includes('\n')) { + return false; + } + return true; +} + +// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect +function setRequestReferrerPolicyOnRedirect(request, actualResponse) { + var _headersList$get; + // Given a request request and a response actualResponse, this algorithm + // updates request’s referrer policy according to the Referrer-Policy + // header (if any) in actualResponse. + + // 1. Let policy be the result of executing § 8.1 Parse a referrer policy + // from a Referrer-Policy header on actualResponse. + + // 8.1 Parse a referrer policy from a Referrer-Policy header + // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. + var headersList = actualResponse.headersList; + // 2. Let policy be the empty string. + // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. + // 4. Return policy. + var policyHeader = ((_headersList$get = headersList.get('referrer-policy')) !== null && _headersList$get !== void 0 ? _headersList$get : '').split(','); + + // Note: As the referrer-policy can contain multiple policies + // separated by comma, we need to loop through all of them + // and pick the first valid one. + // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy + var policy = ''; + if (policyHeader.length > 0) { + // The right-most policy takes precedence. + // The left-most policy is the fallback. + for (var i = policyHeader.length; i !== 0; i--) { + var token = policyHeader[i - 1].trim(); + if (referrerPolicyTokens.has(token)) { + policy = token; + break; + } + } + } + + // 2. If policy is not the empty string, then set request’s referrer policy to policy. + if (policy !== '') { + request.referrerPolicy = policy; + } +} + +// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check +function crossOriginResourcePolicyCheck() { + // TODO + return 'allowed'; +} + +// https://fetch.spec.whatwg.org/#concept-cors-check +function corsCheck() { + // TODO + return 'success'; +} + +// https://fetch.spec.whatwg.org/#concept-tao-check +function TAOCheck() { + // TODO + return 'success'; +} +function appendFetchMetadata(httpRequest) { + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header + + // 1. Assert: r’s url is a potentially trustworthy URL. + // TODO + + // 2. Let header be a Structured Header whose value is a token. + var header = null; + + // 3. Set header’s value to r’s mode. + header = httpRequest.mode; + + // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. + httpRequest.headersList.set('sec-fetch-mode', header); + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header + // TODO +} + +// https://fetch.spec.whatwg.org/#append-a-request-origin-header +function appendRequestOriginHeader(request) { + // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. + var serializedOrigin = request.origin; + + // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. + if (request.responseTainting === 'cors' || request.mode === 'websocket') { + if (serializedOrigin) { + request.headersList.append('origin', serializedOrigin); + } + + // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: + } else if (request.method !== 'GET' && request.method !== 'HEAD') { + // 1. Switch on request’s referrer policy: + switch (request.referrerPolicy) { + case 'no-referrer': + // Set serializedOrigin to `null`. + serializedOrigin = null; + break; + case 'no-referrer-when-downgrade': + case 'strict-origin': + case 'strict-origin-when-cross-origin': + // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. + if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { + serializedOrigin = null; + } + break; + case 'same-origin': + // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. + if (!sameOrigin(request, requestCurrentURL(request))) { + serializedOrigin = null; + } + break; + default: + // Do nothing. + } + if (serializedOrigin) { + // 2. Append (`Origin`, serializedOrigin) to request’s header list. + request.headersList.append('origin', serializedOrigin); + } + } +} +function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + // TODO + return performance.now(); +} + +// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info +function createOpaqueTimingInfo(timingInfo) { + var _timingInfo$startTime, _timingInfo$startTime2; + return { + startTime: (_timingInfo$startTime = timingInfo.startTime) !== null && _timingInfo$startTime !== void 0 ? _timingInfo$startTime : 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: (_timingInfo$startTime2 = timingInfo.startTime) !== null && _timingInfo$startTime2 !== void 0 ? _timingInfo$startTime2 : 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + }; +} + +// https://html.spec.whatwg.org/multipage/origin.html#policy-container +function makePolicyContainer() { + // Note: the fetch spec doesn't make use of embedder policy or CSP list + return { + referrerPolicy: 'strict-origin-when-cross-origin' + }; +} + +// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container +function clonePolicyContainer(policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + }; +} + +// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer +function determineRequestsReferrer(request) { + // 1. Let policy be request's referrer policy. + var policy = request.referrerPolicy; + + // Note: policy cannot (shouldn't) be null or an empty string. + assert(policy); + + // 2. Let environment be request’s client. + + var referrerSource = null; + + // 3. Switch on request’s referrer: + if (request.referrer === 'client') { + // Note: node isn't a browser and doesn't implement document/iframes, + // so we bypass this step and replace it with our own. + + var globalOrigin = getGlobalOrigin(); + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer'; + } + + // note: we need to clone it as it's mutated + referrerSource = new URL(globalOrigin); + } else if (request.referrer instanceof URL) { + // Let referrerSource be request’s referrer. + referrerSource = request.referrer; + } + + // 4. Let request’s referrerURL be the result of stripping referrerSource for + // use as a referrer. + var referrerURL = stripURLForReferrer(referrerSource); + + // 5. Let referrerOrigin be the result of stripping referrerSource for use as + // a referrer, with the origin-only flag set to true. + var referrerOrigin = stripURLForReferrer(referrerSource, true); + + // 6. If the result of serializing referrerURL is a string whose length is + // greater than 4096, set referrerURL to referrerOrigin. + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; + } + var areSameOrigin = sameOrigin(request, referrerURL); + var isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request.url); + + // 8. Execute the switch statements corresponding to the value of policy: + switch (policy) { + case 'origin': + return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); + case 'unsafe-url': + return referrerURL; + case 'same-origin': + return areSameOrigin ? referrerOrigin : 'no-referrer'; + case 'origin-when-cross-origin': + return areSameOrigin ? referrerURL : referrerOrigin; + case 'strict-origin-when-cross-origin': + { + var currentURL = requestCurrentURL(request); + + // 1. If the origin of referrerURL and the origin of request’s current + // URL are the same, then return referrerURL. + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL; + } + + // 2. If referrerURL is a potentially trustworthy URL and request’s + // current URL is not a potentially trustworthy URL, then return no + // referrer. + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer'; + } + + // 3. Return referrerOrigin. + return referrerOrigin; + } + case 'strict-origin': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + case 'no-referrer-when-downgrade': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + + default: + // eslint-disable-line + return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin; + } +} + +/** + * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url + * @param {URL} url + * @param {boolean|undefined} originOnly + */ +function stripURLForReferrer(url, originOnly) { + // 1. Assert: url is a URL. + assert(url instanceof URL); + + // 2. If url’s scheme is a local scheme, then return no referrer. + if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { + return 'no-referrer'; + } + + // 3. Set url’s username to the empty string. + url.username = ''; + + // 4. Set url’s password to the empty string. + url.password = ''; + + // 5. Set url’s fragment to null. + url.hash = ''; + + // 6. If the origin-only flag is true, then: + if (originOnly) { + // 1. Set url’s path to « the empty string ». + url.pathname = ''; + + // 2. Set url’s query to null. + url.search = ''; + } + + // 7. Return url. + return url; +} +function isURLPotentiallyTrustworthy(url) { + if (!(url instanceof URL)) { + return false; + } + + // If child of about, return true + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true; + } + + // If scheme is data, return true + if (url.protocol === 'data:') return true; + + // If file, return true + if (url.protocol === 'file:') return true; + return isOriginPotentiallyTrustworthy(url.origin); + function isOriginPotentiallyTrustworthy(origin) { + // If origin is explicitly null, return false + if (origin == null || origin === 'null') return false; + var originAsURL = new URL(origin); + + // If secure, return true + if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { + return true; + } + + // If localhost or variants, return true + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.') || originAsURL.hostname.endsWith('.localhost')) { + return true; + } + + // If any other, return false + return false; + } +} + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist + * @param {Uint8Array} bytes + * @param {string} metadataList + */ +function bytesMatch(bytes, metadataList) { + // If node is not built with OpenSSL support, we cannot check + // a request's integrity, so allow it by default (the spec will + // allow requests if an invalid hash is given, as precedence). + /* istanbul ignore if: only if node is built with --without-ssl */ + if (crypto === undefined) { + return true; + } + + // 1. Let parsedMetadata be the result of parsing metadataList. + var parsedMetadata = parseMetadata(metadataList); + + // 2. If parsedMetadata is no metadata, return true. + if (parsedMetadata === 'no metadata') { + return true; + } + + // 3. If response is not eligible for integrity validation, return false. + // TODO + + // 4. If parsedMetadata is the empty set, return true. + if (parsedMetadata.length === 0) { + return true; + } + + // 5. Let metadata be the result of getting the strongest + // metadata from parsedMetadata. + var strongest = getStrongestMetadata(parsedMetadata); + var metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest); + + // 6. For each item in metadata: + var _iterator = _createForOfIteratorHelper(metadata), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var item = _step.value; + // 1. Let algorithm be the alg component of item. + var algorithm = item.algo; + + // 2. Let expectedValue be the val component of item. + var expectedValue = item.hash; + + // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e + // "be liberal with padding". This is annoying, and it's not even in the spec. + + // 3. Let actualValue be the result of applying algorithm to bytes. + var actualValue = crypto.createHash(algorithm).update(bytes).digest('base64'); + if (actualValue[actualValue.length - 1] === '=') { + if (actualValue[actualValue.length - 2] === '=') { + actualValue = actualValue.slice(0, -2); + } else { + actualValue = actualValue.slice(0, -1); + } + } + + // 4. If actualValue is a case-sensitive match for expectedValue, + // return true. + if (compareBase64Mixed(actualValue, expectedValue)) { + return true; + } + } + + // 7. Return false. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return false; +} + +// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options +// https://www.w3.org/TR/CSP2/#source-list-syntax +// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 +var parseHashWithOptions = /*#__PURE__*/_wrapRegExp(/(sha256|sha384|sha512)\x2D(([A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i, { + algo: 1, + hash: 3 +}); + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata + * @param {string} metadata + */ +function parseMetadata(metadata) { + // 1. Let result be the empty set. + /** @type {{ algo: string, hash: string }[]} */ + var result = []; + + // 2. Let empty be equal to true. + var empty = true; + + // 3. For each token returned by splitting metadata on spaces: + var _iterator2 = _createForOfIteratorHelper(metadata.split(' ')), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var token = _step2.value; + // 1. Set empty to false. + empty = false; + + // 2. Parse token as a hash-with-options. + var parsedToken = parseHashWithOptions.exec(token); + + // 3. If token does not parse, continue to the next token. + if (parsedToken === null || parsedToken.groups === undefined || parsedToken.groups.algo === undefined) { + // Note: Chromium blocks the request at this point, but Firefox + // gives a warning that an invalid integrity was given. The + // correct behavior is to ignore these, and subsequently not + // check the integrity of the resource. + continue; + } + + // 4. Let algorithm be the hash-algo component of token. + var algorithm = parsedToken.groups.algo.toLowerCase(); + + // 5. If algorithm is a hash function recognized by the user + // agent, add the parsed token to result. + if (supportedHashes.includes(algorithm)) { + result.push(parsedToken.groups); + } + } + + // 4. Return no metadata if empty is true, otherwise return result. + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + if (empty === true) { + return 'no metadata'; + } + return result; +} + +/** + * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList + */ +function getStrongestMetadata(metadataList) { + // Let algorithm be the algo component of the first item in metadataList. + // Can be sha256 + var algorithm = metadataList[0].algo; + // If the algorithm is sha512, then it is the strongest + // and we can return immediately + if (algorithm[3] === '5') { + return algorithm; + } + for (var i = 1; i < metadataList.length; ++i) { + var metadata = metadataList[i]; + // If the algorithm is sha512, then it is the strongest + // and we can break the loop immediately + if (metadata.algo[3] === '5') { + algorithm = 'sha512'; + break; + // If the algorithm is sha384, then a potential sha256 or sha384 is ignored + } else if (algorithm[3] === '3') { + continue; + // algorithm is sha256, check if algorithm is sha384 and if so, set it as + // the strongest + } else if (metadata.algo[3] === '3') { + algorithm = 'sha384'; + } + } + return algorithm; +} +function filterMetadataListByAlgorithm(metadataList, algorithm) { + if (metadataList.length === 1) { + return metadataList; + } + var pos = 0; + for (var i = 0; i < metadataList.length; ++i) { + if (metadataList[i].algo === algorithm) { + metadataList[pos++] = metadataList[i]; + } + } + metadataList.length = pos; + return metadataList; +} + +/** + * Compares two base64 strings, allowing for base64url + * in the second string. + * +* @param {string} actualValue always base64 + * @param {string} expectedValue base64 or base64url + * @returns {boolean} + */ +function compareBase64Mixed(actualValue, expectedValue) { + if (actualValue.length !== expectedValue.length) { + return false; + } + for (var i = 0; i < actualValue.length; ++i) { + if (actualValue[i] !== expectedValue[i]) { + if (actualValue[i] === '+' && expectedValue[i] === '-' || actualValue[i] === '/' && expectedValue[i] === '_') { + continue; + } + return false; + } + } + return true; +} + +// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request +function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) { + // TODO +} + +/** + * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} + * @param {URL} A + * @param {URL} B + */ +function sameOrigin(A, B) { + // 1. If A and B are the same opaque origin, then return true. + if (A.origin === B.origin && A.origin === 'null') { + return true; + } + + // 2. If A and B are both tuple origins and their schemes, + // hosts, and port are identical, then return true. + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; + } + + // 3. Return false. + return false; +} +function createDeferredPromise() { + var res; + var rej; + var promise = new Promise(function (resolve, reject) { + res = resolve; + rej = reject; + }); + return { + promise: promise, + resolve: res, + reject: rej + }; +} +function isAborted(fetchParams) { + return fetchParams.controller.state === 'aborted'; +} +function isCancelled(fetchParams) { + return fetchParams.controller.state === 'aborted' || fetchParams.controller.state === 'terminated'; +} +var normalizeMethodRecord = { + "delete": 'DELETE', + DELETE: 'DELETE', + get: 'GET', + GET: 'GET', + head: 'HEAD', + HEAD: 'HEAD', + options: 'OPTIONS', + OPTIONS: 'OPTIONS', + post: 'POST', + POST: 'POST', + put: 'PUT', + PUT: 'PUT' +}; + +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(normalizeMethodRecord, null); + +/** + * @see https://fetch.spec.whatwg.org/#concept-method-normalize + * @param {string} method + */ +function normalizeMethod(method) { + var _normalizeMethodRecor; + return (_normalizeMethodRecor = normalizeMethodRecord[method.toLowerCase()]) !== null && _normalizeMethodRecor !== void 0 ? _normalizeMethodRecor : method; +} + +// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string +function serializeJavascriptValueToJSONString(value) { + // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). + var result = JSON.stringify(value); + + // 2. If result is undefined, then throw a TypeError. + if (result === undefined) { + throw new TypeError('Value is not JSON serializable'); + } + + // 3. Assert: result is a string. + assert(typeof result === 'string'); + + // 4. Return result. + return result; +} + +// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object +var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); + +/** + * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object + * @param {() => unknown[]} iterator + * @param {string} name name of the instance + * @param {'key'|'value'|'key+value'} kind + */ +function makeIterator(iterator, name, kind) { + var object = { + index: 0, + kind: kind, + target: iterator + }; + var i = _defineProperty({ + next: function next() { + // 1. Let interface be the interface for which the iterator prototype object exists. + + // 2. Let thisValue be the this value. + + // 3. Let object be ? ToObject(thisValue). + + // 4. If object is a platform object, then perform a security + // check, passing: + + // 5. If object is not a default iterator object for interface, + // then throw a TypeError. + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError("'next' called on an object that does not implement interface ".concat(name, " Iterator.")); + } + + // 6. Let index be object’s index. + // 7. Let kind be object’s kind. + // 8. Let values be object’s target's value pairs to iterate over. + var index = object.index, + kind = object.kind, + target = object.target; + var values = target(); + + // 9. Let len be the length of values. + var len = values.length; + + // 10. If index is greater than or equal to len, then return + // CreateIterResultObject(undefined, true). + if (index >= len) { + return { + value: undefined, + done: true + }; + } + + // 11. Let pair be the entry in values at index index. + var pair = values[index]; + + // 12. Set object’s index to index + 1. + object.index = index + 1; + + // 13. Return the iterator result for pair and kind. + return iteratorResult(pair, kind); + } + }, Symbol.toStringTag, "".concat(name, " Iterator")); + + // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. + Object.setPrototypeOf(i, esIteratorPrototype); + // esIteratorPrototype needs to be the prototype of i + // which is the prototype of an empty object. Yes, it's confusing. + return Object.setPrototypeOf({}, i); +} + +// https://webidl.spec.whatwg.org/#iterator-result +function iteratorResult(pair, kind) { + var result; + + // 1. Let result be a value determined by the value of kind: + switch (kind) { + case 'key': + { + // 1. Let idlKey be pair’s key. + // 2. Let key be the result of converting idlKey to an + // ECMAScript value. + // 3. result is key. + result = pair[0]; + break; + } + case 'value': + { + // 1. Let idlValue be pair’s value. + // 2. Let value be the result of converting idlValue to + // an ECMAScript value. + // 3. result is value. + result = pair[1]; + break; + } + case 'key+value': + { + // 1. Let idlKey be pair’s key. + // 2. Let idlValue be pair’s value. + // 3. Let key be the result of converting idlKey to an + // ECMAScript value. + // 4. Let value be the result of converting idlValue to + // an ECMAScript value. + // 5. Let array be ! ArrayCreate(2). + // 6. Call ! CreateDataProperty(array, "0", key). + // 7. Call ! CreateDataProperty(array, "1", value). + // 8. result is array. + result = pair; + break; + } + } + + // 2. Return CreateIterResultObject(result, false). + return { + value: result, + done: false + }; +} + +/** + * @see https://fetch.spec.whatwg.org/#body-fully-read + */ +function fullyReadBody(_x, _x2, _x3) { + return _fullyReadBody.apply(this, arguments); +} +/** @type {ReadableStream} */ +function _fullyReadBody() { + _fullyReadBody = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(body, processBody, processBodyError) { + var successSteps, errorSteps, reader, result; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + // 1. If taskDestination is null, then set taskDestination to + // the result of starting a new parallel queue. + // 2. Let successSteps given a byte sequence bytes be to queue a + // fetch task to run processBody given bytes, with taskDestination. + successSteps = processBody; // 3. Let errorSteps be to queue a fetch task to run processBodyError, + // with taskDestination. + errorSteps = processBodyError; // 4. Let reader be the result of getting a reader for body’s stream. + // If that threw an exception, then run errorSteps with that + // exception and return. + _context.prev = 2; + reader = body.stream.getReader(); + _context.next = 10; + break; + case 6: + _context.prev = 6; + _context.t0 = _context["catch"](2); + errorSteps(_context.t0); + return _context.abrupt("return"); + case 10: + _context.prev = 10; + _context.next = 13; + return readAllBytes(reader); + case 13: + result = _context.sent; + successSteps(result); + _context.next = 20; + break; + case 17: + _context.prev = 17; + _context.t1 = _context["catch"](10); + errorSteps(_context.t1); + case 20: + case "end": + return _context.stop(); + } + }, _callee, null, [[2, 6], [10, 17]]); + })); + return _fullyReadBody.apply(this, arguments); +} +var ReadableStream = globalThis.ReadableStream; +function isReadableStreamLike(stream) { + if (!ReadableStream) { + ReadableStream = (__webpack_require__(3774).ReadableStream); + } + return stream instanceof ReadableStream || stream[Symbol.toStringTag] === 'ReadableStream' && typeof stream.tee === 'function'; +} +var MAXIMUM_ARGUMENT_LENGTH = 65535; + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-decode + * @param {number[]|Uint8Array} input + */ +function isomorphicDecode(input) { + // 1. To isomorphic decode a byte sequence input, return a string whose code point + // length is equal to input’s length and whose code points have the same values + // as the values of input’s bytes, in the same order. + + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode.apply(String, _toConsumableArray(input)); + } + return input.reduce(function (previous, current) { + return previous + String.fromCharCode(current); + }, ''); +} + +/** + * @param {ReadableStreamController} controller + */ +function readableStreamClose(controller) { + try { + controller.close(); + } catch (err) { + // TODO: add comment explaining why this error occurs. + if (!err.message.includes('Controller is already closed')) { + throw err; + } + } +} + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-encode + * @param {string} input + */ +function isomorphicEncode(input) { + // 1. Assert: input contains no code points greater than U+00FF. + for (var i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 0xFF); + } + + // 2. Return a byte sequence whose length is equal to input’s code + // point length and whose bytes have the same values as the + // values of input’s code points, in the same order + return input; +} + +/** + * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes + * @see https://streams.spec.whatwg.org/#read-loop + * @param {ReadableStreamDefaultReader} reader + */ +function readAllBytes(_x4) { + return _readAllBytes.apply(this, arguments); +} +/** + * @see https://fetch.spec.whatwg.org/#is-local + * @param {URL} url + */ +function _readAllBytes() { + _readAllBytes = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(reader) { + var bytes, byteLength, _yield$reader$read, done, chunk; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + bytes = []; + byteLength = 0; + case 2: + if (false) {} + _context2.next = 5; + return reader.read(); + case 5: + _yield$reader$read = _context2.sent; + done = _yield$reader$read.done; + chunk = _yield$reader$read.value; + if (!done) { + _context2.next = 10; + break; + } + return _context2.abrupt("return", Buffer.concat(bytes, byteLength)); + case 10: + if (isUint8Array(chunk)) { + _context2.next = 12; + break; + } + throw new TypeError('Received non-Uint8Array chunk'); + case 12: + // 2. Append the bytes represented by chunk to bytes. + bytes.push(chunk); + byteLength += chunk.length; + + // 3. Read-loop given reader, bytes, successSteps, and failureSteps. + _context2.next = 2; + break; + case 16: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return _readAllBytes.apply(this, arguments); +} +function urlIsLocal(url) { + assert('protocol' in url); // ensure it's a url object + + var protocol = url.protocol; + return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'; +} + +/** + * @param {string|URL} url + */ +function urlHasHttpsScheme(url) { + if (typeof url === 'string') { + return url.startsWith('https:'); + } + return url.protocol === 'https:'; +} + +/** + * @see https://fetch.spec.whatwg.org/#http-scheme + * @param {URL} url + */ +function urlIsHttpHttpsScheme(url) { + assert('protocol' in url); // ensure it's a url object + + var protocol = url.protocol; + return protocol === 'http:' || protocol === 'https:'; +} + +/** + * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. + */ +var hasOwn = Object.hasOwn || function (dict, key) { + return Object.prototype.hasOwnProperty.call(dict, key); +}; +module.exports = { + isAborted: isAborted, + isCancelled: isCancelled, + createDeferredPromise: createDeferredPromise, + ReadableStreamFrom: ReadableStreamFrom, + toUSVString: toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL: tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime: coarsenedSharedCurrentTime, + determineRequestsReferrer: determineRequestsReferrer, + makePolicyContainer: makePolicyContainer, + clonePolicyContainer: clonePolicyContainer, + appendFetchMetadata: appendFetchMetadata, + appendRequestOriginHeader: appendRequestOriginHeader, + TAOCheck: TAOCheck, + corsCheck: corsCheck, + crossOriginResourcePolicyCheck: crossOriginResourcePolicyCheck, + createOpaqueTimingInfo: createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect: setRequestReferrerPolicyOnRedirect, + isValidHTTPToken: isValidHTTPToken, + requestBadPort: requestBadPort, + requestCurrentURL: requestCurrentURL, + responseURL: responseURL, + responseLocationURL: responseLocationURL, + isBlobLike: isBlobLike, + isURLPotentiallyTrustworthy: isURLPotentiallyTrustworthy, + isValidReasonPhrase: isValidReasonPhrase, + sameOrigin: sameOrigin, + normalizeMethod: normalizeMethod, + serializeJavascriptValueToJSONString: serializeJavascriptValueToJSONString, + makeIterator: makeIterator, + isValidHeaderName: isValidHeaderName, + isValidHeaderValue: isValidHeaderValue, + hasOwn: hasOwn, + isErrorLike: isErrorLike, + fullyReadBody: fullyReadBody, + bytesMatch: bytesMatch, + isReadableStreamLike: isReadableStreamLike, + readableStreamClose: readableStreamClose, + isomorphicEncode: isomorphicEncode, + isomorphicDecode: isomorphicDecode, + urlIsLocal: urlIsLocal, + urlHasHttpsScheme: urlHasHttpsScheme, + urlIsHttpHttpsScheme: urlIsHttpHttpsScheme, + readAllBytes: readAllBytes, + normalizeMethodRecord: normalizeMethodRecord, + parseMetadata: parseMetadata +}; + +/***/ }), + +/***/ 3702: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var _require = __webpack_require__(9023), + types = _require.types; +var _require2 = __webpack_require__(1035), + hasOwn = _require2.hasOwn, + toUSVString = _require2.toUSVString; + +/** @type {import('../../types/webidl').Webidl} */ +var webidl = {}; +webidl.converters = {}; +webidl.util = {}; +webidl.errors = {}; +webidl.errors.exception = function (message) { + return new TypeError("".concat(message.header, ": ").concat(message.message)); +}; +webidl.errors.conversionFailed = function (context) { + var plural = context.types.length === 1 ? '' : ' one of'; + var message = "".concat(context.argument, " could not be converted to") + "".concat(plural, ": ").concat(context.types.join(', '), "."); + return webidl.errors.exception({ + header: context.prefix, + message: message + }); +}; +webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: "\"".concat(context.value, "\" is an invalid ").concat(context.type, ".") + }); +}; + +// https://webidl.spec.whatwg.org/#implements +webidl.brandCheck = function (V, I) { + var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + if ((opts === null || opts === void 0 ? void 0 : opts.strict) !== false && !(V instanceof I)) { + throw new TypeError('Illegal invocation'); + } else { + return (V === null || V === void 0 ? void 0 : V[Symbol.toStringTag]) === I.prototype[Symbol.toStringTag]; + } +}; +webidl.argumentLengthCheck = function (_ref, min, ctx) { + var length = _ref.length; + if (length < min) { + throw webidl.errors.exception(_objectSpread({ + message: "".concat(min, " argument").concat(min !== 1 ? 's' : '', " required, ") + "but".concat(length ? ' only' : '', " ").concat(length, " found.") + }, ctx)); + } +}; +webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }); +}; + +// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values +webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': + return 'Undefined'; + case 'boolean': + return 'Boolean'; + case 'string': + return 'String'; + case 'symbol': + return 'Symbol'; + case 'number': + return 'Number'; + case 'bigint': + return 'BigInt'; + case 'function': + case 'object': + { + if (V === null) { + return 'Null'; + } + return 'Object'; + } + } +}; + +// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint +webidl.util.ConvertToInt = function (V, bitLength, signedness) { + var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var upperBound; + var lowerBound; + + // 1. If bitLength is 64, then: + if (bitLength === 64) { + // 1. Let upperBound be 2^53 − 1. + upperBound = Math.pow(2, 53) - 1; + + // 2. If signedness is "unsigned", then let lowerBound be 0. + if (signedness === 'unsigned') { + lowerBound = 0; + } else { + // 3. Otherwise let lowerBound be −2^53 + 1. + lowerBound = Math.pow(-2, 53) + 1; + } + } else if (signedness === 'unsigned') { + // 2. Otherwise, if signedness is "unsigned", then: + + // 1. Let lowerBound be 0. + lowerBound = 0; + + // 2. Let upperBound be 2^bitLength − 1. + upperBound = Math.pow(2, bitLength) - 1; + } else { + // 3. Otherwise: + + // 1. Let lowerBound be -2^bitLength − 1. + lowerBound = Math.pow(-2, bitLength) - 1; + + // 2. Let upperBound be 2^bitLength − 1 − 1. + upperBound = Math.pow(2, bitLength - 1) - 1; + } + + // 4. Let x be ? ToNumber(V). + var x = Number(V); + + // 5. If x is −0, then set x to +0. + if (x === 0) { + x = 0; + } + + // 6. If the conversion is to an IDL type associated + // with the [EnforceRange] extended attribute, then: + if (opts.enforceRange === true) { + // 1. If x is NaN, +∞, or −∞, then throw a TypeError. + if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: "Could not convert ".concat(V, " to an integer.") + }); + } + + // 2. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x); + + // 3. If x < lowerBound or x > upperBound, then + // throw a TypeError. + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: "Value must be between ".concat(lowerBound, "-").concat(upperBound, ", got ").concat(x, ".") + }); + } + + // 4. Return x. + return x; + } + + // 7. If x is not NaN and the conversion is to an IDL + // type associated with the [Clamp] extended + // attribute, then: + if (!Number.isNaN(x) && opts.clamp === true) { + // 1. Set x to min(max(x, lowerBound), upperBound). + x = Math.min(Math.max(x, lowerBound), upperBound); + + // 2. Round x to the nearest integer, choosing the + // even integer if it lies halfway between two, + // and choosing +0 rather than −0. + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); + } else { + x = Math.ceil(x); + } + + // 3. Return x. + return x; + } + + // 8. If x is NaN, +0, +∞, or −∞, then return +0. + if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + return 0; + } + + // 9. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x); + + // 10. Set x to x modulo 2^bitLength. + x = x % Math.pow(2, bitLength); + + // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, + // then return x − 2^bitLength. + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength); + } + + // 12. Otherwise, return x. + return x; +}; + +// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart +webidl.util.IntegerPart = function (n) { + // 1. Let r be floor(abs(n)). + var r = Math.floor(Math.abs(n)); + + // 2. If n < 0, then return -1 × r. + if (n < 0) { + return -1 * r; + } + + // 3. Otherwise, return r. + return r; +}; + +// https://webidl.spec.whatwg.org/#es-sequence +webidl.sequenceConverter = function (converter) { + return function (V) { + var _V$Symbol$iterator; + // 1. If Type(V) is not Object, throw a TypeError. + if (webidl.util.Type(V) !== 'Object') { + throw webidl.errors.exception({ + header: 'Sequence', + message: "Value of type ".concat(webidl.util.Type(V), " is not an Object.") + }); + } + + // 2. Let method be ? GetMethod(V, @@iterator). + /** @type {Generator} */ + var method = V === null || V === void 0 || (_V$Symbol$iterator = V[Symbol.iterator]) === null || _V$Symbol$iterator === void 0 ? void 0 : _V$Symbol$iterator.call(V); + var seq = []; + + // 3. If method is undefined, throw a TypeError. + if (method === undefined || typeof method.next !== 'function') { + throw webidl.errors.exception({ + header: 'Sequence', + message: 'Object is not an iterator.' + }); + } + + // https://webidl.spec.whatwg.org/#create-sequence-from-iterable + while (true) { + var _method$next = method.next(), + done = _method$next.done, + value = _method$next.value; + if (done) { + break; + } + seq.push(converter(value)); + } + return seq; + }; +}; + +// https://webidl.spec.whatwg.org/#es-to-record +webidl.recordConverter = function (keyConverter, valueConverter) { + return function (O) { + // 1. If Type(O) is not Object, throw a TypeError. + if (webidl.util.Type(O) !== 'Object') { + throw webidl.errors.exception({ + header: 'Record', + message: "Value of type ".concat(webidl.util.Type(O), " is not an Object.") + }); + } + + // 2. Let result be a new empty instance of record. + var result = {}; + if (!types.isProxy(O)) { + // Object.keys only returns enumerable properties + var _keys = Object.keys(O); + for (var _i = 0, _keys2 = _keys; _i < _keys2.length; _i++) { + var key = _keys2[_i]; + // 1. Let typedKey be key converted to an IDL value of type K. + var typedKey = keyConverter(key); + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + var typedValue = valueConverter(O[key]); + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue; + } + + // 5. Return result. + return result; + } + + // 3. Let keys be ? O.[[OwnPropertyKeys]](). + var keys = Reflect.ownKeys(O); + + // 4. For each key of keys. + var _iterator = _createForOfIteratorHelper(keys), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _key = _step.value; + // 1. Let desc be ? O.[[GetOwnProperty]](key). + var desc = Reflect.getOwnPropertyDescriptor(O, _key); + + // 2. If desc is not undefined and desc.[[Enumerable]] is true: + if (desc !== null && desc !== void 0 && desc.enumerable) { + // 1. Let typedKey be key converted to an IDL value of type K. + var _typedKey = keyConverter(_key); + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + var _typedValue = valueConverter(O[_key]); + + // 4. Set result[typedKey] to typedValue. + result[_typedKey] = _typedValue; + } + } + + // 5. Return result. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return result; + }; +}; +webidl.interfaceConverter = function (i) { + return function (V) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: "Expected ".concat(V, " to be an instance of ").concat(i.name, ".") + }); + } + return V; + }; +}; +webidl.dictionaryConverter = function (converters) { + return function (dictionary) { + var type = webidl.util.Type(dictionary); + var dict = {}; + if (type === 'Null' || type === 'Undefined') { + return dict; + } else if (type !== 'Object') { + throw webidl.errors.exception({ + header: 'Dictionary', + message: "Expected ".concat(dictionary, " to be one of: Null, Undefined, Object.") + }); + } + var _iterator2 = _createForOfIteratorHelper(converters), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var options = _step2.value; + var key = options.key, + defaultValue = options.defaultValue, + required = options.required, + converter = options.converter; + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: "Missing required key \"".concat(key, "\".") + }); + } + } + var value = dictionary[key]; + var hasDefault = hasOwn(options, 'defaultValue'); + + // Only use defaultValue if value is undefined and + // a defaultValue options was provided. + if (hasDefault && value !== null) { + var _value; + value = (_value = value) !== null && _value !== void 0 ? _value : defaultValue; + } + + // A key can be optional and have no default value. + // When this happens, do not perform a conversion, + // and do not assign the key a value. + if (required || hasDefault || value !== undefined) { + value = converter(value); + if (options.allowedValues && !options.allowedValues.includes(value)) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: "".concat(value, " is not an accepted type. Expected one of ").concat(options.allowedValues.join(', '), ".") + }); + } + dict[key] = value; + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return dict; + }; +}; +webidl.nullableConverter = function (converter) { + return function (V) { + if (V === null) { + return V; + } + return converter(V); + }; +}; + +// https://webidl.spec.whatwg.org/#es-DOMString +webidl.converters.DOMString = function (V) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // 1. If V is null and the conversion is to an IDL type + // associated with the [LegacyNullToEmptyString] + // extended attribute, then return the DOMString value + // that represents the empty string. + if (V === null && opts.legacyNullToEmptyString) { + return ''; + } + + // 2. Let x be ? ToString(V). + if (typeof V === 'symbol') { + throw new TypeError('Could not convert argument of type symbol to string.'); + } + + // 3. Return the IDL DOMString value that represents the + // same sequence of code units as the one the + // ECMAScript String value x represents. + return String(V); +}; + +// https://webidl.spec.whatwg.org/#es-ByteString +webidl.converters.ByteString = function (V) { + // 1. Let x be ? ToString(V). + // Note: DOMString converter perform ? ToString(V) + var x = webidl.converters.DOMString(V); + + // 2. If the value of any element of x is greater than + // 255, then throw a TypeError. + for (var index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError('Cannot convert argument to a ByteString because the character at ' + "index ".concat(index, " has a value of ").concat(x.charCodeAt(index), " which is greater than 255.")); + } + } + + // 3. Return an IDL ByteString value whose length is the + // length of x, and where the value of each element is + // the value of the corresponding element of x. + return x; +}; + +// https://webidl.spec.whatwg.org/#es-USVString +webidl.converters.USVString = toUSVString; + +// https://webidl.spec.whatwg.org/#es-boolean +webidl.converters["boolean"] = function (V) { + // 1. Let x be the result of computing ToBoolean(V). + var x = Boolean(V); + + // 2. Return the IDL boolean value that is the one that represents + // the same truth value as the ECMAScript Boolean value x. + return x; +}; + +// https://webidl.spec.whatwg.org/#es-any +webidl.converters.any = function (V) { + return V; +}; + +// https://webidl.spec.whatwg.org/#es-long-long +webidl.converters['long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "signed"). + var x = webidl.util.ConvertToInt(V, 64, 'signed'); + + // 2. Return the IDL long long value that represents + // the same numeric value as x. + return x; +}; + +// https://webidl.spec.whatwg.org/#es-unsigned-long-long +webidl.converters['unsigned long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). + var x = webidl.util.ConvertToInt(V, 64, 'unsigned'); + + // 2. Return the IDL unsigned long long value that + // represents the same numeric value as x. + return x; +}; + +// https://webidl.spec.whatwg.org/#es-unsigned-long +webidl.converters['unsigned long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). + var x = webidl.util.ConvertToInt(V, 32, 'unsigned'); + + // 2. Return the IDL unsigned long value that + // represents the same numeric value as x. + return x; +}; + +// https://webidl.spec.whatwg.org/#es-unsigned-short +webidl.converters['unsigned short'] = function (V, opts) { + // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). + var x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts); + + // 2. Return the IDL unsigned short value that represents + // the same numeric value as x. + return x; +}; + +// https://webidl.spec.whatwg.org/#idl-ArrayBuffer +webidl.converters.ArrayBuffer = function (V) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // 1. If Type(V) is not Object, or V does not have an + // [[ArrayBufferData]] internal slot, then throw a + // TypeError. + // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances + // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances + if (webidl.util.Type(V) !== 'Object' || !types.isAnyArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix: "".concat(V), + argument: "".concat(V), + types: ['ArrayBuffer'] + }); + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V) is true, then throw a + // TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V) is true, then throw a + // TypeError. + // Note: resizable ArrayBuffers are currently a proposal. + + // 4. Return the IDL ArrayBuffer value that is a + // reference to the same object as V. + return V; +}; +webidl.converters.TypedArray = function (V, T) { + var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + // 1. Let T be the IDL type V is being converted to. + + // 2. If Type(V) is not Object, or V does not have a + // [[TypedArrayName]] internal slot with a value + // equal to T’s name, then throw a TypeError. + if (webidl.util.Type(V) !== 'Object' || !types.isTypedArray(V) || V.constructor.name !== T.name) { + throw webidl.errors.conversionFailed({ + prefix: "".concat(T.name), + argument: "".concat(V), + types: [T.name] + }); + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); + } + + // 4. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable array buffers are currently a proposal + + // 5. Return the IDL value of type T that is a reference + // to the same object as V. + return V; +}; +webidl.converters.DataView = function (V) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // 1. If Type(V) is not Object, or V does not have a + // [[DataView]] internal slot, then throw a TypeError. + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: 'DataView', + message: 'Object is not a DataView.' + }); + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, + // then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable ArrayBuffers are currently a proposal + + // 4. Return the IDL DataView value that is a reference + // to the same object as V. + return V; +}; + +// https://webidl.spec.whatwg.org/#BufferSource +webidl.converters.BufferSource = function (V) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts); + } + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor); + } + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts); + } + throw new TypeError("Could not convert ".concat(V, " to a BufferSource.")); +}; +webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.ByteString); +webidl.converters['sequence>'] = webidl.sequenceConverter(webidl.converters['sequence']); +webidl.converters['record'] = webidl.recordConverter(webidl.converters.ByteString, webidl.converters.ByteString); +module.exports = { + webidl: webidl +}; + +/***/ }), + +/***/ 1124: +/***/ ((module) => { + +"use strict"; + + +/** + * @see https://encoding.spec.whatwg.org/#concept-encoding-get + * @param {string|undefined} label + */ +function getEncoding(label) { + if (!label) { + return 'failure'; + } + + // 1. Remove any leading and trailing ASCII whitespace from label. + // 2. If label is an ASCII case-insensitive match for any of the + // labels listed in the table below, then return the + // corresponding encoding; otherwise return failure. + switch (label.trim().toLowerCase()) { + case 'unicode-1-1-utf-8': + case 'unicode11utf8': + case 'unicode20utf8': + case 'utf-8': + case 'utf8': + case 'x-unicode20utf8': + return 'UTF-8'; + case '866': + case 'cp866': + case 'csibm866': + case 'ibm866': + return 'IBM866'; + case 'csisolatin2': + case 'iso-8859-2': + case 'iso-ir-101': + case 'iso8859-2': + case 'iso88592': + case 'iso_8859-2': + case 'iso_8859-2:1987': + case 'l2': + case 'latin2': + return 'ISO-8859-2'; + case 'csisolatin3': + case 'iso-8859-3': + case 'iso-ir-109': + case 'iso8859-3': + case 'iso88593': + case 'iso_8859-3': + case 'iso_8859-3:1988': + case 'l3': + case 'latin3': + return 'ISO-8859-3'; + case 'csisolatin4': + case 'iso-8859-4': + case 'iso-ir-110': + case 'iso8859-4': + case 'iso88594': + case 'iso_8859-4': + case 'iso_8859-4:1988': + case 'l4': + case 'latin4': + return 'ISO-8859-4'; + case 'csisolatincyrillic': + case 'cyrillic': + case 'iso-8859-5': + case 'iso-ir-144': + case 'iso8859-5': + case 'iso88595': + case 'iso_8859-5': + case 'iso_8859-5:1988': + return 'ISO-8859-5'; + case 'arabic': + case 'asmo-708': + case 'csiso88596e': + case 'csiso88596i': + case 'csisolatinarabic': + case 'ecma-114': + case 'iso-8859-6': + case 'iso-8859-6-e': + case 'iso-8859-6-i': + case 'iso-ir-127': + case 'iso8859-6': + case 'iso88596': + case 'iso_8859-6': + case 'iso_8859-6:1987': + return 'ISO-8859-6'; + case 'csisolatingreek': + case 'ecma-118': + case 'elot_928': + case 'greek': + case 'greek8': + case 'iso-8859-7': + case 'iso-ir-126': + case 'iso8859-7': + case 'iso88597': + case 'iso_8859-7': + case 'iso_8859-7:1987': + case 'sun_eu_greek': + return 'ISO-8859-7'; + case 'csiso88598e': + case 'csisolatinhebrew': + case 'hebrew': + case 'iso-8859-8': + case 'iso-8859-8-e': + case 'iso-ir-138': + case 'iso8859-8': + case 'iso88598': + case 'iso_8859-8': + case 'iso_8859-8:1988': + case 'visual': + return 'ISO-8859-8'; + case 'csiso88598i': + case 'iso-8859-8-i': + case 'logical': + return 'ISO-8859-8-I'; + case 'csisolatin6': + case 'iso-8859-10': + case 'iso-ir-157': + case 'iso8859-10': + case 'iso885910': + case 'l6': + case 'latin6': + return 'ISO-8859-10'; + case 'iso-8859-13': + case 'iso8859-13': + case 'iso885913': + return 'ISO-8859-13'; + case 'iso-8859-14': + case 'iso8859-14': + case 'iso885914': + return 'ISO-8859-14'; + case 'csisolatin9': + case 'iso-8859-15': + case 'iso8859-15': + case 'iso885915': + case 'iso_8859-15': + case 'l9': + return 'ISO-8859-15'; + case 'iso-8859-16': + return 'ISO-8859-16'; + case 'cskoi8r': + case 'koi': + case 'koi8': + case 'koi8-r': + case 'koi8_r': + return 'KOI8-R'; + case 'koi8-ru': + case 'koi8-u': + return 'KOI8-U'; + case 'csmacintosh': + case 'mac': + case 'macintosh': + case 'x-mac-roman': + return 'macintosh'; + case 'iso-8859-11': + case 'iso8859-11': + case 'iso885911': + case 'tis-620': + case 'windows-874': + return 'windows-874'; + case 'cp1250': + case 'windows-1250': + case 'x-cp1250': + return 'windows-1250'; + case 'cp1251': + case 'windows-1251': + case 'x-cp1251': + return 'windows-1251'; + case 'ansi_x3.4-1968': + case 'ascii': + case 'cp1252': + case 'cp819': + case 'csisolatin1': + case 'ibm819': + case 'iso-8859-1': + case 'iso-ir-100': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'iso_8859-1:1987': + case 'l1': + case 'latin1': + case 'us-ascii': + case 'windows-1252': + case 'x-cp1252': + return 'windows-1252'; + case 'cp1253': + case 'windows-1253': + case 'x-cp1253': + return 'windows-1253'; + case 'cp1254': + case 'csisolatin5': + case 'iso-8859-9': + case 'iso-ir-148': + case 'iso8859-9': + case 'iso88599': + case 'iso_8859-9': + case 'iso_8859-9:1989': + case 'l5': + case 'latin5': + case 'windows-1254': + case 'x-cp1254': + return 'windows-1254'; + case 'cp1255': + case 'windows-1255': + case 'x-cp1255': + return 'windows-1255'; + case 'cp1256': + case 'windows-1256': + case 'x-cp1256': + return 'windows-1256'; + case 'cp1257': + case 'windows-1257': + case 'x-cp1257': + return 'windows-1257'; + case 'cp1258': + case 'windows-1258': + case 'x-cp1258': + return 'windows-1258'; + case 'x-mac-cyrillic': + case 'x-mac-ukrainian': + return 'x-mac-cyrillic'; + case 'chinese': + case 'csgb2312': + case 'csiso58gb231280': + case 'gb2312': + case 'gb_2312': + case 'gb_2312-80': + case 'gbk': + case 'iso-ir-58': + case 'x-gbk': + return 'GBK'; + case 'gb18030': + return 'gb18030'; + case 'big5': + case 'big5-hkscs': + case 'cn-big5': + case 'csbig5': + case 'x-x-big5': + return 'Big5'; + case 'cseucpkdfmtjapanese': + case 'euc-jp': + case 'x-euc-jp': + return 'EUC-JP'; + case 'csiso2022jp': + case 'iso-2022-jp': + return 'ISO-2022-JP'; + case 'csshiftjis': + case 'ms932': + case 'ms_kanji': + case 'shift-jis': + case 'shift_jis': + case 'sjis': + case 'windows-31j': + case 'x-sjis': + return 'Shift_JIS'; + case 'cseuckr': + case 'csksc56011987': + case 'euc-kr': + case 'iso-ir-149': + case 'korean': + case 'ks_c_5601-1987': + case 'ks_c_5601-1989': + case 'ksc5601': + case 'ksc_5601': + case 'windows-949': + return 'EUC-KR'; + case 'csiso2022kr': + case 'hz-gb-2312': + case 'iso-2022-cn': + case 'iso-2022-cn-ext': + case 'iso-2022-kr': + case 'replacement': + return 'replacement'; + case 'unicodefffe': + case 'utf-16be': + return 'UTF-16BE'; + case 'csunicode': + case 'iso-10646-ucs-2': + case 'ucs-2': + case 'unicode': + case 'unicodefeff': + case 'utf-16': + case 'utf-16le': + return 'UTF-16LE'; + case 'x-user-defined': + return 'x-user-defined'; + default: + return 'failure'; + } +} +module.exports = { + getEncoding: getEncoding +}; + +/***/ }), + +/***/ 8072: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _defineProperty = (__webpack_require__(3693)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _wrapNativeSuper = (__webpack_require__(1837)["default"]); +var _require = __webpack_require__(397), + staticPropertyDescriptors = _require.staticPropertyDescriptors, + readOperation = _require.readOperation, + fireAProgressEvent = _require.fireAProgressEvent; +var _require2 = __webpack_require__(9716), + kState = _require2.kState, + kError = _require2.kError, + kResult = _require2.kResult, + kEvents = _require2.kEvents, + kAborted = _require2.kAborted; +var _require3 = __webpack_require__(3702), + webidl = _require3.webidl; +var _require4 = __webpack_require__(6632), + kEnumerableProperty = _require4.kEnumerableProperty; +var FileReader = /*#__PURE__*/function (_EventTarget) { + function FileReader() { + var _this; + _classCallCheck(this, FileReader); + _this = _callSuper(this, FileReader); + _this[kState] = 'empty'; + _this[kResult] = null; + _this[kError] = null; + _this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + }; + return _this; + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + _inherits(FileReader, _EventTarget); + return _createClass(FileReader, [{ + key: "readAsArrayBuffer", + value: function readAsArrayBuffer(blob) { + webidl.brandCheck(this, FileReader); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FileReader.readAsArrayBuffer' + }); + blob = webidl.converters.Blob(blob, { + strict: false + }); + + // The readAsArrayBuffer(blob) method, when invoked, + // must initiate a read operation for blob with ArrayBuffer. + readOperation(this, blob, 'ArrayBuffer'); + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + }, { + key: "readAsBinaryString", + value: function readAsBinaryString(blob) { + webidl.brandCheck(this, FileReader); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FileReader.readAsBinaryString' + }); + blob = webidl.converters.Blob(blob, { + strict: false + }); + + // The readAsBinaryString(blob) method, when invoked, + // must initiate a read operation for blob with BinaryString. + readOperation(this, blob, 'BinaryString'); + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + }, { + key: "readAsText", + value: function readAsText(blob) { + var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + webidl.brandCheck(this, FileReader); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FileReader.readAsText' + }); + blob = webidl.converters.Blob(blob, { + strict: false + }); + if (encoding !== undefined) { + encoding = webidl.converters.DOMString(encoding); + } + + // The readAsText(blob, encoding) method, when invoked, + // must initiate a read operation for blob with Text and encoding. + readOperation(this, blob, 'Text', encoding); + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + }, { + key: "readAsDataURL", + value: function readAsDataURL(blob) { + webidl.brandCheck(this, FileReader); + webidl.argumentLengthCheck(arguments, 1, { + header: 'FileReader.readAsDataURL' + }); + blob = webidl.converters.Blob(blob, { + strict: false + }); + + // The readAsDataURL(blob) method, when invoked, must + // initiate a read operation for blob with DataURL. + readOperation(this, blob, 'DataURL'); + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + }, { + key: "abort", + value: function abort() { + // 1. If this's state is "empty" or if this's state is + // "done" set this's result to null and terminate + // this algorithm. + if (this[kState] === 'empty' || this[kState] === 'done') { + this[kResult] = null; + return; + } + + // 2. If this's state is "loading" set this's state to + // "done" and set this's result to null. + if (this[kState] === 'loading') { + this[kState] = 'done'; + this[kResult] = null; + } + + // 3. If there are any tasks from this on the file reading + // task source in an affiliated task queue, then remove + // those tasks from that task queue. + this[kAborted] = true; + + // 4. Terminate the algorithm for the read method being processed. + // TODO + + // 5. Fire a progress event called abort at this. + fireAProgressEvent('abort', this); + + // 6. If this's state is not "loading", fire a progress + // event called loadend at this. + if (this[kState] !== 'loading') { + fireAProgressEvent('loadend', this); + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + }, { + key: "readyState", + get: function get() { + webidl.brandCheck(this, FileReader); + switch (this[kState]) { + case 'empty': + return this.EMPTY; + case 'loading': + return this.LOADING; + case 'done': + return this.DONE; + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + }, { + key: "result", + get: function get() { + webidl.brandCheck(this, FileReader); + + // The result attribute’s getter, when invoked, must return + // this's result. + return this[kResult]; + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + }, { + key: "error", + get: function get() { + webidl.brandCheck(this, FileReader); + + // The error attribute’s getter, when invoked, must return + // this's error. + return this[kError]; + } + }, { + key: "onloadend", + get: function get() { + webidl.brandCheck(this, FileReader); + return this[kEvents].loadend; + }, + set: function set(fn) { + webidl.brandCheck(this, FileReader); + if (this[kEvents].loadend) { + this.removeEventListener('loadend', this[kEvents].loadend); + } + if (typeof fn === 'function') { + this[kEvents].loadend = fn; + this.addEventListener('loadend', fn); + } else { + this[kEvents].loadend = null; + } + } + }, { + key: "onerror", + get: function get() { + webidl.brandCheck(this, FileReader); + return this[kEvents].error; + }, + set: function set(fn) { + webidl.brandCheck(this, FileReader); + if (this[kEvents].error) { + this.removeEventListener('error', this[kEvents].error); + } + if (typeof fn === 'function') { + this[kEvents].error = fn; + this.addEventListener('error', fn); + } else { + this[kEvents].error = null; + } + } + }, { + key: "onloadstart", + get: function get() { + webidl.brandCheck(this, FileReader); + return this[kEvents].loadstart; + }, + set: function set(fn) { + webidl.brandCheck(this, FileReader); + if (this[kEvents].loadstart) { + this.removeEventListener('loadstart', this[kEvents].loadstart); + } + if (typeof fn === 'function') { + this[kEvents].loadstart = fn; + this.addEventListener('loadstart', fn); + } else { + this[kEvents].loadstart = null; + } + } + }, { + key: "onprogress", + get: function get() { + webidl.brandCheck(this, FileReader); + return this[kEvents].progress; + }, + set: function set(fn) { + webidl.brandCheck(this, FileReader); + if (this[kEvents].progress) { + this.removeEventListener('progress', this[kEvents].progress); + } + if (typeof fn === 'function') { + this[kEvents].progress = fn; + this.addEventListener('progress', fn); + } else { + this[kEvents].progress = null; + } + } + }, { + key: "onload", + get: function get() { + webidl.brandCheck(this, FileReader); + return this[kEvents].load; + }, + set: function set(fn) { + webidl.brandCheck(this, FileReader); + if (this[kEvents].load) { + this.removeEventListener('load', this[kEvents].load); + } + if (typeof fn === 'function') { + this[kEvents].load = fn; + this.addEventListener('load', fn); + } else { + this[kEvents].load = null; + } + } + }, { + key: "onabort", + get: function get() { + webidl.brandCheck(this, FileReader); + return this[kEvents].abort; + }, + set: function set(fn) { + webidl.brandCheck(this, FileReader); + if (this[kEvents].abort) { + this.removeEventListener('abort', this[kEvents].abort); + } + if (typeof fn === 'function') { + this[kEvents].abort = fn; + this.addEventListener('abort', fn); + } else { + this[kEvents].abort = null; + } + } + }]); +}( /*#__PURE__*/_wrapNativeSuper(EventTarget)); // https://w3c.github.io/FileAPI/#dom-filereader-empty +FileReader.EMPTY = FileReader.prototype.EMPTY = 0; +// https://w3c.github.io/FileAPI/#dom-filereader-loading +FileReader.LOADING = FileReader.prototype.LOADING = 1; +// https://w3c.github.io/FileAPI/#dom-filereader-done +FileReader.DONE = FileReader.prototype.DONE = 2; +Object.defineProperties(FileReader.prototype, _defineProperty({ + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty +}, Symbol.toStringTag, { + value: 'FileReader', + writable: false, + enumerable: false, + configurable: true +})); +Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors +}); +module.exports = { + FileReader: FileReader +}; + +/***/ }), + +/***/ 4640: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _wrapNativeSuper = (__webpack_require__(1837)["default"]); +var _require = __webpack_require__(3702), + webidl = _require.webidl; +var kState = Symbol('ProgressEvent state'); + +/** + * @see https://xhr.spec.whatwg.org/#progressevent + */ +var ProgressEvent = /*#__PURE__*/function (_Event) { + function ProgressEvent(type) { + var _eventInitDict; + var _this; + var eventInitDict = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + _classCallCheck(this, ProgressEvent); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ProgressEventInit((_eventInitDict = eventInitDict) !== null && _eventInitDict !== void 0 ? _eventInitDict : {}); + _this = _callSuper(this, ProgressEvent, [type, eventInitDict]); + _this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + }; + return _this; + } + _inherits(ProgressEvent, _Event); + return _createClass(ProgressEvent, [{ + key: "lengthComputable", + get: function get() { + webidl.brandCheck(this, ProgressEvent); + return this[kState].lengthComputable; + } + }, { + key: "loaded", + get: function get() { + webidl.brandCheck(this, ProgressEvent); + return this[kState].loaded; + } + }, { + key: "total", + get: function get() { + webidl.brandCheck(this, ProgressEvent); + return this[kState].total; + } + }]); +}( /*#__PURE__*/_wrapNativeSuper(Event)); +webidl.converters.ProgressEventInit = webidl.dictionaryConverter([{ + key: 'lengthComputable', + converter: webidl.converters["boolean"], + defaultValue: false +}, { + key: 'loaded', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 +}, { + key: 'total', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 +}, { + key: 'bubbles', + converter: webidl.converters["boolean"], + defaultValue: false +}, { + key: 'cancelable', + converter: webidl.converters["boolean"], + defaultValue: false +}, { + key: 'composed', + converter: webidl.converters["boolean"], + defaultValue: false +}]); +module.exports = { + ProgressEvent: ProgressEvent +}; + +/***/ }), + +/***/ 9716: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kState: Symbol('FileReader state'), + kResult: Symbol('FileReader result'), + kError: Symbol('FileReader error'), + kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'), + kEvents: Symbol('FileReader events'), + kAborted: Symbol('FileReader aborted') +}; + +/***/ }), + +/***/ 397: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _require = __webpack_require__(9716), + kState = _require.kState, + kError = _require.kError, + kResult = _require.kResult, + kAborted = _require.kAborted, + kLastProgressEventFired = _require.kLastProgressEventFired; +var _require2 = __webpack_require__(4640), + ProgressEvent = _require2.ProgressEvent; +var _require3 = __webpack_require__(1124), + getEncoding = _require3.getEncoding; +var _require4 = __webpack_require__(8422), + DOMException = _require4.DOMException; +var _require5 = __webpack_require__(9738), + serializeAMimeType = _require5.serializeAMimeType, + parseMIMEType = _require5.parseMIMEType; +var _require6 = __webpack_require__(9023), + types = _require6.types; +var _require7 = __webpack_require__(3193), + StringDecoder = _require7.StringDecoder; +var _require8 = __webpack_require__(181), + btoa = _require8.btoa; + +/** @type {PropertyDescriptor} */ +var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +}; + +/** + * @see https://w3c.github.io/FileAPI/#readOperation + * @param {import('./filereader').FileReader} fr + * @param {import('buffer').Blob} blob + * @param {string} type + * @param {string?} encodingName + */ +function readOperation(fr, blob, type, encodingName) { + // 1. If fr’s state is "loading", throw an InvalidStateError + // DOMException. + if (fr[kState] === 'loading') { + throw new DOMException('Invalid state', 'InvalidStateError'); + } + + // 2. Set fr’s state to "loading". + fr[kState] = 'loading'; + + // 3. Set fr’s result to null. + fr[kResult] = null; + + // 4. Set fr’s error to null. + fr[kError] = null; + + // 5. Let stream be the result of calling get stream on blob. + /** @type {import('stream/web').ReadableStream} */ + var stream = blob.stream(); + + // 6. Let reader be the result of getting a reader from stream. + var reader = stream.getReader(); + + // 7. Let bytes be an empty byte sequence. + /** @type {Uint8Array[]} */ + var bytes = []; + + // 8. Let chunkPromise be the result of reading a chunk from + // stream with reader. + var chunkPromise = reader.read(); + + // 9. Let isFirstChunk be true. + var isFirstChunk = true + + // 10. In parallel, while true: + // Note: "In parallel" just means non-blocking + // Note 2: readOperation itself cannot be async as double + // reading the body would then reject the promise, instead + // of throwing an error. + ; + _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var _loop, _ret; + return _regeneratorRuntime().wrap(function _callee$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() { + var _yield$chunkPromise, done, value; + return _regeneratorRuntime().wrap(function _loop$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.prev = 0; + _context.next = 3; + return chunkPromise; + case 3: + _yield$chunkPromise = _context.sent; + done = _yield$chunkPromise.done; + value = _yield$chunkPromise.value; + // 2. If chunkPromise is fulfilled, and isFirstChunk is + // true, queue a task to fire a progress event called + // loadstart at fr. + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(function () { + fireAProgressEvent('loadstart', fr); + }); + } + + // 3. Set isFirstChunk to false. + isFirstChunk = false; + + // 4. If chunkPromise is fulfilled with an object whose + // done property is false and whose value property is + // a Uint8Array object, run these steps: + if (!(!done && types.isUint8Array(value))) { + _context.next = 14; + break; + } + // 1. Let bs be the byte sequence represented by the + // Uint8Array object. + + // 2. Append bs to bytes. + bytes.push(value); + + // 3. If roughly 50ms have passed since these steps + // were last invoked, queue a task to fire a + // progress event called progress at fr. + if ((fr[kLastProgressEventFired] === undefined || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { + fr[kLastProgressEventFired] = Date.now(); + queueMicrotask(function () { + fireAProgressEvent('progress', fr); + }); + } + + // 4. Set chunkPromise to the result of reading a + // chunk from stream with reader. + chunkPromise = reader.read(); + _context.next = 17; + break; + case 14: + if (!done) { + _context.next = 17; + break; + } + // 5. Otherwise, if chunkPromise is fulfilled with an + // object whose done property is true, queue a task + // to run the following steps and abort this algorithm: + queueMicrotask(function () { + // 1. Set fr’s state to "done". + fr[kState] = 'done'; + + // 2. Let result be the result of package data given + // bytes, type, blob’s type, and encodingName. + try { + var result = packageData(bytes, type, blob.type, encodingName); + + // 4. Else: + + if (fr[kAborted]) { + return; + } + + // 1. Set fr’s result to result. + fr[kResult] = result; + + // 2. Fire a progress event called load at the fr. + fireAProgressEvent('load', fr); + } catch (error) { + // 3. If package data threw an exception error: + + // 1. Set fr’s error to error. + fr[kError] = error; + + // 2. Fire a progress event called error at fr. + fireAProgressEvent('error', fr); + } + + // 5. If fr’s state is not "loading", fire a progress + // event called loadend at the fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr); + } + }); + return _context.abrupt("return", 0); + case 17: + _context.next = 25; + break; + case 19: + _context.prev = 19; + _context.t0 = _context["catch"](0); + if (!fr[kAborted]) { + _context.next = 23; + break; + } + return _context.abrupt("return", { + v: void 0 + }); + case 23: + // 6. Otherwise, if chunkPromise is rejected with an + // error error, queue a task to run the following + // steps and abort this algorithm: + queueMicrotask(function () { + // 1. Set fr’s state to "done". + fr[kState] = 'done'; + + // 2. Set fr’s error to error. + fr[kError] = _context.t0; + + // 3. Fire a progress event called error at fr. + fireAProgressEvent('error', fr); + + // 4. If fr’s state is not "loading", fire a progress + // event called loadend at fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr); + } + }); + return _context.abrupt("return", 0); + case 25: + case "end": + return _context.stop(); + } + }, _loop, null, [[0, 19]]); + }); + case 1: + if (fr[kAborted]) { + _context2.next = 10; + break; + } + return _context2.delegateYield(_loop(), "t0", 3); + case 3: + _ret = _context2.t0; + if (!(_ret === 0)) { + _context2.next = 6; + break; + } + return _context2.abrupt("break", 10); + case 6: + if (!_ret) { + _context2.next = 8; + break; + } + return _context2.abrupt("return", _ret.v); + case 8: + _context2.next = 1; + break; + case 10: + case "end": + return _context2.stop(); + } + }, _callee); + }))(); +} + +/** + * @see https://w3c.github.io/FileAPI/#fire-a-progress-event + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e The name of the event + * @param {import('./filereader').FileReader} reader + */ +function fireAProgressEvent(e, reader) { + // The progress event e does not bubble. e.bubbles must be false + // The progress event e is NOT cancelable. e.cancelable must be false + var event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }); + reader.dispatchEvent(event); +} + +/** + * @see https://w3c.github.io/FileAPI/#blob-package-data + * @param {Uint8Array[]} bytes + * @param {string} type + * @param {string?} mimeType + * @param {string?} encodingName + */ +function packageData(bytes, type, mimeType, encodingName) { + // 1. A Blob has an associated package data algorithm, given + // bytes, a type, a optional mimeType, and a optional + // encodingName, which switches on type and runs the + // associated steps: + + switch (type) { + case 'DataURL': + { + // 1. Return bytes as a DataURL [RFC2397] subject to + // the considerations below: + // * Use mimeType as part of the Data URL if it is + // available in keeping with the Data URL + // specification [RFC2397]. + // * If mimeType is not available return a Data URL + // without a media-type. [RFC2397]. + + // https://datatracker.ietf.org/doc/html/rfc2397#section-3 + // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data + // mediatype := [ type "/" subtype ] *( ";" parameter ) + // data := *urlchar + // parameter := attribute "=" value + var dataURL = 'data:'; + var parsed = parseMIMEType(mimeType || 'application/octet-stream'); + if (parsed !== 'failure') { + dataURL += serializeAMimeType(parsed); + } + dataURL += ';base64,'; + var decoder = new StringDecoder('latin1'); + var _iterator = _createForOfIteratorHelper(bytes), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var chunk = _step.value; + dataURL += btoa(decoder.write(chunk)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + dataURL += btoa(decoder.end()); + return dataURL; + } + case 'Text': + { + // 1. Let encoding be failure + var encoding = 'failure'; + + // 2. If the encodingName is present, set encoding to the + // result of getting an encoding from encodingName. + if (encodingName) { + encoding = getEncoding(encodingName); + } + + // 3. If encoding is failure, and mimeType is present: + if (encoding === 'failure' && mimeType) { + // 1. Let type be the result of parse a MIME type + // given mimeType. + var _type = parseMIMEType(mimeType); + + // 2. If type is not failure, set encoding to the result + // of getting an encoding from type’s parameters["charset"]. + if (_type !== 'failure') { + encoding = getEncoding(_type.parameters.get('charset')); + } + } + + // 4. If encoding is failure, then set encoding to UTF-8. + if (encoding === 'failure') { + encoding = 'UTF-8'; + } + + // 5. Decode bytes using fallback encoding encoding, and + // return the result. + return decode(bytes, encoding); + } + case 'ArrayBuffer': + { + // Return a new ArrayBuffer whose contents are bytes. + var sequence = combineByteSequences(bytes); + return sequence.buffer; + } + case 'BinaryString': + { + // Return bytes as a binary string, in which every byte + // is represented by a code unit of equal value [0..255]. + var binaryString = ''; + var _decoder = new StringDecoder('latin1'); + var _iterator2 = _createForOfIteratorHelper(bytes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _chunk = _step2.value; + binaryString += _decoder.write(_chunk); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + binaryString += _decoder.end(); + return binaryString; + } + } +} + +/** + * @see https://encoding.spec.whatwg.org/#decode + * @param {Uint8Array[]} ioQueue + * @param {string} encoding + */ +function decode(ioQueue, encoding) { + var bytes = combineByteSequences(ioQueue); + + // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. + var BOMEncoding = BOMSniffing(bytes); + var slice = 0; + + // 2. If BOMEncoding is non-null: + if (BOMEncoding !== null) { + // 1. Set encoding to BOMEncoding. + encoding = BOMEncoding; + + // 2. Read three bytes from ioQueue, if BOMEncoding is + // UTF-8; otherwise read two bytes. + // (Do nothing with those bytes.) + slice = BOMEncoding === 'UTF-8' ? 3 : 2; + } + + // 3. Process a queue with an instance of encoding’s + // decoder, ioQueue, output, and "replacement". + + // 4. Return output. + + var sliced = bytes.slice(slice); + return new TextDecoder(encoding).decode(sliced); +} + +/** + * @see https://encoding.spec.whatwg.org/#bom-sniff + * @param {Uint8Array} ioQueue + */ +function BOMSniffing(ioQueue) { + // 1. Let BOM be the result of peeking 3 bytes from ioQueue, + // converted to a byte sequence. + var _ioQueue = _slicedToArray(ioQueue, 3), + a = _ioQueue[0], + b = _ioQueue[1], + c = _ioQueue[2]; + + // 2. For each of the rows in the table below, starting with + // the first one and going down, if BOM starts with the + // bytes given in the first column, then return the + // encoding given in the cell in the second column of that + // row. Otherwise, return null. + if (a === 0xEF && b === 0xBB && c === 0xBF) { + return 'UTF-8'; + } else if (a === 0xFE && b === 0xFF) { + return 'UTF-16BE'; + } else if (a === 0xFF && b === 0xFE) { + return 'UTF-16LE'; + } + return null; +} + +/** + * @param {Uint8Array[]} sequences + */ +function combineByteSequences(sequences) { + var size = sequences.reduce(function (a, b) { + return a + b.byteLength; + }, 0); + var offset = 0; + return sequences.reduce(function (a, b) { + a.set(b, offset); + offset += b.byteLength; + return a; + }, new Uint8Array(size)); +} +module.exports = { + staticPropertyDescriptors: staticPropertyDescriptors, + readOperation: readOperation, + fireAProgressEvent: fireAProgressEvent +}; + +/***/ }), + +/***/ 4397: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +// We include a version number for the Dispatcher API. In case of breaking changes, +// this version number must be increased to avoid conflicts. +var globalDispatcher = Symbol["for"]('undici.globalDispatcher.1'); +var _require = __webpack_require__(3515), + InvalidArgumentError = _require.InvalidArgumentError; +var Agent = __webpack_require__(6629); +if (getGlobalDispatcher() === undefined) { + setGlobalDispatcher(new Agent()); +} +function setGlobalDispatcher(agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent'); + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }); +} +function getGlobalDispatcher() { + return globalThis[globalDispatcher]; +} +module.exports = { + setGlobalDispatcher: setGlobalDispatcher, + getGlobalDispatcher: getGlobalDispatcher +}; + +/***/ }), + +/***/ 2016: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +module.exports = /*#__PURE__*/function () { + function DecoratorHandler(handler) { + _classCallCheck(this, DecoratorHandler); + this.handler = handler; + } + return _createClass(DecoratorHandler, [{ + key: "onConnect", + value: function onConnect() { + var _this$handler; + return (_this$handler = this.handler).onConnect.apply(_this$handler, arguments); + } + }, { + key: "onError", + value: function onError() { + var _this$handler2; + return (_this$handler2 = this.handler).onError.apply(_this$handler2, arguments); + } + }, { + key: "onUpgrade", + value: function onUpgrade() { + var _this$handler3; + return (_this$handler3 = this.handler).onUpgrade.apply(_this$handler3, arguments); + } + }, { + key: "onHeaders", + value: function onHeaders() { + var _this$handler4; + return (_this$handler4 = this.handler).onHeaders.apply(_this$handler4, arguments); + } + }, { + key: "onData", + value: function onData() { + var _this$handler5; + return (_this$handler5 = this.handler).onData.apply(_this$handler5, arguments); + } + }, { + key: "onComplete", + value: function onComplete() { + var _this$handler6; + return (_this$handler6 = this.handler).onComplete.apply(_this$handler6, arguments); + } + }, { + key: "onBodySent", + value: function onBodySent() { + var _this$handler7; + return (_this$handler7 = this.handler).onBodySent.apply(_this$handler7, arguments); + } + }]); +}(); + +/***/ }), + +/***/ 7795: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _wrapAsyncGenerator = (__webpack_require__(2958)["default"]); +var _awaitAsyncGenerator = (__webpack_require__(3344)["default"]); +var _asyncGeneratorDelegate = (__webpack_require__(3513)["default"]); +var _asyncIterator = (__webpack_require__(2881)["default"]); +var util = __webpack_require__(6632); +var _require = __webpack_require__(6771), + kBodyUsed = _require.kBodyUsed; +var assert = __webpack_require__(2613); +var _require2 = __webpack_require__(3515), + InvalidArgumentError = _require2.InvalidArgumentError; +var EE = __webpack_require__(4434); +var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; +var kBody = Symbol('body'); +var BodyAsyncIterable = /*#__PURE__*/function () { + function BodyAsyncIterable(body) { + _classCallCheck(this, BodyAsyncIterable); + this[kBody] = body; + this[kBodyUsed] = false; + } + return _createClass(BodyAsyncIterable, [{ + key: Symbol.asyncIterator, + value: function value() { + var _this = this; + return _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + assert(!_this[kBodyUsed], 'disturbed'); + _this[kBodyUsed] = true; + return _context.delegateYield(_asyncGeneratorDelegate(_asyncIterator(_this[kBody]), _awaitAsyncGenerator), "t0", 3); + case 3: + case "end": + return _context.stop(); + } + }, _callee); + }))(); + } + }]); +}(); +var RedirectHandler = /*#__PURE__*/function () { + function RedirectHandler(dispatch, maxRedirections, opts, handler) { + _classCallCheck(this, RedirectHandler); + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + util.validateHandler(handler, opts.method, opts.upgrade); + this.dispatch = dispatch; + this.location = null; + this.abort = null; + this.opts = _objectSpread(_objectSpread({}, opts), {}, { + maxRedirections: 0 + }); // opts must be a copy + this.maxRedirections = maxRedirections; + this.handler = handler; + this.history = []; + if (util.isStream(this.opts.body)) { + // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp + // so that it can be dispatched again? + // TODO (fix): Do we need 100-expect support to provide a way to do this properly? + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body.on('data', function () { + assert(false); + }); + } + if (typeof this.opts.body.readableDidRead !== 'boolean') { + this.opts.body[kBodyUsed] = false; + EE.prototype.on.call(this.opts.body, 'data', function () { + this[kBodyUsed] = true; + }); + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') { + // TODO (fix): We can't access ReadableStream internal state + // to determine whether or not it has been disturbed. This is just + // a workaround. + this.opts.body = new BodyAsyncIterable(this.opts.body); + } else if (this.opts.body && typeof this.opts.body !== 'string' && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) { + // TODO: Should we allow re-using iterable if !this.opts.idempotent + // or through some other flag? + this.opts.body = new BodyAsyncIterable(this.opts.body); + } + } + return _createClass(RedirectHandler, [{ + key: "onConnect", + value: function onConnect(abort) { + this.abort = abort; + this.handler.onConnect(abort, { + history: this.history + }); + } + }, { + key: "onUpgrade", + value: function onUpgrade(statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket); + } + }, { + key: "onError", + value: function onError(error) { + this.handler.onError(error); + } + }, { + key: "onHeaders", + value: function onHeaders(statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers); + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); + } + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText); + } + var _util$parseURL = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))), + origin = _util$parseURL.origin, + pathname = _util$parseURL.pathname, + search = _util$parseURL.search; + var path = search ? "".concat(pathname).concat(search) : pathname; + + // Remove headers referring to the original URL. + // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. + // https://tools.ietf.org/html/rfc7231#section-6.4 + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); + this.opts.path = path; + this.opts.origin = origin; + this.opts.maxRedirections = 0; + this.opts.query = null; + + // https://tools.ietf.org/html/rfc7231#section-6.4.4 + // In case of HTTP 303, always replace method to be either HEAD or GET + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET'; + this.opts.body = null; + } + } + }, { + key: "onData", + value: function onData(chunk) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + TLDR: undici always ignores 3xx response bodies. + Redirection is used to serve the requested resource from another URL, so it is assumes that + no body is generated (and thus can be ignored). Even though generating a body is not prohibited. + For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually + (which means it's optional and not mandated) contain just an hyperlink to the value of + the Location response header, so the body can be ignored safely. + For status 300, which is "Multiple Choices", the spec mentions both generating a Location + response header AND a response body with the other possible location to follow. + Since the spec explicitily chooses not to specify a format for such body and leave it to + servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. + */ + } else { + return this.handler.onData(chunk); + } + } + }, { + key: "onComplete", + value: function onComplete(trailers) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections + and neither are useful if present. + See comment on onData method above for more detailed informations. + */ + + this.location = null; + this.abort = null; + this.dispatch(this.opts, this); + } else { + this.handler.onComplete(trailers); + } + } + }, { + key: "onBodySent", + value: function onBodySent(chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk); + } + } + }]); +}(); +function parseLocation(statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null; + } + for (var i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === 'location') { + return headers[i + 1]; + } + } +} + +// https://tools.ietf.org/html/rfc7231#section-6.4.4 +function shouldRemoveHeader(header, removeContent, unknownOrigin) { + if (header.length === 4) { + return util.headerNameToString(header) === 'host'; + } + if (removeContent && util.headerNameToString(header).startsWith('content-')) { + return true; + } + if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { + var name = util.headerNameToString(header); + return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'; + } + return false; +} + +// https://tools.ietf.org/html/rfc7231#section-6.4 +function cleanRequestHeaders(headers, removeContent, unknownOrigin) { + var ret = []; + if (Array.isArray(headers)) { + for (var i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]); + } + } + } else if (headers && typeof headers === 'object') { + for (var _i = 0, _Object$keys = Object.keys(headers); _i < _Object$keys.length; _i++) { + var key = _Object$keys[_i]; + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]); + } + } + } else { + assert(headers == null, 'headers must be an object or an array'); + } + return ret; +} +module.exports = RedirectHandler; + +/***/ }), + +/***/ 1069: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _objectWithoutProperties = (__webpack_require__(1847)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _excluded = ["retryOptions"]; +var assert = __webpack_require__(2613); +var _require = __webpack_require__(6771), + kRetryHandlerDefaultRetry = _require.kRetryHandlerDefaultRetry; +var _require2 = __webpack_require__(3515), + RequestRetryError = _require2.RequestRetryError; +var _require3 = __webpack_require__(6632), + isDisturbed = _require3.isDisturbed, + parseHeaders = _require3.parseHeaders, + parseRangeHeader = _require3.parseRangeHeader; +function calculateRetryAfterHeader(retryAfter) { + var current = Date.now(); + var diff = new Date(retryAfter).getTime() - current; + return diff; +} +var RetryHandler = /*#__PURE__*/function () { + "use strict"; + + function RetryHandler(opts, handlers) { + var _this = this; + _classCallCheck(this, RetryHandler); + var retryOptions = opts.retryOptions, + dispatchOpts = _objectWithoutProperties(opts, _excluded); + var _ref = retryOptions !== null && retryOptions !== void 0 ? retryOptions : {}, + retryFn = _ref.retry, + maxRetries = _ref.maxRetries, + maxTimeout = _ref.maxTimeout, + minTimeout = _ref.minTimeout, + timeoutFactor = _ref.timeoutFactor, + methods = _ref.methods, + errorCodes = _ref.errorCodes, + retryAfter = _ref.retryAfter, + statusCodes = _ref.statusCodes; + this.dispatch = handlers.dispatch; + this.handler = handlers.handler; + this.opts = dispatchOpts; + this.abort = null; + this.aborted = false; + this.retryOpts = { + retry: retryFn !== null && retryFn !== void 0 ? retryFn : RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter !== null && retryAfter !== void 0 ? retryAfter : true, + maxTimeout: maxTimeout !== null && maxTimeout !== void 0 ? maxTimeout : 30 * 1000, + // 30s, + timeout: minTimeout !== null && minTimeout !== void 0 ? minTimeout : 500, + // .5s + timeoutFactor: timeoutFactor !== null && timeoutFactor !== void 0 ? timeoutFactor : 2, + maxRetries: maxRetries !== null && maxRetries !== void 0 ? maxRetries : 5, + // What errors we should retry + methods: methods !== null && methods !== void 0 ? methods : ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], + // Indicates which errors to retry + statusCodes: statusCodes !== null && statusCodes !== void 0 ? statusCodes : [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes !== null && errorCodes !== void 0 ? errorCodes : ['ECONNRESET', 'ECONNREFUSED', 'ENOTFOUND', 'ENETDOWN', 'ENETUNREACH', 'EHOSTDOWN', 'EHOSTUNREACH', 'EPIPE'] + }; + this.retryCount = 0; + this.start = 0; + this.end = null; + this.etag = null; + this.resume = null; + + // Handle possible onConnect duplication + this.handler.onConnect(function (reason) { + _this.aborted = true; + if (_this.abort) { + _this.abort(reason); + } else { + _this.reason = reason; + } + }); + } + return _createClass(RetryHandler, [{ + key: "onRequestSent", + value: function onRequestSent() { + if (this.handler.onRequestSent) { + this.handler.onRequestSent(); + } + } + }, { + key: "onUpgrade", + value: function onUpgrade(statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket); + } + } + }, { + key: "onConnect", + value: function onConnect(abort) { + if (this.aborted) { + abort(this.reason); + } else { + this.abort = abort; + } + } + }, { + key: "onBodySent", + value: function onBodySent(chunk) { + if (this.handler.onBodySent) return this.handler.onBodySent(chunk); + } + }, { + key: "onHeaders", + value: function onHeaders(statusCode, rawHeaders, resume, statusMessage) { + var headers = parseHeaders(rawHeaders); + this.retryCount += 1; + if (statusCode >= 300) { + this.abort(new RequestRetryError('Request failed', statusCode, { + headers: headers, + count: this.retryCount + })); + return false; + } + + // Checkpoint for resume from where we left it + if (this.resume != null) { + this.resume = null; + if (statusCode !== 206) { + return true; + } + var contentRange = parseRangeHeader(headers['content-range']); + // If no content range + if (!contentRange) { + this.abort(new RequestRetryError('Content-Range mismatch', statusCode, { + headers: headers, + count: this.retryCount + })); + return false; + } + + // Let's start with a weak etag check + if (this.etag != null && this.etag !== headers.etag) { + this.abort(new RequestRetryError('ETag mismatch', statusCode, { + headers: headers, + count: this.retryCount + })); + return false; + } + var start = contentRange.start, + size = contentRange.size, + _contentRange$end = contentRange.end, + end = _contentRange$end === void 0 ? size : _contentRange$end; + assert(this.start === start, 'content-range mismatch'); + assert(this.end == null || this.end === end, 'content-range mismatch'); + this.resume = resume; + return true; + } + if (this.end == null) { + if (statusCode === 206) { + // First time we receive 206 + var range = parseRangeHeader(headers['content-range']); + if (range == null) { + return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); + } + var _start = range.start, + _size = range.size, + _range$end = range.end, + _end = _range$end === void 0 ? _size : _range$end; + assert(_start != null && Number.isFinite(_start) && this.start !== _start, 'content-range mismatch'); + assert(Number.isFinite(_start)); + assert(_end != null && Number.isFinite(_end) && this.end !== _end, 'invalid content-length'); + this.start = _start; + this.end = _end; + } + + // We make our best to checkpoint the body for further range headers + if (this.end == null) { + var contentLength = headers['content-length']; + this.end = contentLength != null ? Number(contentLength) : null; + } + assert(Number.isFinite(this.start)); + assert(this.end == null || Number.isFinite(this.end), 'invalid content-length'); + this.resume = resume; + this.etag = headers.etag != null ? headers.etag : null; + return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); + } + var err = new RequestRetryError('Request failed', statusCode, { + headers: headers, + count: this.retryCount + }); + this.abort(err); + return false; + } + }, { + key: "onData", + value: function onData(chunk) { + this.start += chunk.length; + return this.handler.onData(chunk); + } + }, { + key: "onComplete", + value: function onComplete(rawTrailers) { + this.retryCount = 0; + return this.handler.onComplete(rawTrailers); + } + }, { + key: "onError", + value: function onError(err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err); + } + this.retryOpts.retry(err, { + state: { + counter: this.retryCount++, + currentTimeout: this.retryAfter + }, + opts: _objectSpread({ + retryOptions: this.retryOpts + }, this.opts) + }, onRetry.bind(this)); + function onRetry(err) { + if (err != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err); + } + if (this.start !== 0) { + var _this$end; + this.opts = _objectSpread(_objectSpread({}, this.opts), {}, { + headers: _objectSpread(_objectSpread({}, this.opts.headers), {}, { + range: "bytes=".concat(this.start, "-").concat((_this$end = this.end) !== null && _this$end !== void 0 ? _this$end : '') + }) + }); + } + try { + this.dispatch(this.opts, this); + } catch (err) { + this.handler.onError(err); + } + } + } + }], [{ + key: kRetryHandlerDefaultRetry, + value: function value(err, _ref2, cb) { + var state = _ref2.state, + opts = _ref2.opts; + var statusCode = err.statusCode, + code = err.code, + headers = err.headers; + var method = opts.method, + retryOptions = opts.retryOptions; + var maxRetries = retryOptions.maxRetries, + timeout = retryOptions.timeout, + maxTimeout = retryOptions.maxTimeout, + timeoutFactor = retryOptions.timeoutFactor, + statusCodes = retryOptions.statusCodes, + errorCodes = retryOptions.errorCodes, + methods = retryOptions.methods; + var counter = state.counter, + currentTimeout = state.currentTimeout; + currentTimeout = currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout; + + // Any code that is not a Undici's originated and allowed to retry + if (code && code !== 'UND_ERR_REQ_RETRY' && code !== 'UND_ERR_SOCKET' && !errorCodes.includes(code)) { + cb(err); + return; + } + + // If a set of method are provided and the current method is not in the list + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err); + return; + } + + // If a set of status code are provided and the current status code is not in the list + if (statusCode != null && Array.isArray(statusCodes) && !statusCodes.includes(statusCode)) { + cb(err); + return; + } + + // If we reached the max number of retries + if (counter > maxRetries) { + cb(err); + return; + } + var retryAfterHeader = headers != null && headers['retry-after']; + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader); + retryAfterHeader = isNaN(retryAfterHeader) ? calculateRetryAfterHeader(retryAfterHeader) : retryAfterHeader * 1e3; // Retry-After is in seconds + } + var retryTimeout = retryAfterHeader > 0 ? Math.min(retryAfterHeader, maxTimeout) : Math.min(currentTimeout * Math.pow(timeoutFactor, counter), maxTimeout); + state.currentTimeout = retryTimeout; + setTimeout(function () { + return cb(null); + }, retryTimeout); + } + }]); +}(); +module.exports = RetryHandler; + +/***/ }), + +/***/ 5031: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var RedirectHandler = __webpack_require__(7795); +function createRedirectInterceptor(_ref) { + var defaultMaxRedirections = _ref.maxRedirections; + return function (dispatch) { + return function Intercept(opts, handler) { + var _opts = opts, + _opts$maxRedirections = _opts.maxRedirections, + maxRedirections = _opts$maxRedirections === void 0 ? defaultMaxRedirections : _opts$maxRedirections; + if (!maxRedirections) { + return dispatch(opts, handler); + } + var redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler); + opts = _objectSpread(_objectSpread({}, opts), {}, { + maxRedirections: 0 + }); // Stop sub dispatcher from also redirecting. + return dispatch(opts, redirectHandler); + }; + }; +} +module.exports = createRedirectInterceptor; + +/***/ }), + +/***/ 5584: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; +var utils_1 = __webpack_require__(5316); +// C headers +var ERROR; +(function (ERROR) { + ERROR[ERROR["OK"] = 0] = "OK"; + ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL"; + ERROR[ERROR["STRICT"] = 2] = "STRICT"; + ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR[ERROR["PAUSED"] = 21] = "PAUSED"; + ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR[ERROR["USER"] = 24] = "USER"; +})(ERROR = exports.ERROR || (exports.ERROR = {})); +var TYPE; +(function (TYPE) { + TYPE[TYPE["BOTH"] = 0] = "BOTH"; + TYPE[TYPE["REQUEST"] = 1] = "REQUEST"; + TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE"; +})(TYPE = exports.TYPE || (exports.TYPE = {})); +var FLAGS; +(function (FLAGS) { + FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED"; + FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE"; + FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING"; + // 1 << 8 is unused + FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; +})(FLAGS = exports.FLAGS || (exports.FLAGS = {})); +var LENIENT_FLAGS; +(function (LENIENT_FLAGS) { + LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; +})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); +var METHODS; +(function (METHODS) { + METHODS[METHODS["DELETE"] = 0] = "DELETE"; + METHODS[METHODS["GET"] = 1] = "GET"; + METHODS[METHODS["HEAD"] = 2] = "HEAD"; + METHODS[METHODS["POST"] = 3] = "POST"; + METHODS[METHODS["PUT"] = 4] = "PUT"; + /* pathological */ + METHODS[METHODS["CONNECT"] = 5] = "CONNECT"; + METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS"; + METHODS[METHODS["TRACE"] = 7] = "TRACE"; + /* WebDAV */ + METHODS[METHODS["COPY"] = 8] = "COPY"; + METHODS[METHODS["LOCK"] = 9] = "LOCK"; + METHODS[METHODS["MKCOL"] = 10] = "MKCOL"; + METHODS[METHODS["MOVE"] = 11] = "MOVE"; + METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND"; + METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS[METHODS["SEARCH"] = 14] = "SEARCH"; + METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK"; + METHODS[METHODS["BIND"] = 16] = "BIND"; + METHODS[METHODS["REBIND"] = 17] = "REBIND"; + METHODS[METHODS["UNBIND"] = 18] = "UNBIND"; + METHODS[METHODS["ACL"] = 19] = "ACL"; + /* subversion */ + METHODS[METHODS["REPORT"] = 20] = "REPORT"; + METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS[METHODS["MERGE"] = 23] = "MERGE"; + /* upnp */ + METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY"; + METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + /* RFC-5789 */ + METHODS[METHODS["PATCH"] = 28] = "PATCH"; + METHODS[METHODS["PURGE"] = 29] = "PURGE"; + /* CalDAV */ + METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR"; + /* RFC-2068, section 19.6.1.2 */ + METHODS[METHODS["LINK"] = 31] = "LINK"; + METHODS[METHODS["UNLINK"] = 32] = "UNLINK"; + /* icecast */ + METHODS[METHODS["SOURCE"] = 33] = "SOURCE"; + /* RFC-7540, section 11.6 */ + METHODS[METHODS["PRI"] = 34] = "PRI"; + /* RFC-2326 RTSP */ + METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS[METHODS["SETUP"] = 37] = "SETUP"; + METHODS[METHODS["PLAY"] = 38] = "PLAY"; + METHODS[METHODS["PAUSE"] = 39] = "PAUSE"; + METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT"; + METHODS[METHODS["RECORD"] = 44] = "RECORD"; + /* RAOP */ + METHODS[METHODS["FLUSH"] = 45] = "FLUSH"; +})(METHODS = exports.METHODS || (exports.METHODS = {})); +exports.METHODS_HTTP = [METHODS.DELETE, METHODS.GET, METHODS.HEAD, METHODS.POST, METHODS.PUT, METHODS.CONNECT, METHODS.OPTIONS, METHODS.TRACE, METHODS.COPY, METHODS.LOCK, METHODS.MKCOL, METHODS.MOVE, METHODS.PROPFIND, METHODS.PROPPATCH, METHODS.SEARCH, METHODS.UNLOCK, METHODS.BIND, METHODS.REBIND, METHODS.UNBIND, METHODS.ACL, METHODS.REPORT, METHODS.MKACTIVITY, METHODS.CHECKOUT, METHODS.MERGE, METHODS['M-SEARCH'], METHODS.NOTIFY, METHODS.SUBSCRIBE, METHODS.UNSUBSCRIBE, METHODS.PATCH, METHODS.PURGE, METHODS.MKCALENDAR, METHODS.LINK, METHODS.UNLINK, METHODS.PRI, +// TODO(indutny): should we allow it with HTTP? +METHODS.SOURCE]; +exports.METHODS_ICE = [METHODS.SOURCE]; +exports.METHODS_RTSP = [METHODS.OPTIONS, METHODS.DESCRIBE, METHODS.ANNOUNCE, METHODS.SETUP, METHODS.PLAY, METHODS.PAUSE, METHODS.TEARDOWN, METHODS.GET_PARAMETER, METHODS.SET_PARAMETER, METHODS.REDIRECT, METHODS.RECORD, METHODS.FLUSH, +// For AirPlay +METHODS.GET, METHODS.POST]; +exports.METHOD_MAP = utils_1.enumToMap(METHODS); +exports.H_METHOD_MAP = {}; +Object.keys(exports.METHOD_MAP).forEach(function (key) { + if (/^H/.test(key)) { + exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; + } +}); +var FINISH; +(function (FINISH) { + FINISH[FINISH["SAFE"] = 0] = "SAFE"; + FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE"; +})(FINISH = exports.FINISH || (exports.FINISH = {})); +exports.ALPHA = []; +for (var i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + // Upper case + exports.ALPHA.push(String.fromCharCode(i)); + // Lower case + exports.ALPHA.push(String.fromCharCode(i + 0x20)); +} +exports.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 +}; +exports.HEX_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9, + A: 0XA, + B: 0XB, + C: 0XC, + D: 0XD, + E: 0XE, + F: 0XF, + a: 0xa, + b: 0xb, + c: 0xc, + d: 0xd, + e: 0xe, + f: 0xf +}; +exports.NUM = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; +exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); +exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')']; +exports.USERINFO_CHARS = exports.ALPHANUM.concat(exports.MARK).concat(['%', ';', ':', '&', '=', '+', '$', ',']); +// TODO(indutny): use RFC +exports.STRICT_URL_CHAR = ['!', '"', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~'].concat(exports.ALPHANUM); +exports.URL_CHAR = exports.STRICT_URL_CHAR.concat(['\t', '\f']); +// All characters with 0x80 bit set to 1 +for (var _i = 0x80; _i <= 0xff; _i++) { + exports.URL_CHAR.push(_i); +} +exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); +/* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ +exports.STRICT_TOKEN = ['!', '#', '$', '%', '&', '\'', '*', '+', '-', '.', '^', '_', '`', '|', '~'].concat(exports.ALPHANUM); +exports.TOKEN = exports.STRICT_TOKEN.concat([' ']); +/* + * Verify that a char is a valid visible (printable) US-ASCII + * character or %x80-FF + */ +exports.HEADER_CHARS = ['\t']; +for (var _i2 = 32; _i2 <= 255; _i2++) { + if (_i2 !== 127) { + exports.HEADER_CHARS.push(_i2); + } +} +// ',' = \x44 +exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter(function (c) { + return c !== 44; +}); +exports.MAJOR = exports.NUM_MAP; +exports.MINOR = exports.MAJOR; +var HEADER_STATE; +(function (HEADER_STATE) { + HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; +})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); +exports.SPECIAL_HEADERS = { + 'connection': HEADER_STATE.CONNECTION, + 'content-length': HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': HEADER_STATE.CONNECTION, + 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, + 'upgrade': HEADER_STATE.UPGRADE +}; +//# sourceMappingURL=constants.js.map + +/***/ }), + +/***/ 4438: +/***/ ((module) => { + +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='; + +/***/ }), + +/***/ 7810: +/***/ ((module) => { + +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='; + +/***/ }), + +/***/ 5316: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.enumToMap = void 0; +function enumToMap(obj) { + var res = {}; + Object.keys(obj).forEach(function (key) { + var value = obj[key]; + if (typeof value === 'number') { + res[key] = value; + } + }); + return res; +} +exports.enumToMap = enumToMap; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 933: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(6771), + kClients = _require.kClients; +var Agent = __webpack_require__(6629); +var _require2 = __webpack_require__(8677), + kAgent = _require2.kAgent, + kMockAgentSet = _require2.kMockAgentSet, + kMockAgentGet = _require2.kMockAgentGet, + kDispatches = _require2.kDispatches, + kIsMockActive = _require2.kIsMockActive, + kNetConnect = _require2.kNetConnect, + kGetNetConnect = _require2.kGetNetConnect, + kOptions = _require2.kOptions, + kFactory = _require2.kFactory; +var MockClient = __webpack_require__(6717); +var MockPool = __webpack_require__(9900); +var _require3 = __webpack_require__(9661), + matchValue = _require3.matchValue, + buildMockOptions = _require3.buildMockOptions; +var _require4 = __webpack_require__(3515), + InvalidArgumentError = _require4.InvalidArgumentError, + UndiciError = _require4.UndiciError; +var Dispatcher = __webpack_require__(4171); +var Pluralizer = __webpack_require__(7857); +var PendingInterceptorsFormatter = __webpack_require__(9414); +var FakeWeakRef = /*#__PURE__*/function () { + function FakeWeakRef(value) { + _classCallCheck(this, FakeWeakRef); + this.value = value; + } + return _createClass(FakeWeakRef, [{ + key: "deref", + value: function deref() { + return this.value; + } + }]); +}(); +var MockAgent = /*#__PURE__*/function (_Dispatcher) { + function MockAgent(opts) { + var _this; + _classCallCheck(this, MockAgent); + _this = _callSuper(this, MockAgent, [opts]); + _this[kNetConnect] = true; + _this[kIsMockActive] = true; + + // Instantiate Agent and encapsulate + if (opts && opts.agent && typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + var agent = opts && opts.agent ? opts.agent : new Agent(opts); + _this[kAgent] = agent; + _this[kClients] = agent[kClients]; + _this[kOptions] = buildMockOptions(opts); + return _this; + } + _inherits(MockAgent, _Dispatcher); + return _createClass(MockAgent, [{ + key: "get", + value: function get(origin) { + var dispatcher = this[kMockAgentGet](origin); + if (!dispatcher) { + dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + } + return dispatcher; + } + }, { + key: "dispatch", + value: function dispatch(opts, handler) { + // Call MockAgent.get to perform additional setup before dispatching as normal + this.get(opts.origin); + return this[kAgent].dispatch(opts, handler); + } + }, { + key: "close", + value: function () { + var _close = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this[kAgent].close(); + case 2: + this[kClients].clear(); + case 3: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function close() { + return _close.apply(this, arguments); + } + return close; + }() + }, { + key: "deactivate", + value: function deactivate() { + this[kIsMockActive] = false; + } + }, { + key: "activate", + value: function activate() { + this[kIsMockActive] = true; + } + }, { + key: "enableNetConnect", + value: function enableNetConnect(matcher) { + if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher); + } else { + this[kNetConnect] = [matcher]; + } + } else if (typeof matcher === 'undefined') { + this[kNetConnect] = true; + } else { + throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.'); + } + } + }, { + key: "disableNetConnect", + value: function disableNetConnect() { + this[kNetConnect] = false; + } + + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + }, { + key: "isMockActive", + get: function get() { + return this[kIsMockActive]; + } + }, { + key: kMockAgentSet, + value: function value(origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)); + } + }, { + key: kFactory, + value: function value(origin) { + var mockOptions = Object.assign({ + agent: this + }, this[kOptions]); + return this[kOptions] && this[kOptions].connections === 1 ? new MockClient(origin, mockOptions) : new MockPool(origin, mockOptions); + } + }, { + key: kMockAgentGet, + value: function value(origin) { + // First check if we can immediately find it + var ref = this[kClients].get(origin); + if (ref) { + return ref.deref(); + } + + // If the origin is not a string create a dummy parent pool and return to user + if (typeof origin !== 'string') { + var dispatcher = this[kFactory]('http://localhost:9999'); + this[kMockAgentSet](origin, dispatcher); + return dispatcher; + } + + // If we match, create a pool and assign the same dispatches + for (var _i = 0, _Array$from = Array.from(this[kClients]); _i < _Array$from.length; _i++) { + var _Array$from$_i = _slicedToArray(_Array$from[_i], 2), + keyMatcher = _Array$from$_i[0], + nonExplicitRef = _Array$from$_i[1]; + var nonExplicitDispatcher = nonExplicitRef.deref(); + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + var _dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, _dispatcher); + _dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; + return _dispatcher; + } + } + } + }, { + key: kGetNetConnect, + value: function value() { + return this[kNetConnect]; + } + }, { + key: "pendingInterceptors", + value: function pendingInterceptors() { + var mockAgentClients = this[kClients]; + return Array.from(mockAgentClients.entries()).flatMap(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + origin = _ref2[0], + scope = _ref2[1]; + return scope.deref()[kDispatches].map(function (dispatch) { + return _objectSpread(_objectSpread({}, dispatch), {}, { + origin: origin + }); + }); + }).filter(function (_ref3) { + var pending = _ref3.pending; + return pending; + }); + } + }, { + key: "assertNoPendingInterceptors", + value: function assertNoPendingInterceptors() { + var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref4$pendingIntercep = _ref4.pendingInterceptorsFormatter, + pendingInterceptorsFormatter = _ref4$pendingIntercep === void 0 ? new PendingInterceptorsFormatter() : _ref4$pendingIntercep; + var pending = this.pendingInterceptors(); + if (pending.length === 0) { + return; + } + var pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length); + throw new UndiciError("\n".concat(pluralizer.count, " ").concat(pluralizer.noun, " ").concat(pluralizer.is, " pending:\n\n").concat(pendingInterceptorsFormatter.format(pending), "\n").trim()); + } + }]); +}(Dispatcher); +module.exports = MockAgent; + +/***/ }), + +/***/ 6717: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(9023), + promisify = _require.promisify; +var Client = __webpack_require__(7885); +var _require2 = __webpack_require__(9661), + buildMockDispatch = _require2.buildMockDispatch; +var _require3 = __webpack_require__(8677), + kDispatches = _require3.kDispatches, + kMockAgent = _require3.kMockAgent, + kClose = _require3.kClose, + kOriginalClose = _require3.kOriginalClose, + kOrigin = _require3.kOrigin, + kOriginalDispatch = _require3.kOriginalDispatch, + kConnected = _require3.kConnected; +var _require4 = __webpack_require__(9167), + MockInterceptor = _require4.MockInterceptor; +var Symbols = __webpack_require__(6771); +var _require5 = __webpack_require__(3515), + InvalidArgumentError = _require5.InvalidArgumentError; + +/** + * MockClient provides an API that extends the Client to influence the mockDispatches. + */ +var MockClient = /*#__PURE__*/function (_Client, _Symbols$kConnected) { + function MockClient(origin, opts) { + var _this; + _classCallCheck(this, MockClient); + _this = _callSuper(this, MockClient, [origin, opts]); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + _this[kMockAgent] = opts.agent; + _this[kOrigin] = origin; + _this[kDispatches] = []; + _this[kConnected] = 1; + _this[kOriginalDispatch] = _this.dispatch; + _this[kOriginalClose] = _this.close.bind(_this); + _this.dispatch = buildMockDispatch.call(_this); + _this.close = _this[kClose]; + return _this; + } + _inherits(MockClient, _Client); + return _createClass(MockClient, [{ + key: _Symbols$kConnected, + get: function get() { + return this[kConnected]; + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + }, { + key: "intercept", + value: function intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + }, { + key: kClose, + value: function () { + var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return promisify(this[kOriginalClose])(); + case 2: + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients]["delete"](this[kOrigin]); + case 4: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function value() { + return _value.apply(this, arguments); + } + return value; + }() + }]); +}(Client, Symbols.kConnected); +module.exports = MockClient; + +/***/ }), + +/***/ 7861: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createClass = (__webpack_require__(4579)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(3515), + UndiciError = _require.UndiciError; +var MockNotMatchedError = /*#__PURE__*/function (_UndiciError) { + function MockNotMatchedError(message) { + var _this; + _classCallCheck(this, MockNotMatchedError); + _this = _callSuper(this, MockNotMatchedError, [message]); + Error.captureStackTrace(_this, MockNotMatchedError); + _this.name = 'MockNotMatchedError'; + _this.message = message || 'The request does not match any registered mock dispatches'; + _this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'; + return _this; + } + _inherits(MockNotMatchedError, _UndiciError); + return _createClass(MockNotMatchedError); +}(UndiciError); +module.exports = { + MockNotMatchedError: MockNotMatchedError +}; + +/***/ }), + +/***/ 9167: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(9661), + getResponseData = _require.getResponseData, + buildKey = _require.buildKey, + addMockDispatch = _require.addMockDispatch; +var _require2 = __webpack_require__(8677), + kDispatches = _require2.kDispatches, + kDispatchKey = _require2.kDispatchKey, + kDefaultHeaders = _require2.kDefaultHeaders, + kDefaultTrailers = _require2.kDefaultTrailers, + kContentLength = _require2.kContentLength, + kMockDispatch = _require2.kMockDispatch; +var _require3 = __webpack_require__(3515), + InvalidArgumentError = _require3.InvalidArgumentError; +var _require4 = __webpack_require__(6632), + buildURL = _require4.buildURL; + +/** + * Defines the scope API for an interceptor reply + */ +var MockScope = /*#__PURE__*/function () { + function MockScope(mockDispatch) { + _classCallCheck(this, MockScope); + this[kMockDispatch] = mockDispatch; + } + + /** + * Delay a reply by a set amount in ms. + */ + return _createClass(MockScope, [{ + key: "delay", + value: function delay(waitInMs) { + if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError('waitInMs must be a valid integer > 0'); + } + this[kMockDispatch].delay = waitInMs; + return this; + } + + /** + * For a defined reply, never mark as consumed. + */ + }, { + key: "persist", + value: function persist() { + this[kMockDispatch].persist = true; + return this; + } + + /** + * Allow one to define a reply for a set amount of matching requests. + */ + }, { + key: "times", + value: function times(repeatTimes) { + if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError('repeatTimes must be a valid integer > 0'); + } + this[kMockDispatch].times = repeatTimes; + return this; + } + }]); +}(); +/** + * Defines an interceptor for a Mock + */ +var MockInterceptor = /*#__PURE__*/function () { + function MockInterceptor(opts, mockDispatches) { + _classCallCheck(this, MockInterceptor); + if (typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object'); + } + if (typeof opts.path === 'undefined') { + throw new InvalidArgumentError('opts.path must be defined'); + } + if (typeof opts.method === 'undefined') { + opts.method = 'GET'; + } + // See https://github.com/nodejs/undici/issues/1245 + // As per RFC 3986, clients are not supposed to send URI + // fragments to servers when they retrieve a document, + if (typeof opts.path === 'string') { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query); + } else { + // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 + var parsedURL = new URL(opts.path, 'data://'); + opts.path = parsedURL.pathname + parsedURL.search; + } + } + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase(); + } + this[kDispatchKey] = buildKey(opts); + this[kDispatches] = mockDispatches; + this[kDefaultHeaders] = {}; + this[kDefaultTrailers] = {}; + this[kContentLength] = false; + } + return _createClass(MockInterceptor, [{ + key: "createMockScopeDispatchData", + value: function createMockScopeDispatchData(statusCode, data) { + var responseOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var responseData = getResponseData(data); + var contentLength = this[kContentLength] ? { + 'content-length': responseData.length + } : {}; + var headers = _objectSpread(_objectSpread(_objectSpread({}, this[kDefaultHeaders]), contentLength), responseOptions.headers); + var trailers = _objectSpread(_objectSpread({}, this[kDefaultTrailers]), responseOptions.trailers); + return { + statusCode: statusCode, + data: data, + headers: headers, + trailers: trailers + }; + } + }, { + key: "validateReplyParameters", + value: function validateReplyParameters(statusCode, data, responseOptions) { + if (typeof statusCode === 'undefined') { + throw new InvalidArgumentError('statusCode must be defined'); + } + if (typeof data === 'undefined') { + throw new InvalidArgumentError('data must be defined'); + } + if (typeof responseOptions !== 'object') { + throw new InvalidArgumentError('responseOptions must be an object'); + } + } + + /** + * Mock an undici request with a defined reply. + */ + }, { + key: "reply", + value: function reply(replyData) { + var _this = this; + // Values of reply aren't available right now as they + // can only be available when the reply callback is invoked. + if (typeof replyData === 'function') { + // We'll first wrap the provided callback in another function, + // this function will properly resolve the data from the callback + // when invoked. + var wrappedDefaultsCallback = function wrappedDefaultsCallback(opts) { + // Our reply options callback contains the parameter for statusCode, data and options. + var resolvedData = replyData(opts); + + // Check if it is in the right format + if (typeof resolvedData !== 'object') { + throw new InvalidArgumentError('reply options callback must return an object'); + } + var statusCode = resolvedData.statusCode, + _resolvedData$data = resolvedData.data, + data = _resolvedData$data === void 0 ? '' : _resolvedData$data, + _resolvedData$respons = resolvedData.responseOptions, + responseOptions = _resolvedData$respons === void 0 ? {} : _resolvedData$respons; + _this.validateReplyParameters(statusCode, data, responseOptions); + // Since the values can be obtained immediately we return them + // from this higher order function that will be resolved later. + return _objectSpread({}, _this.createMockScopeDispatchData(statusCode, data, responseOptions)); + }; + + // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. + var _newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); + return new MockScope(_newMockDispatch); + } + + // We can have either one or three parameters, if we get here, + // we should have 1-3 parameters. So we spread the arguments of + // this function to obtain the parameters, since replyData will always + // just be the statusCode. + var _ref = Array.prototype.slice.call(arguments), + statusCode = _ref[0], + _ref$ = _ref[1], + data = _ref$ === void 0 ? '' : _ref$, + _ref$2 = _ref[2], + responseOptions = _ref$2 === void 0 ? {} : _ref$2; + this.validateReplyParameters(statusCode, data, responseOptions); + + // Send in-already provided data like usual + var dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); + var newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); + return new MockScope(newMockDispatch); + } + + /** + * Mock an undici request with a defined error. + */ + }, { + key: "replyWithError", + value: function replyWithError(error) { + if (typeof error === 'undefined') { + throw new InvalidArgumentError('error must be defined'); + } + var newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { + error: error + }); + return new MockScope(newMockDispatch); + } + + /** + * Set default reply headers on the interceptor for subsequent replies + */ + }, { + key: "defaultReplyHeaders", + value: function defaultReplyHeaders(headers) { + if (typeof headers === 'undefined') { + throw new InvalidArgumentError('headers must be defined'); + } + this[kDefaultHeaders] = headers; + return this; + } + + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + }, { + key: "defaultReplyTrailers", + value: function defaultReplyTrailers(trailers) { + if (typeof trailers === 'undefined') { + throw new InvalidArgumentError('trailers must be defined'); + } + this[kDefaultTrailers] = trailers; + return this; + } + + /** + * Set reply content length header for replies on the interceptor + */ + }, { + key: "replyContentLength", + value: function replyContentLength() { + this[kContentLength] = true; + return this; + } + }]); +}(); +module.exports.MockInterceptor = MockInterceptor; +module.exports.MockScope = MockScope; + +/***/ }), + +/***/ 9900: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(9023), + promisify = _require.promisify; +var Pool = __webpack_require__(8684); +var _require2 = __webpack_require__(9661), + buildMockDispatch = _require2.buildMockDispatch; +var _require3 = __webpack_require__(8677), + kDispatches = _require3.kDispatches, + kMockAgent = _require3.kMockAgent, + kClose = _require3.kClose, + kOriginalClose = _require3.kOriginalClose, + kOrigin = _require3.kOrigin, + kOriginalDispatch = _require3.kOriginalDispatch, + kConnected = _require3.kConnected; +var _require4 = __webpack_require__(9167), + MockInterceptor = _require4.MockInterceptor; +var Symbols = __webpack_require__(6771); +var _require5 = __webpack_require__(3515), + InvalidArgumentError = _require5.InvalidArgumentError; + +/** + * MockPool provides an API that extends the Pool to influence the mockDispatches. + */ +var MockPool = /*#__PURE__*/function (_Pool, _Symbols$kConnected) { + function MockPool(origin, opts) { + var _this; + _classCallCheck(this, MockPool); + _this = _callSuper(this, MockPool, [origin, opts]); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + _this[kMockAgent] = opts.agent; + _this[kOrigin] = origin; + _this[kDispatches] = []; + _this[kConnected] = 1; + _this[kOriginalDispatch] = _this.dispatch; + _this[kOriginalClose] = _this.close.bind(_this); + _this.dispatch = buildMockDispatch.call(_this); + _this.close = _this[kClose]; + return _this; + } + _inherits(MockPool, _Pool); + return _createClass(MockPool, [{ + key: _Symbols$kConnected, + get: function get() { + return this[kConnected]; + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + }, { + key: "intercept", + value: function intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + }, { + key: kClose, + value: function () { + var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return promisify(this[kOriginalClose])(); + case 2: + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients]["delete"](this[kOrigin]); + case 4: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function value() { + return _value.apply(this, arguments); + } + return value; + }() + }]); +}(Pool, Symbols.kConnected); +module.exports = MockPool; + +/***/ }), + +/***/ 8677: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kAgent: Symbol('agent'), + kOptions: Symbol('options'), + kFactory: Symbol('factory'), + kDispatches: Symbol('dispatches'), + kDispatchKey: Symbol('dispatch key'), + kDefaultHeaders: Symbol('default headers'), + kDefaultTrailers: Symbol('default trailers'), + kContentLength: Symbol('content length'), + kMockAgent: Symbol('mock agent'), + kMockAgentSet: Symbol('mock agent set'), + kMockAgentGet: Symbol('mock agent get'), + kMockDispatch: Symbol('mock dispatch'), + kClose: Symbol('close'), + kOriginalClose: Symbol('original agent close'), + kOrigin: Symbol('origin'), + kIsMockActive: Symbol('is mock active'), + kNetConnect: Symbol('net connect'), + kGetNetConnect: Symbol('get net connect'), + kConnected: Symbol('connected') +}; + +/***/ }), + +/***/ 9661: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _objectWithoutProperties = (__webpack_require__(1847)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _slicedToArray = (__webpack_require__(5715)["default"]); +var _asyncIterator = (__webpack_require__(2881)["default"]); +var _excluded = ["agent"]; +var _require = __webpack_require__(7861), + MockNotMatchedError = _require.MockNotMatchedError; +var _require2 = __webpack_require__(8677), + kDispatches = _require2.kDispatches, + kMockAgent = _require2.kMockAgent, + kOriginalDispatch = _require2.kOriginalDispatch, + kOrigin = _require2.kOrigin, + kGetNetConnect = _require2.kGetNetConnect; +var _require3 = __webpack_require__(6632), + buildURL = _require3.buildURL, + nop = _require3.nop; +var _require4 = __webpack_require__(8611), + STATUS_CODES = _require4.STATUS_CODES; +var _require5 = __webpack_require__(9023), + isPromise = _require5.types.isPromise; +function matchValue(match, value) { + if (typeof match === 'string') { + return match === value; + } + if (match instanceof RegExp) { + return match.test(value); + } + if (typeof match === 'function') { + return match(value) === true; + } + return false; +} +function lowerCaseEntries(headers) { + return Object.fromEntries(Object.entries(headers).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + headerName = _ref2[0], + headerValue = _ref2[1]; + return [headerName.toLocaleLowerCase(), headerValue]; + })); +} + +/** + * @param {import('../../index').Headers|string[]|Record} headers + * @param {string} key + */ +function getHeaderByName(headers, key) { + if (Array.isArray(headers)) { + for (var i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1]; + } + } + return undefined; + } else if (typeof headers.get === 'function') { + return headers.get(key); + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; + } +} + +/** @param {string[]} headers */ +function buildHeadersFromArray(headers) { + // fetch HeadersList + var clone = headers.slice(); + var entries = []; + for (var index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]); + } + return Object.fromEntries(entries); +} +function matchHeaders(mockDispatch, headers) { + if (typeof mockDispatch.headers === 'function') { + if (Array.isArray(headers)) { + // fetch HeadersList + headers = buildHeadersFromArray(headers); + } + return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}); + } + if (typeof mockDispatch.headers === 'undefined') { + return true; + } + if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') { + return false; + } + for (var _i = 0, _Object$entries = Object.entries(mockDispatch.headers); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), + matchHeaderName = _Object$entries$_i[0], + matchHeaderValue = _Object$entries$_i[1]; + var headerValue = getHeaderByName(headers, matchHeaderName); + if (!matchValue(matchHeaderValue, headerValue)) { + return false; + } + } + return true; +} +function safeUrl(path) { + if (typeof path !== 'string') { + return path; + } + var pathSegments = path.split('?'); + if (pathSegments.length !== 2) { + return path; + } + var qp = new URLSearchParams(pathSegments.pop()); + qp.sort(); + return [].concat(_toConsumableArray(pathSegments), [qp.toString()]).join('?'); +} +function matchKey(mockDispatch, _ref3) { + var path = _ref3.path, + method = _ref3.method, + body = _ref3.body, + headers = _ref3.headers; + var pathMatch = matchValue(mockDispatch.path, path); + var methodMatch = matchValue(mockDispatch.method, method); + var bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true; + var headersMatch = matchHeaders(mockDispatch, headers); + return pathMatch && methodMatch && bodyMatch && headersMatch; +} +function getResponseData(data) { + if (Buffer.isBuffer(data)) { + return data; + } else if (typeof data === 'object') { + return JSON.stringify(data); + } else { + return data.toString(); + } +} +function getMockDispatch(mockDispatches, key) { + var basePath = key.query ? buildURL(key.path, key.query) : key.path; + var resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath; + + // Match path + var matchedMockDispatches = mockDispatches.filter(function (_ref4) { + var consumed = _ref4.consumed; + return !consumed; + }).filter(function (_ref5) { + var path = _ref5.path; + return matchValue(safeUrl(path), resolvedPath); + }); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError("Mock dispatch not matched for path '".concat(resolvedPath, "'")); + } + + // Match method + matchedMockDispatches = matchedMockDispatches.filter(function (_ref6) { + var method = _ref6.method; + return matchValue(method, key.method); + }); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError("Mock dispatch not matched for method '".concat(key.method, "'")); + } + + // Match body + matchedMockDispatches = matchedMockDispatches.filter(function (_ref7) { + var body = _ref7.body; + return typeof body !== 'undefined' ? matchValue(body, key.body) : true; + }); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError("Mock dispatch not matched for body '".concat(key.body, "'")); + } + + // Match headers + matchedMockDispatches = matchedMockDispatches.filter(function (mockDispatch) { + return matchHeaders(mockDispatch, key.headers); + }); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError("Mock dispatch not matched for headers '".concat(typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers, "'")); + } + return matchedMockDispatches[0]; +} +function addMockDispatch(mockDispatches, key, data) { + var baseData = { + timesInvoked: 0, + times: 1, + persist: false, + consumed: false + }; + var replyData = typeof data === 'function' ? { + callback: data + } : _objectSpread({}, data); + var newMockDispatch = _objectSpread(_objectSpread(_objectSpread({}, baseData), key), {}, { + pending: true, + data: _objectSpread({ + error: null + }, replyData) + }); + mockDispatches.push(newMockDispatch); + return newMockDispatch; +} +function deleteMockDispatch(mockDispatches, key) { + var index = mockDispatches.findIndex(function (dispatch) { + if (!dispatch.consumed) { + return false; + } + return matchKey(dispatch, key); + }); + if (index !== -1) { + mockDispatches.splice(index, 1); + } +} +function buildKey(opts) { + var path = opts.path, + method = opts.method, + body = opts.body, + headers = opts.headers, + query = opts.query; + return { + path: path, + method: method, + body: body, + headers: headers, + query: query + }; +} +function generateKeyValues(data) { + return Object.entries(data).reduce(function (keyValuePairs, _ref8) { + var _ref9 = _slicedToArray(_ref8, 2), + key = _ref9[0], + value = _ref9[1]; + return [].concat(_toConsumableArray(keyValuePairs), [Buffer.from("".concat(key)), Array.isArray(value) ? value.map(function (x) { + return Buffer.from("".concat(x)); + }) : Buffer.from("".concat(value))]); + }, []); +} + +/** + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + * @param {number} statusCode + */ +function getStatusText(statusCode) { + return STATUS_CODES[statusCode] || 'unknown'; +} +function getResponse(_x) { + return _getResponse.apply(this, arguments); +} +/** + * Mock dispatch function used to simulate undici dispatches + */ +function _getResponse() { + _getResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(body) { + var buffers, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, data; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + buffers = []; + _iteratorAbruptCompletion = false; + _didIteratorError = false; + _context.prev = 3; + _iterator = _asyncIterator(body); + case 5: + _context.next = 7; + return _iterator.next(); + case 7: + if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) { + _context.next = 13; + break; + } + data = _step.value; + buffers.push(data); + case 10: + _iteratorAbruptCompletion = false; + _context.next = 5; + break; + case 13: + _context.next = 19; + break; + case 15: + _context.prev = 15; + _context.t0 = _context["catch"](3); + _didIteratorError = true; + _iteratorError = _context.t0; + case 19: + _context.prev = 19; + _context.prev = 20; + if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) { + _context.next = 24; + break; + } + _context.next = 24; + return _iterator["return"](); + case 24: + _context.prev = 24; + if (!_didIteratorError) { + _context.next = 27; + break; + } + throw _iteratorError; + case 27: + return _context.finish(24); + case 28: + return _context.finish(19); + case 29: + return _context.abrupt("return", Buffer.concat(buffers).toString('utf8')); + case 30: + case "end": + return _context.stop(); + } + }, _callee, null, [[3, 15, 19, 29], [20,, 24, 28]]); + })); + return _getResponse.apply(this, arguments); +} +function mockDispatch(opts, handler) { + var _this = this; + // Get mock dispatch from built key + var key = buildKey(opts); + var mockDispatch = getMockDispatch(this[kDispatches], key); + mockDispatch.timesInvoked++; + + // Here's where we resolve a callback if a callback is present for the dispatch data. + if (mockDispatch.data.callback) { + mockDispatch.data = _objectSpread(_objectSpread({}, mockDispatch.data), mockDispatch.data.callback(opts)); + } + + // Parse mockDispatch data + var _mockDispatch$data = mockDispatch.data, + statusCode = _mockDispatch$data.statusCode, + data = _mockDispatch$data.data, + headers = _mockDispatch$data.headers, + trailers = _mockDispatch$data.trailers, + error = _mockDispatch$data.error, + delay = mockDispatch.delay, + persist = mockDispatch.persist; + var timesInvoked = mockDispatch.timesInvoked, + times = mockDispatch.times; + + // If it's used up and not persistent, mark as consumed + mockDispatch.consumed = !persist && timesInvoked >= times; + mockDispatch.pending = timesInvoked < times; + + // If specified, trigger dispatch error + if (error !== null) { + deleteMockDispatch(this[kDispatches], key); + handler.onError(error); + return true; + } + + // Handle the request with a delay if necessary + if (typeof delay === 'number' && delay > 0) { + setTimeout(function () { + handleReply(_this[kDispatches]); + }, delay); + } else { + handleReply(this[kDispatches]); + } + function handleReply(mockDispatches) { + var _data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : data; + // fetch's HeadersList is a 1D string array + var optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; + var body = typeof _data === 'function' ? _data(_objectSpread(_objectSpread({}, opts), {}, { + headers: optsHeaders + })) : _data; + + // util.types.isPromise is likely needed for jest. + if (isPromise(body)) { + // If handleReply is asynchronous, throwing an error + // in the callback will reject the promise, rather than + // synchronously throw the error, which breaks some tests. + // Rather, we wait for the callback to resolve if it is a + // promise, and then re-run handleReply with the new body. + body.then(function (newData) { + return handleReply(mockDispatches, newData); + }); + return; + } + var responseData = getResponseData(body); + var responseHeaders = generateKeyValues(headers); + var responseTrailers = generateKeyValues(trailers); + handler.abort = nop; + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); + handler.onData(Buffer.from(responseData)); + handler.onComplete(responseTrailers); + deleteMockDispatch(mockDispatches, key); + } + function resume() {} + return true; +} +function buildMockDispatch() { + var agent = this[kMockAgent]; + var origin = this[kOrigin]; + var originalDispatch = this[kOriginalDispatch]; + return function dispatch(opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler); + } catch (error) { + if (error instanceof MockNotMatchedError) { + var netConnect = agent[kGetNetConnect](); + if (netConnect === false) { + throw new MockNotMatchedError("".concat(error.message, ": subsequent request to origin ").concat(origin, " was not allowed (net.connect disabled)")); + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler); + } else { + throw new MockNotMatchedError("".concat(error.message, ": subsequent request to origin ").concat(origin, " was not allowed (net.connect is not enabled for this origin)")); + } + } else { + throw error; + } + } + } else { + originalDispatch.call(this, opts, handler); + } + }; +} +function checkNetConnect(netConnect, origin) { + var url = new URL(origin); + if (netConnect === true) { + return true; + } else if (Array.isArray(netConnect) && netConnect.some(function (matcher) { + return matchValue(matcher, url.host); + })) { + return true; + } + return false; +} +function buildMockOptions(opts) { + if (opts) { + var agent = opts.agent, + mockOptions = _objectWithoutProperties(opts, _excluded); + return mockOptions; + } +} +module.exports = { + getResponseData: getResponseData, + getMockDispatch: getMockDispatch, + addMockDispatch: addMockDispatch, + deleteMockDispatch: deleteMockDispatch, + buildKey: buildKey, + generateKeyValues: generateKeyValues, + matchValue: matchValue, + getResponse: getResponse, + getStatusText: getStatusText, + mockDispatch: mockDispatch, + buildMockDispatch: buildMockDispatch, + checkNetConnect: checkNetConnect, + buildMockOptions: buildMockOptions, + getHeaderByName: getHeaderByName +}; + +/***/ }), + +/***/ 9414: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(2203), + Transform = _require.Transform; +var _require2 = __webpack_require__(4236), + Console = _require2.Console; + +/** + * Gets the output of `console.table(…)` as a string. + */ +module.exports = /*#__PURE__*/function () { + function PendingInterceptorsFormatter() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + disableColors = _ref.disableColors; + _classCallCheck(this, PendingInterceptorsFormatter); + this.transform = new Transform({ + transform: function transform(chunk, _enc, cb) { + cb(null, chunk); + } + }); + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }); + } + return _createClass(PendingInterceptorsFormatter, [{ + key: "format", + value: function format(pendingInterceptors) { + var withPrettyHeaders = pendingInterceptors.map(function (_ref2) { + var method = _ref2.method, + path = _ref2.path, + statusCode = _ref2.data.statusCode, + persist = _ref2.persist, + times = _ref2.times, + timesInvoked = _ref2.timesInvoked, + origin = _ref2.origin; + return { + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? '✅' : '❌', + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + }; + }); + this.logger.table(withPrettyHeaders); + return this.transform.read().toString(); + } + }]); +}(); + +/***/ }), + +/***/ 7857: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + "this": 'this' +}; +var plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + "this": 'these' +}; +module.exports = /*#__PURE__*/function () { + function Pluralizer(singular, plural) { + _classCallCheck(this, Pluralizer); + this.singular = singular; + this.plural = plural; + } + return _createClass(Pluralizer, [{ + key: "pluralize", + value: function pluralize(count) { + var one = count === 1; + var keys = one ? singulars : plurals; + var noun = one ? this.singular : this.plural; + return _objectSpread(_objectSpread({}, keys), {}, { + count: count, + noun: noun + }); + } + }]); +}(); + +/***/ }), + +/***/ 2557: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/* eslint-disable */ + + + +// Extracted from node/lib/internal/fixed_queue.js + +// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var kSize = 2048; +var kMask = kSize - 1; + +// The FixedQueue is implemented as a singly-linked list of fixed-size +// circular buffers. It looks something like this: +// +// head tail +// | | +// v v +// +-----------+ <-----\ +-----------+ <------\ +-----------+ +// | [null] | \----- | next | \------- | next | +// +-----------+ +-----------+ +-----------+ +// | item | <-- bottom | item | <-- bottom | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | bottom --> | item | +// | item | | item | | item | +// | ... | | ... | | ... | +// | item | | item | | item | +// | item | | item | | item | +// | [empty] | <-- top | item | | item | +// | [empty] | | item | | item | +// | [empty] | | [empty] | <-- top top --> | [empty] | +// +-----------+ +-----------+ +-----------+ +// +// Or, if there is only one circular buffer, it looks something +// like either of these: +// +// head tail head tail +// | | | | +// v v v v +// +-----------+ +-----------+ +// | [null] | | [null] | +// +-----------+ +-----------+ +// | [empty] | | item | +// | [empty] | | item | +// | item | <-- bottom top --> | [empty] | +// | item | | [empty] | +// | [empty] | <-- top bottom --> | item | +// | [empty] | | item | +// +-----------+ +-----------+ +// +// Adding a value means moving `top` forward by one, removing means +// moving `bottom` forward by one. After reaching the end, the queue +// wraps around. +// +// When `top === bottom` the current queue is empty and when +// `top + 1 === bottom` it's full. This wastes a single space of storage +// but allows much quicker checks. +var FixedCircularBuffer = /*#__PURE__*/function () { + function FixedCircularBuffer() { + _classCallCheck(this, FixedCircularBuffer); + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + return _createClass(FixedCircularBuffer, [{ + key: "isEmpty", + value: function isEmpty() { + return this.top === this.bottom; + } + }, { + key: "isFull", + value: function isFull() { + return (this.top + 1 & kMask) === this.bottom; + } + }, { + key: "push", + value: function push(data) { + this.list[this.top] = data; + this.top = this.top + 1 & kMask; + } + }, { + key: "shift", + value: function shift() { + var nextItem = this.list[this.bottom]; + if (nextItem === undefined) return null; + this.list[this.bottom] = undefined; + this.bottom = this.bottom + 1 & kMask; + return nextItem; + } + }]); +}(); +module.exports = /*#__PURE__*/function () { + function FixedQueue() { + _classCallCheck(this, FixedQueue); + this.head = this.tail = new FixedCircularBuffer(); + } + return _createClass(FixedQueue, [{ + key: "isEmpty", + value: function isEmpty() { + return this.head.isEmpty(); + } + }, { + key: "push", + value: function push(data) { + if (this.head.isFull()) { + // Head is full: Creates a new queue, sets the old queue's `.next` to it, + // and sets it as the new main queue. + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + }, { + key: "shift", + value: function shift() { + var tail = this.tail; + var next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + // If there is another queue, it forms the new tail. + this.tail = tail.next; + } + return next; + } + }]); +}(); + +/***/ }), + +/***/ 8872: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _toConsumableArray = (__webpack_require__(1132)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var DispatcherBase = __webpack_require__(8281); +var FixedQueue = __webpack_require__(2557); +var _require = __webpack_require__(6771), + kConnected = _require.kConnected, + kSize = _require.kSize, + kRunning = _require.kRunning, + kPending = _require.kPending, + kQueued = _require.kQueued, + kBusy = _require.kBusy, + kFree = _require.kFree, + kUrl = _require.kUrl, + kClose = _require.kClose, + kDestroy = _require.kDestroy, + kDispatch = _require.kDispatch; +var PoolStats = __webpack_require__(7654); +var kClients = Symbol('clients'); +var kNeedDrain = Symbol('needDrain'); +var kQueue = Symbol('queue'); +var kClosedResolve = Symbol('closed resolve'); +var kOnDrain = Symbol('onDrain'); +var kOnConnect = Symbol('onConnect'); +var kOnDisconnect = Symbol('onDisconnect'); +var kOnConnectionError = Symbol('onConnectionError'); +var kGetDispatcher = Symbol('get dispatcher'); +var kAddClient = Symbol('add client'); +var kRemoveClient = Symbol('remove client'); +var kStats = Symbol('stats'); +var PoolBase = /*#__PURE__*/function (_DispatcherBase) { + function PoolBase() { + var _this; + _classCallCheck(this, PoolBase); + _this = _callSuper(this, PoolBase); + _this[kQueue] = new FixedQueue(); + _this[kClients] = []; + _this[kQueued] = 0; + var pool = _this; + _this[kOnDrain] = function onDrain(origin, targets) { + var queue = pool[kQueue]; + var needDrain = false; + while (!needDrain) { + var item = queue.shift(); + if (!item) { + break; + } + pool[kQueued]--; + needDrain = !this.dispatch(item.opts, item.handler); + } + this[kNeedDrain] = needDrain; + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false; + pool.emit('drain', origin, [pool].concat(_toConsumableArray(targets))); + } + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise.all(pool[kClients].map(function (c) { + return c.close(); + })).then(pool[kClosedResolve]); + } + }; + _this[kOnConnect] = function (origin, targets) { + pool.emit('connect', origin, [pool].concat(_toConsumableArray(targets))); + }; + _this[kOnDisconnect] = function (origin, targets, err) { + pool.emit('disconnect', origin, [pool].concat(_toConsumableArray(targets)), err); + }; + _this[kOnConnectionError] = function (origin, targets, err) { + pool.emit('connectionError', origin, [pool].concat(_toConsumableArray(targets)), err); + }; + _this[kStats] = new PoolStats(_this); + return _this; + } + _inherits(PoolBase, _DispatcherBase); + return _createClass(PoolBase, [{ + key: kBusy, + get: function get() { + return this[kNeedDrain]; + } + }, { + key: kConnected, + get: function get() { + return this[kClients].filter(function (client) { + return client[kConnected]; + }).length; + } + }, { + key: kFree, + get: function get() { + return this[kClients].filter(function (client) { + return client[kConnected] && !client[kNeedDrain]; + }).length; + } + }, { + key: kPending, + get: function get() { + var ret = this[kQueued]; + var _iterator = _createForOfIteratorHelper(this[kClients]), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var pending = _step.value[kPending]; + ret += pending; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return ret; + } + }, { + key: kRunning, + get: function get() { + var ret = 0; + var _iterator2 = _createForOfIteratorHelper(this[kClients]), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var running = _step2.value[kRunning]; + ret += running; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return ret; + } + }, { + key: kSize, + get: function get() { + var ret = this[kQueued]; + var _iterator3 = _createForOfIteratorHelper(this[kClients]), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var size = _step3.value[kSize]; + ret += size; + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + return ret; + } + }, { + key: "stats", + get: function get() { + return this[kStats]; + } + }, { + key: kClose, + value: function () { + var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var _this2 = this; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!this[kQueue].isEmpty()) { + _context.next = 4; + break; + } + return _context.abrupt("return", Promise.all(this[kClients].map(function (c) { + return c.close(); + }))); + case 4: + return _context.abrupt("return", new Promise(function (resolve) { + _this2[kClosedResolve] = resolve; + })); + case 5: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function value() { + return _value.apply(this, arguments); + } + return value; + }() + }, { + key: kDestroy, + value: function () { + var _value2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(err) { + var item; + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + if (false) {} + item = this[kQueue].shift(); + if (item) { + _context2.next = 4; + break; + } + return _context2.abrupt("break", 7); + case 4: + item.handler.onError(err); + _context2.next = 0; + break; + case 7: + return _context2.abrupt("return", Promise.all(this[kClients].map(function (c) { + return c.destroy(err); + }))); + case 8: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function value(_x) { + return _value2.apply(this, arguments); + } + return value; + }() + }, { + key: kDispatch, + value: function value(opts, handler) { + var dispatcher = this[kGetDispatcher](); + if (!dispatcher) { + this[kNeedDrain] = true; + this[kQueue].push({ + opts: opts, + handler: handler + }); + this[kQueued]++; + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true; + this[kNeedDrain] = !this[kGetDispatcher](); + } + return !this[kNeedDrain]; + } + }, { + key: kAddClient, + value: function value(client) { + var _this3 = this; + client.on('drain', this[kOnDrain]).on('connect', this[kOnConnect]).on('disconnect', this[kOnDisconnect]).on('connectionError', this[kOnConnectionError]); + this[kClients].push(client); + if (this[kNeedDrain]) { + process.nextTick(function () { + if (_this3[kNeedDrain]) { + _this3[kOnDrain](client[kUrl], [_this3, client]); + } + }); + } + return this; + } + }, { + key: kRemoveClient, + value: function value(client) { + var _this4 = this; + client.close(function () { + var idx = _this4[kClients].indexOf(client); + if (idx !== -1) { + _this4[kClients].splice(idx, 1); + } + }); + this[kNeedDrain] = this[kClients].some(function (dispatcher) { + return !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true; + }); + } + }]); +}(DispatcherBase); +module.exports = { + PoolBase: PoolBase, + kClients: kClients, + kNeedDrain: kNeedDrain, + kAddClient: kAddClient, + kRemoveClient: kRemoveClient, + kGetDispatcher: kGetDispatcher +}; + +/***/ }), + +/***/ 7654: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(6771), + kFree = _require.kFree, + kConnected = _require.kConnected, + kPending = _require.kPending, + kQueued = _require.kQueued, + kRunning = _require.kRunning, + kSize = _require.kSize; +var kPool = Symbol('pool'); +var PoolStats = /*#__PURE__*/function () { + "use strict"; + + function PoolStats(pool) { + _classCallCheck(this, PoolStats); + this[kPool] = pool; + } + return _createClass(PoolStats, [{ + key: "connected", + get: function get() { + return this[kPool][kConnected]; + } + }, { + key: "free", + get: function get() { + return this[kPool][kFree]; + } + }, { + key: "pending", + get: function get() { + return this[kPool][kPending]; + } + }, { + key: "queued", + get: function get() { + return this[kPool][kQueued]; + } + }, { + key: "running", + get: function get() { + return this[kPool][kRunning]; + } + }, { + key: "size", + get: function get() { + return this[kPool][kSize]; + } + }]); +}(); +module.exports = PoolStats; + +/***/ }), + +/***/ 8684: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _objectWithoutProperties = (__webpack_require__(1847)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _excluded = ["connections", "factory", "connect", "connectTimeout", "tls", "maxCachedSessions", "socketPath", "autoSelectFamily", "autoSelectFamilyAttemptTimeout", "allowH2"]; +var _require = __webpack_require__(8872), + PoolBase = _require.PoolBase, + kClients = _require.kClients, + kNeedDrain = _require.kNeedDrain, + kAddClient = _require.kAddClient, + kGetDispatcher = _require.kGetDispatcher; +var Client = __webpack_require__(7885); +var _require2 = __webpack_require__(3515), + InvalidArgumentError = _require2.InvalidArgumentError; +var util = __webpack_require__(6632); +var _require3 = __webpack_require__(6771), + kUrl = _require3.kUrl, + kInterceptors = _require3.kInterceptors; +var buildConnector = __webpack_require__(200); +var kOptions = Symbol('options'); +var kConnections = Symbol('connections'); +var kFactory = Symbol('factory'); +function defaultFactory(origin, opts) { + return new Client(origin, opts); +} +var Pool = /*#__PURE__*/function (_PoolBase) { + function Pool(origin) { + var _this; + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + connections = _ref.connections, + _ref$factory = _ref.factory, + factory = _ref$factory === void 0 ? defaultFactory : _ref$factory, + connect = _ref.connect, + connectTimeout = _ref.connectTimeout, + tls = _ref.tls, + maxCachedSessions = _ref.maxCachedSessions, + socketPath = _ref.socketPath, + autoSelectFamily = _ref.autoSelectFamily, + autoSelectFamilyAttemptTimeout = _ref.autoSelectFamilyAttemptTimeout, + allowH2 = _ref.allowH2, + options = _objectWithoutProperties(_ref, _excluded); + _classCallCheck(this, Pool); + _this = _callSuper(this, Pool); + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError('invalid connections'); + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); + } + if (typeof connect !== 'function') { + connect = buildConnector(_objectSpread(_objectSpread(_objectSpread({}, tls), {}, { + maxCachedSessions: maxCachedSessions, + allowH2: allowH2, + socketPath: socketPath, + timeout: connectTimeout + }, util.nodeHasAutoSelectFamily && autoSelectFamily ? { + autoSelectFamily: autoSelectFamily, + autoSelectFamilyAttemptTimeout: autoSelectFamilyAttemptTimeout + } : undefined), connect)); + } + _this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : []; + _this[kConnections] = connections || null; + _this[kUrl] = util.parseOrigin(origin); + _this[kOptions] = _objectSpread(_objectSpread({}, util.deepClone(options)), {}, { + connect: connect, + allowH2: allowH2 + }); + _this[kOptions].interceptors = options.interceptors ? _objectSpread({}, options.interceptors) : undefined; + _this[kFactory] = factory; + return _this; + } + _inherits(Pool, _PoolBase); + return _createClass(Pool, [{ + key: kGetDispatcher, + value: function value() { + var dispatcher = this[kClients].find(function (dispatcher) { + return !dispatcher[kNeedDrain]; + }); + if (dispatcher) { + return dispatcher; + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + } + return dispatcher; + } + }]); +}(PoolBase); +module.exports = Pool; + +/***/ }), + +/***/ 2920: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _regeneratorRuntime = (__webpack_require__(4633)["default"]); +var _asyncToGenerator = (__webpack_require__(9293)["default"]); +var _objectSpread = (__webpack_require__(2897)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _require = __webpack_require__(6771), + kProxy = _require.kProxy, + kClose = _require.kClose, + kDestroy = _require.kDestroy, + kInterceptors = _require.kInterceptors; +var _require2 = __webpack_require__(7016), + URL = _require2.URL; +var Agent = __webpack_require__(6629); +var Pool = __webpack_require__(8684); +var DispatcherBase = __webpack_require__(8281); +var _require3 = __webpack_require__(3515), + InvalidArgumentError = _require3.InvalidArgumentError, + RequestAbortedError = _require3.RequestAbortedError; +var buildConnector = __webpack_require__(200); +var kAgent = Symbol('proxy agent'); +var kClient = Symbol('proxy client'); +var kProxyHeaders = Symbol('proxy headers'); +var kRequestTls = Symbol('request tls settings'); +var kProxyTls = Symbol('proxy tls settings'); +var kConnectEndpoint = Symbol('connect endpoint function'); +function defaultProtocolPort(protocol) { + return protocol === 'https:' ? 443 : 80; +} +function buildProxyOptions(opts) { + if (typeof opts === 'string') { + opts = { + uri: opts + }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory'); + } + return { + uri: opts.uri, + protocol: opts.protocol || 'https' + }; +} +function defaultFactory(origin, opts) { + return new Pool(origin, opts); +} +var ProxyAgent = /*#__PURE__*/function (_DispatcherBase) { + function ProxyAgent(opts) { + var _this; + _classCallCheck(this, ProxyAgent); + _this = _callSuper(this, ProxyAgent, [opts]); + _this[kProxy] = buildProxyOptions(opts); + _this[kAgent] = new Agent(opts); + _this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) ? opts.interceptors.ProxyAgent : []; + if (typeof opts === 'string') { + opts = { + uri: opts + }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory'); + } + var _opts = opts, + _opts$clientFactory = _opts.clientFactory, + clientFactory = _opts$clientFactory === void 0 ? defaultFactory : _opts$clientFactory; + if (typeof clientFactory !== 'function') { + throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.'); + } + _this[kRequestTls] = opts.requestTls; + _this[kProxyTls] = opts.proxyTls; + _this[kProxyHeaders] = opts.headers || {}; + var resolvedUrl = new URL(opts.uri); + var origin = resolvedUrl.origin, + port = resolvedUrl.port, + host = resolvedUrl.host, + username = resolvedUrl.username, + password = resolvedUrl.password; + if (opts.auth && opts.token) { + throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token'); + } else if (opts.auth) { + /* @deprecated in favour of opts.token */ + _this[kProxyHeaders]['proxy-authorization'] = "Basic ".concat(opts.auth); + } else if (opts.token) { + _this[kProxyHeaders]['proxy-authorization'] = opts.token; + } else if (username && password) { + _this[kProxyHeaders]['proxy-authorization'] = "Basic ".concat(Buffer.from("".concat(decodeURIComponent(username), ":").concat(decodeURIComponent(password))).toString('base64')); + } + var connect = buildConnector(_objectSpread({}, opts.proxyTls)); + _this[kConnectEndpoint] = buildConnector(_objectSpread({}, opts.requestTls)); + _this[kClient] = clientFactory(resolvedUrl, { + connect: connect + }); + _this[kAgent] = new Agent(_objectSpread(_objectSpread({}, opts), {}, { + connect: function () { + var _connect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(opts, callback) { + var requestedHost, _yield$_this$kClient$, socket, statusCode, servername; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + requestedHost = opts.host; + if (!opts.port) { + requestedHost += ":".concat(defaultProtocolPort(opts.protocol)); + } + _context.prev = 2; + _context.next = 5; + return _this[kClient].connect({ + origin: origin, + port: port, + path: requestedHost, + signal: opts.signal, + headers: _objectSpread(_objectSpread({}, _this[kProxyHeaders]), {}, { + host: host + }) + }); + case 5: + _yield$_this$kClient$ = _context.sent; + socket = _yield$_this$kClient$.socket; + statusCode = _yield$_this$kClient$.statusCode; + if (statusCode !== 200) { + socket.on('error', function () {}).destroy(); + callback(new RequestAbortedError("Proxy response (".concat(statusCode, ") !== 200 when HTTP Tunneling"))); + } + if (!(opts.protocol !== 'https:')) { + _context.next = 12; + break; + } + callback(null, socket); + return _context.abrupt("return"); + case 12: + if (_this[kRequestTls]) { + servername = _this[kRequestTls].servername; + } else { + servername = opts.servername; + } + _this[kConnectEndpoint](_objectSpread(_objectSpread({}, opts), {}, { + servername: servername, + httpSocket: socket + }), callback); + _context.next = 19; + break; + case 16: + _context.prev = 16; + _context.t0 = _context["catch"](2); + callback(_context.t0); + case 19: + case "end": + return _context.stop(); + } + }, _callee, null, [[2, 16]]); + })); + function connect(_x, _x2) { + return _connect.apply(this, arguments); + } + return connect; + }() + })); + return _this; + } + _inherits(ProxyAgent, _DispatcherBase); + return _createClass(ProxyAgent, [{ + key: "dispatch", + value: function dispatch(opts, handler) { + var _URL = new URL(opts.origin), + host = _URL.host; + var headers = buildHeaders(opts.headers); + throwIfProxyAuthIsSent(headers); + return this[kAgent].dispatch(_objectSpread(_objectSpread({}, opts), {}, { + headers: _objectSpread(_objectSpread({}, headers), {}, { + host: host + }) + }), handler); + } + }, { + key: kClose, + value: function () { + var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return this[kAgent].close(); + case 2: + _context2.next = 4; + return this[kClient].close(); + case 4: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function value() { + return _value.apply(this, arguments); + } + return value; + }() + }, { + key: kDestroy, + value: function () { + var _value2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return this[kAgent].destroy(); + case 2: + _context3.next = 4; + return this[kClient].destroy(); + case 4: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function value() { + return _value2.apply(this, arguments); + } + return value; + }() + }]); +}(DispatcherBase); +/** + * @param {string[] | Record} headers + * @returns {Record} + */ +function buildHeaders(headers) { + // When using undici.fetch, the headers list is stored + // as an array. + if (Array.isArray(headers)) { + /** @type {Record} */ + var headersPair = {}; + for (var i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1]; + } + return headersPair; + } + return headers; +} + +/** + * @param {Record} headers + * + * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers + * Nevertheless, it was changed and to avoid a security vulnerability by end users + * this check was created. + * It should be removed in the next major version for performance reasons + */ +function throwIfProxyAuthIsSent(headers) { + var existProxyAuth = headers && Object.keys(headers).find(function (key) { + return key.toLowerCase() === 'proxy-authorization'; + }); + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor'); + } +} +module.exports = ProxyAgent; + +/***/ }), + +/***/ 5900: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var fastNow = Date.now(); +var fastNowTimeout; +var fastTimers = []; +function onTimeout() { + fastNow = Date.now(); + var len = fastTimers.length; + var idx = 0; + while (idx < len) { + var timer = fastTimers[idx]; + if (timer.state === 0) { + timer.state = fastNow + timer.delay; + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1; + timer.callback(timer.opaque); + } + if (timer.state === -1) { + timer.state = -2; + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop(); + } else { + fastTimers.pop(); + } + len -= 1; + } else { + idx += 1; + } + } + if (fastTimers.length > 0) { + refreshTimeout(); + } +} +function refreshTimeout() { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh(); + } else { + clearTimeout(fastNowTimeout); + fastNowTimeout = setTimeout(onTimeout, 1e3); + if (fastNowTimeout.unref) { + fastNowTimeout.unref(); + } + } +} +var Timeout = /*#__PURE__*/function () { + function Timeout(callback, delay, opaque) { + _classCallCheck(this, Timeout); + this.callback = callback; + this.delay = delay; + this.opaque = opaque; + + // -2 not in timer list + // -1 in timer list but inactive + // 0 in timer list waiting for time + // > 0 in timer list waiting for time to expire + this.state = -2; + this.refresh(); + } + return _createClass(Timeout, [{ + key: "refresh", + value: function refresh() { + if (this.state === -2) { + fastTimers.push(this); + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout(); + } + } + this.state = 0; + } + }, { + key: "clear", + value: function clear() { + this.state = -1; + } + }]); +}(); +module.exports = { + setTimeout: function (_setTimeout) { + function setTimeout(_x, _x2, _x3) { + return _setTimeout.apply(this, arguments); + } + setTimeout.toString = function () { + return _setTimeout.toString(); + }; + return setTimeout; + }(function (callback, delay, opaque) { + return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque); + }), + clearTimeout: function (_clearTimeout) { + function clearTimeout(_x4) { + return _clearTimeout.apply(this, arguments); + } + clearTimeout.toString = function () { + return _clearTimeout.toString(); + }; + return clearTimeout; + }(function (timeout) { + if (timeout instanceof Timeout) { + timeout.clear(); + } else { + clearTimeout(timeout); + } + }) +}; + +/***/ }), + +/***/ 5390: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var diagnosticsChannel = __webpack_require__(1637); +var _require = __webpack_require__(8753), + uid = _require.uid, + states = _require.states; +var _require2 = __webpack_require__(5389), + kReadyState = _require2.kReadyState, + kSentClose = _require2.kSentClose, + kByteParser = _require2.kByteParser, + kReceivedClose = _require2.kReceivedClose; +var _require3 = __webpack_require__(270), + fireEvent = _require3.fireEvent, + failWebsocketConnection = _require3.failWebsocketConnection; +var _require4 = __webpack_require__(2039), + CloseEvent = _require4.CloseEvent; +var _require5 = __webpack_require__(4930), + makeRequest = _require5.makeRequest; +var _require6 = __webpack_require__(4435), + fetching = _require6.fetching; +var _require7 = __webpack_require__(5893), + Headers = _require7.Headers; +var _require8 = __webpack_require__(4397), + getGlobalDispatcher = _require8.getGlobalDispatcher; +var _require9 = __webpack_require__(6771), + kHeadersList = _require9.kHeadersList; +var channels = {}; +channels.open = diagnosticsChannel.channel('undici:websocket:open'); +channels.close = diagnosticsChannel.channel('undici:websocket:close'); +channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error'); + +/** @type {import('crypto')} */ +var crypto; +try { + crypto = __webpack_require__(6982); +} catch (_unused) {} + +/** + * @see https://websockets.spec.whatwg.org/#concept-websocket-establish + * @param {URL} url + * @param {string|string[]} protocols + * @param {import('./websocket').WebSocket} ws + * @param {(response: any) => void} onEstablish + * @param {Partial} options + */ +function establishWebSocketConnection(url, protocols, ws, onEstablish, options) { + var _options$dispatcher; + // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s + // scheme is "ws", and to "https" otherwise. + var requestURL = url; + requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'; + + // 2. Let request be a new request, whose URL is requestURL, client is client, + // service-workers mode is "none", referrer is "no-referrer", mode is + // "websocket", credentials mode is "include", cache mode is "no-store" , + // and redirect mode is "error". + var request = makeRequest({ + urlList: [requestURL], + serviceWorkers: 'none', + referrer: 'no-referrer', + mode: 'websocket', + credentials: 'include', + cache: 'no-store', + redirect: 'error' + }); + + // Note: undici extension, allow setting custom headers. + if (options.headers) { + var headersList = new Headers(options.headers)[kHeadersList]; + request.headersList = headersList; + } + + // 3. Append (`Upgrade`, `websocket`) to request’s header list. + // 4. Append (`Connection`, `Upgrade`) to request’s header list. + // Note: both of these are handled by undici currently. + // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 + + // 5. Let keyValue be a nonce consisting of a randomly selected + // 16-byte value that has been forgiving-base64-encoded and + // isomorphic encoded. + var keyValue = crypto.randomBytes(16).toString('base64'); + + // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s + // header list. + request.headersList.append('sec-websocket-key', keyValue); + + // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s + // header list. + request.headersList.append('sec-websocket-version', '13'); + + // 8. For each protocol in protocols, combine + // (`Sec-WebSocket-Protocol`, protocol) in request’s header + // list. + var _iterator = _createForOfIteratorHelper(protocols), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var protocol = _step.value; + request.headersList.append('sec-websocket-protocol', protocol); + } + + // 9. Let permessageDeflate be a user-agent defined + // "permessage-deflate" extension header value. + // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 + // TODO: enable once permessage-deflate is supported + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + var permessageDeflate = ''; // 'permessage-deflate; 15' + + // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to + // request’s header list. + // request.headersList.append('sec-websocket-extensions', permessageDeflate) + + // 11. Fetch request with useParallelQueue set to true, and + // processResponse given response being these steps: + var controller = fetching({ + request: request, + useParallelQueue: true, + dispatcher: (_options$dispatcher = options.dispatcher) !== null && _options$dispatcher !== void 0 ? _options$dispatcher : getGlobalDispatcher(), + processResponse: function processResponse(response) { + var _response$headersList, _response$headersList2; + // 1. If response is a network error or its status is not 101, + // fail the WebSocket connection. + if (response.type === 'error' || response.status !== 101) { + failWebsocketConnection(ws, 'Received network error or non-101 status code.'); + return; + } + + // 2. If protocols is not the empty list and extracting header + // list values given `Sec-WebSocket-Protocol` and response’s + // header list results in null, failure, or the empty byte + // sequence, then fail the WebSocket connection. + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Server did not respond with sent protocols.'); + return; + } + + // 3. Follow the requirements stated step 2 to step 6, inclusive, + // of the last set of steps in section 4.1 of The WebSocket + // Protocol to validate response. This either results in fail + // the WebSocket connection or the WebSocket connection is + // established. + + // 2. If the response lacks an |Upgrade| header field or the |Upgrade| + // header field contains a value that is not an ASCII case- + // insensitive match for the value "websocket", the client MUST + // _Fail the WebSocket Connection_. + if (((_response$headersList = response.headersList.get('Upgrade')) === null || _response$headersList === void 0 ? void 0 : _response$headersList.toLowerCase()) !== 'websocket') { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); + return; + } + + // 3. If the response lacks a |Connection| header field or the + // |Connection| header field doesn't contain a token that is an + // ASCII case-insensitive match for the value "Upgrade", the client + // MUST _Fail the WebSocket Connection_. + if (((_response$headersList2 = response.headersList.get('Connection')) === null || _response$headersList2 === void 0 ? void 0 : _response$headersList2.toLowerCase()) !== 'upgrade') { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); + return; + } + + // 4. If the response lacks a |Sec-WebSocket-Accept| header field or + // the |Sec-WebSocket-Accept| contains a value other than the + // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- + // Key| (as a string, not base64-decoded) with the string "258EAFA5- + // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and + // trailing whitespace, the client MUST _Fail the WebSocket + // Connection_. + var secWSAccept = response.headersList.get('Sec-WebSocket-Accept'); + var digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64'); + if (secWSAccept !== digest) { + failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.'); + return; + } + + // 5. If the response includes a |Sec-WebSocket-Extensions| header + // field and this header field indicates the use of an extension + // that was not present in the client's handshake (the server has + // indicated an extension not requested by the client), the client + // MUST _Fail the WebSocket Connection_. (The parsing of this + // header field to determine which extensions are requested is + // discussed in Section 9.1.) + var secExtension = response.headersList.get('Sec-WebSocket-Extensions'); + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.'); + return; + } + + // 6. If the response includes a |Sec-WebSocket-Protocol| header field + // and this header field indicates the use of a subprotocol that was + // not present in the client's handshake (the server has indicated a + // subprotocol not requested by the client), the client MUST _Fail + // the WebSocket Connection_. + var secProtocol = response.headersList.get('Sec-WebSocket-Protocol'); + if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.'); + return; + } + response.socket.on('data', onSocketData); + response.socket.on('close', onSocketClose); + response.socket.on('error', onSocketError); + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }); + } + onEstablish(response); + } + }); + return controller; +} + +/** + * @param {Buffer} chunk + */ +function onSocketData(chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause(); + } +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 + */ +function onSocketClose() { + var ws = this.ws; + + // If the TCP connection was closed after the + // WebSocket closing handshake was completed, the WebSocket connection + // is said to have been closed _cleanly_. + var wasClean = ws[kSentClose] && ws[kReceivedClose]; + var code = 1005; + var reason = ''; + var result = ws[kByteParser].closingInfo; + if (result) { + var _result$code; + code = (_result$code = result.code) !== null && _result$code !== void 0 ? _result$code : 1005; + reason = result.reason; + } else if (!ws[kSentClose]) { + // If _The WebSocket + // Connection is Closed_ and no Close control frame was received by the + // endpoint (such as could occur if the underlying transport connection + // is lost), _The WebSocket Connection Close Code_ is considered to be + // 1006. + code = 1006; + } + + // 1. Change the ready state to CLOSED (3). + ws[kReadyState] = states.CLOSED; + + // 2. If the user agent was required to fail the WebSocket + // connection, or if the WebSocket connection was closed + // after being flagged as full, fire an event named error + // at the WebSocket object. + // TODO + + // 3. Fire an event named close at the WebSocket object, + // using CloseEvent, with the wasClean attribute + // initialized to true if the connection closed cleanly + // and false otherwise, the code attribute initialized to + // the WebSocket connection close code, and the reason + // attribute initialized to the result of applying UTF-8 + // decode without BOM to the WebSocket connection close + // reason. + fireEvent('close', ws, CloseEvent, { + wasClean: wasClean, + code: code, + reason: reason + }); + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code: code, + reason: reason + }); + } +} +function onSocketError(error) { + var ws = this.ws; + ws[kReadyState] = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error); + } + this.destroy(); +} +module.exports = { + establishWebSocketConnection: establishWebSocketConnection +}; + +/***/ }), + +/***/ 8753: +/***/ ((module) => { + +"use strict"; + + +// This is a Globally Unique Identifier unique used +// to validate that the endpoint accepts websocket +// connections. +// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 +var uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'; + +/** @type {PropertyDescriptor} */ +var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +}; +var states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 +}; +var opcodes = { + CONTINUATION: 0x0, + TEXT: 0x1, + BINARY: 0x2, + CLOSE: 0x8, + PING: 0x9, + PONG: 0xA +}; +var maxUnsigned16Bit = Math.pow(2, 16) - 1; // 65535 + +var parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 +}; +var emptyBuffer = Buffer.allocUnsafe(0); +module.exports = { + uid: uid, + staticPropertyDescriptors: staticPropertyDescriptors, + states: states, + opcodes: opcodes, + maxUnsigned16Bit: maxUnsigned16Bit, + parserStates: parserStates, + emptyBuffer: emptyBuffer +}; + +/***/ }), + +/***/ 2039: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _defineProperty = (__webpack_require__(3693)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _wrapNativeSuper = (__webpack_require__(1837)["default"]); +var _classPrivateFieldInitSpec = (__webpack_require__(2459)["default"]); +var _classPrivateFieldGet = (__webpack_require__(6668)["default"]); +var _classPrivateFieldSet = (__webpack_require__(7088)["default"]); +var _require = __webpack_require__(3702), + webidl = _require.webidl; +var _require2 = __webpack_require__(6632), + kEnumerableProperty = _require2.kEnumerableProperty; +var _require3 = __webpack_require__(8167), + MessagePort = _require3.MessagePort; + +/** + * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent + */ +var _eventInit = /*#__PURE__*/new WeakMap(); +var MessageEvent = /*#__PURE__*/function (_Event) { + function MessageEvent(type) { + var _this; + var eventInitDict = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + _classCallCheck(this, MessageEvent); + webidl.argumentLengthCheck(arguments, 1, { + header: 'MessageEvent constructor' + }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.MessageEventInit(eventInitDict); + _this = _callSuper(this, MessageEvent, [type, eventInitDict]); + _classPrivateFieldInitSpec(_this, _eventInit, void 0); + _classPrivateFieldSet(_eventInit, _this, eventInitDict); + return _this; + } + _inherits(MessageEvent, _Event); + return _createClass(MessageEvent, [{ + key: "data", + get: function get() { + webidl.brandCheck(this, MessageEvent); + return _classPrivateFieldGet(_eventInit, this).data; + } + }, { + key: "origin", + get: function get() { + webidl.brandCheck(this, MessageEvent); + return _classPrivateFieldGet(_eventInit, this).origin; + } + }, { + key: "lastEventId", + get: function get() { + webidl.brandCheck(this, MessageEvent); + return _classPrivateFieldGet(_eventInit, this).lastEventId; + } + }, { + key: "source", + get: function get() { + webidl.brandCheck(this, MessageEvent); + return _classPrivateFieldGet(_eventInit, this).source; + } + }, { + key: "ports", + get: function get() { + webidl.brandCheck(this, MessageEvent); + if (!Object.isFrozen(_classPrivateFieldGet(_eventInit, this).ports)) { + Object.freeze(_classPrivateFieldGet(_eventInit, this).ports); + } + return _classPrivateFieldGet(_eventInit, this).ports; + } + }, { + key: "initMessageEvent", + value: function initMessageEvent(type) { + var bubbles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var cancelable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var origin = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : ''; + var lastEventId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : ''; + var source = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null; + var ports = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : []; + webidl.brandCheck(this, MessageEvent); + webidl.argumentLengthCheck(arguments, 1, { + header: 'MessageEvent.initMessageEvent' + }); + return new MessageEvent(type, { + bubbles: bubbles, + cancelable: cancelable, + data: data, + origin: origin, + lastEventId: lastEventId, + source: source, + ports: ports + }); + } + }]); +}( /*#__PURE__*/_wrapNativeSuper(Event)); +/** + * @see https://websockets.spec.whatwg.org/#the-closeevent-interface + */ +var _eventInit2 = /*#__PURE__*/new WeakMap(); +var CloseEvent = /*#__PURE__*/function (_Event2) { + function CloseEvent(type) { + var _this2; + var eventInitDict = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + _classCallCheck(this, CloseEvent); + webidl.argumentLengthCheck(arguments, 1, { + header: 'CloseEvent constructor' + }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.CloseEventInit(eventInitDict); + _this2 = _callSuper(this, CloseEvent, [type, eventInitDict]); + _classPrivateFieldInitSpec(_this2, _eventInit2, void 0); + _classPrivateFieldSet(_eventInit2, _this2, eventInitDict); + return _this2; + } + _inherits(CloseEvent, _Event2); + return _createClass(CloseEvent, [{ + key: "wasClean", + get: function get() { + webidl.brandCheck(this, CloseEvent); + return _classPrivateFieldGet(_eventInit2, this).wasClean; + } + }, { + key: "code", + get: function get() { + webidl.brandCheck(this, CloseEvent); + return _classPrivateFieldGet(_eventInit2, this).code; + } + }, { + key: "reason", + get: function get() { + webidl.brandCheck(this, CloseEvent); + return _classPrivateFieldGet(_eventInit2, this).reason; + } + }]); +}( /*#__PURE__*/_wrapNativeSuper(Event)); // https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface +var _eventInit3 = /*#__PURE__*/new WeakMap(); +var ErrorEvent = /*#__PURE__*/function (_Event3) { + function ErrorEvent(type, eventInitDict) { + var _eventInitDict; + var _this3; + _classCallCheck(this, ErrorEvent); + webidl.argumentLengthCheck(arguments, 1, { + header: 'ErrorEvent constructor' + }); + _this3 = _callSuper(this, ErrorEvent, [type, eventInitDict]); + _classPrivateFieldInitSpec(_this3, _eventInit3, void 0); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ErrorEventInit((_eventInitDict = eventInitDict) !== null && _eventInitDict !== void 0 ? _eventInitDict : {}); + _classPrivateFieldSet(_eventInit3, _this3, eventInitDict); + return _this3; + } + _inherits(ErrorEvent, _Event3); + return _createClass(ErrorEvent, [{ + key: "message", + get: function get() { + webidl.brandCheck(this, ErrorEvent); + return _classPrivateFieldGet(_eventInit3, this).message; + } + }, { + key: "filename", + get: function get() { + webidl.brandCheck(this, ErrorEvent); + return _classPrivateFieldGet(_eventInit3, this).filename; + } + }, { + key: "lineno", + get: function get() { + webidl.brandCheck(this, ErrorEvent); + return _classPrivateFieldGet(_eventInit3, this).lineno; + } + }, { + key: "colno", + get: function get() { + webidl.brandCheck(this, ErrorEvent); + return _classPrivateFieldGet(_eventInit3, this).colno; + } + }, { + key: "error", + get: function get() { + webidl.brandCheck(this, ErrorEvent); + return _classPrivateFieldGet(_eventInit3, this).error; + } + }]); +}( /*#__PURE__*/_wrapNativeSuper(Event)); +Object.defineProperties(MessageEvent.prototype, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Symbol.toStringTag, { + value: 'MessageEvent', + configurable: true +}), "data", kEnumerableProperty), "origin", kEnumerableProperty), "lastEventId", kEnumerableProperty), "source", kEnumerableProperty), "ports", kEnumerableProperty), "initMessageEvent", kEnumerableProperty)); +Object.defineProperties(CloseEvent.prototype, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Symbol.toStringTag, { + value: 'CloseEvent', + configurable: true +}), "reason", kEnumerableProperty), "code", kEnumerableProperty), "wasClean", kEnumerableProperty)); +Object.defineProperties(ErrorEvent.prototype, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Symbol.toStringTag, { + value: 'ErrorEvent', + configurable: true +}), "message", kEnumerableProperty), "filename", kEnumerableProperty), "lineno", kEnumerableProperty), "colno", kEnumerableProperty), "error", kEnumerableProperty)); +webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); +webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.MessagePort); +var eventInit = [{ + key: 'bubbles', + converter: webidl.converters["boolean"], + defaultValue: false +}, { + key: 'cancelable', + converter: webidl.converters["boolean"], + defaultValue: false +}, { + key: 'composed', + converter: webidl.converters["boolean"], + defaultValue: false +}]; +webidl.converters.MessageEventInit = webidl.dictionaryConverter([].concat(eventInit, [{ + key: 'data', + converter: webidl.converters.any, + defaultValue: null +}, { + key: 'origin', + converter: webidl.converters.USVString, + defaultValue: '' +}, { + key: 'lastEventId', + converter: webidl.converters.DOMString, + defaultValue: '' +}, { + key: 'source', + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null +}, { + key: 'ports', + converter: webidl.converters['sequence'], + get defaultValue() { + return []; + } +}])); +webidl.converters.CloseEventInit = webidl.dictionaryConverter([].concat(eventInit, [{ + key: 'wasClean', + converter: webidl.converters["boolean"], + defaultValue: false +}, { + key: 'code', + converter: webidl.converters['unsigned short'], + defaultValue: 0 +}, { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: '' +}])); +webidl.converters.ErrorEventInit = webidl.dictionaryConverter([].concat(eventInit, [{ + key: 'message', + converter: webidl.converters.DOMString, + defaultValue: '' +}, { + key: 'filename', + converter: webidl.converters.USVString, + defaultValue: '' +}, { + key: 'lineno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 +}, { + key: 'colno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 +}, { + key: 'error', + converter: webidl.converters.any +}])); +module.exports = { + MessageEvent: MessageEvent, + CloseEvent: CloseEvent, + ErrorEvent: ErrorEvent +}; + +/***/ }), + +/***/ 8509: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _require = __webpack_require__(8753), + maxUnsigned16Bit = _require.maxUnsigned16Bit; + +/** @type {import('crypto')} */ +var crypto; +try { + crypto = __webpack_require__(6982); +} catch (_unused) {} +var WebsocketFrameSend = /*#__PURE__*/function () { + /** + * @param {Buffer|undefined} data + */ + function WebsocketFrameSend(data) { + _classCallCheck(this, WebsocketFrameSend); + this.frameData = data; + this.maskKey = crypto.randomBytes(4); + } + return _createClass(WebsocketFrameSend, [{ + key: "createFrame", + value: function createFrame(opcode) { + var _this$frameData$byteL, _this$frameData; + var bodyLength = (_this$frameData$byteL = (_this$frameData = this.frameData) === null || _this$frameData === void 0 ? void 0 : _this$frameData.byteLength) !== null && _this$frameData$byteL !== void 0 ? _this$frameData$byteL : 0; + + /** @type {number} */ + var payloadLength = bodyLength; // 0-125 + var offset = 6; + if (bodyLength > maxUnsigned16Bit) { + offset += 8; // payload length is next 8 bytes + payloadLength = 127; + } else if (bodyLength > 125) { + offset += 2; // payload length is next 2 bytes + payloadLength = 126; + } + var buffer = Buffer.allocUnsafe(bodyLength + offset); + + // Clear first 2 bytes, everything else is overwritten + buffer[0] = buffer[1] = 0; + buffer[0] |= 0x80; // FIN + buffer[0] = (buffer[0] & 0xF0) + opcode; // opcode + + /*! ws. MIT License. Einar Otto Stangvik */ + buffer[offset - 4] = this.maskKey[0]; + buffer[offset - 3] = this.maskKey[1]; + buffer[offset - 2] = this.maskKey[2]; + buffer[offset - 1] = this.maskKey[3]; + buffer[1] = payloadLength; + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2); + } else if (payloadLength === 127) { + // Clear extended payload length + buffer[2] = buffer[3] = 0; + buffer.writeUIntBE(bodyLength, 4, 6); + } + buffer[1] |= 0x80; // MASK + + // mask body + for (var i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]; + } + return buffer; + } + }]); +}(); +module.exports = { + WebsocketFrameSend: WebsocketFrameSend +}; + +/***/ }), + +/***/ 6107: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _classPrivateFieldInitSpec = (__webpack_require__(2459)["default"]); +var _classPrivateFieldSet = (__webpack_require__(7088)["default"]); +var _classPrivateFieldGet = (__webpack_require__(6668)["default"]); +var _require = __webpack_require__(2203), + Writable = _require.Writable; +var diagnosticsChannel = __webpack_require__(1637); +var _require2 = __webpack_require__(8753), + parserStates = _require2.parserStates, + opcodes = _require2.opcodes, + states = _require2.states, + emptyBuffer = _require2.emptyBuffer; +var _require3 = __webpack_require__(5389), + kReadyState = _require3.kReadyState, + kSentClose = _require3.kSentClose, + kResponse = _require3.kResponse, + kReceivedClose = _require3.kReceivedClose; +var _require4 = __webpack_require__(270), + isValidStatusCode = _require4.isValidStatusCode, + failWebsocketConnection = _require4.failWebsocketConnection, + websocketMessageReceived = _require4.websocketMessageReceived; +var _require5 = __webpack_require__(8509), + WebsocketFrameSend = _require5.WebsocketFrameSend; + +// This code was influenced by ws released under the MIT license. +// Copyright (c) 2011 Einar Otto Stangvik +// Copyright (c) 2013 Arnout Kazemier and contributors +// Copyright (c) 2016 Luigi Pinca and contributors + +var channels = {}; +channels.ping = diagnosticsChannel.channel('undici:websocket:ping'); +channels.pong = diagnosticsChannel.channel('undici:websocket:pong'); +var _buffers = /*#__PURE__*/new WeakMap(); +var _byteOffset = /*#__PURE__*/new WeakMap(); +var _state = /*#__PURE__*/new WeakMap(); +var _info = /*#__PURE__*/new WeakMap(); +var _fragments = /*#__PURE__*/new WeakMap(); +var ByteParser = /*#__PURE__*/function (_Writable) { + function ByteParser(ws) { + var _this; + _classCallCheck(this, ByteParser); + _this = _callSuper(this, ByteParser); + _classPrivateFieldInitSpec(_this, _buffers, []); + _classPrivateFieldInitSpec(_this, _byteOffset, 0); + _classPrivateFieldInitSpec(_this, _state, parserStates.INFO); + _classPrivateFieldInitSpec(_this, _info, {}); + _classPrivateFieldInitSpec(_this, _fragments, []); + _this.ws = ws; + return _this; + } + + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _inherits(ByteParser, _Writable); + return _createClass(ByteParser, [{ + key: "_write", + value: function _write(chunk, _, callback) { + _classPrivateFieldGet(_buffers, this).push(chunk); + _classPrivateFieldSet(_byteOffset, this, _classPrivateFieldGet(_byteOffset, this) + chunk.length); + this.run(callback); + } + + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + }, { + key: "run", + value: function run(callback) { + var _this2 = this; + while (true) { + if (_classPrivateFieldGet(_state, this) === parserStates.INFO) { + var _classPrivateFieldGet2, _classPrivateFieldGet3; + // If there aren't enough bytes to parse the payload length, etc. + if (_classPrivateFieldGet(_byteOffset, this) < 2) { + return callback(); + } + var buffer = this.consume(2); + _classPrivateFieldGet(_info, this).fin = (buffer[0] & 0x80) !== 0; + _classPrivateFieldGet(_info, this).opcode = buffer[0] & 0x0F; + + // If we receive a fragmented message, we use the type of the first + // frame to parse the full message as binary/text, when it's terminated + (_classPrivateFieldGet3 = (_classPrivateFieldGet2 = _classPrivateFieldGet(_info, this)).originalOpcode) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : _classPrivateFieldGet2.originalOpcode = _classPrivateFieldGet(_info, this).opcode; + _classPrivateFieldGet(_info, this).fragmented = !_classPrivateFieldGet(_info, this).fin && _classPrivateFieldGet(_info, this).opcode !== opcodes.CONTINUATION; + if (_classPrivateFieldGet(_info, this).fragmented && _classPrivateFieldGet(_info, this).opcode !== opcodes.BINARY && _classPrivateFieldGet(_info, this).opcode !== opcodes.TEXT) { + // Only text and binary frames can be fragmented + failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.'); + return; + } + var payloadLength = buffer[1] & 0x7F; + if (payloadLength <= 125) { + _classPrivateFieldGet(_info, this).payloadLength = payloadLength; + _classPrivateFieldSet(_state, this, parserStates.READ_DATA); + } else if (payloadLength === 126) { + _classPrivateFieldSet(_state, this, parserStates.PAYLOADLENGTH_16); + } else if (payloadLength === 127) { + _classPrivateFieldSet(_state, this, parserStates.PAYLOADLENGTH_64); + } + if (_classPrivateFieldGet(_info, this).fragmented && payloadLength > 125) { + // A fragmented frame can't be fragmented itself + failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.'); + return; + } else if ((_classPrivateFieldGet(_info, this).opcode === opcodes.PING || _classPrivateFieldGet(_info, this).opcode === opcodes.PONG || _classPrivateFieldGet(_info, this).opcode === opcodes.CLOSE) && payloadLength > 125) { + // Control frames can have a payload length of 125 bytes MAX + failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.'); + return; + } else if (_classPrivateFieldGet(_info, this).opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.'); + return; + } + var body = this.consume(payloadLength); + _classPrivateFieldGet(_info, this).closeInfo = this.parseCloseBody(false, body); + if (!this.ws[kSentClose]) { + // If an endpoint receives a Close frame and did not previously send a + // Close frame, the endpoint MUST send a Close frame in response. (When + // sending a Close frame in response, the endpoint typically echos the + // status code it received.) + var _body = Buffer.allocUnsafe(2); + _body.writeUInt16BE(_classPrivateFieldGet(_info, this).closeInfo.code, 0); + var closeFrame = new WebsocketFrameSend(_body); + this.ws[kResponse].socket.write(closeFrame.createFrame(opcodes.CLOSE), function (err) { + if (!err) { + _this2.ws[kSentClose] = true; + } + }); + } + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this.ws[kReadyState] = states.CLOSING; + this.ws[kReceivedClose] = true; + this.end(); + return; + } else if (_classPrivateFieldGet(_info, this).opcode === opcodes.PING) { + // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in + // response, unless it already received a Close frame. + // A Pong frame sent in response to a Ping frame must have identical + // "Application data" + + var _body2 = this.consume(payloadLength); + if (!this.ws[kReceivedClose]) { + var frame = new WebsocketFrameSend(_body2); + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: _body2 + }); + } + } + _classPrivateFieldSet(_state, this, parserStates.INFO); + if (_classPrivateFieldGet(_byteOffset, this) > 0) { + continue; + } else { + callback(); + return; + } + } else if (_classPrivateFieldGet(_info, this).opcode === opcodes.PONG) { + // A Pong frame MAY be sent unsolicited. This serves as a + // unidirectional heartbeat. A response to an unsolicited Pong frame is + // not expected. + + var _body3 = this.consume(payloadLength); + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: _body3 + }); + } + if (_classPrivateFieldGet(_byteOffset, this) > 0) { + continue; + } else { + callback(); + return; + } + } + } else if (_classPrivateFieldGet(_state, this) === parserStates.PAYLOADLENGTH_16) { + if (_classPrivateFieldGet(_byteOffset, this) < 2) { + return callback(); + } + var _buffer = this.consume(2); + _classPrivateFieldGet(_info, this).payloadLength = _buffer.readUInt16BE(0); + _classPrivateFieldSet(_state, this, parserStates.READ_DATA); + } else if (_classPrivateFieldGet(_state, this) === parserStates.PAYLOADLENGTH_64) { + if (_classPrivateFieldGet(_byteOffset, this) < 8) { + return callback(); + } + var _buffer2 = this.consume(8); + var upper = _buffer2.readUInt32BE(0); + + // 2^31 is the maxinimum bytes an arraybuffer can contain + // on 32-bit systems. Although, on 64-bit systems, this is + // 2^53-1 bytes. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e + if (upper > Math.pow(2, 31) - 1) { + failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.'); + return; + } + var lower = _buffer2.readUInt32BE(4); + _classPrivateFieldGet(_info, this).payloadLength = (upper << 8) + lower; + _classPrivateFieldSet(_state, this, parserStates.READ_DATA); + } else if (_classPrivateFieldGet(_state, this) === parserStates.READ_DATA) { + if (_classPrivateFieldGet(_byteOffset, this) < _classPrivateFieldGet(_info, this).payloadLength) { + // If there is still more data in this chunk that needs to be read + return callback(); + } else if (_classPrivateFieldGet(_byteOffset, this) >= _classPrivateFieldGet(_info, this).payloadLength) { + // If the server sent multiple frames in a single chunk + + var _body4 = this.consume(_classPrivateFieldGet(_info, this).payloadLength); + _classPrivateFieldGet(_fragments, this).push(_body4); + + // If the frame is unfragmented, or a fragmented frame was terminated, + // a message was received + if (!_classPrivateFieldGet(_info, this).fragmented || _classPrivateFieldGet(_info, this).fin && _classPrivateFieldGet(_info, this).opcode === opcodes.CONTINUATION) { + var fullMessage = Buffer.concat(_classPrivateFieldGet(_fragments, this)); + websocketMessageReceived(this.ws, _classPrivateFieldGet(_info, this).originalOpcode, fullMessage); + _classPrivateFieldSet(_info, this, {}); + _classPrivateFieldGet(_fragments, this).length = 0; + } + _classPrivateFieldSet(_state, this, parserStates.INFO); + } + } + if (_classPrivateFieldGet(_byteOffset, this) > 0) { + continue; + } else { + callback(); + break; + } + } + } + + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + }, { + key: "consume", + value: function consume(n) { + if (n > _classPrivateFieldGet(_byteOffset, this)) { + return null; + } else if (n === 0) { + return emptyBuffer; + } + if (_classPrivateFieldGet(_buffers, this)[0].length === n) { + _classPrivateFieldSet(_byteOffset, this, _classPrivateFieldGet(_byteOffset, this) - _classPrivateFieldGet(_buffers, this)[0].length); + return _classPrivateFieldGet(_buffers, this).shift(); + } + var buffer = Buffer.allocUnsafe(n); + var offset = 0; + while (offset !== n) { + var next = _classPrivateFieldGet(_buffers, this)[0]; + var length = next.length; + if (length + offset === n) { + buffer.set(_classPrivateFieldGet(_buffers, this).shift(), offset); + break; + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset); + _classPrivateFieldGet(_buffers, this)[0] = next.subarray(n - offset); + break; + } else { + buffer.set(_classPrivateFieldGet(_buffers, this).shift(), offset); + offset += next.length; + } + } + _classPrivateFieldSet(_byteOffset, this, _classPrivateFieldGet(_byteOffset, this) - n); + return buffer; + } + }, { + key: "parseCloseBody", + value: function parseCloseBody(onlyCode, data) { + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 + /** @type {number|undefined} */ + var code; + if (data.length >= 2) { + // _The WebSocket Connection Close Code_ is + // defined as the status code (Section 7.4) contained in the first Close + // control frame received by the application + code = data.readUInt16BE(0); + } + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null; + } + return { + code: code + }; + } + + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 + /** @type {Buffer} */ + var reason = data.subarray(2); + + // Remove BOM + if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) { + reason = reason.subarray(3); + } + if (code !== undefined && !isValidStatusCode(code)) { + return null; + } + try { + // TODO: optimize this + reason = new TextDecoder('utf-8', { + fatal: true + }).decode(reason); + } catch (_unused) { + return null; + } + return { + code: code, + reason: reason + }; + } + }, { + key: "closingInfo", + get: function get() { + return _classPrivateFieldGet(_info, this).closeInfo; + } + }]); +}(Writable); +module.exports = { + ByteParser: ByteParser +}; + +/***/ }), + +/***/ 5389: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kWebSocketURL: Symbol('url'), + kReadyState: Symbol('ready state'), + kController: Symbol('controller'), + kResponse: Symbol('response'), + kBinaryType: Symbol('binary type'), + kSentClose: Symbol('sent close'), + kReceivedClose: Symbol('received close'), + kByteParser: Symbol('byte parser') +}; + +/***/ }), + +/***/ 270: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _createForOfIteratorHelper = (__webpack_require__(883)["default"]); +var _require = __webpack_require__(5389), + kReadyState = _require.kReadyState, + kController = _require.kController, + kResponse = _require.kResponse, + kBinaryType = _require.kBinaryType, + kWebSocketURL = _require.kWebSocketURL; +var _require2 = __webpack_require__(8753), + states = _require2.states, + opcodes = _require2.opcodes; +var _require3 = __webpack_require__(2039), + MessageEvent = _require3.MessageEvent, + ErrorEvent = _require3.ErrorEvent; + +/* globals Blob */ + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isEstablished(ws) { + // If the server's response is validated as provided for above, it is + // said that _The WebSocket Connection is Established_ and that the + // WebSocket Connection is in the OPEN state. + return ws[kReadyState] === states.OPEN; +} + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosing(ws) { + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + return ws[kReadyState] === states.CLOSING; +} + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosed(ws) { + return ws[kReadyState] === states.CLOSED; +} + +/** + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e + * @param {EventTarget} target + * @param {EventInit | undefined} eventInitDict + */ +function fireEvent(e, target) { + var eventConstructor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Event; + var eventInitDict = arguments.length > 3 ? arguments[3] : undefined; + // 1. If eventConstructor is not given, then let eventConstructor be Event. + + // 2. Let event be the result of creating an event given eventConstructor, + // in the relevant realm of target. + // 3. Initialize event’s type attribute to e. + var event = new eventConstructor(e, eventInitDict); // eslint-disable-line new-cap + + // 4. Initialize any other IDL attributes of event as described in the + // invocation of this algorithm. + + // 5. Return the result of dispatching event at target, with legacy target + // override flag set if set. + target.dispatchEvent(event); +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @param {import('./websocket').WebSocket} ws + * @param {number} type Opcode + * @param {Buffer} data application data + */ +function websocketMessageReceived(ws, type, data) { + // 1. If ready state is not OPEN (1), then return. + if (ws[kReadyState] !== states.OPEN) { + return; + } + + // 2. Let dataForEvent be determined by switching on type and binary type: + var dataForEvent; + if (type === opcodes.TEXT) { + // -> type indicates that the data is Text + // a new DOMString containing data + try { + dataForEvent = new TextDecoder('utf-8', { + fatal: true + }).decode(data); + } catch (_unused) { + failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.'); + return; + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === 'blob') { + // -> type indicates that the data is Binary and binary type is "blob" + // a new Blob object, created in the relevant Realm of the WebSocket + // object, that represents data as its raw data + dataForEvent = new Blob([data]); + } else { + // -> type indicates that the data is Binary and binary type is "arraybuffer" + // a new ArrayBuffer object, created in the relevant Realm of the + // WebSocket object, whose contents are data + dataForEvent = new Uint8Array(data).buffer; + } + } + + // 3. Fire an event named message at the WebSocket object, using MessageEvent, + // with the origin attribute initialized to the serialization of the WebSocket + // object’s url's origin, and the data attribute initialized to dataForEvent. + fireEvent('message', ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }); +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455 + * @see https://datatracker.ietf.org/doc/html/rfc2616 + * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 + * @param {string} protocol + */ +function isValidSubprotocol(protocol) { + // If present, this value indicates one + // or more comma-separated subprotocol the client wishes to speak, + // ordered by preference. The elements that comprise this value + // MUST be non-empty strings with characters in the range U+0021 to + // U+007E not including separator characters as defined in + // [RFC2616] and MUST all be unique strings. + if (protocol.length === 0) { + return false; + } + var _iterator = _createForOfIteratorHelper(protocol), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _char = _step.value; + var code = _char.charCodeAt(0); + if (code < 0x21 || code > 0x7E || _char === '(' || _char === ')' || _char === '<' || _char === '>' || _char === '@' || _char === ',' || _char === ';' || _char === ':' || _char === '\\' || _char === '"' || _char === '/' || _char === '[' || _char === ']' || _char === '?' || _char === '=' || _char === '{' || _char === '}' || code === 32 || + // SP + code === 9 // HT + ) { + return false; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return true; +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 + * @param {number} code + */ +function isValidStatusCode(code) { + if (code >= 1000 && code < 1015) { + return code !== 1004 && + // reserved + code !== 1005 && + // "MUST NOT be set as a status code" + code !== 1006 // "MUST NOT be set as a status code" + ; + } + return code >= 3000 && code <= 4999; +} + +/** + * @param {import('./websocket').WebSocket} ws + * @param {string|undefined} reason + */ +function failWebsocketConnection(ws, reason) { + var controller = ws[kController], + response = ws[kResponse]; + controller.abort(); + if (response !== null && response !== void 0 && response.socket && !response.socket.destroyed) { + response.socket.destroy(); + } + if (reason) { + fireEvent('error', ws, ErrorEvent, { + error: new Error(reason) + }); + } +} +module.exports = { + isEstablished: isEstablished, + isClosing: isClosing, + isClosed: isClosed, + fireEvent: fireEvent, + isValidSubprotocol: isValidSubprotocol, + isValidStatusCode: isValidStatusCode, + failWebsocketConnection: failWebsocketConnection, + websocketMessageReceived: websocketMessageReceived +}; + +/***/ }), + +/***/ 8075: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _defineProperty = (__webpack_require__(3693)["default"]); +var _classCallCheck = (__webpack_require__(7383)["default"]); +var _createClass = (__webpack_require__(4579)["default"]); +var _callSuper = (__webpack_require__(8336)["default"]); +var _inherits = (__webpack_require__(9511)["default"]); +var _wrapNativeSuper = (__webpack_require__(1837)["default"]); +var _classPrivateMethodInitSpec = (__webpack_require__(3312)["default"]); +var _classPrivateFieldInitSpec = (__webpack_require__(2459)["default"]); +var _classPrivateFieldSet = (__webpack_require__(7088)["default"]); +var _classPrivateFieldGet = (__webpack_require__(6668)["default"]); +var _assertClassBrand = (__webpack_require__(1756)["default"]); +var _require = __webpack_require__(3702), + webidl = _require.webidl; +var _require2 = __webpack_require__(8422), + DOMException = _require2.DOMException; +var _require3 = __webpack_require__(9738), + URLSerializer = _require3.URLSerializer; +var _require4 = __webpack_require__(9956), + getGlobalOrigin = _require4.getGlobalOrigin; +var _require5 = __webpack_require__(8753), + staticPropertyDescriptors = _require5.staticPropertyDescriptors, + states = _require5.states, + opcodes = _require5.opcodes, + emptyBuffer = _require5.emptyBuffer; +var _require6 = __webpack_require__(5389), + kWebSocketURL = _require6.kWebSocketURL, + kReadyState = _require6.kReadyState, + kController = _require6.kController, + kBinaryType = _require6.kBinaryType, + kResponse = _require6.kResponse, + kSentClose = _require6.kSentClose, + kByteParser = _require6.kByteParser; +var _require7 = __webpack_require__(270), + isEstablished = _require7.isEstablished, + isClosing = _require7.isClosing, + isValidSubprotocol = _require7.isValidSubprotocol, + failWebsocketConnection = _require7.failWebsocketConnection, + fireEvent = _require7.fireEvent; +var _require8 = __webpack_require__(5390), + establishWebSocketConnection = _require8.establishWebSocketConnection; +var _require9 = __webpack_require__(8509), + WebsocketFrameSend = _require9.WebsocketFrameSend; +var _require10 = __webpack_require__(6107), + ByteParser = _require10.ByteParser; +var _require11 = __webpack_require__(6632), + kEnumerableProperty = _require11.kEnumerableProperty, + isBlobLike = _require11.isBlobLike; +var _require12 = __webpack_require__(4397), + getGlobalDispatcher = _require12.getGlobalDispatcher; +var _require13 = __webpack_require__(9023), + types = _require13.types; +var experimentalWarned = false; + +// https://websockets.spec.whatwg.org/#interface-definition +var _events = /*#__PURE__*/new WeakMap(); +var _bufferedAmount = /*#__PURE__*/new WeakMap(); +var _protocol = /*#__PURE__*/new WeakMap(); +var _extensions = /*#__PURE__*/new WeakMap(); +var _WebSocket_brand = /*#__PURE__*/new WeakSet(); +var WebSocket = /*#__PURE__*/function (_EventTarget) { + /** + * @param {string} url + * @param {string|string[]} protocols + */ + function WebSocket(url) { + var _this; + var protocols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + _classCallCheck(this, WebSocket); + _this = _callSuper(this, WebSocket); + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + _classPrivateMethodInitSpec(_this, _WebSocket_brand); + _classPrivateFieldInitSpec(_this, _events, { + open: null, + error: null, + close: null, + message: null + }); + _classPrivateFieldInitSpec(_this, _bufferedAmount, 0); + _classPrivateFieldInitSpec(_this, _protocol, ''); + _classPrivateFieldInitSpec(_this, _extensions, ''); + webidl.argumentLengthCheck(arguments, 1, { + header: 'WebSocket constructor' + }); + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning('WebSockets are experimental, expect them to change at any time.', { + code: 'UNDICI-WS' + }); + } + var options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols); + url = webidl.converters.USVString(url); + protocols = options.protocols; + + // 1. Let baseURL be this's relevant settings object's API base URL. + var baseURL = getGlobalOrigin(); + + // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. + var urlRecord; + try { + urlRecord = new URL(url, baseURL); + } catch (e) { + // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. + throw new DOMException(e, 'SyntaxError'); + } + + // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". + if (urlRecord.protocol === 'http:') { + urlRecord.protocol = 'ws:'; + } else if (urlRecord.protocol === 'https:') { + // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". + urlRecord.protocol = 'wss:'; + } + + // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. + if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { + throw new DOMException("Expected a ws: or wss: protocol, got ".concat(urlRecord.protocol), 'SyntaxError'); + } + + // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" + // DOMException. + if (urlRecord.hash || urlRecord.href.endsWith('#')) { + throw new DOMException('Got fragment', 'SyntaxError'); + } + + // 8. If protocols is a string, set protocols to a sequence consisting + // of just that string. + if (typeof protocols === 'string') { + protocols = [protocols]; + } + + // 9. If any of the values in protocols occur more than once or otherwise + // fail to match the requirements for elements that comprise the value + // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket + // protocol, then throw a "SyntaxError" DOMException. + if (protocols.length !== new Set(protocols.map(function (p) { + return p.toLowerCase(); + })).size) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError'); + } + if (protocols.length > 0 && !protocols.every(function (p) { + return isValidSubprotocol(p); + })) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError'); + } + + // 10. Set this's url to urlRecord. + _this[kWebSocketURL] = new URL(urlRecord.href); + + // 11. Let client be this's relevant settings object. + + // 12. Run this step in parallel: + + // 1. Establish a WebSocket connection given urlRecord, protocols, + // and client. + _this[kController] = establishWebSocketConnection(urlRecord, protocols, _this, function (response) { + return _assertClassBrand(_WebSocket_brand, _this, _onConnectionEstablished).call(_this, response); + }, options); + + // Each WebSocket object has an associated ready state, which is a + // number representing the state of the connection. Initially it must + // be CONNECTING (0). + _this[kReadyState] = WebSocket.CONNECTING; + + // The extensions attribute must initially return the empty string. + + // The protocol attribute must initially return the empty string. + + // Each WebSocket object has an associated binary type, which is a + // BinaryType. Initially it must be "blob". + _this[kBinaryType] = 'blob'; + return _this; + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + _inherits(WebSocket, _EventTarget); + return _createClass(WebSocket, [{ + key: "close", + value: function close() { + var _this2 = this; + var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; + var reason = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + webidl.brandCheck(this, WebSocket); + if (code !== undefined) { + code = webidl.converters['unsigned short'](code, { + clamp: true + }); + } + if (reason !== undefined) { + reason = webidl.converters.USVString(reason); + } + + // 1. If code is present, but is neither an integer equal to 1000 nor an + // integer in the range 3000 to 4999, inclusive, throw an + // "InvalidAccessError" DOMException. + if (code !== undefined) { + if (code !== 1000 && (code < 3000 || code > 4999)) { + throw new DOMException('invalid code', 'InvalidAccessError'); + } + } + var reasonByteLength = 0; + + // 2. If reason is present, then run these substeps: + if (reason !== undefined) { + // 1. Let reasonBytes be the result of encoding reason. + // 2. If reasonBytes is longer than 123 bytes, then throw a + // "SyntaxError" DOMException. + reasonByteLength = Buffer.byteLength(reason); + if (reasonByteLength > 123) { + throw new DOMException("Reason must be less than 123 bytes; received ".concat(reasonByteLength), 'SyntaxError'); + } + } + + // 3. Run the first matching steps from the following list: + if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) { + // If this's ready state is CLOSING (2) or CLOSED (3) + // Do nothing. + } else if (!isEstablished(this)) { + // If the WebSocket connection is not yet established + // Fail the WebSocket connection and set this's ready state + // to CLOSING (2). + failWebsocketConnection(this, 'Connection was closed before it was established.'); + this[kReadyState] = WebSocket.CLOSING; + } else if (!isClosing(this)) { + // If the WebSocket closing handshake has not yet been started + // Start the WebSocket closing handshake and set this's ready + // state to CLOSING (2). + // - If neither code nor reason is present, the WebSocket Close + // message must not have a body. + // - If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + // - If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + + var frame = new WebsocketFrameSend(); + + // If neither code nor reason is present, the WebSocket Close + // message must not have a body. + + // If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + if (code !== undefined && reason === undefined) { + frame.frameData = Buffer.allocUnsafe(2); + frame.frameData.writeUInt16BE(code, 0); + } else if (code !== undefined && reason !== undefined) { + // If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); + frame.frameData.writeUInt16BE(code, 0); + // the body MAY contain UTF-8-encoded data with value /reason/ + frame.frameData.write(reason, 2, 'utf-8'); + } else { + frame.frameData = emptyBuffer; + } + + /** @type {import('stream').Duplex} */ + var socket = this[kResponse].socket; + socket.write(frame.createFrame(opcodes.CLOSE), function (err) { + if (!err) { + _this2[kSentClose] = true; + } + }); + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this[kReadyState] = states.CLOSING; + } else { + // Otherwise + // Set this's ready state to CLOSING (2). + this[kReadyState] = WebSocket.CLOSING; + } + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + }, { + key: "send", + value: function send(data) { + var _this3 = this; + webidl.brandCheck(this, WebSocket); + webidl.argumentLengthCheck(arguments, 1, { + header: 'WebSocket.send' + }); + data = webidl.converters.WebSocketSendData(data); + + // 1. If this's ready state is CONNECTING, then throw an + // "InvalidStateError" DOMException. + if (this[kReadyState] === WebSocket.CONNECTING) { + throw new DOMException('Sent before connected.', 'InvalidStateError'); + } + + // 2. Run the appropriate set of steps from the following list: + // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 + // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 + + if (!isEstablished(this) || isClosing(this)) { + return; + } + + /** @type {import('stream').Duplex} */ + var socket = this[kResponse].socket; + + // If data is a string + if (typeof data === 'string') { + // If the WebSocket connection is established and the WebSocket + // closing handshake has not yet started, then the user agent + // must send a WebSocket Message comprised of the data argument + // using a text frame opcode; if the data cannot be sent, e.g. + // because it would need to be buffered but the buffer is full, + // the user agent must flag the WebSocket as full and then close + // the WebSocket connection. Any invocation of this method with a + // string argument that does not throw an exception must increase + // the bufferedAmount attribute by the number of bytes needed to + // express the argument as UTF-8. + + var value = Buffer.from(data); + var frame = new WebsocketFrameSend(value); + var buffer = frame.createFrame(opcodes.TEXT); + _classPrivateFieldSet(_bufferedAmount, this, _classPrivateFieldGet(_bufferedAmount, this) + value.byteLength); + socket.write(buffer, function () { + _classPrivateFieldSet(_bufferedAmount, _this3, _classPrivateFieldGet(_bufferedAmount, _this3) - value.byteLength); + }); + } else if (types.isArrayBuffer(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need + // to be buffered but the buffer is full, the user agent must flag + // the WebSocket as full and then close the WebSocket connection. + // The data to be sent is the data stored in the buffer described + // by the ArrayBuffer object. Any invocation of this method with an + // ArrayBuffer argument that does not throw an exception must + // increase the bufferedAmount attribute by the length of the + // ArrayBuffer in bytes. + + var _value = Buffer.from(data); + var _frame = new WebsocketFrameSend(_value); + var _buffer = _frame.createFrame(opcodes.BINARY); + _classPrivateFieldSet(_bufferedAmount, this, _classPrivateFieldGet(_bufferedAmount, this) + _value.byteLength); + socket.write(_buffer, function () { + _classPrivateFieldSet(_bufferedAmount, _this3, _classPrivateFieldGet(_bufferedAmount, _this3) - _value.byteLength); + }); + } else if (ArrayBuffer.isView(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The + // data to be sent is the data stored in the section of the buffer + // described by the ArrayBuffer object that data references. Any + // invocation of this method with this kind of argument that does + // not throw an exception must increase the bufferedAmount attribute + // by the length of data’s buffer in bytes. + + var ab = Buffer.from(data, data.byteOffset, data.byteLength); + var _frame2 = new WebsocketFrameSend(ab); + var _buffer2 = _frame2.createFrame(opcodes.BINARY); + _classPrivateFieldSet(_bufferedAmount, this, _classPrivateFieldGet(_bufferedAmount, this) + ab.byteLength); + socket.write(_buffer2, function () { + _classPrivateFieldSet(_bufferedAmount, _this3, _classPrivateFieldGet(_bufferedAmount, _this3) - ab.byteLength); + }); + } else if (isBlobLike(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The data + // to be sent is the raw data represented by the Blob object. Any + // invocation of this method with a Blob argument that does not throw + // an exception must increase the bufferedAmount attribute by the size + // of the Blob object’s raw data, in bytes. + + var _frame3 = new WebsocketFrameSend(); + data.arrayBuffer().then(function (ab) { + var value = Buffer.from(ab); + _frame3.frameData = value; + var buffer = _frame3.createFrame(opcodes.BINARY); + _classPrivateFieldSet(_bufferedAmount, _this3, _classPrivateFieldGet(_bufferedAmount, _this3) + value.byteLength); + socket.write(buffer, function () { + _classPrivateFieldSet(_bufferedAmount, _this3, _classPrivateFieldGet(_bufferedAmount, _this3) - value.byteLength); + }); + }); + } + } + }, { + key: "readyState", + get: function get() { + webidl.brandCheck(this, WebSocket); + + // The readyState getter steps are to return this's ready state. + return this[kReadyState]; + } + }, { + key: "bufferedAmount", + get: function get() { + webidl.brandCheck(this, WebSocket); + return _classPrivateFieldGet(_bufferedAmount, this); + } + }, { + key: "url", + get: function get() { + webidl.brandCheck(this, WebSocket); + + // The url getter steps are to return this's url, serialized. + return URLSerializer(this[kWebSocketURL]); + } + }, { + key: "extensions", + get: function get() { + webidl.brandCheck(this, WebSocket); + return _classPrivateFieldGet(_extensions, this); + } + }, { + key: "protocol", + get: function get() { + webidl.brandCheck(this, WebSocket); + return _classPrivateFieldGet(_protocol, this); + } + }, { + key: "onopen", + get: function get() { + webidl.brandCheck(this, WebSocket); + return _classPrivateFieldGet(_events, this).open; + }, + set: function set(fn) { + webidl.brandCheck(this, WebSocket); + if (_classPrivateFieldGet(_events, this).open) { + this.removeEventListener('open', _classPrivateFieldGet(_events, this).open); + } + if (typeof fn === 'function') { + _classPrivateFieldGet(_events, this).open = fn; + this.addEventListener('open', fn); + } else { + _classPrivateFieldGet(_events, this).open = null; + } + } + }, { + key: "onerror", + get: function get() { + webidl.brandCheck(this, WebSocket); + return _classPrivateFieldGet(_events, this).error; + }, + set: function set(fn) { + webidl.brandCheck(this, WebSocket); + if (_classPrivateFieldGet(_events, this).error) { + this.removeEventListener('error', _classPrivateFieldGet(_events, this).error); + } + if (typeof fn === 'function') { + _classPrivateFieldGet(_events, this).error = fn; + this.addEventListener('error', fn); + } else { + _classPrivateFieldGet(_events, this).error = null; + } + } + }, { + key: "onclose", + get: function get() { + webidl.brandCheck(this, WebSocket); + return _classPrivateFieldGet(_events, this).close; + }, + set: function set(fn) { + webidl.brandCheck(this, WebSocket); + if (_classPrivateFieldGet(_events, this).close) { + this.removeEventListener('close', _classPrivateFieldGet(_events, this).close); + } + if (typeof fn === 'function') { + _classPrivateFieldGet(_events, this).close = fn; + this.addEventListener('close', fn); + } else { + _classPrivateFieldGet(_events, this).close = null; + } + } + }, { + key: "onmessage", + get: function get() { + webidl.brandCheck(this, WebSocket); + return _classPrivateFieldGet(_events, this).message; + }, + set: function set(fn) { + webidl.brandCheck(this, WebSocket); + if (_classPrivateFieldGet(_events, this).message) { + this.removeEventListener('message', _classPrivateFieldGet(_events, this).message); + } + if (typeof fn === 'function') { + _classPrivateFieldGet(_events, this).message = fn; + this.addEventListener('message', fn); + } else { + _classPrivateFieldGet(_events, this).message = null; + } + } + }, { + key: "binaryType", + get: function get() { + webidl.brandCheck(this, WebSocket); + return this[kBinaryType]; + }, + set: function set(type) { + webidl.brandCheck(this, WebSocket); + if (type !== 'blob' && type !== 'arraybuffer') { + this[kBinaryType] = 'blob'; + } else { + this[kBinaryType] = type; + } + } + }]); +}( /*#__PURE__*/_wrapNativeSuper(EventTarget)); // https://websockets.spec.whatwg.org/#dom-websocket-connecting +function _onConnectionEstablished(response) { + // processResponse is called when the "response’s header list has been received and initialized." + // once this happens, the connection is open + this[kResponse] = response; + var parser = new ByteParser(this); + parser.on('drain', function onParserDrain() { + this.ws[kResponse].socket.resume(); + }); + response.socket.ws = this; + this[kByteParser] = parser; + + // 1. Change the ready state to OPEN (1). + this[kReadyState] = states.OPEN; + + // 2. Change the extensions attribute’s value to the extensions in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 + var extensions = response.headersList.get('sec-websocket-extensions'); + if (extensions !== null) { + _classPrivateFieldSet(_extensions, this, extensions); + } + + // 3. Change the protocol attribute’s value to the subprotocol in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 + var protocol = response.headersList.get('sec-websocket-protocol'); + if (protocol !== null) { + _classPrivateFieldSet(_protocol, this, protocol); + } + + // 4. Fire an event named open at the WebSocket object. + fireEvent('open', this); +} +WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; +// https://websockets.spec.whatwg.org/#dom-websocket-open +WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; +// https://websockets.spec.whatwg.org/#dom-websocket-closing +WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; +// https://websockets.spec.whatwg.org/#dom-websocket-closed +WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; +Object.defineProperties(WebSocket.prototype, _defineProperty({ + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty +}, Symbol.toStringTag, { + value: 'WebSocket', + writable: false, + enumerable: false, + configurable: true +})); +Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors +}); +webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.DOMString); +webidl.converters['DOMString or sequence'] = function (V) { + if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { + return webidl.converters['sequence'](V); + } + return webidl.converters.DOMString(V); +}; + +// This implements the propsal made in https://github.com/whatwg/websockets/issues/42 +webidl.converters.WebSocketInit = webidl.dictionaryConverter([{ + key: 'protocols', + converter: webidl.converters['DOMString or sequence'], + get defaultValue() { + return []; + } +}, { + key: 'dispatcher', + converter: function converter(V) { + return V; + }, + get defaultValue() { + return getGlobalDispatcher(); + } +}, { + key: 'headers', + converter: webidl.nullableConverter(webidl.converters.HeadersInit) +}]); +webidl.converters['DOMString or sequence or WebSocketInit'] = function (V) { + if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V); + } + return { + protocols: webidl.converters['DOMString or sequence'](V) + }; +}; +webidl.converters.WebSocketSendData = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { + strict: false + }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V); + } + } + return webidl.converters.USVString(V); +}; +module.exports = { + WebSocket: WebSocket +}; + +/***/ }), + +/***/ 3730: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + NIL: () => (/* reexport */ nil), + parse: () => (/* reexport */ esm_node_parse), + stringify: () => (/* reexport */ esm_node_stringify), + v1: () => (/* reexport */ esm_node_v1), + v3: () => (/* reexport */ esm_node_v3), + v4: () => (/* reexport */ esm_node_v4), + v5: () => (/* reexport */ esm_node_v5), + validate: () => (/* reexport */ esm_node_validate), + version: () => (/* reexport */ esm_node_version) +}); + +// EXTERNAL MODULE: external "crypto" +var external_crypto_ = __webpack_require__(6982); +var external_crypto_default = /*#__PURE__*/__webpack_require__.n(external_crypto_); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +var rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +var poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} +/* harmony default export */ const esm_node_validate = (validate); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} +function stringify(arr) { + var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + return uuid; +} +/* harmony default export */ const esm_node_stringify = (stringify); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +var _nodeId; +var _clockseq; // Previous uuid creation time + +var _lastMSecs = 0; +var _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || new Array(16); + options = options || {}; + var node = options.node || _nodeId; + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + var seedBytes = options.random || (options.rng || rng)(); + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + var tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + return buf || esm_node_stringify(b); +} +/* harmony default export */ const esm_node_v1 = (v1); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + var v; + var arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} +/* harmony default export */ const esm_node_parse = (parse); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + var bytes = []; + for (var i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + return bytes; +} +var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + var bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + if (buf) { + offset = offset || 0; + for (var i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + return buf; + } + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js + +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + return external_crypto_default().createHash('md5').update(bytes).digest(); +} +/* harmony default export */ const esm_node_md5 = (md5); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js + + +var v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js + + +function v4(options, buf, offset) { + options = options || {}; + var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + for (var i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + return buf; + } + return esm_node_stringify(rnds); +} +/* harmony default export */ const esm_node_v4 = (v4); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js + +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + return external_crypto_default().createHash('sha1').update(bytes).digest(); +} +/* harmony default export */ const esm_node_sha1 = (sha1); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +var v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + return parseInt(uuid.substr(14, 1), 16); +} +/* harmony default export */ const esm_node_version = (version); +;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + + + + + + + + + +/***/ }), + +/***/ 4192: +/***/ ((module) => { + +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy; +function wrappy(fn, cb) { + if (fn && cb) return wrappy(fn)(cb); + if (typeof fn !== 'function') throw new TypeError('need wrapper function'); + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k]; + }); + return wrapper; + function wrapper() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + var ret = fn.apply(this, args); + var cb = args[args.length - 1]; + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k]; + }); + } + return ret; + } +} + +/***/ }), + +/***/ 2613: +/***/ ((module) => { + +"use strict"; +module.exports = require("assert"); + +/***/ }), + +/***/ 290: +/***/ ((module) => { + +"use strict"; +module.exports = require("async_hooks"); + +/***/ }), + +/***/ 181: +/***/ ((module) => { + +"use strict"; +module.exports = require("buffer"); + +/***/ }), + +/***/ 4236: +/***/ ((module) => { + +"use strict"; +module.exports = require("console"); + +/***/ }), + +/***/ 6982: +/***/ ((module) => { + +"use strict"; +module.exports = require("crypto"); + +/***/ }), + +/***/ 1637: +/***/ ((module) => { + +"use strict"; +module.exports = require("diagnostics_channel"); + +/***/ }), + +/***/ 4434: +/***/ ((module) => { + +"use strict"; +module.exports = require("events"); + +/***/ }), + +/***/ 9896: +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ 8611: +/***/ ((module) => { + +"use strict"; +module.exports = require("http"); + +/***/ }), + +/***/ 5675: +/***/ ((module) => { + +"use strict"; +module.exports = require("http2"); + +/***/ }), + +/***/ 5692: +/***/ ((module) => { + +"use strict"; +module.exports = require("https"); + +/***/ }), + +/***/ 9278: +/***/ ((module) => { + +"use strict"; +module.exports = require("net"); + +/***/ }), + +/***/ 8474: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:events"); + +/***/ }), + +/***/ 7075: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:stream"); + +/***/ }), + +/***/ 7975: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:util"); + +/***/ }), + +/***/ 857: +/***/ ((module) => { + +"use strict"; +module.exports = require("os"); + +/***/ }), + +/***/ 6928: +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ 5368: +/***/ ((module) => { + +"use strict"; +module.exports = require("perf_hooks"); + +/***/ }), + +/***/ 3480: +/***/ ((module) => { + +"use strict"; +module.exports = require("querystring"); + +/***/ }), + +/***/ 2203: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream"); + +/***/ }), + +/***/ 3774: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream/web"); + +/***/ }), + +/***/ 3193: +/***/ ((module) => { + +"use strict"; +module.exports = require("string_decoder"); + +/***/ }), + +/***/ 4756: +/***/ ((module) => { + +"use strict"; +module.exports = require("tls"); + +/***/ }), + +/***/ 7016: +/***/ ((module) => { + +"use strict"; +module.exports = require("url"); + +/***/ }), + +/***/ 9023: +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ 8253: +/***/ ((module) => { + +"use strict"; +module.exports = require("util/types"); + +/***/ }), + +/***/ 8167: +/***/ ((module) => { + +"use strict"; +module.exports = require("worker_threads"); + +/***/ }), + +/***/ 3106: +/***/ ((module) => { + +"use strict"; +module.exports = require("zlib"); + +/***/ }), + +/***/ 5172: +/***/ ((module) => { + +function _OverloadYield(e, d) { + this.v = e, this.k = d; +} +module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 79: +/***/ ((module) => { + +function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; +} +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 2987: +/***/ ((module) => { + +function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; +} +module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 5901: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayLikeToArray = __webpack_require__(79); +function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return arrayLikeToArray(r); +} +module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 1756: +/***/ ((module) => { + +function _assertClassBrand(e, t, n) { + if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; + throw new TypeError("Private element is not present on this object"); +} +module.exports = _assertClassBrand, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 2475: +/***/ ((module) => { + +function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; +} +module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 3513: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var OverloadYield = __webpack_require__(5172); +function _asyncGeneratorDelegate(t) { + var e = {}, + n = !1; + function pump(e, r) { + return n = !0, r = new Promise(function (n) { + n(t[e](r)); + }), { + done: !1, + value: new OverloadYield(r, 1) + }; + } + return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () { + return this; + }, e.next = function (t) { + return n ? (n = !1, t) : pump("next", t); + }, "function" == typeof t["throw"] && (e["throw"] = function (t) { + if (n) throw n = !1, t; + return pump("throw", t); + }), "function" == typeof t["return"] && (e["return"] = function (t) { + return n ? (n = !1, t) : pump("return", t); + }), e; +} +module.exports = _asyncGeneratorDelegate, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 2881: +/***/ ((module) => { + +function _asyncIterator(r) { + var n, + t, + o, + e = 2; + for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { + if (t && null != (n = r[t])) return n.call(r); + if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); + t = "@@asyncIterator", o = "@@iterator"; + } + throw new TypeError("Object is not async iterable"); +} +function AsyncFromSyncIterator(r) { + function AsyncFromSyncIteratorContinuation(r) { + if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); + var n = r.done; + return Promise.resolve(r.value).then(function (r) { + return { + value: r, + done: n + }; + }); + } + return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) { + this.s = r, this.n = r.next; + }, AsyncFromSyncIterator.prototype = { + s: null, + n: null, + next: function next() { + return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); + }, + "return": function _return(r) { + var n = this.s["return"]; + return void 0 === n ? Promise.resolve({ + value: r, + done: !0 + }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); + }, + "throw": function _throw(r) { + var n = this.s["return"]; + return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); + } + }, new AsyncFromSyncIterator(r); +} +module.exports = _asyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 9293: +/***/ ((module) => { + +function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), + u = i.value; + } catch (n) { + return void e(n); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); +} +function _asyncToGenerator(n) { + return function () { + var t = this, + e = arguments; + return new Promise(function (r, o) { + var a = n.apply(t, e); + function _next(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n); + } + function _throw(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); + } + _next(void 0); + }); + }; +} +module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 3344: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var OverloadYield = __webpack_require__(5172); +function _awaitAsyncGenerator(e) { + return new OverloadYield(e, 0); +} +module.exports = _awaitAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 8336: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getPrototypeOf = __webpack_require__(3072); +var isNativeReflectConstruct = __webpack_require__(7550); +var possibleConstructorReturn = __webpack_require__(8452); +function _callSuper(t, o, e) { + return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e)); +} +module.exports = _callSuper, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 7101: +/***/ ((module) => { + +function _checkPrivateRedeclaration(e, t) { + if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); +} +module.exports = _checkPrivateRedeclaration, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 7383: +/***/ ((module) => { + +function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); +} +module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 6668: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var assertClassBrand = __webpack_require__(1756); +function _classPrivateFieldGet2(s, a) { + return s.get(assertClassBrand(s, a)); +} +module.exports = _classPrivateFieldGet2, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 2459: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var checkPrivateRedeclaration = __webpack_require__(7101); +function _classPrivateFieldInitSpec(e, t, a) { + checkPrivateRedeclaration(e, t), t.set(e, a); +} +module.exports = _classPrivateFieldInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 7088: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var assertClassBrand = __webpack_require__(1756); +function _classPrivateFieldSet2(s, a, r) { + return s.set(assertClassBrand(s, a), r), r; +} +module.exports = _classPrivateFieldSet2, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 3312: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var checkPrivateRedeclaration = __webpack_require__(7101); +function _classPrivateMethodInitSpec(e, a) { + checkPrivateRedeclaration(e, a), a.add(e); +} +module.exports = _classPrivateMethodInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 9646: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var isNativeReflectConstruct = __webpack_require__(7550); +var setPrototypeOf = __webpack_require__(5636); +function _construct(t, e, r) { + if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && setPrototypeOf(p, r.prototype), p; +} +module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 4579: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPropertyKey = __webpack_require__(7736); +function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o); + } +} +function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; +} +module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 883: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var unsupportedIterableToArray = __webpack_require__(7122); +function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { + t && (r = t); + var _n = 0, + F = function F() {}; + return { + s: F, + n: function n() { + return _n >= r.length ? { + done: !0 + } : { + done: !1, + value: r[_n++] + }; + }, + e: function e(r) { + throw r; + }, + f: F + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, + a = !0, + u = !1; + return { + s: function s() { + t = t.call(r); + }, + n: function n() { + var r = t.next(); + return a = r.done, r; + }, + e: function e(r) { + u = !0, o = r; + }, + f: function f() { + try { + a || null == t["return"] || t["return"](); + } finally { + if (u) throw o; + } + } + }; +} +module.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 3693: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var toPropertyKey = __webpack_require__(7736); +function _defineProperty(e, r, t) { + return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[r] = t, e; +} +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 2395: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var superPropBase = __webpack_require__(9552); +function _get() { + return (module.exports = _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _get.apply(null, arguments); +} +module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 3072: +/***/ ((module) => { + +function _getPrototypeOf(t) { + return (module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _getPrototypeOf(t); +} +module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 9511: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var setPrototypeOf = __webpack_require__(5636); +function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && setPrototypeOf(t, e); +} +module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 691: +/***/ ((module) => { + +function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } +} +module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 7550: +/***/ ((module) => { + +function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + } catch (t) {} + return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() { + return !!t; + }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); +} +module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 9291: +/***/ ((module) => { + +function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); +} +module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 1156: +/***/ ((module) => { + +function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } +} +module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 7752: +/***/ ((module) => { + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 1869: +/***/ ((module) => { + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 2897: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var defineProperty = __webpack_require__(3693); +function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function (r) { + return Object.getOwnPropertyDescriptor(e, r).enumerable; + })), t.push.apply(t, o); + } + return t; +} +function _objectSpread2(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { + defineProperty(e, r, t[r]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); + }); + } + return e; +} +module.exports = _objectSpread2, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 1847: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var objectWithoutPropertiesLoose = __webpack_require__(4893); +function _objectWithoutProperties(e, t) { + if (null == e) return {}; + var o, + r, + i = objectWithoutPropertiesLoose(e, t); + if (Object.getOwnPropertySymbols) { + var s = Object.getOwnPropertySymbols(e); + for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); + } + return i; +} +module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 4893: +/***/ ((module) => { + +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (e.includes(n)) continue; + t[n] = r[n]; + } + return t; +} +module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 8452: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(3738)["default"]); +var assertThisInitialized = __webpack_require__(2475); +function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return assertThisInitialized(t); +} +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 4633: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(3738)["default"]); +function _regeneratorRuntime() { + "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + module.exports = _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 5636: +/***/ ((module) => { + +function _setPrototypeOf(t, e) { + return (module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _setPrototypeOf(t, e); +} +module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 5715: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayWithHoles = __webpack_require__(2987); +var iterableToArrayLimit = __webpack_require__(1156); +var unsupportedIterableToArray = __webpack_require__(7122); +var nonIterableRest = __webpack_require__(7752); +function _slicedToArray(r, e) { + return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest(); +} +module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 9552: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getPrototypeOf = __webpack_require__(3072); +function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t));); + return t; +} +module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 9901: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var get = __webpack_require__(2395); +var getPrototypeOf = __webpack_require__(3072); +function _superPropertyGet(t, e, r, o) { + var p = get(getPrototypeOf(1 & o ? t.prototype : t), e, r); + return 2 & o ? function (t) { + return p.apply(r, t); + } : p; +} +module.exports = _superPropertyGet, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 8053: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayWithHoles = __webpack_require__(2987); +var iterableToArray = __webpack_require__(9291); +var unsupportedIterableToArray = __webpack_require__(7122); +var nonIterableRest = __webpack_require__(7752); +function _toArray(r) { + return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest(); +} +module.exports = _toArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 1132: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayWithoutHoles = __webpack_require__(5901); +var iterableToArray = __webpack_require__(9291); +var unsupportedIterableToArray = __webpack_require__(7122); +var nonIterableSpread = __webpack_require__(1869); +function _toConsumableArray(r) { + return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread(); +} +module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 9045: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(3738)["default"]); +function toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 7736: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(3738)["default"]); +var toPrimitive = __webpack_require__(9045); +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; +} +module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 3738: +/***/ ((module) => { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 7122: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var arrayLikeToArray = __webpack_require__(79); +function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0; + } +} +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 2958: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var OverloadYield = __webpack_require__(5172); +function _wrapAsyncGenerator(e) { + return function () { + return new AsyncGenerator(e.apply(this, arguments)); + }; +} +function AsyncGenerator(e) { + var r, t; + function resume(r, t) { + try { + var n = e[r](t), + o = n.value, + u = o instanceof OverloadYield; + Promise.resolve(u ? o.v : o).then(function (t) { + if (u) { + var i = "return" === r ? "return" : "next"; + if (!o.k || t.done) return resume(i, t); + t = e[i](t).value; + } + settle(n.done ? "return" : "normal", t); + }, function (e) { + resume("throw", e); + }); + } catch (e) { + settle("throw", e); + } + } + function settle(e, n) { + switch (e) { + case "return": + r.resolve({ + value: n, + done: !0 + }); + break; + case "throw": + r.reject(n); + break; + default: + r.resolve({ + value: n, + done: !1 + }); + } + (r = r.next) ? resume(r.key, r.arg) : t = null; + } + this._invoke = function (e, n) { + return new Promise(function (o, u) { + var i = { + key: e, + arg: n, + resolve: o, + reject: u, + next: null + }; + t ? t = t.next = i : (r = t = i, resume(e, n)); + }); + }, "function" != typeof e["return"] && (this["return"] = void 0); +} +AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () { + return this; +}, AsyncGenerator.prototype.next = function (e) { + return this._invoke("next", e); +}, AsyncGenerator.prototype["throw"] = function (e) { + return this._invoke("throw", e); +}, AsyncGenerator.prototype["return"] = function (e) { + return this._invoke("return", e); +}; +module.exports = _wrapAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 1837: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getPrototypeOf = __webpack_require__(3072); +var setPrototypeOf = __webpack_require__(5636); +var isNativeFunction = __webpack_require__(691); +var construct = __webpack_require__(9646); +function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? new Map() : void 0; + return (module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) { + if (null === t || !isNativeFunction(t)) return t; + if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t)) return r.get(t); + r.set(t, Wrapper); + } + function Wrapper() { + return construct(t, arguments, getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t.prototype, { + constructor: { + value: Wrapper, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), setPrototypeOf(Wrapper, t); + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _wrapNativeSuper(t); +} +module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 8250: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _typeof = (__webpack_require__(3738)["default"]); +var setPrototypeOf = __webpack_require__(5636); +var inherits = __webpack_require__(9511); +function _wrapRegExp() { + module.exports = _wrapRegExp = function _wrapRegExp(e, r) { + return new BabelRegExp(e, void 0, r); + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var e = RegExp.prototype, + r = new WeakMap(); + function BabelRegExp(e, t, p) { + var o = RegExp(e, t); + return r.set(o, p || r.get(e)), setPrototypeOf(o, BabelRegExp.prototype); + } + function buildGroups(e, t) { + var p = r.get(t); + return Object.keys(p).reduce(function (r, t) { + var o = p[t]; + if ("number" == typeof o) r[t] = e[o];else { + for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++; + r[t] = e[o[i]]; + } + return r; + }, Object.create(null)); + } + return inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) { + var t = e.exec.call(this, r); + if (t) { + t.groups = buildGroups(t, this); + var p = t.indices; + p && (p.groups = buildGroups(p, this)); + } + return t; + }, BabelRegExp.prototype[Symbol.replace] = function (t, p) { + if ("string" == typeof p) { + var o = r.get(this); + return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) { + var t = o[r]; + return "$" + (Array.isArray(t) ? t.join("$") : t); + })); + } + if ("function" == typeof p) { + var i = this; + return e[Symbol.replace].call(this, t, function () { + var e = arguments; + return "object" != _typeof(e[e.length - 1]) && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e); + }); + } + return e[Symbol.replace].call(this, t, p); + }, _wrapRegExp.apply(this, arguments); +} +module.exports = _wrapRegExp, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ 358: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var WritableStream = (__webpack_require__(7075).Writable); +var inherits = (__webpack_require__(7975).inherits); +var StreamSearch = __webpack_require__(3808); +var PartStream = __webpack_require__(2220); +var HeaderParser = __webpack_require__(3351); +var DASH = 45; +var B_ONEDASH = Buffer.from('-'); +var B_CRLF = Buffer.from('\r\n'); +var EMPTY_FN = function EMPTY_FN() {}; +function Dicer(cfg) { + if (!(this instanceof Dicer)) { + return new Dicer(cfg); + } + WritableStream.call(this, cfg); + if (!cfg || !cfg.headerFirst && typeof cfg.boundary !== 'string') { + throw new TypeError('Boundary required'); + } + if (typeof cfg.boundary === 'string') { + this.setBoundary(cfg.boundary); + } else { + this._bparser = undefined; + } + this._headerFirst = cfg.headerFirst; + this._dashes = 0; + this._parts = 0; + this._finished = false; + this._realFinish = false; + this._isPreamble = true; + this._justMatched = false; + this._firstWrite = true; + this._inHeader = true; + this._part = undefined; + this._cb = undefined; + this._ignoreData = false; + this._partOpts = { + highWaterMark: cfg.partHwm + }; + this._pause = false; + var self = this; + this._hparser = new HeaderParser(cfg); + this._hparser.on('header', function (header) { + self._inHeader = false; + self._part.emit('header', header); + }); +} +inherits(Dicer, WritableStream); +Dicer.prototype.emit = function (ev) { + if (ev === 'finish' && !this._realFinish) { + if (!this._finished) { + var self = this; + process.nextTick(function () { + self.emit('error', new Error('Unexpected end of multipart data')); + if (self._part && !self._ignoreData) { + var type = self._isPreamble ? 'Preamble' : 'Part'; + self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')); + self._part.push(null); + process.nextTick(function () { + self._realFinish = true; + self.emit('finish'); + self._realFinish = false; + }); + return; + } + self._realFinish = true; + self.emit('finish'); + self._realFinish = false; + }); + } + } else { + WritableStream.prototype.emit.apply(this, arguments); + } +}; +Dicer.prototype._write = function (data, encoding, cb) { + // ignore unexpected data (e.g. extra trailer data after finished) + if (!this._hparser && !this._bparser) { + return cb(); + } + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts); + if (this.listenerCount('preamble') !== 0) { + this.emit('preamble', this._part); + } else { + this._ignore(); + } + } + var r = this._hparser.push(data); + if (!this._inHeader && r !== undefined && r < data.length) { + data = data.slice(r); + } else { + return cb(); + } + } + + // allows for "easier" testing + if (this._firstWrite) { + this._bparser.push(B_CRLF); + this._firstWrite = false; + } + this._bparser.push(data); + if (this._pause) { + this._cb = cb; + } else { + cb(); + } +}; +Dicer.prototype.reset = function () { + this._part = undefined; + this._bparser = undefined; + this._hparser = undefined; +}; +Dicer.prototype.setBoundary = function (boundary) { + var self = this; + this._bparser = new StreamSearch('\r\n--' + boundary); + this._bparser.on('info', function (isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end); + }); +}; +Dicer.prototype._ignore = function () { + if (this._part && !this._ignoreData) { + this._ignoreData = true; + this._part.on('error', EMPTY_FN); + // we must perform some kind of read on the stream even though we are + // ignoring the data, otherwise node's Readable stream will not emit 'end' + // after pushing null to the stream + this._part.resume(); + } +}; +Dicer.prototype._oninfo = function (isMatch, data, start, end) { + var buf; + var self = this; + var i = 0; + var r; + var shouldWriteMore = true; + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && start + i < end) { + if (data[start + i] === DASH) { + ++i; + ++this._dashes; + } else { + if (this._dashes) { + buf = B_ONEDASH; + } + this._dashes = 0; + break; + } + } + if (this._dashes === 2) { + if (start + i < end && this.listenerCount('trailer') !== 0) { + this.emit('trailer', data.slice(start + i, end)); + } + this.reset(); + this._finished = true; + // no more parts will be added + if (self._parts === 0) { + self._realFinish = true; + self.emit('finish'); + self._realFinish = false; + } + } + if (this._dashes) { + return; + } + } + if (this._justMatched) { + this._justMatched = false; + } + if (!this._part) { + this._part = new PartStream(this._partOpts); + this._part._read = function (n) { + self._unpause(); + }; + if (this._isPreamble && this.listenerCount('preamble') !== 0) { + this.emit('preamble', this._part); + } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) { + this.emit('part', this._part); + } else { + this._ignore(); + } + if (!this._isPreamble) { + this._inHeader = true; + } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { + shouldWriteMore = this._part.push(buf); + } + shouldWriteMore = this._part.push(data.slice(start, end)); + if (!shouldWriteMore) { + this._pause = true; + } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { + this._hparser.push(buf); + } + r = this._hparser.push(data.slice(start, end)); + if (!this._inHeader && r !== undefined && r < end) { + this._oninfo(false, data, start + r, end); + } + } + } + if (isMatch) { + this._hparser.reset(); + if (this._isPreamble) { + this._isPreamble = false; + } else { + if (start !== end) { + ++this._parts; + this._part.on('end', function () { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true; + self.emit('finish'); + self._realFinish = false; + } else { + self._unpause(); + } + } + }); + } + } + this._part.push(null); + this._part = undefined; + this._ignoreData = false; + this._justMatched = true; + this._dashes = 0; + } +}; +Dicer.prototype._unpause = function () { + if (!this._pause) { + return; + } + this._pause = false; + if (this._cb) { + var cb = this._cb; + this._cb = undefined; + cb(); + } +}; +module.exports = Dicer; + +/***/ }), + +/***/ 3351: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var EventEmitter = (__webpack_require__(8474).EventEmitter); +var inherits = (__webpack_require__(7975).inherits); +var getLimit = __webpack_require__(8993); +var StreamSearch = __webpack_require__(3808); +var B_DCRLF = Buffer.from('\r\n\r\n'); +var RE_CRLF = /\r\n/g; +var RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/; // eslint-disable-line no-control-regex + +function HeaderParser(cfg) { + EventEmitter.call(this); + cfg = cfg || {}; + var self = this; + this.nread = 0; + this.maxed = false; + this.npairs = 0; + this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000); + this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024); + this.buffer = ''; + this.header = {}; + this.finished = false; + this.ss = new StreamSearch(B_DCRLF); + this.ss.on('info', function (isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start; + self.nread = self.maxHeaderSize; + self.maxed = true; + } else { + self.nread += end - start; + } + self.buffer += data.toString('binary', start, end); + } + if (isMatch) { + self._finish(); + } + }); +} +inherits(HeaderParser, EventEmitter); +HeaderParser.prototype.push = function (data) { + var r = this.ss.push(data); + if (this.finished) { + return r; + } +}; +HeaderParser.prototype.reset = function () { + this.finished = false; + this.buffer = ''; + this.header = {}; + this.ss.reset(); +}; +HeaderParser.prototype._finish = function () { + if (this.buffer) { + this._parseHeader(); + } + this.ss.matches = this.ss.maxMatches; + var header = this.header; + this.header = {}; + this.buffer = ''; + this.finished = true; + this.nread = this.npairs = 0; + this.maxed = false; + this.emit('header', header); +}; +HeaderParser.prototype._parseHeader = function () { + if (this.npairs === this.maxHeaderPairs) { + return; + } + var lines = this.buffer.split(RE_CRLF); + var len = lines.length; + var m, h; + for (var i = 0; i < len; ++i) { + // eslint-disable-line no-var + if (lines[i].length === 0) { + continue; + } + if (lines[i][0] === '\t' || lines[i][0] === ' ') { + // folded header content + // RFC2822 says to just remove the CRLF and not the whitespace following + // it, so we follow the RFC and include the leading whitespace ... + if (h) { + this.header[h][this.header[h].length - 1] += lines[i]; + continue; + } + } + var posColon = lines[i].indexOf(':'); + if (posColon === -1 || posColon === 0) { + return; + } + m = RE_HDR.exec(lines[i]); + h = m[1].toLowerCase(); + this.header[h] = this.header[h] || []; + this.header[h].push(m[2] || ''); + if (++this.npairs === this.maxHeaderPairs) { + break; + } + } +}; +module.exports = HeaderParser; + +/***/ }), + +/***/ 2220: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var inherits = (__webpack_require__(7975).inherits); +var ReadableStream = (__webpack_require__(7075).Readable); +function PartStream(opts) { + ReadableStream.call(this, opts); +} +inherits(PartStream, ReadableStream); +PartStream.prototype._read = function (n) {}; +module.exports = PartStream; + +/***/ }), + +/***/ 3808: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +/** + * Copyright Brian White. All rights reserved. + * + * @see https://github.com/mscdex/streamsearch + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation + * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool + */ +var EventEmitter = (__webpack_require__(8474).EventEmitter); +var inherits = (__webpack_require__(7975).inherits); +function SBMH(needle) { + if (typeof needle === 'string') { + needle = Buffer.from(needle); + } + if (!Buffer.isBuffer(needle)) { + throw new TypeError('The needle has to be a String or a Buffer.'); + } + var needleLength = needle.length; + if (needleLength === 0) { + throw new Error('The needle cannot be an empty String/Buffer.'); + } + if (needleLength > 256) { + throw new Error('The needle cannot have a length bigger than 256.'); + } + this.maxMatches = Infinity; + this.matches = 0; + this._occ = new Array(256).fill(needleLength); // Initialize occurrence table. + this._lookbehind_size = 0; + this._needle = needle; + this._bufpos = 0; + this._lookbehind = Buffer.alloc(needleLength); + + // Populate occurrence table with analysis of the needle, + // ignoring last letter. + for (var i = 0; i < needleLength - 1; ++i) { + // eslint-disable-line no-var + this._occ[needle[i]] = needleLength - 1 - i; + } +} +inherits(SBMH, EventEmitter); +SBMH.prototype.reset = function () { + this._lookbehind_size = 0; + this.matches = 0; + this._bufpos = 0; +}; +SBMH.prototype.push = function (chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, 'binary'); + } + var chlen = chunk.length; + this._bufpos = pos || 0; + var r; + while (r !== chlen && this.matches < this.maxMatches) { + r = this._sbmh_feed(chunk); + } + return r; +}; +SBMH.prototype._sbmh_feed = function (data) { + var len = data.length; + var needle = this._needle; + var needleLength = needle.length; + var lastNeedleChar = needle[needleLength - 1]; + + // Positive: points to a position in `data` + // pos == 3 points to data[3] + // Negative: points to a position in the lookbehind buffer + // pos == -2 points to lookbehind[lookbehind_size - 2] + var pos = -this._lookbehind_size; + var ch; + if (pos < 0) { + // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool + // search with character lookup code that considers both the + // lookbehind buffer and the current round's haystack data. + // + // Loop until + // there is a match. + // or until + // we've moved past the position that requires the + // lookbehind buffer. In this case we switch to the + // optimized loop. + // or until + // the character to look at lies outside the haystack. + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1); + if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) { + this._lookbehind_size = 0; + ++this.matches; + this.emit('info', true); + return this._bufpos = pos + needleLength; + } + pos += this._occ[ch]; + } + + // No match. + + if (pos < 0) { + // There's too few data for Boyer-Moore-Horspool to run, + // so let's use a different algorithm to skip as much as + // we can. + // Forward pos until + // the trailing part of lookbehind + data + // looks like the beginning of the needle + // or until + // pos == 0 + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { + ++pos; + } + } + if (pos >= 0) { + // Discard lookbehind buffer. + this.emit('info', false, this._lookbehind, 0, this._lookbehind_size); + this._lookbehind_size = 0; + } else { + // Cut off part of the lookbehind buffer that has + // been processed and append the entire haystack + // into it. + var bytesToCutOff = this._lookbehind_size + pos; + if (bytesToCutOff > 0) { + // The cut off data is guaranteed not to contain the needle. + this.emit('info', false, this._lookbehind, 0, bytesToCutOff); + } + this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, this._lookbehind_size - bytesToCutOff); + this._lookbehind_size -= bytesToCutOff; + data.copy(this._lookbehind, this._lookbehind_size); + this._lookbehind_size += len; + this._bufpos = len; + return len; + } + } + pos += (pos >= 0) * this._bufpos; + + // Lookbehind buffer is now empty. We only need to check if the + // needle is in the haystack. + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos); + ++this.matches; + if (pos > 0) { + this.emit('info', true, data, this._bufpos, pos); + } else { + this.emit('info', true); + } + return this._bufpos = pos + needleLength; + } else { + pos = len - needleLength; + } + + // There was no match. If there's trailing haystack data that we cannot + // match yet using the Boyer-Moore-Horspool algorithm (because the trailing + // data is less than the needle size) then match using a modified + // algorithm that starts matching from the beginning instead of the end. + // Whatever trailing data is left after running this algorithm is added to + // the lookbehind buffer. + while (pos < len && (data[pos] !== needle[0] || Buffer.compare(data.subarray(pos, pos + len - pos), needle.subarray(0, len - pos)) !== 0)) { + ++pos; + } + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)); + this._lookbehind_size = len - pos; + } + + // Everything until pos is guaranteed not to contain needle data. + if (pos > 0) { + this.emit('info', false, data, this._bufpos, pos < len ? pos : len); + } + this._bufpos = len; + return len; +}; +SBMH.prototype._sbmh_lookup_char = function (data, pos) { + return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos]; +}; +SBMH.prototype._sbmh_memcmp = function (data, pos, len) { + for (var i = 0; i < len; ++i) { + // eslint-disable-line no-var + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { + return false; + } + } + return true; +}; +module.exports = SBMH; + +/***/ }), + +/***/ 581: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var _objectSpread = (__webpack_require__(2897)["default"]); +var _objectWithoutProperties = (__webpack_require__(1847)["default"]); +var _excluded = ["headers"]; +var WritableStream = (__webpack_require__(7075).Writable); +var _require = __webpack_require__(7975), + inherits = _require.inherits; +var Dicer = __webpack_require__(358); +var MultipartParser = __webpack_require__(608); +var UrlencodedParser = __webpack_require__(831); +var parseParams = __webpack_require__(6953); +function Busboy(opts) { + if (!(this instanceof Busboy)) { + return new Busboy(opts); + } + if (typeof opts !== 'object') { + throw new TypeError('Busboy expected an options-Object.'); + } + if (typeof opts.headers !== 'object') { + throw new TypeError('Busboy expected an options-Object with headers-attribute.'); + } + if (typeof opts.headers['content-type'] !== 'string') { + throw new TypeError('Missing Content-Type-header.'); + } + var headers = opts.headers, + streamOptions = _objectWithoutProperties(opts, _excluded); + this.opts = _objectSpread({ + autoDestroy: false + }, streamOptions); + WritableStream.call(this, this.opts); + this._done = false; + this._parser = this.getParserByHeaders(headers); + this._finished = false; +} +inherits(Busboy, WritableStream); +Busboy.prototype.emit = function (ev) { + if (ev === 'finish') { + if (!this._done) { + var _this$_parser; + (_this$_parser = this._parser) === null || _this$_parser === void 0 || _this$_parser.end(); + return; + } else if (this._finished) { + return; + } + this._finished = true; + } + WritableStream.prototype.emit.apply(this, arguments); +}; +Busboy.prototype.getParserByHeaders = function (headers) { + var parsed = parseParams(headers['content-type']); + var cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers: headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath + }; + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg); + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg); + } + throw new Error('Unsupported Content-Type.'); +}; +Busboy.prototype._write = function (chunk, encoding, cb) { + this._parser.write(chunk, cb); +}; +module.exports = Busboy; +module.exports["default"] = Busboy; +module.exports.Busboy = Busboy; +module.exports.Dicer = Dicer; + +/***/ }), + +/***/ 608: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +// TODO: +// * support 1 nested multipart level +// (see second multipart example here: +// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) +// * support limits.fieldNameSize +// -- this will require modifications to utils.parseParams +var _require = __webpack_require__(7075), + Readable = _require.Readable; +var _require2 = __webpack_require__(7975), + inherits = _require2.inherits; +var Dicer = __webpack_require__(358); +var parseParams = __webpack_require__(6953); +var decodeText = __webpack_require__(1795); +var basename = __webpack_require__(5580); +var getLimit = __webpack_require__(8993); +var RE_BOUNDARY = /^boundary$/i; +var RE_FIELD = /^form-data$/i; +var RE_CHARSET = /^charset$/i; +var RE_FILENAME = /^filename$/i; +var RE_NAME = /^name$/i; +Multipart.detect = /^multipart\/form-data/i; +function Multipart(boy, cfg) { + var i; + var len; + var self = this; + var boundary; + var limits = cfg.limits; + var isPartAFile = cfg.isPartAFile || function (fieldName, contentType, fileName) { + return contentType === 'application/octet-stream' || fileName !== undefined; + }; + var parsedConType = cfg.parsedConType || []; + var defCharset = cfg.defCharset || 'utf8'; + var preservePath = cfg.preservePath; + var fileOpts = { + highWaterMark: cfg.fileHwm + }; + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1]; + break; + } + } + function checkFinished() { + if (nends === 0 && finished && !boy._done) { + finished = false; + self.end(); + } + } + if (typeof boundary !== 'string') { + throw new Error('Multipart: Boundary not found'); + } + var fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024); + var fileSizeLimit = getLimit(limits, 'fileSize', Infinity); + var filesLimit = getLimit(limits, 'files', Infinity); + var fieldsLimit = getLimit(limits, 'fields', Infinity); + var partsLimit = getLimit(limits, 'parts', Infinity); + var headerPairsLimit = getLimit(limits, 'headerPairs', 2000); + var headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024); + var nfiles = 0; + var nfields = 0; + var nends = 0; + var curFile; + var curField; + var finished = false; + this._needDrain = false; + this._pause = false; + this._cb = undefined; + this._nparts = 0; + this._boy = boy; + var parserCfg = { + boundary: boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + }; + this.parser = new Dicer(parserCfg); + this.parser.on('drain', function () { + self._needDrain = false; + if (self._cb && !self._pause) { + var cb = self._cb; + self._cb = undefined; + cb(); + } + }).on('part', function onPart(part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener('part', onPart); + self.parser.on('part', skipPart); + boy.hitPartsLimit = true; + boy.emit('partsLimit'); + return skipPart(part); + } + + // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let + // us emit 'end' early since we know the part has ended if we are already + // seeing the next part + if (curField) { + var field = curField; + field.emit('end'); + field.removeAllListeners('end'); + } + part.on('header', function (header) { + var contype; + var fieldname; + var parsed; + var charset; + var encoding; + var filename; + var nsize = 0; + if (header['content-type']) { + parsed = parseParams(header['content-type'][0]); + if (parsed[0]) { + contype = parsed[0].toLowerCase(); + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase(); + break; + } + } + } + } + if (contype === undefined) { + contype = 'text/plain'; + } + if (charset === undefined) { + charset = defCharset; + } + if (header['content-disposition']) { + parsed = parseParams(header['content-disposition'][0]); + if (!RE_FIELD.test(parsed[0])) { + return skipPart(part); + } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1]; + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1]; + if (!preservePath) { + filename = basename(filename); + } + } + } + } else { + return skipPart(part); + } + if (header['content-transfer-encoding']) { + encoding = header['content-transfer-encoding'][0].toLowerCase(); + } else { + encoding = '7bit'; + } + var onData, onEnd; + if (isPartAFile(fieldname, contype, filename)) { + // file/binary field + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true; + boy.emit('filesLimit'); + } + return skipPart(part); + } + ++nfiles; + if (boy.listenerCount('file') === 0) { + self.parser._ignore(); + return; + } + ++nends; + var file = new FileStream(fileOpts); + curFile = file; + file.on('end', function () { + --nends; + self._pause = false; + checkFinished(); + if (self._cb && !self._needDrain) { + var cb = self._cb; + self._cb = undefined; + cb(); + } + }); + file._read = function (n) { + if (!self._pause) { + return; + } + self._pause = false; + if (self._cb && !self._needDrain) { + var cb = self._cb; + self._cb = undefined; + cb(); + } + }; + boy.emit('file', fieldname, file, filename, encoding, contype); + onData = function onData(data) { + if ((nsize += data.length) > fileSizeLimit) { + var extralen = fileSizeLimit - nsize + data.length; + if (extralen > 0) { + file.push(data.slice(0, extralen)); + } + file.truncated = true; + file.bytesRead = fileSizeLimit; + part.removeAllListeners('data'); + file.emit('limit'); + return; + } else if (!file.push(data)) { + self._pause = true; + } + file.bytesRead = nsize; + }; + onEnd = function onEnd() { + curFile = undefined; + file.push(null); + }; + } else { + // non-file field + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true; + boy.emit('fieldsLimit'); + } + return skipPart(part); + } + ++nfields; + ++nends; + var buffer = ''; + var truncated = false; + curField = part; + onData = function onData(data) { + if ((nsize += data.length) > fieldSizeLimit) { + var extralen = fieldSizeLimit - (nsize - data.length); + buffer += data.toString('binary', 0, extralen); + truncated = true; + part.removeAllListeners('data'); + } else { + buffer += data.toString('binary'); + } + }; + onEnd = function onEnd() { + curField = undefined; + if (buffer.length) { + buffer = decodeText(buffer, 'binary', charset); + } + boy.emit('field', fieldname, buffer, false, truncated, encoding, contype); + --nends; + checkFinished(); + }; + } + + /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become + broken. Streams2/streams3 is a huge black box of confusion, but + somehow overriding the sync state seems to fix things again (and still + seems to work for previous node versions). + */ + part._readableState.sync = false; + part.on('data', onData); + part.on('end', onEnd); + }).on('error', function (err) { + if (curFile) { + curFile.emit('error', err); + } + }); + }).on('error', function (err) { + boy.emit('error', err); + }).on('finish', function () { + finished = true; + checkFinished(); + }); +} +Multipart.prototype.write = function (chunk, cb) { + var r = this.parser.write(chunk); + if (r && !this._pause) { + cb(); + } else { + this._needDrain = !r; + this._cb = cb; + } +}; +Multipart.prototype.end = function () { + var self = this; + if (self.parser.writable) { + self.parser.end(); + } else if (!self._boy._done) { + process.nextTick(function () { + self._boy._done = true; + self._boy.emit('finish'); + }); + } +}; +function skipPart(part) { + part.resume(); +} +function FileStream(opts) { + Readable.call(this, opts); + this.bytesRead = 0; + this.truncated = false; +} +inherits(FileStream, Readable); +FileStream.prototype._read = function (n) {}; +module.exports = Multipart; + +/***/ }), + +/***/ 831: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var Decoder = __webpack_require__(5824); +var decodeText = __webpack_require__(1795); +var getLimit = __webpack_require__(8993); +var RE_CHARSET = /^charset$/i; +UrlEncoded.detect = /^application\/x-www-form-urlencoded/i; +function UrlEncoded(boy, cfg) { + var limits = cfg.limits; + var parsedConType = cfg.parsedConType; + this.boy = boy; + this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024); + this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100); + this.fieldsLimit = getLimit(limits, 'fields', Infinity); + var charset; + for (var i = 0, len = parsedConType.length; i < len; ++i) { + // eslint-disable-line no-var + if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase(); + break; + } + } + if (charset === undefined) { + charset = cfg.defCharset || 'utf8'; + } + this.decoder = new Decoder(); + this.charset = charset; + this._fields = 0; + this._state = 'key'; + this._checkingBytes = true; + this._bytesKey = 0; + this._bytesVal = 0; + this._key = ''; + this._val = ''; + this._keyTrunc = false; + this._valTrunc = false; + this._hitLimit = false; +} +UrlEncoded.prototype.write = function (data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true; + this.boy.emit('fieldsLimit'); + } + return cb(); + } + var idxeq; + var idxamp; + var i; + var p = 0; + var len = data.length; + while (p < len) { + if (this._state === 'key') { + idxeq = idxamp = undefined; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 0x3D /* = */) { + idxeq = i; + break; + } else if (data[i] === 0x26 /* & */) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesKey; + } + } + if (idxeq !== undefined) { + // key with assignment + if (idxeq > p) { + this._key += this.decoder.write(data.toString('binary', p, idxeq)); + } + this._state = 'val'; + this._hitLimit = false; + this._checkingBytes = true; + this._val = ''; + this._bytesVal = 0; + this._valTrunc = false; + this.decoder.reset(); + p = idxeq + 1; + } else if (idxamp !== undefined) { + // key with no assignment + ++this._fields; + var key = void 0; + var keyTrunc = this._keyTrunc; + if (idxamp > p) { + key = this._key += this.decoder.write(data.toString('binary', p, idxamp)); + } else { + key = this._key; + } + this._hitLimit = false; + this._checkingBytes = true; + this._key = ''; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + if (key.length) { + this.boy.emit('field', decodeText(key, 'binary', this.charset), '', keyTrunc, false); + } + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { + this._key += this.decoder.write(data.toString('binary', p, i)); + } + p = i; + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false; + this._keyTrunc = true; + } + } else { + if (p < len) { + this._key += this.decoder.write(data.toString('binary', p)); + } + p = len; + } + } else { + idxamp = undefined; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 0x26 /* & */) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesVal; + } + } + if (idxamp !== undefined) { + ++this._fields; + if (idxamp > p) { + this._val += this.decoder.write(data.toString('binary', p, idxamp)); + } + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), decodeText(this._val, 'binary', this.charset), this._keyTrunc, this._valTrunc); + this._state = 'key'; + this._hitLimit = false; + this._checkingBytes = true; + this._key = ''; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { + this._val += this.decoder.write(data.toString('binary', p, i)); + } + p = i; + if (this._val === '' && this.fieldSizeLimit === 0 || (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false; + this._valTrunc = true; + } + } else { + if (p < len) { + this._val += this.decoder.write(data.toString('binary', p)); + } + p = len; + } + } + } + cb(); +}; +UrlEncoded.prototype.end = function () { + if (this.boy._done) { + return; + } + if (this._state === 'key' && this._key.length > 0) { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), '', this._keyTrunc, false); + } else if (this._state === 'val') { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), decodeText(this._val, 'binary', this.charset), this._keyTrunc, this._valTrunc); + } + this.boy._done = true; + this.boy.emit('finish'); +}; +module.exports = UrlEncoded; + +/***/ }), + +/***/ 5824: +/***/ ((module) => { + +"use strict"; + + +var RE_PLUS = /\+/g; +var HEX = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; +function Decoder() { + this.buffer = undefined; +} +Decoder.prototype.write = function (str) { + // Replace '+' with ' ' before decoding + str = str.replace(RE_PLUS, ' '); + var res = ''; + var i = 0; + var p = 0; + var len = str.length; + for (; i < len; ++i) { + if (this.buffer !== undefined) { + if (!HEX[str.charCodeAt(i)]) { + res += '%' + this.buffer; + this.buffer = undefined; + --i; // retry character + } else { + this.buffer += str[i]; + ++p; + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)); + this.buffer = undefined; + } + } + } else if (str[i] === '%') { + if (i > p) { + res += str.substring(p, i); + p = i; + } + this.buffer = ''; + ++p; + } + } + if (p < len && this.buffer === undefined) { + res += str.substring(p); + } + return res; +}; +Decoder.prototype.reset = function () { + this.buffer = undefined; +}; +module.exports = Decoder; + +/***/ }), + +/***/ 5580: +/***/ ((module) => { + +"use strict"; + + +module.exports = function basename(path) { + if (typeof path !== 'string') { + return ''; + } + for (var i = path.length - 1; i >= 0; --i) { + // eslint-disable-line no-var + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: + // '\' + path = path.slice(i + 1); + return path === '..' || path === '.' ? '' : path; + } + } + return path === '..' || path === '.' ? '' : path; +}; + +/***/ }), + +/***/ 1795: +/***/ (function(module) { + +"use strict"; + + +// Node has always utf-8 +var _this = this; +var utf8Decoder = new TextDecoder('utf-8'); +var textDecoders = new Map([['utf-8', utf8Decoder], ['utf8', utf8Decoder]]); +function getDecoder(charset) { + var lc; + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8; + case 'latin1': + case 'ascii': // TODO: Make these a separate, strict decoder? + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1; + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le; + case 'base64': + return decoders.base64; + default: + if (lc === undefined) { + lc = true; + charset = charset.toLowerCase(); + continue; + } + return decoders.other.bind(charset); + } + } +} +var decoders = { + utf8: function utf8(data, sourceEncoding) { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding); + } + return data.utf8Slice(0, data.length); + }, + latin1: function latin1(data, sourceEncoding) { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + return data; + } + return data.latin1Slice(0, data.length); + }, + utf16le: function utf16le(data, sourceEncoding) { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding); + } + return data.ucs2Slice(0, data.length); + }, + base64: function base64(data, sourceEncoding) { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding); + } + return data.base64Slice(0, data.length); + }, + other: function other(data, sourceEncoding) { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding); + } + if (textDecoders.has(_this.toString())) { + try { + return textDecoders.get(_this).decode(data); + } catch (_unused) {} + } + return typeof data === 'string' ? data : data.toString(); + } +}; +function decodeText(text, sourceEncoding, destEncoding) { + if (text) { + return getDecoder(destEncoding)(text, sourceEncoding); + } + return text; +} +module.exports = decodeText; + +/***/ }), + +/***/ 8993: +/***/ ((module) => { + +"use strict"; + + +module.exports = function getLimit(limits, name, defaultLimit) { + if (!limits || limits[name] === undefined || limits[name] === null) { + return defaultLimit; + } + if (typeof limits[name] !== 'number' || isNaN(limits[name])) { + throw new TypeError('Limit ' + name + ' is not a valid number'); + } + return limits[name]; +}; + +/***/ }), + +/***/ 6953: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/* eslint-disable object-property-newline */ + + +var decodeText = __webpack_require__(1795); +var RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g; +var EncodedLookup = { + '%00': '\x00', + '%01': '\x01', + '%02': '\x02', + '%03': '\x03', + '%04': '\x04', + '%05': '\x05', + '%06': '\x06', + '%07': '\x07', + '%08': '\x08', + '%09': '\x09', + '%0a': '\x0a', + '%0A': '\x0a', + '%0b': '\x0b', + '%0B': '\x0b', + '%0c': '\x0c', + '%0C': '\x0c', + '%0d': '\x0d', + '%0D': '\x0d', + '%0e': '\x0e', + '%0E': '\x0e', + '%0f': '\x0f', + '%0F': '\x0f', + '%10': '\x10', + '%11': '\x11', + '%12': '\x12', + '%13': '\x13', + '%14': '\x14', + '%15': '\x15', + '%16': '\x16', + '%17': '\x17', + '%18': '\x18', + '%19': '\x19', + '%1a': '\x1a', + '%1A': '\x1a', + '%1b': '\x1b', + '%1B': '\x1b', + '%1c': '\x1c', + '%1C': '\x1c', + '%1d': '\x1d', + '%1D': '\x1d', + '%1e': '\x1e', + '%1E': '\x1e', + '%1f': '\x1f', + '%1F': '\x1f', + '%20': '\x20', + '%21': '\x21', + '%22': '\x22', + '%23': '\x23', + '%24': '\x24', + '%25': '\x25', + '%26': '\x26', + '%27': '\x27', + '%28': '\x28', + '%29': '\x29', + '%2a': '\x2a', + '%2A': '\x2a', + '%2b': '\x2b', + '%2B': '\x2b', + '%2c': '\x2c', + '%2C': '\x2c', + '%2d': '\x2d', + '%2D': '\x2d', + '%2e': '\x2e', + '%2E': '\x2e', + '%2f': '\x2f', + '%2F': '\x2f', + '%30': '\x30', + '%31': '\x31', + '%32': '\x32', + '%33': '\x33', + '%34': '\x34', + '%35': '\x35', + '%36': '\x36', + '%37': '\x37', + '%38': '\x38', + '%39': '\x39', + '%3a': '\x3a', + '%3A': '\x3a', + '%3b': '\x3b', + '%3B': '\x3b', + '%3c': '\x3c', + '%3C': '\x3c', + '%3d': '\x3d', + '%3D': '\x3d', + '%3e': '\x3e', + '%3E': '\x3e', + '%3f': '\x3f', + '%3F': '\x3f', + '%40': '\x40', + '%41': '\x41', + '%42': '\x42', + '%43': '\x43', + '%44': '\x44', + '%45': '\x45', + '%46': '\x46', + '%47': '\x47', + '%48': '\x48', + '%49': '\x49', + '%4a': '\x4a', + '%4A': '\x4a', + '%4b': '\x4b', + '%4B': '\x4b', + '%4c': '\x4c', + '%4C': '\x4c', + '%4d': '\x4d', + '%4D': '\x4d', + '%4e': '\x4e', + '%4E': '\x4e', + '%4f': '\x4f', + '%4F': '\x4f', + '%50': '\x50', + '%51': '\x51', + '%52': '\x52', + '%53': '\x53', + '%54': '\x54', + '%55': '\x55', + '%56': '\x56', + '%57': '\x57', + '%58': '\x58', + '%59': '\x59', + '%5a': '\x5a', + '%5A': '\x5a', + '%5b': '\x5b', + '%5B': '\x5b', + '%5c': '\x5c', + '%5C': '\x5c', + '%5d': '\x5d', + '%5D': '\x5d', + '%5e': '\x5e', + '%5E': '\x5e', + '%5f': '\x5f', + '%5F': '\x5f', + '%60': '\x60', + '%61': '\x61', + '%62': '\x62', + '%63': '\x63', + '%64': '\x64', + '%65': '\x65', + '%66': '\x66', + '%67': '\x67', + '%68': '\x68', + '%69': '\x69', + '%6a': '\x6a', + '%6A': '\x6a', + '%6b': '\x6b', + '%6B': '\x6b', + '%6c': '\x6c', + '%6C': '\x6c', + '%6d': '\x6d', + '%6D': '\x6d', + '%6e': '\x6e', + '%6E': '\x6e', + '%6f': '\x6f', + '%6F': '\x6f', + '%70': '\x70', + '%71': '\x71', + '%72': '\x72', + '%73': '\x73', + '%74': '\x74', + '%75': '\x75', + '%76': '\x76', + '%77': '\x77', + '%78': '\x78', + '%79': '\x79', + '%7a': '\x7a', + '%7A': '\x7a', + '%7b': '\x7b', + '%7B': '\x7b', + '%7c': '\x7c', + '%7C': '\x7c', + '%7d': '\x7d', + '%7D': '\x7d', + '%7e': '\x7e', + '%7E': '\x7e', + '%7f': '\x7f', + '%7F': '\x7f', + '%80': '\x80', + '%81': '\x81', + '%82': '\x82', + '%83': '\x83', + '%84': '\x84', + '%85': '\x85', + '%86': '\x86', + '%87': '\x87', + '%88': '\x88', + '%89': '\x89', + '%8a': '\x8a', + '%8A': '\x8a', + '%8b': '\x8b', + '%8B': '\x8b', + '%8c': '\x8c', + '%8C': '\x8c', + '%8d': '\x8d', + '%8D': '\x8d', + '%8e': '\x8e', + '%8E': '\x8e', + '%8f': '\x8f', + '%8F': '\x8f', + '%90': '\x90', + '%91': '\x91', + '%92': '\x92', + '%93': '\x93', + '%94': '\x94', + '%95': '\x95', + '%96': '\x96', + '%97': '\x97', + '%98': '\x98', + '%99': '\x99', + '%9a': '\x9a', + '%9A': '\x9a', + '%9b': '\x9b', + '%9B': '\x9b', + '%9c': '\x9c', + '%9C': '\x9c', + '%9d': '\x9d', + '%9D': '\x9d', + '%9e': '\x9e', + '%9E': '\x9e', + '%9f': '\x9f', + '%9F': '\x9f', + '%a0': '\xa0', + '%A0': '\xa0', + '%a1': '\xa1', + '%A1': '\xa1', + '%a2': '\xa2', + '%A2': '\xa2', + '%a3': '\xa3', + '%A3': '\xa3', + '%a4': '\xa4', + '%A4': '\xa4', + '%a5': '\xa5', + '%A5': '\xa5', + '%a6': '\xa6', + '%A6': '\xa6', + '%a7': '\xa7', + '%A7': '\xa7', + '%a8': '\xa8', + '%A8': '\xa8', + '%a9': '\xa9', + '%A9': '\xa9', + '%aa': '\xaa', + '%Aa': '\xaa', + '%aA': '\xaa', + '%AA': '\xaa', + '%ab': '\xab', + '%Ab': '\xab', + '%aB': '\xab', + '%AB': '\xab', + '%ac': '\xac', + '%Ac': '\xac', + '%aC': '\xac', + '%AC': '\xac', + '%ad': '\xad', + '%Ad': '\xad', + '%aD': '\xad', + '%AD': '\xad', + '%ae': '\xae', + '%Ae': '\xae', + '%aE': '\xae', + '%AE': '\xae', + '%af': '\xaf', + '%Af': '\xaf', + '%aF': '\xaf', + '%AF': '\xaf', + '%b0': '\xb0', + '%B0': '\xb0', + '%b1': '\xb1', + '%B1': '\xb1', + '%b2': '\xb2', + '%B2': '\xb2', + '%b3': '\xb3', + '%B3': '\xb3', + '%b4': '\xb4', + '%B4': '\xb4', + '%b5': '\xb5', + '%B5': '\xb5', + '%b6': '\xb6', + '%B6': '\xb6', + '%b7': '\xb7', + '%B7': '\xb7', + '%b8': '\xb8', + '%B8': '\xb8', + '%b9': '\xb9', + '%B9': '\xb9', + '%ba': '\xba', + '%Ba': '\xba', + '%bA': '\xba', + '%BA': '\xba', + '%bb': '\xbb', + '%Bb': '\xbb', + '%bB': '\xbb', + '%BB': '\xbb', + '%bc': '\xbc', + '%Bc': '\xbc', + '%bC': '\xbc', + '%BC': '\xbc', + '%bd': '\xbd', + '%Bd': '\xbd', + '%bD': '\xbd', + '%BD': '\xbd', + '%be': '\xbe', + '%Be': '\xbe', + '%bE': '\xbe', + '%BE': '\xbe', + '%bf': '\xbf', + '%Bf': '\xbf', + '%bF': '\xbf', + '%BF': '\xbf', + '%c0': '\xc0', + '%C0': '\xc0', + '%c1': '\xc1', + '%C1': '\xc1', + '%c2': '\xc2', + '%C2': '\xc2', + '%c3': '\xc3', + '%C3': '\xc3', + '%c4': '\xc4', + '%C4': '\xc4', + '%c5': '\xc5', + '%C5': '\xc5', + '%c6': '\xc6', + '%C6': '\xc6', + '%c7': '\xc7', + '%C7': '\xc7', + '%c8': '\xc8', + '%C8': '\xc8', + '%c9': '\xc9', + '%C9': '\xc9', + '%ca': '\xca', + '%Ca': '\xca', + '%cA': '\xca', + '%CA': '\xca', + '%cb': '\xcb', + '%Cb': '\xcb', + '%cB': '\xcb', + '%CB': '\xcb', + '%cc': '\xcc', + '%Cc': '\xcc', + '%cC': '\xcc', + '%CC': '\xcc', + '%cd': '\xcd', + '%Cd': '\xcd', + '%cD': '\xcd', + '%CD': '\xcd', + '%ce': '\xce', + '%Ce': '\xce', + '%cE': '\xce', + '%CE': '\xce', + '%cf': '\xcf', + '%Cf': '\xcf', + '%cF': '\xcf', + '%CF': '\xcf', + '%d0': '\xd0', + '%D0': '\xd0', + '%d1': '\xd1', + '%D1': '\xd1', + '%d2': '\xd2', + '%D2': '\xd2', + '%d3': '\xd3', + '%D3': '\xd3', + '%d4': '\xd4', + '%D4': '\xd4', + '%d5': '\xd5', + '%D5': '\xd5', + '%d6': '\xd6', + '%D6': '\xd6', + '%d7': '\xd7', + '%D7': '\xd7', + '%d8': '\xd8', + '%D8': '\xd8', + '%d9': '\xd9', + '%D9': '\xd9', + '%da': '\xda', + '%Da': '\xda', + '%dA': '\xda', + '%DA': '\xda', + '%db': '\xdb', + '%Db': '\xdb', + '%dB': '\xdb', + '%DB': '\xdb', + '%dc': '\xdc', + '%Dc': '\xdc', + '%dC': '\xdc', + '%DC': '\xdc', + '%dd': '\xdd', + '%Dd': '\xdd', + '%dD': '\xdd', + '%DD': '\xdd', + '%de': '\xde', + '%De': '\xde', + '%dE': '\xde', + '%DE': '\xde', + '%df': '\xdf', + '%Df': '\xdf', + '%dF': '\xdf', + '%DF': '\xdf', + '%e0': '\xe0', + '%E0': '\xe0', + '%e1': '\xe1', + '%E1': '\xe1', + '%e2': '\xe2', + '%E2': '\xe2', + '%e3': '\xe3', + '%E3': '\xe3', + '%e4': '\xe4', + '%E4': '\xe4', + '%e5': '\xe5', + '%E5': '\xe5', + '%e6': '\xe6', + '%E6': '\xe6', + '%e7': '\xe7', + '%E7': '\xe7', + '%e8': '\xe8', + '%E8': '\xe8', + '%e9': '\xe9', + '%E9': '\xe9', + '%ea': '\xea', + '%Ea': '\xea', + '%eA': '\xea', + '%EA': '\xea', + '%eb': '\xeb', + '%Eb': '\xeb', + '%eB': '\xeb', + '%EB': '\xeb', + '%ec': '\xec', + '%Ec': '\xec', + '%eC': '\xec', + '%EC': '\xec', + '%ed': '\xed', + '%Ed': '\xed', + '%eD': '\xed', + '%ED': '\xed', + '%ee': '\xee', + '%Ee': '\xee', + '%eE': '\xee', + '%EE': '\xee', + '%ef': '\xef', + '%Ef': '\xef', + '%eF': '\xef', + '%EF': '\xef', + '%f0': '\xf0', + '%F0': '\xf0', + '%f1': '\xf1', + '%F1': '\xf1', + '%f2': '\xf2', + '%F2': '\xf2', + '%f3': '\xf3', + '%F3': '\xf3', + '%f4': '\xf4', + '%F4': '\xf4', + '%f5': '\xf5', + '%F5': '\xf5', + '%f6': '\xf6', + '%F6': '\xf6', + '%f7': '\xf7', + '%F7': '\xf7', + '%f8': '\xf8', + '%F8': '\xf8', + '%f9': '\xf9', + '%F9': '\xf9', + '%fa': '\xfa', + '%Fa': '\xfa', + '%fA': '\xfa', + '%FA': '\xfa', + '%fb': '\xfb', + '%Fb': '\xfb', + '%fB': '\xfb', + '%FB': '\xfb', + '%fc': '\xfc', + '%Fc': '\xfc', + '%fC': '\xfc', + '%FC': '\xfc', + '%fd': '\xfd', + '%Fd': '\xfd', + '%fD': '\xfd', + '%FD': '\xfd', + '%fe': '\xfe', + '%Fe': '\xfe', + '%fE': '\xfe', + '%FE': '\xfe', + '%ff': '\xff', + '%Ff': '\xff', + '%fF': '\xff', + '%FF': '\xff' +}; +function encodedReplacer(match) { + return EncodedLookup[match]; +} +var STATE_KEY = 0; +var STATE_VALUE = 1; +var STATE_CHARSET = 2; +var STATE_LANG = 3; +function parseParams(str) { + var res = []; + var state = STATE_KEY; + var charset = ''; + var inquote = false; + var escaping = false; + var p = 0; + var tmp = ''; + var len = str.length; + for (var i = 0; i < len; ++i) { + // eslint-disable-line no-var + var _char = str[i]; + if (_char === '\\' && inquote) { + if (escaping) { + escaping = false; + } else { + escaping = true; + continue; + } + } else if (_char === '"') { + if (!escaping) { + if (inquote) { + inquote = false; + state = STATE_KEY; + } else { + inquote = true; + } + continue; + } else { + escaping = false; + } + } else { + if (escaping && inquote) { + tmp += '\\'; + } + escaping = false; + if ((state === STATE_CHARSET || state === STATE_LANG) && _char === "'") { + if (state === STATE_CHARSET) { + state = STATE_LANG; + charset = tmp.substring(1); + } else { + state = STATE_VALUE; + } + tmp = ''; + continue; + } else if (state === STATE_KEY && (_char === '*' || _char === '=') && res.length) { + state = _char === '*' ? STATE_CHARSET : STATE_VALUE; + res[p] = [tmp, undefined]; + tmp = ''; + continue; + } else if (!inquote && _char === ';') { + state = STATE_KEY; + if (charset) { + if (tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), 'binary', charset); + } + charset = ''; + } else if (tmp.length) { + tmp = decodeText(tmp, 'binary', 'utf8'); + } + if (res[p] === undefined) { + res[p] = tmp; + } else { + res[p][1] = tmp; + } + tmp = ''; + ++p; + continue; + } else if (!inquote && (_char === ' ' || _char === '\t')) { + continue; + } + } + tmp += _char; + } + if (charset && tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), 'binary', charset); + } else if (tmp) { + tmp = decodeText(tmp, 'binary', 'utf8'); + } + if (res[p] === undefined) { + if (tmp) { + res[p] = tmp; + } + } else { + res[p][1] = tmp; + } + return res; +} +module.exports = parseParams; + +/***/ }), + +/***/ 3145: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _arrayLikeToArray) +/* harmony export */ }); +function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; +} + + +/***/ }), + +/***/ 467: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _asyncToGenerator) +/* harmony export */ }); +function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), + u = i.value; + } catch (n) { + return void e(n); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); +} +function _asyncToGenerator(n) { + return function () { + var t = this, + e = arguments; + return new Promise(function (r, o) { + var a = n.apply(t, e); + function _next(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n); + } + function _throw(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); + } + _next(void 0); + }); + }; +} + + +/***/ }), + +/***/ 9874: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _callSuper) +/* harmony export */ }); +/* harmony import */ var _getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3954); +/* harmony import */ var _isNativeReflectConstruct_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2176); +/* harmony import */ var _possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(388); + + + +function _callSuper(t, o, e) { + return o = (0,_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(o), (0,_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(t, (0,_isNativeReflectConstruct_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)() ? Reflect.construct(o, e || [], (0,_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(t).constructor) : o.apply(t, e)); +} + + +/***/ }), + +/***/ 3029: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _classCallCheck) +/* harmony export */ }); +function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); +} + + +/***/ }), + +/***/ 2901: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _createClass) +/* harmony export */ }); +/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(816); + +function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(o.key), o); + } +} +function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; +} + + +/***/ }), + +/***/ 4765: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _createForOfIteratorHelper) +/* harmony export */ }); +/* harmony import */ var _unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5419); + +function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = (0,_unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r)) || e && r && "number" == typeof r.length) { + t && (r = t); + var _n = 0, + F = function F() {}; + return { + s: F, + n: function n() { + return _n >= r.length ? { + done: !0 + } : { + done: !1, + value: r[_n++] + }; + }, + e: function e(r) { + throw r; + }, + f: F + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, + a = !0, + u = !1; + return { + s: function s() { + t = t.call(r); + }, + n: function n() { + var r = t.next(); + return a = r.done, r; + }, + e: function e(r) { + u = !0, o = r; + }, + f: function f() { + try { + a || null == t["return"] || t["return"](); + } finally { + if (u) throw o; + } + } + }; +} + + +/***/ }), + +/***/ 4467: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _defineProperty) +/* harmony export */ }); +/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(816); + +function _defineProperty(e, r, t) { + return (r = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r)) in e ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[r] = t, e; +} + + +/***/ }), + +/***/ 3954: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _getPrototypeOf) +/* harmony export */ }); +function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); +} + + +/***/ }), + +/***/ 5501: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _inherits) +/* harmony export */ }); +/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3662); + +function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && (0,_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(t, e); +} + + +/***/ }), + +/***/ 2176: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _isNativeReflectConstruct) +/* harmony export */ }); +function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + } catch (t) {} + return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { + return !!t; + })(); +} + + +/***/ }), + +/***/ 9379: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _objectSpread2) +/* harmony export */ }); +/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4467); + +function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function (r) { + return Object.getOwnPropertyDescriptor(e, r).enumerable; + })), t.push.apply(t, o); + } + return t; +} +function _objectSpread2(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { + (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(e, r, t[r]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); + }); + } + return e; +} + + +/***/ }), + +/***/ 388: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ _possibleConstructorReturn) +}); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js +var esm_typeof = __webpack_require__(2284); +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js + + +function _possibleConstructorReturn(t, e) { + if (e && ("object" == (0,esm_typeof/* default */.A)(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); +} + + +/***/ }), + +/***/ 675: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _regeneratorRuntime) +/* harmony export */ }); +/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2284); + +function _regeneratorRuntime() { + "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError((0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} + + +/***/ }), + +/***/ 3662: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _setPrototypeOf) +/* harmony export */ }); +function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); +} + + +/***/ }), + +/***/ 296: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ _slicedToArray) +}); + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } +} + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +var unsupportedIterableToArray = __webpack_require__(5419); +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + + + + +function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || (0,unsupportedIterableToArray/* default */.A)(r, e) || _nonIterableRest(); +} + + +/***/ }), + +/***/ 5458: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ _toConsumableArray) +}); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +var arrayLikeToArray = __webpack_require__(3145); +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js + +function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return (0,arrayLikeToArray/* default */.A)(r); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js +function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); +} + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +var unsupportedIterableToArray = __webpack_require__(5419); +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + + + + +function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || (0,unsupportedIterableToArray/* default */.A)(r) || _nonIterableSpread(); +} + + +/***/ }), + +/***/ 816: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ toPropertyKey) +}); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js +var esm_typeof = __webpack_require__(2284); +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js + +function toPrimitive(t, r) { + if ("object" != (0,esm_typeof/* default */.A)(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != (0,esm_typeof/* default */.A)(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js + + +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == (0,esm_typeof/* default */.A)(i) ? i : i + ""; +} + + +/***/ }), + +/***/ 2284: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _typeof) +/* harmony export */ }); +function _typeof(o) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); +} + + +/***/ }), + +/***/ 5419: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _unsupportedIterableToArray) +/* harmony export */ }); +/* harmony import */ var _arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3145); + +function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return (0,_arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? (0,_arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r, a) : void 0; + } +} + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js +var regeneratorRuntime = __webpack_require__(675); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js +var asyncToGenerator = __webpack_require__(467); +// EXTERNAL MODULE: ./node_modules/@actions/github/lib/github.js +var github = __webpack_require__(8340); +// EXTERNAL MODULE: ./node_modules/@actions/core/lib/core.js +var core = __webpack_require__(3716); +;// CONCATENATED MODULE: external "node:path" +const external_node_path_namespaceObject = require("node:path"); +;// CONCATENATED MODULE: external "node:os" +const external_node_os_namespaceObject = require("node:os"); +;// CONCATENATED MODULE: external "node:crypto" +const external_node_crypto_namespaceObject = require("node:crypto"); +;// CONCATENATED MODULE: external "node:fs" +const external_node_fs_namespaceObject = require("node:fs"); +;// CONCATENATED MODULE: external "node:fs/promises" +const promises_namespaceObject = require("node:fs/promises"); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 3 modules +var toConsumableArray = __webpack_require__(5458); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js +var createForOfIteratorHelper = __webpack_require__(4765); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js +var defineProperty = __webpack_require__(4467); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js +var classCallCheck = __webpack_require__(3029); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js +var createClass = __webpack_require__(2901); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/callSuper.js +var callSuper = __webpack_require__(9874); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js +var inherits = __webpack_require__(5501); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules +var slicedToArray = __webpack_require__(296); +// EXTERNAL MODULE: ./node_modules/brace-expansion/index.js +var brace_expansion = __webpack_require__(763); +;// CONCATENATED MODULE: ./node_modules/minimatch/dist/esm/assert-valid-pattern.js +var MAX_PATTERN_LENGTH = 1024 * 64; +var assertValidPattern = function assertValidPattern(pattern) { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern'); + } + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long'); + } +}; +//# sourceMappingURL=assert-valid-pattern.js.map +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js +function _checkPrivateRedeclaration(e, t) { + if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js + +function _classPrivateMethodInitSpec(e, a) { + _checkPrivateRedeclaration(e, a), a.add(e); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js + +function _classPrivateFieldInitSpec(e, t, a) { + _checkPrivateRedeclaration(e, t), t.set(e, a); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/assertClassBrand.js +function _assertClassBrand(e, t, n) { + if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; + throw new TypeError("Private element is not present on this object"); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js + +function classPrivateFieldGet2_classPrivateFieldGet2(s, a) { + return s.get(_assertClassBrand(s, a)); +} + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js + +function _classPrivateFieldSet2(s, a, r) { + return s.set(_assertClassBrand(s, a), r), r; +} + +;// CONCATENATED MODULE: ./node_modules/minimatch/dist/esm/brace-expressions.js + +// translate the various posix character classes into unicode properties +// this works across all unicode locales +// { : [, /u flag required, negated] +var posixClasses = { + '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true], + '[:alpha:]': ['\\p{L}\\p{Nl}', true], + '[:ascii:]': ['\\x' + '00-\\x' + '7f', false], + '[:blank:]': ['\\p{Zs}\\t', true], + '[:cntrl:]': ['\\p{Cc}', true], + '[:digit:]': ['\\p{Nd}', true], + '[:graph:]': ['\\p{Z}\\p{C}', true, true], + '[:lower:]': ['\\p{Ll}', true], + '[:print:]': ['\\p{C}', true], + '[:punct:]': ['\\p{P}', true], + '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true], + '[:upper:]': ['\\p{Lu}', true], + '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true], + '[:xdigit:]': ['A-Fa-f0-9', false] +}; +// only need to escape a few things inside of brace expressions +// escapes: [ \ ] - +var braceEscape = function braceEscape(s) { + return s.replace(/[[\]\\-]/g, '\\$&'); +}; +// escape all regexp magic characters +var regexpEscape = function regexpEscape(s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +}; +// everything has already been escaped, we just have to join +var rangesToString = function rangesToString(ranges) { + return ranges.join(''); +}; +// takes a glob string at a posix brace expression, and returns +// an equivalent regular expression source, and boolean indicating +// whether the /u flag needs to be applied, and the number of chars +// consumed to parse the character class. +// This also removes out of order ranges, and returns ($.) if the +// entire class just no good. +var parseClass = function parseClass(glob, position) { + var pos = position; + /* c8 ignore start */ + if (glob.charAt(pos) !== '[') { + throw new Error('not in a brace expression'); + } + /* c8 ignore stop */ + var ranges = []; + var negs = []; + var i = pos + 1; + var sawStart = false; + var uflag = false; + var escaping = false; + var negate = false; + var endPos = pos; + var rangeStart = ''; + WHILE: while (i < glob.length) { + var c = glob.charAt(i); + if ((c === '!' || c === '^') && i === pos + 1) { + negate = true; + i++; + continue; + } + if (c === ']' && sawStart && !escaping) { + endPos = i + 1; + break; + } + sawStart = true; + if (c === '\\') { + if (!escaping) { + escaping = true; + i++; + continue; + } + // escaped \ char, fall through and treat like normal char + } + if (c === '[' && !escaping) { + // either a posix class, a collation equivalent, or just a [ + for (var _i = 0, _Object$entries = Object.entries(posixClasses); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = (0,slicedToArray/* default */.A)(_Object$entries[_i], 2), + cls = _Object$entries$_i[0], + _Object$entries$_i$ = (0,slicedToArray/* default */.A)(_Object$entries$_i[1], 3), + unip = _Object$entries$_i$[0], + u = _Object$entries$_i$[1], + neg = _Object$entries$_i$[2]; + if (glob.startsWith(cls, i)) { + // invalid, [a-[] is fine, but not [a-[:alpha]] + if (rangeStart) { + return ['$.', false, glob.length - pos, true]; + } + i += cls.length; + if (neg) negs.push(unip);else ranges.push(unip); + uflag = uflag || u; + continue WHILE; + } + } + } + // now it's just a normal character, effectively + escaping = false; + if (rangeStart) { + // throw this range away if it's not valid, but others + // can still match. + if (c > rangeStart) { + ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c)); + } else if (c === rangeStart) { + ranges.push(braceEscape(c)); + } + rangeStart = ''; + i++; + continue; + } + // now might be the start of a range. + // can be either c-d or c-] or c] or c] at this point + if (glob.startsWith('-]', i + 1)) { + ranges.push(braceEscape(c + '-')); + i += 2; + continue; + } + if (glob.startsWith('-', i + 1)) { + rangeStart = c; + i += 2; + continue; + } + // not the start of a range, just a single character + ranges.push(braceEscape(c)); + i++; + } + if (endPos < i) { + // didn't see the end of the class, not a valid class, + // but might still be valid as a literal match. + return ['', false, 0, false]; + } + // if we got no ranges and no negates, then we have a range that + // cannot possibly match anything, and that poisons the whole glob + if (!ranges.length && !negs.length) { + return ['$.', false, glob.length - pos, true]; + } + // if we got one positive range, and it's a single character, then that's + // not actually a magic pattern, it's just that one literal character. + // we should not treat that as "magic", we should just return the literal + // character. [_] is a perfectly valid way to escape glob magic chars. + if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) { + var r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; + return [regexpEscape(r), false, endPos - pos, false]; + } + var sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'; + var snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'; + var comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')' : ranges.length ? sranges : snegs; + return [comb, uflag, endPos - pos, true]; +}; +//# sourceMappingURL=brace-expressions.js.map +;// CONCATENATED MODULE: ./node_modules/minimatch/dist/esm/unescape.js +/** + * Un-escape a string that has been escaped with {@link escape}. + * + * If the {@link windowsPathsNoEscape} option is used, then square-brace + * escapes are removed, but not backslash escapes. For example, it will turn + * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`, + * becuase `\` is a path separator in `windowsPathsNoEscape` mode. + * + * When `windowsPathsNoEscape` is not set, then both brace escapes and + * backslash escapes are removed. + * + * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped + * or unescaped. + */ +var unescape_unescape = function unescape(s) { + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$windowsPathsNoEs = _ref.windowsPathsNoEscape, + windowsPathsNoEscape = _ref$windowsPathsNoEs === void 0 ? false : _ref$windowsPathsNoEs; + return windowsPathsNoEscape ? s.replace(/\[([^\/\\])\]/g, '$1') : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1'); +}; +//# sourceMappingURL=unescape.js.map +;// CONCATENATED MODULE: ./node_modules/minimatch/dist/esm/ast.js + + + + + + + + + + + +var _AST; +// parse a single path portion + + +var types = new Set(['!', '?', '+', '*', '@']); +var isExtglobType = function isExtglobType(c) { + return types.has(c); +}; +// Patterns that get prepended to bind to the start of either the +// entire string, or just a single path portion, to prevent dots +// and/or traversal patterns, when needed. +// Exts don't need the ^ or / bit, because the root binds that already. +var startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))'; +var startNoDot = '(?!\\.)'; +// characters that indicate a start of pattern needs the "no dots" bit, +// because a dot *might* be matched. ( is not in the list, because in +// the case of a child extglob, it will handle the prevention itself. +var addPatternStart = new Set(['[', '.']); +// cases where traversal is A-OK, no dot prevention needed +var justDots = new Set(['..', '.']); +var reSpecials = new Set('().*{}+?[]^$\\!'); +var regExpEscape = function regExpEscape(s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +}; +// any single thing other than / +var qmark = '[^/]'; +// * => any number of characters +var star = qmark + '*?'; +// use + when we need to ensure that *something* matches, because the * is +// the only thing in the path portion. +var starNoEmpty = qmark + '+?'; +// remove the \ chars that we added if we end up doing a nonmagic compare +// const deslash = (s: string) => s.replace(/\\(.)/g, '$1') +var _root = /*#__PURE__*/new WeakMap(); +var _hasMagic2 = /*#__PURE__*/new WeakMap(); +var _uflag = /*#__PURE__*/new WeakMap(); +var _parts = /*#__PURE__*/new WeakMap(); +var _parent = /*#__PURE__*/new WeakMap(); +var _parentIndex = /*#__PURE__*/new WeakMap(); +var _negs = /*#__PURE__*/new WeakMap(); +var _filledNegs = /*#__PURE__*/new WeakMap(); +var _options = /*#__PURE__*/new WeakMap(); +var _toString = /*#__PURE__*/new WeakMap(); +var _emptyExt = /*#__PURE__*/new WeakMap(); +var _AST_brand = /*#__PURE__*/new WeakSet(); +var AST = /*#__PURE__*/function () { + function AST(type, parent) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + (0,classCallCheck/* default */.A)(this, AST); + _classPrivateMethodInitSpec(this, _AST_brand); + (0,defineProperty/* default */.A)(this, "type", void 0); + _classPrivateFieldInitSpec(this, _root, void 0); + _classPrivateFieldInitSpec(this, _hasMagic2, void 0); + _classPrivateFieldInitSpec(this, _uflag, false); + _classPrivateFieldInitSpec(this, _parts, []); + _classPrivateFieldInitSpec(this, _parent, void 0); + _classPrivateFieldInitSpec(this, _parentIndex, void 0); + _classPrivateFieldInitSpec(this, _negs, void 0); + _classPrivateFieldInitSpec(this, _filledNegs, false); + _classPrivateFieldInitSpec(this, _options, void 0); + _classPrivateFieldInitSpec(this, _toString, void 0); + // set to true if it's an extglob with no children + // (which really means one child of '') + _classPrivateFieldInitSpec(this, _emptyExt, false); + this.type = type; + // extglobs are inherently magical + if (type) _classPrivateFieldSet2(_hasMagic2, this, true); + _classPrivateFieldSet2(_parent, this, parent); + _classPrivateFieldSet2(_root, this, classPrivateFieldGet2_classPrivateFieldGet2(_parent, this) ? classPrivateFieldGet2_classPrivateFieldGet2(_root, classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)) : this); + _classPrivateFieldSet2(_options, this, classPrivateFieldGet2_classPrivateFieldGet2(_root, this) === this ? options : classPrivateFieldGet2_classPrivateFieldGet2(_options, classPrivateFieldGet2_classPrivateFieldGet2(_root, this))); + _classPrivateFieldSet2(_negs, this, classPrivateFieldGet2_classPrivateFieldGet2(_root, this) === this ? [] : classPrivateFieldGet2_classPrivateFieldGet2(_negs, classPrivateFieldGet2_classPrivateFieldGet2(_root, this))); + if (type === '!' && !classPrivateFieldGet2_classPrivateFieldGet2(_filledNegs, classPrivateFieldGet2_classPrivateFieldGet2(_root, this))) classPrivateFieldGet2_classPrivateFieldGet2(_negs, this).push(this); + _classPrivateFieldSet2(_parentIndex, this, classPrivateFieldGet2_classPrivateFieldGet2(_parent, this) ? classPrivateFieldGet2_classPrivateFieldGet2(_parts, classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)).length : 0); + } + return (0,createClass/* default */.A)(AST, [{ + key: "hasMagic", + get: function get() { + /* c8 ignore start */ + if (classPrivateFieldGet2_classPrivateFieldGet2(_hasMagic2, this) !== undefined) return classPrivateFieldGet2_classPrivateFieldGet2(_hasMagic2, this); + /* c8 ignore stop */ + var _iterator = (0,createForOfIteratorHelper/* default */.A)(classPrivateFieldGet2_classPrivateFieldGet2(_parts, this)), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var p = _step.value; + if (typeof p === 'string') continue; + if (p.type || p.hasMagic) return _classPrivateFieldSet2(_hasMagic2, this, true); + } + // note: will be undefined until we generate the regexp src and find out + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return classPrivateFieldGet2_classPrivateFieldGet2(_hasMagic2, this); + } + // reconstructs the pattern + }, { + key: "toString", + value: function toString() { + if (classPrivateFieldGet2_classPrivateFieldGet2(_toString, this) !== undefined) return classPrivateFieldGet2_classPrivateFieldGet2(_toString, this); + if (!this.type) { + return _classPrivateFieldSet2(_toString, this, classPrivateFieldGet2_classPrivateFieldGet2(_parts, this).map(function (p) { + return String(p); + }).join('')); + } else { + return _classPrivateFieldSet2(_toString, this, this.type + '(' + classPrivateFieldGet2_classPrivateFieldGet2(_parts, this).map(function (p) { + return String(p); + }).join('|') + ')'); + } + } + }, { + key: "push", + value: function push() { + for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) { + parts[_key] = arguments[_key]; + } + for (var _i = 0, _parts2 = parts; _i < _parts2.length; _i++) { + var p = _parts2[_i]; + if (p === '') continue; + /* c8 ignore start */ + if (typeof p !== 'string' && !(p instanceof AST && classPrivateFieldGet2_classPrivateFieldGet2(_parent, p) === this)) { + throw new Error('invalid part: ' + p); + } + /* c8 ignore stop */ + classPrivateFieldGet2_classPrivateFieldGet2(_parts, this).push(p); + } + } + }, { + key: "toJSON", + value: function toJSON() { + var _classPrivateFieldGet2; + var ret = this.type === null ? classPrivateFieldGet2_classPrivateFieldGet2(_parts, this).slice().map(function (p) { + return typeof p === 'string' ? p : p.toJSON(); + }) : [this.type].concat((0,toConsumableArray/* default */.A)(classPrivateFieldGet2_classPrivateFieldGet2(_parts, this).map(function (p) { + return p.toJSON(); + }))); + if (this.isStart() && !this.type) ret.unshift([]); + if (this.isEnd() && (this === classPrivateFieldGet2_classPrivateFieldGet2(_root, this) || classPrivateFieldGet2_classPrivateFieldGet2(_filledNegs, classPrivateFieldGet2_classPrivateFieldGet2(_root, this)) && ((_classPrivateFieldGet2 = classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.type) === '!')) { + ret.push({}); + } + return ret; + } + }, { + key: "isStart", + value: function isStart() { + var _classPrivateFieldGet3; + if (classPrivateFieldGet2_classPrivateFieldGet2(_root, this) === this) return true; + // if (this.type) return !!this.#parent?.isStart() + if (!((_classPrivateFieldGet3 = classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)) !== null && _classPrivateFieldGet3 !== void 0 && _classPrivateFieldGet3.isStart())) return false; + if (classPrivateFieldGet2_classPrivateFieldGet2(_parentIndex, this) === 0) return true; + // if everything AHEAD of this is a negation, then it's still the "start" + var p = classPrivateFieldGet2_classPrivateFieldGet2(_parent, this); + for (var i = 0; i < classPrivateFieldGet2_classPrivateFieldGet2(_parentIndex, this); i++) { + var pp = classPrivateFieldGet2_classPrivateFieldGet2(_parts, p)[i]; + if (!(pp instanceof AST && pp.type === '!')) { + return false; + } + } + return true; + } + }, { + key: "isEnd", + value: function isEnd() { + var _classPrivateFieldGet4, _classPrivateFieldGet5, _classPrivateFieldGet6; + if (classPrivateFieldGet2_classPrivateFieldGet2(_root, this) === this) return true; + if (((_classPrivateFieldGet4 = classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.type) === '!') return true; + if (!((_classPrivateFieldGet5 = classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)) !== null && _classPrivateFieldGet5 !== void 0 && _classPrivateFieldGet5.isEnd())) return false; + if (!this.type) return (_classPrivateFieldGet6 = classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.isEnd(); + // if not root, it'll always have a parent + /* c8 ignore start */ + var pl = classPrivateFieldGet2_classPrivateFieldGet2(_parent, this) ? classPrivateFieldGet2_classPrivateFieldGet2(_parts, classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)).length : 0; + /* c8 ignore stop */ + return classPrivateFieldGet2_classPrivateFieldGet2(_parentIndex, this) === pl - 1; + } + }, { + key: "copyIn", + value: function copyIn(part) { + if (typeof part === 'string') this.push(part);else this.push(part.clone(this)); + } + }, { + key: "clone", + value: function clone(parent) { + var c = new AST(this.type, parent); + var _iterator2 = (0,createForOfIteratorHelper/* default */.A)(classPrivateFieldGet2_classPrivateFieldGet2(_parts, this)), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var p = _step2.value; + c.copyIn(p); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return c; + } + }, { + key: "toMMPattern", + value: + // returns the regular expression if there's magic, or the unescaped + // string if not. + function toMMPattern() { + // should only be called on root + /* c8 ignore start */ + if (this !== classPrivateFieldGet2_classPrivateFieldGet2(_root, this)) return classPrivateFieldGet2_classPrivateFieldGet2(_root, this).toMMPattern(); + /* c8 ignore stop */ + var glob = this.toString(); + var _this$toRegExpSource = this.toRegExpSource(), + _this$toRegExpSource2 = (0,slicedToArray/* default */.A)(_this$toRegExpSource, 4), + re = _this$toRegExpSource2[0], + body = _this$toRegExpSource2[1], + hasMagic = _this$toRegExpSource2[2], + uflag = _this$toRegExpSource2[3]; + // if we're in nocase mode, and not nocaseMagicOnly, then we do + // still need a regular expression if we have to case-insensitively + // match capital/lowercase characters. + var anyMagic = hasMagic || classPrivateFieldGet2_classPrivateFieldGet2(_hasMagic2, this) || classPrivateFieldGet2_classPrivateFieldGet2(_options, this).nocase && !classPrivateFieldGet2_classPrivateFieldGet2(_options, this).nocaseMagicOnly && glob.toUpperCase() !== glob.toLowerCase(); + if (!anyMagic) { + return body; + } + var flags = (classPrivateFieldGet2_classPrivateFieldGet2(_options, this).nocase ? 'i' : '') + (uflag ? 'u' : ''); + return Object.assign(new RegExp("^".concat(re, "$"), flags), { + _src: re, + _glob: glob + }); + } + }, { + key: "options", + get: function get() { + return classPrivateFieldGet2_classPrivateFieldGet2(_options, this); + } + // returns the string match, the regexp source, whether there's magic + // in the regexp (so a regular expression is required) and whether or + // not the uflag is needed for the regular expression (for posix classes) + // TODO: instead of injecting the start/end at this point, just return + // the BODY of the regexp, along with the start/end portions suitable + // for binding the start/end in either a joined full-path makeRe context + // (where we bind to (^|/), or a standalone matchPart context (where + // we bind to ^, and not /). Otherwise slashes get duped! + // + // In part-matching mode, the start is: + // - if not isStart: nothing + // - if traversal possible, but not allowed: ^(?!\.\.?$) + // - if dots allowed or not possible: ^ + // - if dots possible and not allowed: ^(?!\.) + // end is: + // - if not isEnd(): nothing + // - else: $ + // + // In full-path matching mode, we put the slash at the START of the + // pattern, so start is: + // - if first pattern: same as part-matching mode + // - if not isStart(): nothing + // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/)) + // - if dots allowed or not possible: / + // - if dots possible and not allowed: /(?!\.) + // end is: + // - if last pattern, same as part-matching mode + // - else nothing + // + // Always put the (?:$|/) on negated tails, though, because that has to be + // there to bind the end of the negated pattern portion, and it's easier to + // just stick it in now rather than try to inject it later in the middle of + // the pattern. + // + // We can just always return the same end, and leave it up to the caller + // to know whether it's going to be used joined or in parts. + // And, if the start is adjusted slightly, can do the same there: + // - if not isStart: nothing + // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$) + // - if dots allowed or not possible: (?:/|^) + // - if dots possible and not allowed: (?:/|^)(?!\.) + // + // But it's better to have a simpler binding without a conditional, for + // performance, so probably better to return both start options. + // + // Then the caller just ignores the end if it's not the first pattern, + // and the start always gets applied. + // + // But that's always going to be $ if it's the ending pattern, or nothing, + // so the caller can just attach $ at the end of the pattern when building. + // + // So the todo is: + // - better detect what kind of start is needed + // - return both flavors of starting pattern + // - attach $ at the end of the pattern when creating the actual RegExp + // + // Ah, but wait, no, that all only applies to the root when the first pattern + // is not an extglob. If the first pattern IS an extglob, then we need all + // that dot prevention biz to live in the extglob portions, because eg + // +(*|.x*) can match .xy but not .yx. + // + // So, return the two flavors if it's #root and the first child is not an + // AST, otherwise leave it to the child AST to handle it, and there, + // use the (?:^|/) style of start binding. + // + // Even simplified further: + // - Since the start for a join is eg /(?!\.) and the start for a part + // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root + // or start or whatever) and prepend ^ or / at the Regexp construction. + }, { + key: "toRegExpSource", + value: function toRegExpSource(allowDot) { + var _this = this; + var dot = allowDot !== null && allowDot !== void 0 ? allowDot : !!classPrivateFieldGet2_classPrivateFieldGet2(_options, this).dot; + if (classPrivateFieldGet2_classPrivateFieldGet2(_root, this) === this) _assertClassBrand(_AST_brand, this, _fillNegs).call(this); + if (!this.type) { + var _classPrivateFieldGet7; + var noEmpty = this.isStart() && this.isEnd(); + var src = classPrivateFieldGet2_classPrivateFieldGet2(_parts, this).map(function (p) { + var _ref = typeof p === 'string' ? _parseGlob.call(AST, p, classPrivateFieldGet2_classPrivateFieldGet2(_hasMagic2, _this), noEmpty) : p.toRegExpSource(allowDot), + _ref2 = (0,slicedToArray/* default */.A)(_ref, 4), + re = _ref2[0], + _ = _ref2[1], + hasMagic = _ref2[2], + uflag = _ref2[3]; + _classPrivateFieldSet2(_hasMagic2, _this, classPrivateFieldGet2_classPrivateFieldGet2(_hasMagic2, _this) || hasMagic); + _classPrivateFieldSet2(_uflag, _this, classPrivateFieldGet2_classPrivateFieldGet2(_uflag, _this) || uflag); + return re; + }).join(''); + var _start = ''; + if (this.isStart()) { + if (typeof classPrivateFieldGet2_classPrivateFieldGet2(_parts, this)[0] === 'string') { + // this is the string that will match the start of the pattern, + // so we need to protect against dots and such. + // '.' and '..' cannot match unless the pattern is that exactly, + // even if it starts with . or dot:true is set. + var dotTravAllowed = classPrivateFieldGet2_classPrivateFieldGet2(_parts, this).length === 1 && justDots.has(classPrivateFieldGet2_classPrivateFieldGet2(_parts, this)[0]); + if (!dotTravAllowed) { + var aps = addPatternStart; + // check if we have a possibility of matching . or .., + // and prevent that. + var needNoTrav = + // dots are allowed, and the pattern starts with [ or . + dot && aps.has(src.charAt(0)) || + // the pattern starts with \., and then [ or . + src.startsWith('\\.') && aps.has(src.charAt(2)) || + // the pattern starts with \.\., and then [ or . + src.startsWith('\\.\\.') && aps.has(src.charAt(4)); + // no need to prevent dots if it can't match a dot, or if a + // sub-pattern will be preventing it anyway. + var needNoDot = !dot && !allowDot && aps.has(src.charAt(0)); + _start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''; + } + } + } + // append the "end of path portion" pattern to negation tails + var end = ''; + if (this.isEnd() && classPrivateFieldGet2_classPrivateFieldGet2(_filledNegs, classPrivateFieldGet2_classPrivateFieldGet2(_root, this)) && ((_classPrivateFieldGet7 = classPrivateFieldGet2_classPrivateFieldGet2(_parent, this)) === null || _classPrivateFieldGet7 === void 0 ? void 0 : _classPrivateFieldGet7.type) === '!') { + end = '(?:$|\\/)'; + } + var _final = _start + src + end; + return [_final, unescape_unescape(src), _classPrivateFieldSet2(_hasMagic2, this, !!classPrivateFieldGet2_classPrivateFieldGet2(_hasMagic2, this)), classPrivateFieldGet2_classPrivateFieldGet2(_uflag, this)]; + } + // We need to calculate the body *twice* if it's a repeat pattern + // at the start, once in nodot mode, then again in dot mode, so a + // pattern like *(?) can match 'x.y' + var repeated = this.type === '*' || this.type === '+'; + // some kind of extglob + var start = this.type === '!' ? '(?:(?!(?:' : '(?:'; + var body = _assertClassBrand(_AST_brand, this, _partsToRegExp).call(this, dot); + if (this.isStart() && this.isEnd() && !body && this.type !== '!') { + // invalid extglob, has to at least be *something* present, if it's + // the entire path portion. + var s = this.toString(); + _classPrivateFieldSet2(_parts, this, [s]); + this.type = null; + _classPrivateFieldSet2(_hasMagic2, this, undefined); + return [s, unescape_unescape(this.toString()), false, false]; + } + // XXX abstract out this map method + var bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? '' : _assertClassBrand(_AST_brand, this, _partsToRegExp).call(this, true); + if (bodyDotAllowed === body) { + bodyDotAllowed = ''; + } + if (bodyDotAllowed) { + body = "(?:".concat(body, ")(?:").concat(bodyDotAllowed, ")*?"); + } + // an empty !() is exactly equivalent to a starNoEmpty + var _final2 = ''; + if (this.type === '!' && classPrivateFieldGet2_classPrivateFieldGet2(_emptyExt, this)) { + _final2 = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty; + } else { + var close = this.type === '!' ? + // !() must match something,but !(x) can match '' + '))' + (this.isStart() && !dot && !allowDot ? startNoDot : '') + star + ')' : this.type === '@' ? ')' : this.type === '?' ? ')?' : this.type === '+' && bodyDotAllowed ? ')' : this.type === '*' && bodyDotAllowed ? ")?" : ")".concat(this.type); + _final2 = start + body + close; + } + return [_final2, unescape_unescape(body), _classPrivateFieldSet2(_hasMagic2, this, !!classPrivateFieldGet2_classPrivateFieldGet2(_hasMagic2, this)), classPrivateFieldGet2_classPrivateFieldGet2(_uflag, this)]; + } + }], [{ + key: "fromGlob", + value: function fromGlob(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var ast = new AST(null, undefined, options); + _parseAST.call(AST, pattern, ast, 0, options); + return ast; + } + }]); +}(); +//# sourceMappingURL=ast.js.map +_AST = AST; +function _fillNegs() { + /* c8 ignore start */ + if (this !== classPrivateFieldGet2_classPrivateFieldGet2(_root, this)) throw new Error('should only call on root'); + if (classPrivateFieldGet2_classPrivateFieldGet2(_filledNegs, this)) return this; + /* c8 ignore stop */ + // call toString() once to fill this out + this.toString(); + _classPrivateFieldSet2(_filledNegs, this, true); + var n; + while (n = classPrivateFieldGet2_classPrivateFieldGet2(_negs, this).pop()) { + if (n.type !== '!') continue; + // walk up the tree, appending everthing that comes AFTER parentIndex + var p = n; + var pp = classPrivateFieldGet2_classPrivateFieldGet2(_parent, p); + while (pp) { + for (var i = classPrivateFieldGet2_classPrivateFieldGet2(_parentIndex, p) + 1; !pp.type && i < classPrivateFieldGet2_classPrivateFieldGet2(_parts, pp).length; i++) { + var _iterator3 = (0,createForOfIteratorHelper/* default */.A)(classPrivateFieldGet2_classPrivateFieldGet2(_parts, n)), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var part = _step3.value; + /* c8 ignore start */ + if (typeof part === 'string') { + throw new Error('string part in extglob AST??'); + } + /* c8 ignore stop */ + part.copyIn(classPrivateFieldGet2_classPrivateFieldGet2(_parts, pp)[i]); + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + p = pp; + pp = classPrivateFieldGet2_classPrivateFieldGet2(_parent, p); + } + } + return this; +} +function _parseAST(str, ast, pos, opt) { + var escaping = false; + var inBrace = false; + var braceStart = -1; + var braceNeg = false; + if (ast.type === null) { + // outside of a extglob, append until we find a start + var _i2 = pos; + var _acc = ''; + while (_i2 < str.length) { + var c = str.charAt(_i2++); + // still accumulate escapes at this point, but we do ignore + // starts that are escaped + if (escaping || c === '\\') { + escaping = !escaping; + _acc += c; + continue; + } + if (inBrace) { + if (_i2 === braceStart + 1) { + if (c === '^' || c === '!') { + braceNeg = true; + } + } else if (c === ']' && !(_i2 === braceStart + 2 && braceNeg)) { + inBrace = false; + } + _acc += c; + continue; + } else if (c === '[') { + inBrace = true; + braceStart = _i2; + braceNeg = false; + _acc += c; + continue; + } + if (!opt.noext && isExtglobType(c) && str.charAt(_i2) === '(') { + ast.push(_acc); + _acc = ''; + var ext = new _AST(c, ast); + _i2 = _parseAST.call(_AST, str, ext, _i2, opt); + ast.push(ext); + continue; + } + _acc += c; + } + ast.push(_acc); + return _i2; + } + // some kind of extglob, pos is at the ( + // find the next | or ) + var i = pos + 1; + var part = new _AST(null, ast); + var parts = []; + var acc = ''; + while (i < str.length) { + var _c = str.charAt(i++); + // still accumulate escapes at this point, but we do ignore + // starts that are escaped + if (escaping || _c === '\\') { + escaping = !escaping; + acc += _c; + continue; + } + if (inBrace) { + if (i === braceStart + 1) { + if (_c === '^' || _c === '!') { + braceNeg = true; + } + } else if (_c === ']' && !(i === braceStart + 2 && braceNeg)) { + inBrace = false; + } + acc += _c; + continue; + } else if (_c === '[') { + inBrace = true; + braceStart = i; + braceNeg = false; + acc += _c; + continue; + } + if (isExtglobType(_c) && str.charAt(i) === '(') { + part.push(acc); + acc = ''; + var _ext = new _AST(_c, part); + part.push(_ext); + i = _parseAST.call(_AST, str, _ext, i, opt); + continue; + } + if (_c === '|') { + part.push(acc); + acc = ''; + parts.push(part); + part = new _AST(null, ast); + continue; + } + if (_c === ')') { + if (acc === '' && classPrivateFieldGet2_classPrivateFieldGet2(_parts, ast).length === 0) { + _classPrivateFieldSet2(_emptyExt, ast, true); + } + part.push(acc); + acc = ''; + ast.push.apply(ast, parts.concat([part])); + return i; + } + acc += _c; + } + // unfinished extglob + // if we got here, it was a malformed extglob! not an extglob, but + // maybe something else in there. + ast.type = null; + _classPrivateFieldSet2(_hasMagic2, ast, undefined); + _classPrivateFieldSet2(_parts, ast, [str.substring(pos - 1)]); + return i; +} +function _partsToRegExp(dot) { + var _this2 = this; + return classPrivateFieldGet2_classPrivateFieldGet2(_parts, this).map(function (p) { + // extglob ASTs should only contain parent ASTs + /* c8 ignore start */ + if (typeof p === 'string') { + throw new Error('string type in extglob ast??'); + } + /* c8 ignore stop */ + // can ignore hasMagic, because extglobs are already always magic + var _p$toRegExpSource = p.toRegExpSource(dot), + _p$toRegExpSource2 = (0,slicedToArray/* default */.A)(_p$toRegExpSource, 4), + re = _p$toRegExpSource2[0], + _ = _p$toRegExpSource2[1], + _hasMagic = _p$toRegExpSource2[2], + uflag = _p$toRegExpSource2[3]; + _classPrivateFieldSet2(_uflag, _this2, classPrivateFieldGet2_classPrivateFieldGet2(_uflag, _this2) || uflag); + return re; + }).filter(function (p) { + return !(_this2.isStart() && _this2.isEnd()) || !!p; + }).join('|'); +} +function _parseGlob(glob, hasMagic) { + var noEmpty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var escaping = false; + var re = ''; + var uflag = false; + for (var i = 0; i < glob.length; i++) { + var c = glob.charAt(i); + if (escaping) { + escaping = false; + re += (reSpecials.has(c) ? '\\' : '') + c; + continue; + } + if (c === '\\') { + if (i === glob.length - 1) { + re += '\\\\'; + } else { + escaping = true; + } + continue; + } + if (c === '[') { + var _parseClass = parseClass(glob, i), + _parseClass2 = (0,slicedToArray/* default */.A)(_parseClass, 4), + src = _parseClass2[0], + needUflag = _parseClass2[1], + consumed = _parseClass2[2], + magic = _parseClass2[3]; + if (consumed) { + re += src; + uflag = uflag || needUflag; + i += consumed - 1; + hasMagic = hasMagic || magic; + continue; + } + } + if (c === '*') { + if (noEmpty && glob === '*') re += starNoEmpty;else re += star; + hasMagic = true; + continue; + } + if (c === '?') { + re += qmark; + hasMagic = true; + continue; + } + re += regExpEscape(c); + } + return [re, unescape_unescape(glob), !!hasMagic, uflag]; +} +;// CONCATENATED MODULE: ./node_modules/minimatch/dist/esm/escape.js +/** + * Escape all magic characters in a glob pattern. + * + * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape} + * option is used, then characters are escaped by wrapping in `[]`, because + * a magic character wrapped in a character class can only be satisfied by + * that exact character. In this mode, `\` is _not_ escaped, because it is + * not interpreted as a magic character, but instead as a path separator. + */ +var escape_escape = function escape(s) { + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$windowsPathsNoEs = _ref.windowsPathsNoEscape, + windowsPathsNoEscape = _ref$windowsPathsNoEs === void 0 ? false : _ref$windowsPathsNoEs; + // don't need to escape +@! because we escape the parens + // that make those magic, and escaping ! as [!] isn't valid, + // because [!]] is a valid glob class meaning not ']'. + return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, '[$&]') : s.replace(/[?*()[\]\\]/g, '\\$&'); +}; +//# sourceMappingURL=escape.js.map +;// CONCATENATED MODULE: ./node_modules/minimatch/dist/esm/index.js + + + + + + + + + + + + + +var minimatch = function minimatch(p, pattern) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + assertValidPattern(pattern); + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false; + } + return new Minimatch(pattern, options).match(p); +}; +// Optimized checking for the most common glob patterns. +var starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; +var starDotExtTest = function starDotExtTest(ext) { + return function (f) { + return !f.startsWith('.') && f.endsWith(ext); + }; +}; +var starDotExtTestDot = function starDotExtTestDot(ext) { + return function (f) { + return f.endsWith(ext); + }; +}; +var starDotExtTestNocase = function starDotExtTestNocase(ext) { + ext = ext.toLowerCase(); + return function (f) { + return !f.startsWith('.') && f.toLowerCase().endsWith(ext); + }; +}; +var starDotExtTestNocaseDot = function starDotExtTestNocaseDot(ext) { + ext = ext.toLowerCase(); + return function (f) { + return f.toLowerCase().endsWith(ext); + }; +}; +var starDotStarRE = /^\*+\.\*+$/; +var starDotStarTest = function starDotStarTest(f) { + return !f.startsWith('.') && f.includes('.'); +}; +var starDotStarTestDot = function starDotStarTestDot(f) { + return f !== '.' && f !== '..' && f.includes('.'); +}; +var dotStarRE = /^\.\*+$/; +var dotStarTest = function dotStarTest(f) { + return f !== '.' && f !== '..' && f.startsWith('.'); +}; +var starRE = /^\*+$/; +var starTest = function starTest(f) { + return f.length !== 0 && !f.startsWith('.'); +}; +var starTestDot = function starTestDot(f) { + return f.length !== 0 && f !== '.' && f !== '..'; +}; +var qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; +var qmarksTestNocase = function qmarksTestNocase(_ref) { + var _ref2 = (0,slicedToArray/* default */.A)(_ref, 2), + $0 = _ref2[0], + _ref2$ = _ref2[1], + ext = _ref2$ === void 0 ? '' : _ref2$; + var noext = qmarksTestNoExt([$0]); + if (!ext) return noext; + ext = ext.toLowerCase(); + return function (f) { + return noext(f) && f.toLowerCase().endsWith(ext); + }; +}; +var qmarksTestNocaseDot = function qmarksTestNocaseDot(_ref3) { + var _ref4 = (0,slicedToArray/* default */.A)(_ref3, 2), + $0 = _ref4[0], + _ref4$ = _ref4[1], + ext = _ref4$ === void 0 ? '' : _ref4$; + var noext = qmarksTestNoExtDot([$0]); + if (!ext) return noext; + ext = ext.toLowerCase(); + return function (f) { + return noext(f) && f.toLowerCase().endsWith(ext); + }; +}; +var qmarksTestDot = function qmarksTestDot(_ref5) { + var _ref6 = (0,slicedToArray/* default */.A)(_ref5, 2), + $0 = _ref6[0], + _ref6$ = _ref6[1], + ext = _ref6$ === void 0 ? '' : _ref6$; + var noext = qmarksTestNoExtDot([$0]); + return !ext ? noext : function (f) { + return noext(f) && f.endsWith(ext); + }; +}; +var qmarksTest = function qmarksTest(_ref7) { + var _ref8 = (0,slicedToArray/* default */.A)(_ref7, 2), + $0 = _ref8[0], + _ref8$ = _ref8[1], + ext = _ref8$ === void 0 ? '' : _ref8$; + var noext = qmarksTestNoExt([$0]); + return !ext ? noext : function (f) { + return noext(f) && f.endsWith(ext); + }; +}; +var qmarksTestNoExt = function qmarksTestNoExt(_ref9) { + var _ref10 = (0,slicedToArray/* default */.A)(_ref9, 1), + $0 = _ref10[0]; + var len = $0.length; + return function (f) { + return f.length === len && !f.startsWith('.'); + }; +}; +var qmarksTestNoExtDot = function qmarksTestNoExtDot(_ref11) { + var _ref12 = (0,slicedToArray/* default */.A)(_ref11, 1), + $0 = _ref12[0]; + var len = $0.length; + return function (f) { + return f.length === len && f !== '.' && f !== '..'; + }; +}; +/* c8 ignore start */ +var defaultPlatform = typeof process === 'object' && process ? typeof process.env === 'object' && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : 'posix'; +var path = { + win32: { + sep: '\\' + }, + posix: { + sep: '/' + } +}; +/* c8 ignore stop */ +var sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep; +minimatch.sep = sep; +var GLOBSTAR = Symbol('globstar **'); +minimatch.GLOBSTAR = GLOBSTAR; +// any single thing other than / +// don't need to escape / when using new RegExp() +var esm_qmark = '[^/]'; +// * => any number of characters +var esm_star = esm_qmark + '*?'; +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?'; +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?'; +var filter = function filter(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return function (p) { + return minimatch(p, pattern, options); + }; +}; +minimatch.filter = filter; +var ext = function ext(a) { + var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return Object.assign({}, a, b); +}; +var _defaults = function defaults(def) { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch; + } + var orig = minimatch; + var m = function m(p, pattern) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return orig(p, pattern, ext(def, options)); + }; + return Object.assign(m, { + Minimatch: /*#__PURE__*/function (_orig$Minimatch) { + function Minimatch(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0,classCallCheck/* default */.A)(this, Minimatch); + return (0,callSuper/* default */.A)(this, Minimatch, [pattern, ext(def, options)]); + } + (0,inherits/* default */.A)(Minimatch, _orig$Minimatch); + return (0,createClass/* default */.A)(Minimatch, null, [{ + key: "defaults", + value: function defaults(options) { + return orig.defaults(ext(def, options)).Minimatch; + } + }]); + }(orig.Minimatch), + AST: /*#__PURE__*/function (_orig$AST) { + /* c8 ignore start */ + function AST(type, parent) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + (0,classCallCheck/* default */.A)(this, AST); + return (0,callSuper/* default */.A)(this, AST, [type, parent, ext(def, options)]); + } + /* c8 ignore stop */ + (0,inherits/* default */.A)(AST, _orig$AST); + return (0,createClass/* default */.A)(AST, null, [{ + key: "fromGlob", + value: function fromGlob(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return orig.AST.fromGlob(pattern, ext(def, options)); + } + }]); + }(orig.AST), + unescape: function unescape(s) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return orig.unescape(s, ext(def, options)); + }, + escape: function escape(s) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return orig.escape(s, ext(def, options)); + }, + filter: function filter(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return orig.filter(pattern, ext(def, options)); + }, + defaults: function defaults(options) { + return orig.defaults(ext(def, options)); + }, + makeRe: function makeRe(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return orig.makeRe(pattern, ext(def, options)); + }, + braceExpand: function braceExpand(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return orig.braceExpand(pattern, ext(def, options)); + }, + match: function match(list, pattern) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return orig.match(list, pattern, ext(def, options)); + }, + sep: orig.sep, + GLOBSTAR: GLOBSTAR + }); +}; + +minimatch.defaults = _defaults; +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +var _braceExpand = function braceExpand(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + assertValidPattern(pattern); + // Thanks to Yeting Li for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern]; + } + return brace_expansion(pattern); +}; + +minimatch.braceExpand = _braceExpand; +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +var makeRe = function makeRe(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return new Minimatch(pattern, options).makeRe(); +}; +minimatch.makeRe = makeRe; +var match = function match(list, pattern) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var mm = new Minimatch(pattern, options); + list = list.filter(function (f) { + return mm.match(f); + }); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; +}; +minimatch.match = match; +// replace stuff like \* with * +var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/; +var esm_regExpEscape = function regExpEscape(s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +}; +var Minimatch = /*#__PURE__*/function () { + function Minimatch(pattern) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0,classCallCheck/* default */.A)(this, Minimatch); + (0,defineProperty/* default */.A)(this, "options", void 0); + (0,defineProperty/* default */.A)(this, "set", void 0); + (0,defineProperty/* default */.A)(this, "pattern", void 0); + (0,defineProperty/* default */.A)(this, "windowsPathsNoEscape", void 0); + (0,defineProperty/* default */.A)(this, "nonegate", void 0); + (0,defineProperty/* default */.A)(this, "negate", void 0); + (0,defineProperty/* default */.A)(this, "comment", void 0); + (0,defineProperty/* default */.A)(this, "empty", void 0); + (0,defineProperty/* default */.A)(this, "preserveMultipleSlashes", void 0); + (0,defineProperty/* default */.A)(this, "partial", void 0); + (0,defineProperty/* default */.A)(this, "globSet", void 0); + (0,defineProperty/* default */.A)(this, "globParts", void 0); + (0,defineProperty/* default */.A)(this, "nocase", void 0); + (0,defineProperty/* default */.A)(this, "isWindows", void 0); + (0,defineProperty/* default */.A)(this, "platform", void 0); + (0,defineProperty/* default */.A)(this, "windowsNoMagicRoot", void 0); + (0,defineProperty/* default */.A)(this, "regexp", void 0); + assertValidPattern(pattern); + options = options || {}; + this.options = options; + this.pattern = pattern; + this.platform = options.platform || defaultPlatform; + this.isWindows = this.platform === 'win32'; + this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false; + if (this.windowsPathsNoEscape) { + this.pattern = this.pattern.replace(/\\/g, '/'); + } + this.preserveMultipleSlashes = !!options.preserveMultipleSlashes; + this.regexp = null; + this.negate = false; + this.nonegate = !!options.nonegate; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + this.nocase = !!this.options.nocase; + this.windowsNoMagicRoot = options.windowsNoMagicRoot !== undefined ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase); + this.globSet = []; + this.globParts = []; + this.set = []; + // make the set of regexps etc. + this.make(); + } + return (0,createClass/* default */.A)(Minimatch, [{ + key: "hasMagic", + value: function hasMagic() { + if (this.options.magicalBraces && this.set.length > 1) { + return true; + } + var _iterator = (0,createForOfIteratorHelper/* default */.A)(this.set), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var pattern = _step.value; + var _iterator2 = (0,createForOfIteratorHelper/* default */.A)(pattern), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var part = _step2.value; + if (typeof part !== 'string') return true; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return false; + } + }, { + key: "debug", + value: function debug() {} + }, { + key: "make", + value: function make() { + var _this = this; + var pattern = this.pattern; + var options = this.options; + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + // step 1: figure out negation, etc. + this.parseNegate(); + // step 2: expand braces + this.globSet = (0,toConsumableArray/* default */.A)(new Set(this.braceExpand())); + if (options.debug) { + this.debug = function () { + var _console; + return (_console = console).error.apply(_console, arguments); + }; + } + this.debug(this.pattern, this.globSet); + // step 3: now we have a set, so turn each one into a series of + // path-portion matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + // + // First, we preprocess to make the glob pattern sets a bit simpler + // and deduped. There are some perf-killing patterns that can cause + // problems with a glob walk, but we can simplify them down a bit. + var rawGlobParts = this.globSet.map(function (s) { + return _this.slashSplit(s); + }); + this.globParts = this.preprocess(rawGlobParts); + this.debug(this.pattern, this.globParts); + // glob --> regexps + var set = this.globParts.map(function (s, _, __) { + if (_this.isWindows && _this.windowsNoMagicRoot) { + // check if it's a drive or unc path. + var isUNC = s[0] === '' && s[1] === '' && (s[2] === '?' || !globMagic.test(s[2])) && !globMagic.test(s[3]); + var isDrive = /^[a-z]:/i.test(s[0]); + if (isUNC) { + return [].concat((0,toConsumableArray/* default */.A)(s.slice(0, 4)), (0,toConsumableArray/* default */.A)(s.slice(4).map(function (ss) { + return _this.parse(ss); + }))); + } else if (isDrive) { + return [s[0]].concat((0,toConsumableArray/* default */.A)(s.slice(1).map(function (ss) { + return _this.parse(ss); + }))); + } + } + return s.map(function (ss) { + return _this.parse(ss); + }); + }); + this.debug(this.pattern, set); + // filter out everything that didn't compile properly. + this.set = set.filter(function (s) { + return s.indexOf(false) === -1; + }); + // do not treat the ? in UNC paths as magic + if (this.isWindows) { + for (var i = 0; i < this.set.length; i++) { + var p = this.set[i]; + if (p[0] === '' && p[1] === '' && this.globParts[i][2] === '?' && typeof p[3] === 'string' && /^[a-z]:$/i.test(p[3])) { + p[2] = '?'; + } + } + } + this.debug(this.pattern, this.set); + } + // various transforms to equivalent pattern sets that are + // faster to process in a filesystem walk. The goal is to + // eliminate what we can, and push all ** patterns as far + // to the right as possible, even if it increases the number + // of patterns that we have to process. + }, { + key: "preprocess", + value: function preprocess(globParts) { + // if we're not in globstar mode, then turn all ** into * + if (this.options.noglobstar) { + for (var i = 0; i < globParts.length; i++) { + for (var j = 0; j < globParts[i].length; j++) { + if (globParts[i][j] === '**') { + globParts[i][j] = '*'; + } + } + } + } + var _this$options$optimiz = this.options.optimizationLevel, + optimizationLevel = _this$options$optimiz === void 0 ? 1 : _this$options$optimiz; + if (optimizationLevel >= 2) { + // aggressive optimization for the purpose of fs walking + globParts = this.firstPhasePreProcess(globParts); + globParts = this.secondPhasePreProcess(globParts); + } else if (optimizationLevel >= 1) { + // just basic optimizations to remove some .. parts + globParts = this.levelOneOptimize(globParts); + } else { + // just collapse multiple ** portions into one + globParts = this.adjascentGlobstarOptimize(globParts); + } + return globParts; + } + // just get rid of adjascent ** portions + }, { + key: "adjascentGlobstarOptimize", + value: function adjascentGlobstarOptimize(globParts) { + return globParts.map(function (parts) { + var gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + var i = gs; + while (parts[i + 1] === '**') { + i++; + } + if (i !== gs) { + parts.splice(gs, i - gs); + } + } + return parts; + }); + } + // get rid of adjascent ** and resolve .. portions + }, { + key: "levelOneOptimize", + value: function levelOneOptimize(globParts) { + return globParts.map(function (parts) { + parts = parts.reduce(function (set, part) { + var prev = set[set.length - 1]; + if (part === '**' && prev === '**') { + return set; + } + if (part === '..') { + if (prev && prev !== '..' && prev !== '.' && prev !== '**') { + set.pop(); + return set; + } + } + set.push(part); + return set; + }, []); + return parts.length === 0 ? [''] : parts; + }); + } + }, { + key: "levelTwoFileOptimize", + value: function levelTwoFileOptimize(parts) { + if (!Array.isArray(parts)) { + parts = this.slashSplit(parts); + } + var didSomething = false; + do { + didSomething = false; + //
// -> 
/
+        if (!this.preserveMultipleSlashes) {
+          for (var i = 1; i < parts.length - 1; i++) {
+            var p = parts[i];
+            // don't squeeze out UNC patterns
+            if (i === 1 && p === '' && parts[0] === '') continue;
+            if (p === '.' || p === '') {
+              didSomething = true;
+              parts.splice(i, 1);
+              i--;
+            }
+          }
+          if (parts[0] === '.' && parts.length === 2 && (parts[1] === '.' || parts[1] === '')) {
+            didSomething = true;
+            parts.pop();
+          }
+        }
+        // 
/

/../ ->

/
+        var dd = 0;
+        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
+          var _p = parts[dd - 1];
+          if (_p && _p !== '.' && _p !== '..' && _p !== '**') {
+            didSomething = true;
+            parts.splice(dd - 1, 2);
+            dd -= 2;
+          }
+        }
+      } while (didSomething);
+      return parts.length === 0 ? [''] : parts;
+    }
+    // First phase: single-pattern processing
+    // 
 is 1 or more portions
+    //  is 1 or more portions
+    // 

is any portion other than ., .., '', or ** + // is . or '' + // + // **/.. is *brutal* for filesystem walking performance, because + // it effectively resets the recursive walk each time it occurs, + // and ** cannot be reduced out by a .. pattern part like a regexp + // or most strings (other than .., ., and '') can be. + // + //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/} + //

// -> 
/
+    // 
/

/../ ->

/
+    // **/**/ -> **/
+    //
+    // **/*/ -> */**/ <== not valid because ** doesn't follow
+    // this WOULD be allowed if ** did follow symlinks, or * didn't
+  }, {
+    key: "firstPhasePreProcess",
+    value: function firstPhasePreProcess(globParts) {
+      var didSomething = false;
+      do {
+        didSomething = false;
+        // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/} + var _iterator3 = (0,createForOfIteratorHelper/* default */.A)(globParts), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var parts = _step3.value; + var gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + var gss = gs; + while (parts[gss + 1] === '**') { + //

/**/**/ -> 
/**/
+                gss++;
+              }
+              // eg, if gs is 2 and gss is 4, that means we have 3 **
+              // parts, and can remove 2 of them.
+              if (gss > gs) {
+                parts.splice(gs + 1, gss - gs);
+              }
+              var next = parts[gs + 1];
+              var p = parts[gs + 2];
+              var p2 = parts[gs + 3];
+              if (next !== '..') continue;
+              if (!p || p === '.' || p === '..' || !p2 || p2 === '.' || p2 === '..') {
+                continue;
+              }
+              didSomething = true;
+              // edit parts in place, and push the new one
+              parts.splice(gs, 1);
+              var other = parts.slice(0);
+              other[gs] = '**';
+              globParts.push(other);
+              gs--;
+            }
+            // 
// -> 
/
+            if (!this.preserveMultipleSlashes) {
+              for (var i = 1; i < parts.length - 1; i++) {
+                var _p2 = parts[i];
+                // don't squeeze out UNC patterns
+                if (i === 1 && _p2 === '' && parts[0] === '') continue;
+                if (_p2 === '.' || _p2 === '') {
+                  didSomething = true;
+                  parts.splice(i, 1);
+                  i--;
+                }
+              }
+              if (parts[0] === '.' && parts.length === 2 && (parts[1] === '.' || parts[1] === '')) {
+                didSomething = true;
+                parts.pop();
+              }
+            }
+            // 
/

/../ ->

/
+            var dd = 0;
+            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
+              var _p3 = parts[dd - 1];
+              if (_p3 && _p3 !== '.' && _p3 !== '..' && _p3 !== '**') {
+                didSomething = true;
+                var needDot = dd === 1 && parts[dd + 1] === '**';
+                var splin = needDot ? ['.'] : [];
+                parts.splice.apply(parts, [dd - 1, 2].concat(splin));
+                if (parts.length === 0) parts.push('');
+                dd -= 2;
+              }
+            }
+          }
+        } catch (err) {
+          _iterator3.e(err);
+        } finally {
+          _iterator3.f();
+        }
+      } while (didSomething);
+      return globParts;
+    }
+    // second phase: multi-pattern dedupes
+    // {
/*/,
/

/} ->

/*/
+    // {
/,
/} -> 
/
+    // {
/**/,
/} -> 
/**/
+    //
+    // {
/**/,
/**/

/} ->

/**/
+    // ^-- not valid because ** doens't follow symlinks
+  }, {
+    key: "secondPhasePreProcess",
+    value: function secondPhasePreProcess(globParts) {
+      for (var i = 0; i < globParts.length - 1; i++) {
+        for (var j = i + 1; j < globParts.length; j++) {
+          var matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
+          if (matched) {
+            globParts[i] = [];
+            globParts[j] = matched;
+            break;
+          }
+        }
+      }
+      return globParts.filter(function (gs) {
+        return gs.length;
+      });
+    }
+  }, {
+    key: "partsMatch",
+    value: function partsMatch(a, b) {
+      var emptyGSMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      var ai = 0;
+      var bi = 0;
+      var result = [];
+      var which = '';
+      while (ai < a.length && bi < b.length) {
+        if (a[ai] === b[bi]) {
+          result.push(which === 'b' ? b[bi] : a[ai]);
+          ai++;
+          bi++;
+        } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
+          result.push(a[ai]);
+          ai++;
+        } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
+          result.push(b[bi]);
+          bi++;
+        } else if (a[ai] === '*' && b[bi] && (this.options.dot || !b[bi].startsWith('.')) && b[bi] !== '**') {
+          if (which === 'b') return false;
+          which = 'a';
+          result.push(a[ai]);
+          ai++;
+          bi++;
+        } else if (b[bi] === '*' && a[ai] && (this.options.dot || !a[ai].startsWith('.')) && a[ai] !== '**') {
+          if (which === 'a') return false;
+          which = 'b';
+          result.push(b[bi]);
+          ai++;
+          bi++;
+        } else {
+          return false;
+        }
+      }
+      // if we fall out of the loop, it means they two are identical
+      // as long as their lengths match
+      return a.length === b.length && result;
+    }
+  }, {
+    key: "parseNegate",
+    value: function parseNegate() {
+      if (this.nonegate) return;
+      var pattern = this.pattern;
+      var negate = false;
+      var negateOffset = 0;
+      for (var i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
+        negate = !negate;
+        negateOffset++;
+      }
+      if (negateOffset) this.pattern = pattern.slice(negateOffset);
+      this.negate = negate;
+    }
+    // set partial to true to test if, for example,
+    // "/a/b" matches the start of "/*/b/*/d"
+    // Partial means, if you run out of file before you run
+    // out of pattern, then that's fine, as long as all
+    // the parts match.
+  }, {
+    key: "matchOne",
+    value: function matchOne(file, pattern) {
+      var partial = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      var options = this.options;
+      // UNC paths like //?/X:/... can match X:/... and vice versa
+      // Drive letters in absolute drive or unc paths are always compared
+      // case-insensitively.
+      if (this.isWindows) {
+        var fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);
+        var fileUNC = !fileDrive && file[0] === '' && file[1] === '' && file[2] === '?' && /^[a-z]:$/i.test(file[3]);
+        var patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);
+        var patternUNC = !patternDrive && pattern[0] === '' && pattern[1] === '' && pattern[2] === '?' && typeof pattern[3] === 'string' && /^[a-z]:$/i.test(pattern[3]);
+        var fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;
+        var pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;
+        if (typeof fdi === 'number' && typeof pdi === 'number') {
+          var _ref13 = [file[fdi], pattern[pdi]],
+            fd = _ref13[0],
+            pd = _ref13[1];
+          if (fd.toLowerCase() === pd.toLowerCase()) {
+            pattern[pdi] = fd;
+            if (pdi > fdi) {
+              pattern = pattern.slice(pdi);
+            } else if (fdi > pdi) {
+              file = file.slice(fdi);
+            }
+          }
+        }
+      }
+      // resolve and reduce . and .. portions in the file as well.
+      // dont' need to do the second phase, because it's only one string[]
+      var _this$options$optimiz2 = this.options.optimizationLevel,
+        optimizationLevel = _this$options$optimiz2 === void 0 ? 1 : _this$options$optimiz2;
+      if (optimizationLevel >= 2) {
+        file = this.levelTwoFileOptimize(file);
+      }
+      this.debug('matchOne', this, {
+        file: file,
+        pattern: pattern
+      });
+      this.debug('matchOne', file.length, pattern.length);
+      for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+        this.debug('matchOne loop');
+        var p = pattern[pi];
+        var f = file[fi];
+        this.debug(pattern, p, f);
+        // should be impossible.
+        // some invalid regexp stuff in the set.
+        /* c8 ignore start */
+        if (p === false) {
+          return false;
+        }
+        /* c8 ignore stop */
+        if (p === GLOBSTAR) {
+          this.debug('GLOBSTAR', [pattern, p, f]);
+          // "**"
+          // a/**/b/**/c would match the following:
+          // a/b/x/y/z/c
+          // a/x/y/z/b/c
+          // a/b/x/b/x/c
+          // a/b/c
+          // To do this, take the rest of the pattern after
+          // the **, and see if it would match the file remainder.
+          // If so, return success.
+          // If not, the ** "swallows" a segment, and try again.
+          // This is recursively awful.
+          //
+          // a/**/b/**/c matching a/b/x/y/z/c
+          // - a matches a
+          // - doublestar
+          //   - matchOne(b/x/y/z/c, b/**/c)
+          //     - b matches b
+          //     - doublestar
+          //       - matchOne(x/y/z/c, c) -> no
+          //       - matchOne(y/z/c, c) -> no
+          //       - matchOne(z/c, c) -> no
+          //       - matchOne(c, c) yes, hit
+          var fr = fi;
+          var pr = pi + 1;
+          if (pr === pl) {
+            this.debug('** at the end');
+            // a ** at the end will just swallow the rest.
+            // We have found a match.
+            // however, it will not swallow /.x, unless
+            // options.dot is set.
+            // . and .. are *never* matched by **, for explosively
+            // exponential reasons.
+            for (; fi < fl; fi++) {
+              if (file[fi] === '.' || file[fi] === '..' || !options.dot && file[fi].charAt(0) === '.') return false;
+            }
+            return true;
+          }
+          // ok, let's see if we can swallow whatever we can.
+          while (fr < fl) {
+            var swallowee = file[fr];
+            this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
+            // XXX remove this slice.  Just pass the start index.
+            if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
+              this.debug('globstar found match!', fr, fl, swallowee);
+              // found a match.
+              return true;
+            } else {
+              // can't swallow "." or ".." ever.
+              // can only swallow ".foo" when explicitly asked.
+              if (swallowee === '.' || swallowee === '..' || !options.dot && swallowee.charAt(0) === '.') {
+                this.debug('dot detected!', file, fr, pattern, pr);
+                break;
+              }
+              // ** swallows a segment, and continue.
+              this.debug('globstar swallow a segment, and continue');
+              fr++;
+            }
+          }
+          // no match was found.
+          // However, in partial mode, we can't say this is necessarily over.
+          /* c8 ignore start */
+          if (partial) {
+            // ran out of file
+            this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
+            if (fr === fl) {
+              return true;
+            }
+          }
+          /* c8 ignore stop */
+          return false;
+        }
+        // something other than **
+        // non-magic patterns just have to match exactly
+        // patterns with magic have been turned into regexps.
+        var hit = void 0;
+        if (typeof p === 'string') {
+          hit = f === p;
+          this.debug('string match', p, f, hit);
+        } else {
+          hit = p.test(f);
+          this.debug('pattern match', p, f, hit);
+        }
+        if (!hit) return false;
+      }
+      // Note: ending in / means that we'll get a final ""
+      // at the end of the pattern.  This can only match a
+      // corresponding "" at the end of the file.
+      // If the file ends in /, then it can only match a
+      // a pattern that ends in /, unless the pattern just
+      // doesn't have any more for it. But, a/b/ should *not*
+      // match "a/b/*", even though "" matches against the
+      // [^/]*? pattern, except in partial mode, where it might
+      // simply not be reached yet.
+      // However, a/b/ should still satisfy a/*
+      // now either we fell off the end of the pattern, or we're done.
+      if (fi === fl && pi === pl) {
+        // ran out of pattern and filename at the same time.
+        // an exact hit!
+        return true;
+      } else if (fi === fl) {
+        // ran out of file, but still had pattern left.
+        // this is ok if we're doing the match as part of
+        // a glob fs traversal.
+        return partial;
+      } else if (pi === pl) {
+        // ran out of pattern, still have file left.
+        // this is only acceptable if we're on the very last
+        // empty segment of a file with a trailing slash.
+        // a/* should match a/b/
+        return fi === fl - 1 && file[fi] === '';
+        /* c8 ignore start */
+      } else {
+        // should be unreachable.
+        throw new Error('wtf?');
+      }
+      /* c8 ignore stop */
+    }
+  }, {
+    key: "braceExpand",
+    value: function braceExpand() {
+      return _braceExpand(this.pattern, this.options);
+    }
+  }, {
+    key: "parse",
+    value: function parse(pattern) {
+      assertValidPattern(pattern);
+      var options = this.options;
+      // shortcuts
+      if (pattern === '**') return GLOBSTAR;
+      if (pattern === '') return '';
+      // far and away, the most common glob pattern parts are
+      // *, *.*, and *.  Add a fast check method for those.
+      var m;
+      var fastTest = null;
+      if (m = pattern.match(starRE)) {
+        fastTest = options.dot ? starTestDot : starTest;
+      } else if (m = pattern.match(starDotExtRE)) {
+        fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options.dot ? starDotExtTestDot : starDotExtTest)(m[1]);
+      } else if (m = pattern.match(qmarksRE)) {
+        fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot : qmarksTestNocase : options.dot ? qmarksTestDot : qmarksTest)(m);
+      } else if (m = pattern.match(starDotStarRE)) {
+        fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
+      } else if (m = pattern.match(dotStarRE)) {
+        fastTest = dotStarTest;
+      }
+      var re = AST.fromGlob(pattern, this.options).toMMPattern();
+      if (fastTest && typeof re === 'object') {
+        // Avoids overriding in frozen environments
+        Reflect.defineProperty(re, 'test', {
+          value: fastTest
+        });
+      }
+      return re;
+    }
+  }, {
+    key: "makeRe",
+    value: function makeRe() {
+      if (this.regexp || this.regexp === false) return this.regexp;
+      // at this point, this.set is a 2d array of partial
+      // pattern strings, or "**".
+      //
+      // It's better to use .match().  This function shouldn't
+      // be used, really, but it's pretty convenient sometimes,
+      // when you just want to work with a regex.
+      var set = this.set;
+      if (!set.length) {
+        this.regexp = false;
+        return this.regexp;
+      }
+      var options = this.options;
+      var twoStar = options.noglobstar ? esm_star : options.dot ? twoStarDot : twoStarNoDot;
+      var flags = new Set(options.nocase ? ['i'] : []);
+      // regexpify non-globstar patterns
+      // if ** is only item, then we just do one twoStar
+      // if ** is first, and there are more, prepend (\/|twoStar\/)? to next
+      // if ** is last, append (\/twoStar|) to previous
+      // if ** is in the middle, append (\/|\/twoStar\/) to previous
+      // then filter out GLOBSTAR symbols
+      var re = set.map(function (pattern) {
+        var pp = pattern.map(function (p) {
+          if (p instanceof RegExp) {
+            var _iterator4 = (0,createForOfIteratorHelper/* default */.A)(p.flags.split('')),
+              _step4;
+            try {
+              for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+                var f = _step4.value;
+                flags.add(f);
+              }
+            } catch (err) {
+              _iterator4.e(err);
+            } finally {
+              _iterator4.f();
+            }
+          }
+          return typeof p === 'string' ? esm_regExpEscape(p) : p === GLOBSTAR ? GLOBSTAR : p._src;
+        });
+        pp.forEach(function (p, i) {
+          var next = pp[i + 1];
+          var prev = pp[i - 1];
+          if (p !== GLOBSTAR || prev === GLOBSTAR) {
+            return;
+          }
+          if (prev === undefined) {
+            if (next !== undefined && next !== GLOBSTAR) {
+              pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next;
+            } else {
+              pp[i] = twoStar;
+            }
+          } else if (next === undefined) {
+            pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?';
+          } else if (next !== GLOBSTAR) {
+            pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next;
+            pp[i + 1] = GLOBSTAR;
+          }
+        });
+        return pp.filter(function (p) {
+          return p !== GLOBSTAR;
+        }).join('/');
+      }).join('|');
+      // need to wrap in parens if we had more than one thing with |,
+      // otherwise only the first will be anchored to ^ and the last to $
+      var _ref14 = set.length > 1 ? ['(?:', ')'] : ['', ''],
+        _ref15 = (0,slicedToArray/* default */.A)(_ref14, 2),
+        open = _ref15[0],
+        close = _ref15[1];
+      // must match entire pattern
+      // ending in a * or ** will make it less strict.
+      re = '^' + open + re + close + '$';
+      // can match anything, as long as it's not this.
+      if (this.negate) re = '^(?!' + re + ').+$';
+      try {
+        this.regexp = new RegExp(re, (0,toConsumableArray/* default */.A)(flags).join(''));
+        /* c8 ignore start */
+      } catch (ex) {
+        // should be impossible
+        this.regexp = false;
+      }
+      /* c8 ignore stop */
+      return this.regexp;
+    }
+  }, {
+    key: "slashSplit",
+    value: function slashSplit(p) {
+      // if p starts with // on windows, we preserve that
+      // so that UNC paths aren't broken.  Otherwise, any number of
+      // / characters are coalesced into one, unless
+      // preserveMultipleSlashes is set to true.
+      if (this.preserveMultipleSlashes) {
+        return p.split('/');
+      } else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
+        // add an extra '' for the one we lose
+        return [''].concat((0,toConsumableArray/* default */.A)(p.split(/\/+/)));
+      } else {
+        return p.split(/\/+/);
+      }
+    }
+  }, {
+    key: "match",
+    value: function match(f) {
+      var partial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.partial;
+      this.debug('match', f, this.pattern);
+      // short-circuit in the case of busted things.
+      // comments, etc.
+      if (this.comment) {
+        return false;
+      }
+      if (this.empty) {
+        return f === '';
+      }
+      if (f === '/' && partial) {
+        return true;
+      }
+      var options = this.options;
+      // windows: need to use /, not \
+      if (this.isWindows) {
+        f = f.split('\\').join('/');
+      }
+      // treat the test path as a set of pathparts.
+      var ff = this.slashSplit(f);
+      this.debug(this.pattern, 'split', ff);
+      // just ONE of the pattern sets in this.set needs to match
+      // in order for it to be valid.  If negating, then just one
+      // match means that we have failed.
+      // Either way, return on the first hit.
+      var set = this.set;
+      this.debug(this.pattern, 'set', set);
+      // Find the basename of the path by looking for the last non-empty segment
+      var filename = ff[ff.length - 1];
+      if (!filename) {
+        for (var i = ff.length - 2; !filename && i >= 0; i--) {
+          filename = ff[i];
+        }
+      }
+      for (var _i = 0; _i < set.length; _i++) {
+        var pattern = set[_i];
+        var file = ff;
+        if (options.matchBase && pattern.length === 1) {
+          file = [filename];
+        }
+        var hit = this.matchOne(file, pattern, partial);
+        if (hit) {
+          if (options.flipNegate) {
+            return true;
+          }
+          return !this.negate;
+        }
+      }
+      // didn't get any hits.  this is success if it's a negative
+      // pattern, failure otherwise.
+      if (options.flipNegate) {
+        return false;
+      }
+      return this.negate;
+    }
+  }], [{
+    key: "defaults",
+    value: function defaults(def) {
+      return minimatch.defaults(def).Minimatch;
+    }
+  }]);
+}();
+/* c8 ignore start */
+
+
+
+/* c8 ignore stop */
+minimatch.AST = AST;
+minimatch.Minimatch = Minimatch;
+minimatch.escape = escape_escape;
+minimatch.unescape = unescape_unescape;
+//# sourceMappingURL=index.js.map
+;// CONCATENATED MODULE: ./node_modules/dree/bundled/lib/esm/index.esm.js
+
+
+
+
+
+
+
+
+var re = function (n) {
+    return n.DIRECTORY = "directory", n.FILE = "file", n;
+  }(re || {}),
+  ne = function (a) {
+    return a.ALPHABETICAL = "alpha", a.ALPHABETICAL_REVERSE = "antialpha", a.ALPHABETICAL_INSENSITIVE = "alpha-insensitive", a.ALPHABETICAL_INSENSITIVE_REVERSE = "antialpha-insensitive", a;
+  }(ne || {}),
+  se = function (l) {
+    return l.ALPHABETICAL = "alpha", l.ALPHABETICAL_REVERSE = "antialpha", l.ALPHABETICAL_INSENSITIVE = "alpha-insensitive", l.ALPHABETICAL_INSENSITIVE_REVERSE = "antialpha-insensitive", l.FOLDERS_FIRST = "folders-first", l.FILES_FIRST = "files-first", l;
+  }(se || {}),
+  C = {
+    stat: !1,
+    normalize: !1,
+    symbolicLinks: !0,
+    followLinks: !1,
+    sizeInBytes: !0,
+    size: !0,
+    hash: !0,
+    hashAlgorithm: "md5",
+    hashEncoding: "hex",
+    showHidden: !0,
+    depth: void 0,
+    exclude: void 0,
+    matches: void 0,
+    extensions: void 0,
+    emptyDirectory: !1,
+    excludeEmptyDirectories: !1,
+    descendants: !1,
+    descendantsIgnoreDirectories: !1,
+    sorted: !1,
+    postSorted: !1,
+    homeShortcut: !1,
+    skipErrors: !0
+  },
+  B = {
+    symbolicLinks: !0,
+    followLinks: !1,
+    showHidden: !0,
+    depth: void 0,
+    exclude: void 0,
+    extensions: void 0,
+    sorted: !1,
+    postSorted: !1,
+    homeShortcut: !1,
+    skipErrors: !0
+  };
+function D(r, t) {
+  return (0,external_node_path_namespaceObject.resolve)(t.homeShortcut ? r.replace(/^~($|\/|\\)/, (0,external_node_os_namespaceObject.homedir)() + "$1") : r);
+}
+function x(r) {
+  return (Array.isArray(r) ? r : [r]).map(function (t) {
+    return t instanceof RegExp ? t : makeRe(t, {
+      dot: !0
+    });
+  }).filter(function (t) {
+    return t instanceof RegExp;
+  });
+}
+function M(r) {
+  var t = {};
+  if (r) {
+    for (var n in C) t[n] = r[n] !== void 0 ? r[n] : C[n];
+    t.depth < 0 && (t.depth = 0);
+  } else t = C;
+  return t;
+}
+function p(r) {
+  var t = {};
+  if (r) {
+    for (var n in B) t[n] = r[n] !== void 0 ? r[n] : B[n];
+    t.depth < 0 && (t.depth = 0);
+  } else t = B;
+  return t;
+}
+function P(r) {
+  var t = ["B", "KB", "MB", "GB", "TB"],
+    n;
+  for (n = 0; n < t.length && r > 1e3; n++) r /= 1e3;
+  return Math.round(r * 100) / 100 + " " + t[n];
+}
+function L(r, t) {
+  return r.localeCompare(t);
+}
+function k(r, t) {
+  return r.toLowerCase().localeCompare(t.toLowerCase());
+}
+function A(r, t) {
+  if (!t) return r;
+  if (t === !0) return r.sort(L);
+  if (typeof t == "string") switch (t) {
+    case "alpha":
+      return r.sort(L);
+    case "antialpha":
+      return r.sort(L).reverse();
+    case "alpha-insensitive":
+      return r.sort(k);
+    case "antialpha-insensitive":
+      return r.sort(k).reverse();
+    default:
+      return r;
+  } else if (typeof t == "function") return r.sort(t);
+}
+function z(r, t) {
+  return L(r.name, t.name);
+}
+function Y(r, t) {
+  return k(r.name, t.name);
+}
+function ie(r, t) {
+  return r.type === "directory" && t.type === "file" ? -1 : r.type === "file" && t.type === "directory" ? 1 : 0;
+}
+function ae(r, t) {
+  return r.type === "file" && t.type === "directory" ? -1 : r.type === "directory" && t.type === "file" ? 1 : 0;
+}
+function $(r, t) {
+  if (!t) return r;
+  if (t === !0) return r.sort(z);
+  if (typeof t == "string") switch (t) {
+    case "alpha":
+      return r.sort(z);
+    case "antialpha":
+      return r.sort(z).reverse();
+    case "alpha-insensitive":
+      return r.sort(Y);
+    case "antialpha-insensitive":
+      return r.sort(Y).reverse();
+    case "folders-first":
+      return r.sort(ie);
+    case "files-first":
+      return r.sort(ae);
+    default:
+      return r;
+  } else if (typeof t == "function") return r.sort(t);
+}
+function q(r, t) {
+  if (!t) return r;
+  if (t === !0) return r.sort(function (n, e) {
+    return L(n.relativePath, e.relativePath);
+  });
+  if (typeof t == "string") switch (t) {
+    case "alpha":
+      return r.sort(function (n, e) {
+        return L(n.relativePath, e.relativePath);
+      });
+    case "antialpha":
+      return r.sort(function (n, e) {
+        return L(n.relativePath, e.relativePath);
+      }).reverse();
+    case "alpha-insensitive":
+      return r.sort(function (n, e) {
+        return k(n.relativePath, e.relativePath);
+      });
+    case "antialpha-insensitive":
+      return r.sort(function (n, e) {
+        return k(n.relativePath, e.relativePath);
+      }).reverse();
+    default:
+      return r;
+  } else if (typeof t == "function") return r.sort(function (n, e) {
+    return t(n.relativePath, e.relativePath);
+  });
+}
+function U(r, t, n, e, a, d) {
+  if (e.depth !== void 0 && n > e.depth) return null;
+  var l = r === t ? "." : w(r, t);
+  if (e.exclude && r !== t && x(e.exclude).some(function (g) {
+    return g.test("/".concat(l));
+  })) return null;
+  var s = b(t),
+    h;
+  try {
+    h = N(t);
+  } catch (c) {
+    if (e.skipErrors) return null;
+    throw c;
+  }
+  var i;
+  try {
+    i = v(t);
+  } catch (c) {
+    if (e.skipErrors) return null;
+    throw c;
+  }
+  var E = i.isSymbolicLink(),
+    I = h.isFile() ? "file" : "directory";
+  if (!e.showHidden && s.charAt(0) === "." || !e.symbolicLinks && E) return null;
+  var m;
+  if (e.hash) {
+    var c = e.hashAlgorithm;
+    m = V(c), m.update(s);
+  }
+  var o = {
+    name: s,
+    path: e.normalize ? t.replace(/\\/g, "/") : t,
+    relativePath: e.normalize ? l.replace(/\\/g, "/") : l,
+    type: I,
+    isSymbolicLink: E,
+    stat: e.followLinks ? h : i
+  };
+  switch (e.stat || delete o.stat, I) {
+    case "directory":
+      var _c = [],
+        g;
+      if (e.followLinks || !E) {
+        try {
+          g = O(t), g = A(g, e.sorted);
+        } catch (u) {
+          if (e.skipErrors) return null;
+          throw u;
+        }
+        if (e.emptyDirectory && (o.isEmpty = !g.length), g.forEach(function (u) {
+          var f = U(r, T(t, u), n + 1, e, a, d);
+          f !== null && _c.push(f);
+        }), e.excludeEmptyDirectories && !_c.length) return null;
+      }
+      if (e.matches && r !== t) {
+        var u = x(e.matches);
+        if (!_c.length && u.some(function (f) {
+          return !f.test("/".concat(l));
+        })) return null;
+      }
+      if (e.sizeInBytes || e.size) {
+        var _u = _c.reduce(function (f, y) {
+          return f + y.sizeInBytes;
+        }, 0);
+        o.sizeInBytes = _u, o.size = e.size ? P(_u) : void 0, e.sizeInBytes || _c.forEach(function (f) {
+          return f.sizeInBytes = void 0;
+        });
+      }
+      if (e.hash) {
+        _c.forEach(function (f) {
+          m.update(f.hash);
+        });
+        var _u2 = e.hashEncoding;
+        o.hash = m.digest(_u2);
+      }
+      e.descendants && (o.descendants = _c.reduce(function (u, f) {
+        var _f$descendants;
+        return u + (f.type === "directory" && e.descendantsIgnoreDirectories ? 0 : 1) + ((_f$descendants = f.descendants) !== null && _f$descendants !== void 0 ? _f$descendants : 0);
+      }, 0)), _c.length && (o.children = e.postSorted ? $(_c, e.postSorted) : _c);
+      break;
+    case "file":
+      if (o.extension = R(t).replace(".", ""), e.extensions && e.extensions.indexOf(o.extension) === -1 || e.matches && r !== t && x(e.matches).some(function (f) {
+        return !f.test("/".concat(l));
+      })) return null;
+      if (e.sizeInBytes || e.size) {
+        var _u3 = e.followLinks ? h.size : i.size;
+        o.sizeInBytes = _u3, o.size = e.size ? P(_u3) : void 0;
+      }
+      if (e.hash) {
+        var _u4;
+        try {
+          _u4 = Z(t);
+        } catch (y) {
+          if (e.skipErrors) return null;
+          throw y;
+        }
+        m.update(_u4);
+        var f = e.hashEncoding;
+        o.hash = m.digest(f);
+      }
+      break;
+    default:
+      return null;
+  }
+  return a && I === "file" ? a(o, e.followLinks ? h : i) : d && I === "directory" && d(o, e.followLinks ? h : i), o;
+}
+function G(_x, _x2, _x3, _x4, _x5, _x6) {
+  return _G.apply(this, arguments);
+}
+function _G() {
+  _G = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(r, t, n, e, a, d) {
+    var l, s, h, i, E, I, m, c, o, _c2, g, u, _u5, _u6, _u7, _u8, f;
+    return _regeneratorRuntime().wrap(function _callee2$(_context2) {
+      while (1) switch (_context2.prev = _context2.next) {
+        case 0:
+          if (!(e.depth !== void 0 && n > e.depth)) {
+            _context2.next = 2;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 2:
+          l = r === t ? "." : w(r, t);
+          if (!(e.exclude && r !== t && x(e.exclude).some(function (g) {
+            return g.test("/".concat(l));
+          }))) {
+            _context2.next = 5;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 5:
+          s = b(t);
+          _context2.prev = 6;
+          _context2.next = 9;
+          return F(t);
+        case 9:
+          h = _context2.sent;
+          _context2.next = 17;
+          break;
+        case 12:
+          _context2.prev = 12;
+          _context2.t0 = _context2["catch"](6);
+          if (!e.skipErrors) {
+            _context2.next = 16;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 16:
+          throw _context2.t0;
+        case 17:
+          _context2.prev = 17;
+          _context2.next = 20;
+          return H(t);
+        case 20:
+          i = _context2.sent;
+          _context2.next = 28;
+          break;
+        case 23:
+          _context2.prev = 23;
+          _context2.t1 = _context2["catch"](17);
+          if (!e.skipErrors) {
+            _context2.next = 27;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 27:
+          throw _context2.t1;
+        case 28:
+          E = i.isSymbolicLink(), I = h.isFile() ? "file" : "directory";
+          if (!(!e.showHidden && s.charAt(0) === "." || !e.symbolicLinks && E)) {
+            _context2.next = 31;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 31:
+          if (e.hash) {
+            c = e.hashAlgorithm;
+            m = V(c), m.update(s);
+          }
+          o = {
+            name: s,
+            path: e.normalize ? t.replace(/\\/g, "/") : t,
+            relativePath: e.normalize ? l.replace(/\\/g, "/") : l,
+            type: I,
+            isSymbolicLink: E,
+            stat: e.followLinks ? h : i
+          };
+          _context2.t2 = (e.stat || delete o.stat, I);
+          _context2.next = _context2.t2 === "directory" ? 36 : _context2.t2 === "file" ? 65 : 84;
+          break;
+        case 36:
+          _c2 = [];
+          if (!(e.followLinks || !E)) {
+            _context2.next = 57;
+            break;
+          }
+          _context2.prev = 38;
+          _context2.next = 41;
+          return _(t);
+        case 41:
+          g = _context2.sent;
+          g = A(g, e.sorted);
+          _context2.next = 50;
+          break;
+        case 45:
+          _context2.prev = 45;
+          _context2.t3 = _context2["catch"](38);
+          if (!e.skipErrors) {
+            _context2.next = 49;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 49:
+          throw _context2.t3;
+        case 50:
+          e.emptyDirectory && (o.isEmpty = !g.length);
+          _context2.next = 53;
+          return Promise.all(g.map( /*#__PURE__*/function () {
+            var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(u) {
+              return _regeneratorRuntime().wrap(function _callee$(_context) {
+                while (1) switch (_context.prev = _context.next) {
+                  case 0:
+                    _context.next = 2;
+                    return G(r, T(t, u), n + 1, e, a, d);
+                  case 2:
+                    return _context.abrupt("return", _context.sent);
+                  case 3:
+                  case "end":
+                    return _context.stop();
+                }
+              }, _callee);
+            }));
+            return function (_x24) {
+              return _ref.apply(this, arguments);
+            };
+          }()));
+        case 53:
+          _c2 = _context2.sent;
+          _c2 = _c2.filter(function (u) {
+            return u !== null;
+          });
+          if (!(e.excludeEmptyDirectories && !_c2.length)) {
+            _context2.next = 57;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 57:
+          if (!(e.matches && r !== t)) {
+            _context2.next = 61;
+            break;
+          }
+          u = x(e.matches);
+          if (!(!_c2.length && u.some(function (f) {
+            return !f.test("/".concat(l));
+          }))) {
+            _context2.next = 61;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 61:
+          if (e.sizeInBytes || e.size) {
+            _u5 = _c2.reduce(function (f, y) {
+              return f + y.sizeInBytes;
+            }, 0);
+            o.sizeInBytes = _u5, o.size = e.size ? P(_u5) : void 0, e.sizeInBytes || _c2.forEach(function (f) {
+              return f.sizeInBytes = void 0;
+            });
+          }
+          if (e.hash) {
+            _c2.forEach(function (f) {
+              m.update(f.hash);
+            });
+            _u6 = e.hashEncoding;
+            o.hash = m.digest(_u6);
+          }
+          e.descendants && (o.descendants = _c2.reduce(function (u, f) {
+            var _f$descendants2;
+            return u + (f.type === "directory" && e.descendantsIgnoreDirectories ? 0 : 1) + ((_f$descendants2 = f.descendants) !== null && _f$descendants2 !== void 0 ? _f$descendants2 : 0);
+          }, 0)), _c2.length && (o.children = e.postSorted ? $(_c2, e.postSorted) : _c2);
+          return _context2.abrupt("break", 85);
+        case 65:
+          if (!(o.extension = R(t).replace(".", ""), e.extensions && e.extensions.indexOf(o.extension) === -1 || e.matches && r !== t && x(e.matches).some(function (f) {
+            return !f.test("/".concat(l));
+          }))) {
+            _context2.next = 67;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 67:
+          if (e.sizeInBytes || e.size) {
+            _u7 = e.followLinks ? h.size : i.size;
+            o.sizeInBytes = _u7, o.size = e.size ? P(_u7) : void 0;
+          }
+          if (!e.hash) {
+            _context2.next = 83;
+            break;
+          }
+          _context2.prev = 69;
+          _context2.next = 72;
+          return ee(t);
+        case 72:
+          _u8 = _context2.sent;
+          _context2.next = 80;
+          break;
+        case 75:
+          _context2.prev = 75;
+          _context2.t4 = _context2["catch"](69);
+          if (!e.skipErrors) {
+            _context2.next = 79;
+            break;
+          }
+          return _context2.abrupt("return", null);
+        case 79:
+          throw _context2.t4;
+        case 80:
+          m.update(_u8);
+          f = e.hashEncoding;
+          o.hash = m.digest(f);
+        case 83:
+          return _context2.abrupt("break", 85);
+        case 84:
+          return _context2.abrupt("return", null);
+        case 85:
+          if (!(a && I === "file")) {
+            _context2.next = 90;
+            break;
+          }
+          _context2.next = 88;
+          return a(o, e.followLinks ? h : i);
+        case 88:
+          _context2.next = 94;
+          break;
+        case 90:
+          _context2.t5 = d && I === "directory";
+          if (!_context2.t5) {
+            _context2.next = 94;
+            break;
+          }
+          _context2.next = 94;
+          return d(o, e.followLinks ? h : i);
+        case 94:
+          return _context2.abrupt("return", o);
+        case 95:
+        case "end":
+          return _context2.stop();
+      }
+    }, _callee2, null, [[6, 12], [17, 23], [38, 45], [69, 75]]);
+  }));
+  return _G.apply(this, arguments);
+}
+function K(r, t, n) {
+  return !t.symbolicLinks && r.isSymbolicLink || !t.showHidden && r.name.charAt(0) === "." || t.extensions !== void 0 && r.type === "file" && t.extensions.indexOf(r.extension) === -1 || t.exclude && x(t.exclude).some(function (e) {
+    return e.test("/".concat(r.relativePath));
+  }) || t.depth !== void 0 && n > t.depth;
+}
+function j(r, t, n, e, a) {
+  var d = "";
+  return t.map(function (s, h) {
+    var i = "";
+    if (e.depth !== void 0 && a > e.depth || e.exclude && x(e.exclude).some(function (S) {
+      return S.test("/".concat((0,external_node_path_namespaceObject.relative)(r, s)));
+    })) return "";
+    var E = (0,external_node_path_namespaceObject.basename)(s),
+      I;
+    try {
+      I = (0,external_node_fs_namespaceObject.statSync)(s);
+    } catch (y) {
+      if (e.skipErrors) return null;
+      throw y;
+    }
+    var m;
+    try {
+      m = (0,external_node_fs_namespaceObject.lstatSync)(s);
+    } catch (y) {
+      if (e.skipErrors) return null;
+      throw y;
+    }
+    var o = m.isSymbolicLink(),
+      c = I.isFile() ? "file" : "directory";
+    if (!e.showHidden && E.charAt(0) === "." || !e.symbolicLinks && o) return "";
+    var g = (0,external_node_path_namespaceObject.extname)(s).replace(".", "");
+    if (e.extensions && c === "file" && e.extensions.indexOf(g) === -1) return "";
+    var u = o ? ">>" : c === "directory" ? "\u2500> " : "\u2500\u2500 ",
+      f = n + (h === t.length - 1 ? "    " : "\u2502   ");
+    if (i += u + E, (e.followLinks || !o) && c === "directory") {
+      var y;
+      try {
+        y = (0,external_node_fs_namespaceObject.readdirSync)(s).map(function (S) {
+          return (0,external_node_path_namespaceObject.resolve)(s, S);
+        }), y = A(y, e.sorted);
+      } catch (S) {
+        if (e.skipErrors) return null;
+        throw S;
+      }
+      i += y.length ? j(r, y, f, e, a + 1) : "";
+    }
+    return i;
+  }).filter(function (s) {
+    return !!s;
+  }).forEach(function (s, h, i) {
+    d += n + (h === i.length - 1 ? "\u2514" + s : "\u251C" + s);
+  }), d;
+}
+function J(_x7, _x8, _x9, _x10, _x11) {
+  return _J.apply(this, arguments);
+}
+function _J() {
+  _J = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(r, t, n, e, a) {
+    var d;
+    return _regeneratorRuntime().wrap(function _callee4$(_context4) {
+      while (1) switch (_context4.prev = _context4.next) {
+        case 0:
+          d = "";
+          _context4.next = 3;
+          return Promise.all(t.map( /*#__PURE__*/function () {
+            var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(s, h) {
+              var i, E, I, m, o, c, g, u, f, y;
+              return _regeneratorRuntime().wrap(function _callee3$(_context3) {
+                while (1) switch (_context3.prev = _context3.next) {
+                  case 0:
+                    i = "";
+                    if (!(e.depth !== void 0 && a > e.depth || e.exclude && x(e.exclude).some(function (S) {
+                      return S.test("/".concat(w(r, s)));
+                    }))) {
+                      _context3.next = 3;
+                      break;
+                    }
+                    return _context3.abrupt("return", "");
+                  case 3:
+                    E = b(s);
+                    _context3.prev = 4;
+                    _context3.next = 7;
+                    return F(s);
+                  case 7:
+                    I = _context3.sent;
+                    _context3.next = 15;
+                    break;
+                  case 10:
+                    _context3.prev = 10;
+                    _context3.t0 = _context3["catch"](4);
+                    if (!e.skipErrors) {
+                      _context3.next = 14;
+                      break;
+                    }
+                    return _context3.abrupt("return", null);
+                  case 14:
+                    throw _context3.t0;
+                  case 15:
+                    _context3.prev = 15;
+                    _context3.next = 18;
+                    return H(s);
+                  case 18:
+                    m = _context3.sent;
+                    _context3.next = 26;
+                    break;
+                  case 21:
+                    _context3.prev = 21;
+                    _context3.t1 = _context3["catch"](15);
+                    if (!e.skipErrors) {
+                      _context3.next = 25;
+                      break;
+                    }
+                    return _context3.abrupt("return", null);
+                  case 25:
+                    throw _context3.t1;
+                  case 26:
+                    o = m.isSymbolicLink(), c = I.isFile() ? "file" : "directory";
+                    if (!(!e.showHidden && E.charAt(0) === "." || !e.symbolicLinks && o)) {
+                      _context3.next = 29;
+                      break;
+                    }
+                    return _context3.abrupt("return", "");
+                  case 29:
+                    g = R(s).replace(".", "");
+                    if (!(e.extensions && c === "file" && e.extensions.indexOf(g) === -1)) {
+                      _context3.next = 32;
+                      break;
+                    }
+                    return _context3.abrupt("return", "");
+                  case 32:
+                    u = o ? ">>" : c === "directory" ? "\u2500> " : "\u2500\u2500 ", f = n + (h === t.length - 1 ? "    " : "\u2502   ");
+                    if (!(i += u + E, (e.followLinks || !o) && c === "directory")) {
+                      _context3.next = 55;
+                      break;
+                    }
+                    _context3.prev = 34;
+                    _context3.next = 37;
+                    return _(s);
+                  case 37:
+                    y = _context3.sent.map(function (S) {
+                      return T(s, S);
+                    });
+                    y = A(y, e.sorted);
+                    _context3.next = 46;
+                    break;
+                  case 41:
+                    _context3.prev = 41;
+                    _context3.t2 = _context3["catch"](34);
+                    if (!e.skipErrors) {
+                      _context3.next = 45;
+                      break;
+                    }
+                    return _context3.abrupt("return", null);
+                  case 45:
+                    throw _context3.t2;
+                  case 46:
+                    _context3.t3 = i;
+                    if (!y.length) {
+                      _context3.next = 53;
+                      break;
+                    }
+                    _context3.next = 50;
+                    return J(r, y, f, e, a + 1);
+                  case 50:
+                    _context3.t4 = _context3.sent;
+                    _context3.next = 54;
+                    break;
+                  case 53:
+                    _context3.t4 = "";
+                  case 54:
+                    i = _context3.t3 += _context3.t4;
+                  case 55:
+                    return _context3.abrupt("return", i);
+                  case 56:
+                  case "end":
+                    return _context3.stop();
+                }
+              }, _callee3, null, [[4, 10], [15, 21], [34, 41]]);
+            }));
+            return function (_x25, _x26) {
+              return _ref2.apply(this, arguments);
+            };
+          }()));
+        case 3:
+          _context4.sent.filter(function (s) {
+            return !!s;
+          }).forEach(function (s, h, i) {
+            d += n + (h === i.length - 1 ? "\u2514" + s : "\u251C" + s);
+          });
+          return _context4.abrupt("return", d);
+        case 5:
+        case "end":
+          return _context4.stop();
+      }
+    }, _callee4);
+  }));
+  return _J.apply(this, arguments);
+}
+function Q(r, t, n, e) {
+  var a = "";
+  return r = q(r, n.sorted), r.filter(function (d) {
+    return !K(d, n, e);
+  }).forEach(function (d, l, s) {
+    var h = d.isSymbolicLink ? ">>" : d.type === "directory" ? "\u2500> " : "\u2500\u2500 ",
+      i = l === s.length - 1 ? "\u2514" + h : "\u251C" + h,
+      E = t + (l === s.length - 1 ? "    " : "\u2502   ");
+    a += t + i + d.name, a += d.children && (n.followLinks || !d.isSymbolicLink) ? Q(d.children, E, n, e + 1) : "";
+  }), a;
+}
+function W(_x12, _x13, _x14, _x15) {
+  return _W.apply(this, arguments);
+}
+function _W() {
+  _W = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(r, t, n, e) {
+    var a, d, l, s, h, i, E;
+    return _regeneratorRuntime().wrap(function _callee5$(_context5) {
+      while (1) switch (_context5.prev = _context5.next) {
+        case 0:
+          a = "";
+          r = q(r, n.sorted);
+          d = r.filter(function (l) {
+            return !K(l, n, e);
+          });
+          l = 0;
+        case 4:
+          if (!(l < d.length)) {
+            _context5.next = 19;
+            break;
+          }
+          s = d[l], h = s.isSymbolicLink ? ">>" : s.type === "directory" ? "\u2500> " : "\u2500\u2500 ", i = l === d.length - 1 ? "\u2514" + h : "\u251C" + h, E = t + (l === d.length - 1 ? "    " : "\u2502   ");
+          a += t + i + s.name;
+          _context5.t0 = a;
+          if (!(s.children && (n.followLinks || !s.isSymbolicLink))) {
+            _context5.next = 14;
+            break;
+          }
+          _context5.next = 11;
+          return W(s.children, E, n, e + 1);
+        case 11:
+          _context5.t1 = _context5.sent;
+          _context5.next = 15;
+          break;
+        case 14:
+          _context5.t1 = "";
+        case 15:
+          a = _context5.t0 += _context5.t1;
+        case 16:
+          l++;
+          _context5.next = 4;
+          break;
+        case 19:
+          return _context5.abrupt("return", a);
+        case 20:
+        case "end":
+          return _context5.stop();
+      }
+    }, _callee5);
+  }));
+  return _W.apply(this, arguments);
+}
+function me(r, t, n, e) {
+  var a = M(t),
+    d = D(r, a),
+    l = U(d, d, 0, a, n, e);
+  return l && (l.sizeInBytes = a.sizeInBytes ? l.sizeInBytes : void 0), l;
+}
+function ge(_x16, _x17, _x18, _x19) {
+  return _ge.apply(this, arguments);
+}
+function _ge() {
+  _ge = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(r, t, n, e) {
+    var a, d, l;
+    return _regeneratorRuntime().wrap(function _callee6$(_context6) {
+      while (1) switch (_context6.prev = _context6.next) {
+        case 0:
+          a = M(t);
+          d = D(r, a);
+          _context6.next = 4;
+          return G(d, d, 0, a, n, e);
+        case 4:
+          l = _context6.sent;
+          return _context6.abrupt("return", (l && (l.sizeInBytes = a.sizeInBytes ? l.sizeInBytes : void 0), l));
+        case 6:
+        case "end":
+          return _context6.stop();
+      }
+    }, _callee6);
+  }));
+  return _ge.apply(this, arguments);
+}
+function Ie(r, t) {
+  var n = "",
+    e = p(t),
+    a = D(r, e),
+    d = (0,external_node_path_namespaceObject.basename)(a);
+  n += d;
+  var l;
+  try {
+    l = (0,external_node_fs_namespaceObject.statSync)(a);
+  } catch (i) {
+    if (e.skipErrors) return null;
+    throw i;
+  }
+  var s;
+  try {
+    s = (0,external_node_fs_namespaceObject.lstatSync)(a);
+  } catch (i) {
+    if (e.skipErrors) return null;
+    throw i;
+  }
+  var h = s.isSymbolicLink();
+  if ((e.followLinks || !h) && l.isDirectory()) {
+    var i;
+    try {
+      i = (0,external_node_fs_namespaceObject.readdirSync)(a).map(function (E) {
+        return (0,external_node_path_namespaceObject.resolve)(a, E);
+      }), i = A(i, e.sorted);
+    } catch (E) {
+      if (e.skipErrors) return null;
+      throw E;
+    }
+    n += i.length ? j(a, i, "\n ", e, 1) : "";
+  }
+  return n;
+}
+function Se(_x20, _x21) {
+  return _Se.apply(this, arguments);
+}
+function _Se() {
+  _Se = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(r, t) {
+    var n, e, a, d, l, s, h, i;
+    return _regeneratorRuntime().wrap(function _callee7$(_context7) {
+      while (1) switch (_context7.prev = _context7.next) {
+        case 0:
+          n = "", e = p(t), a = D(r, e), d = b(a);
+          n += d;
+          _context7.prev = 2;
+          _context7.next = 5;
+          return F(a);
+        case 5:
+          l = _context7.sent;
+          _context7.next = 13;
+          break;
+        case 8:
+          _context7.prev = 8;
+          _context7.t0 = _context7["catch"](2);
+          if (!e.skipErrors) {
+            _context7.next = 12;
+            break;
+          }
+          return _context7.abrupt("return", null);
+        case 12:
+          throw _context7.t0;
+        case 13:
+          _context7.prev = 13;
+          _context7.next = 16;
+          return H(a);
+        case 16:
+          s = _context7.sent;
+          _context7.next = 24;
+          break;
+        case 19:
+          _context7.prev = 19;
+          _context7.t1 = _context7["catch"](13);
+          if (!e.skipErrors) {
+            _context7.next = 23;
+            break;
+          }
+          return _context7.abrupt("return", null);
+        case 23:
+          throw _context7.t1;
+        case 24:
+          h = s.isSymbolicLink();
+          if (!((e.followLinks || !h) && l.isDirectory())) {
+            _context7.next = 47;
+            break;
+          }
+          _context7.prev = 26;
+          _context7.next = 29;
+          return _(a);
+        case 29:
+          i = _context7.sent.map(function (E) {
+            return T(a, E);
+          });
+          i = A(i, e.sorted);
+          _context7.next = 38;
+          break;
+        case 33:
+          _context7.prev = 33;
+          _context7.t2 = _context7["catch"](26);
+          if (!e.skipErrors) {
+            _context7.next = 37;
+            break;
+          }
+          return _context7.abrupt("return", null);
+        case 37:
+          throw _context7.t2;
+        case 38:
+          _context7.t3 = n;
+          if (!i.length) {
+            _context7.next = 45;
+            break;
+          }
+          _context7.next = 42;
+          return J(a, i, "\n ", e, 1);
+        case 42:
+          _context7.t4 = _context7.sent;
+          _context7.next = 46;
+          break;
+        case 45:
+          _context7.t4 = "";
+        case 46:
+          n = _context7.t3 += _context7.t4;
+        case 47:
+          return _context7.abrupt("return", n);
+        case 48:
+        case "end":
+          return _context7.stop();
+      }
+    }, _callee7, null, [[2, 8], [13, 19], [26, 33]]);
+  }));
+  return _Se.apply(this, arguments);
+}
+function xe(r, t) {
+  var n = "",
+    e = p(t);
+  return n += r ? r.name : "", n += r.children ? Q(r.children, "\n ", e, 1) : "", n;
+}
+function Le(_x22, _x23) {
+  return _Le.apply(this, arguments);
+}
+function _Le() {
+  _Le = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(r, t) {
+    var n, e;
+    return _regeneratorRuntime().wrap(function _callee8$(_context8) {
+      while (1) switch (_context8.prev = _context8.next) {
+        case 0:
+          n = "", e = p(t);
+          n += r ? r.name : "";
+          _context8.t0 = n;
+          if (!r.children) {
+            _context8.next = 9;
+            break;
+          }
+          _context8.next = 6;
+          return W(r.children, "\n ", e, 1);
+        case 6:
+          _context8.t1 = _context8.sent;
+          _context8.next = 10;
+          break;
+        case 9:
+          _context8.t1 = "";
+        case 10:
+          n = _context8.t0 += _context8.t1;
+          return _context8.abrupt("return", n);
+        case 12:
+        case "end":
+          return _context8.stop();
+      }
+    }, _callee8);
+  }));
+  return _Le.apply(this, arguments);
+}
+
+;// CONCATENATED MODULE: ./src/index.ts
+function convertToNumber(str){var num=+str;return isNaN(num)?5:num;};(0,asyncToGenerator/* default */.A)(/*#__PURE__*/(0,regeneratorRuntime/* default */.A)().mark(function _callee(){var folderPath,depth,_context$repo,owner,repo,dreeResult;return (0,regeneratorRuntime/* default */.A)().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:folderPath=(0,core.getInput)('path')||".";depth=convertToNumber((0,core.getInput)('depth')||"5");_context$repo=github.context.repo,owner=_context$repo.owner,repo=_context$repo.repo;dreeResult=Ie(folderPath,{depth:depth});(0,core.startGroup)("\x1B[32;1m ".concat(owner,"/").concat(repo," \x1B[0m tree: "));(0,core.info)("".concat(dreeResult));(0,core.endGroup)();(0,core.setOutput)('content',dreeResult);case 8:case"end":return _context.stop();}},_callee);}))();
+})();
+
+module.exports = __webpack_exports__;
+/******/ })()
+;
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..6639a36
--- /dev/null
+++ b/package.json
@@ -0,0 +1,39 @@
+{
+  "name": "github-action-folder-tree",
+  "version": "0.0.1",
+  "description": "View the folder directory tree structure, similar to the output of the tree command",
+  "homepage": "https://github.com/jaywcjlove/github-action-folder-tree#readme",
+  "main": "dist/index.js",
+  "scripts": {
+    "prepare": "husky",
+    "start": "npm run watch",
+    "build": "ncc build src/index.ts -o dist",
+    "watch": "ncc watch src/index.ts -o dist"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/jaywcjlove/github-action-folder-tree.git"
+  },
+  "keywords": [
+    "actions",
+    "folder",
+    "tree",
+    "github"
+  ],
+  "author": "jaywcjlove",
+  "license": "MIT",
+  "engines": {
+    "node": ">=v20.11.0",
+    "npm": ">=10.2.4"
+  },
+  "dependencies": {
+    "@actions/core": "^1.10.1",
+    "@actions/github": "^6.0.0",
+    "dree": "^5.0.8"
+  },
+  "devDependencies": {
+    "@kkt/ncc": "^1.1.2",
+    "husky": "^9.1.3",
+    "lint-staged": "^15.2.7"
+  }
+}
diff --git a/renovate.json b/renovate.json
new file mode 100644
index 0000000..568dd0b
--- /dev/null
+++ b/renovate.json
@@ -0,0 +1,12 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base"
+  ],
+  "packageRules": [
+    {
+      "matchPackagePatterns": ["*"],
+      "rangeStrategy": "replace"
+    }
+  ]
+}
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..68c6c79
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,20 @@
+import { context } from '@actions/github';
+import { getInput, setOutput, startGroup, info, endGroup } from '@actions/core';
+import * as dree from 'dree';
+
+function convertToNumber(str: string): number {
+  const num = +str;
+  return isNaN(num) ? 5 : num;
+}
+
+;(async () => {
+  const folderPath = getInput('path') || ".";
+  const depth: number = convertToNumber(getInput('depth') || "5");
+  const {owner, repo} = context.repo
+  const dreeResult = dree.parse(folderPath, { depth });
+
+  startGroup(`\x1b[32;1m ${owner}/${repo} \x1b[0m tree: `);
+  info(`${dreeResult}`);
+  endGroup();
+  setOutput('content', dreeResult);
+})();
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..669966f
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,20 @@
+{
+  "compilerOptions": {
+    "target": "es2015",
+    "module": "commonjs",
+    "outDir": "./lib",
+    "rootDir": "./src",
+    "strict": true,
+    "noImplicitAny": true,
+    "declaration": true,
+    "noEmit": true,
+    "esModuleInterop": true,
+    "moduleResolution": "node",
+  },
+  "include": [
+    "src/**/*.ts",
+  ],
+  "exclude": [
+    "node_modules"
+  ]
+}