openai/codex-action

Public

mirrored from https://github.com/openai/codex-actionAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
pr21

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

dist/main.js

10927lines · modecode

1"use strict";
2var __create = Object.create;
3var __defProp = Object.defineProperty;
4var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5var __getOwnPropNames = Object.getOwnPropertyNames;
6var __getProtoOf = Object.getPrototypeOf;
7var __hasOwnProp = Object.prototype.hasOwnProperty;
8var __commonJS = (cb, mod) => function __require() {
9 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10};
11var __export = (target, all) => {
12 for (var name in all)
13 __defProp(target, name, { get: all[name], enumerable: true });
14};
15var __copyProps = (to, from, except, desc) => {
16 if (from && typeof from === "object" || typeof from === "function") {
17 for (let key of __getOwnPropNames(from))
18 if (!__hasOwnProp.call(to, key) && key !== except)
19 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
20 }
21 return to;
22};
23var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24 // If the importer is in node compatibility mode or this is not an ESM
25 // file that has been converted to a CommonJS file using a Babel-
26 // compatible transform (i.e. "__esModule" has not been set), then set
27 // "default" to the CommonJS "module.exports" for node compatibility.
28 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29 mod
30));
31var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
33// node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/error.js
34var require_error = __commonJS({
35 "node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/error.js"(exports2) {
36 var CommanderError2 = class extends Error {
37 /**
38 * Constructs the CommanderError class
39 * @param {number} exitCode suggested exit code which could be used with process.exit
40 * @param {string} code an id string representing the error
41 * @param {string} message human-readable description of the error
42 */
43 constructor(exitCode, code, message) {
44 super(message);
45 Error.captureStackTrace(this, this.constructor);
46 this.name = this.constructor.name;
47 this.code = code;
48 this.exitCode = exitCode;
49 this.nestedError = void 0;
50 }
51 };
52 var InvalidArgumentError2 = class extends CommanderError2 {
53 /**
54 * Constructs the InvalidArgumentError class
55 * @param {string} [message] explanation of why argument is invalid
56 */
57 constructor(message) {
58 super(1, "commander.invalidArgument", message);
59 Error.captureStackTrace(this, this.constructor);
60 this.name = this.constructor.name;
61 }
62 };
63 exports2.CommanderError = CommanderError2;
64 exports2.InvalidArgumentError = InvalidArgumentError2;
65 }
66});
67
68// node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/argument.js
69var require_argument = __commonJS({
70 "node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/argument.js"(exports2) {
71 var { InvalidArgumentError: InvalidArgumentError2 } = require_error();
72 var Argument2 = class {
73 /**
74 * Initialize a new command argument with the given name and description.
75 * The default is that the argument is required, and you can explicitly
76 * indicate this with <> around the name. Put [] around the name for an optional argument.
77 *
78 * @param {string} name
79 * @param {string} [description]
80 */
81 constructor(name, description) {
82 this.description = description || "";
83 this.variadic = false;
84 this.parseArg = void 0;
85 this.defaultValue = void 0;
86 this.defaultValueDescription = void 0;
87 this.argChoices = void 0;
88 switch (name[0]) {
89 case "<":
90 this.required = true;
91 this._name = name.slice(1, -1);
92 break;
93 case "[":
94 this.required = false;
95 this._name = name.slice(1, -1);
96 break;
97 default:
98 this.required = true;
99 this._name = name;
100 break;
101 }
102 if (this._name.endsWith("...")) {
103 this.variadic = true;
104 this._name = this._name.slice(0, -3);
105 }
106 }
107 /**
108 * Return argument name.
109 *
110 * @return {string}
111 */
112 name() {
113 return this._name;
114 }
115 /**
116 * @package
117 */
118 _collectValue(value, previous) {
119 if (previous === this.defaultValue || !Array.isArray(previous)) {
120 return [value];
121 }
122 previous.push(value);
123 return previous;
124 }
125 /**
126 * Set the default value, and optionally supply the description to be displayed in the help.
127 *
128 * @param {*} value
129 * @param {string} [description]
130 * @return {Argument}
131 */
132 default(value, description) {
133 this.defaultValue = value;
134 this.defaultValueDescription = description;
135 return this;
136 }
137 /**
138 * Set the custom handler for processing CLI command arguments into argument values.
139 *
140 * @param {Function} [fn]
141 * @return {Argument}
142 */
143 argParser(fn) {
144 this.parseArg = fn;
145 return this;
146 }
147 /**
148 * Only allow argument value to be one of choices.
149 *
150 * @param {string[]} values
151 * @return {Argument}
152 */
153 choices(values) {
154 this.argChoices = values.slice();
155 this.parseArg = (arg, previous) => {
156 if (!this.argChoices.includes(arg)) {
157 throw new InvalidArgumentError2(
158 `Allowed choices are ${this.argChoices.join(", ")}.`
159 );
160 }
161 if (this.variadic) {
162 return this._collectValue(arg, previous);
163 }
164 return arg;
165 };
166 return this;
167 }
168 /**
169 * Make argument required.
170 *
171 * @returns {Argument}
172 */
173 argRequired() {
174 this.required = true;
175 return this;
176 }
177 /**
178 * Make argument optional.
179 *
180 * @returns {Argument}
181 */
182 argOptional() {
183 this.required = false;
184 return this;
185 }
186 };
187 function humanReadableArgName(arg) {
188 const nameOutput = arg.name() + (arg.variadic === true ? "..." : "");
189 return arg.required ? "<" + nameOutput + ">" : "[" + nameOutput + "]";
190 }
191 exports2.Argument = Argument2;
192 exports2.humanReadableArgName = humanReadableArgName;
193 }
194});
195
196// node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/help.js
197var require_help = __commonJS({
198 "node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/help.js"(exports2) {
199 var { humanReadableArgName } = require_argument();
200 var Help2 = class {
201 constructor() {
202 this.helpWidth = void 0;
203 this.minWidthToWrap = 40;
204 this.sortSubcommands = false;
205 this.sortOptions = false;
206 this.showGlobalOptions = false;
207 }
208 /**
209 * prepareContext is called by Commander after applying overrides from `Command.configureHelp()`
210 * and just before calling `formatHelp()`.
211 *
212 * Commander just uses the helpWidth and the rest is provided for optional use by more complex subclasses.
213 *
214 * @param {{ error?: boolean, helpWidth?: number, outputHasColors?: boolean }} contextOptions
215 */
216 prepareContext(contextOptions) {
217 this.helpWidth = this.helpWidth ?? contextOptions.helpWidth ?? 80;
218 }
219 /**
220 * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.
221 *
222 * @param {Command} cmd
223 * @returns {Command[]}
224 */
225 visibleCommands(cmd) {
226 const visibleCommands = cmd.commands.filter((cmd2) => !cmd2._hidden);
227 const helpCommand = cmd._getHelpCommand();
228 if (helpCommand && !helpCommand._hidden) {
229 visibleCommands.push(helpCommand);
230 }
231 if (this.sortSubcommands) {
232 visibleCommands.sort((a, b) => {
233 return a.name().localeCompare(b.name());
234 });
235 }
236 return visibleCommands;
237 }
238 /**
239 * Compare options for sort.
240 *
241 * @param {Option} a
242 * @param {Option} b
243 * @returns {number}
244 */
245 compareOptions(a, b) {
246 const getSortKey = (option) => {
247 return option.short ? option.short.replace(/^-/, "") : option.long.replace(/^--/, "");
248 };
249 return getSortKey(a).localeCompare(getSortKey(b));
250 }
251 /**
252 * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.
253 *
254 * @param {Command} cmd
255 * @returns {Option[]}
256 */
257 visibleOptions(cmd) {
258 const visibleOptions = cmd.options.filter((option) => !option.hidden);
259 const helpOption = cmd._getHelpOption();
260 if (helpOption && !helpOption.hidden) {
261 const removeShort = helpOption.short && cmd._findOption(helpOption.short);
262 const removeLong = helpOption.long && cmd._findOption(helpOption.long);
263 if (!removeShort && !removeLong) {
264 visibleOptions.push(helpOption);
265 } else if (helpOption.long && !removeLong) {
266 visibleOptions.push(
267 cmd.createOption(helpOption.long, helpOption.description)
268 );
269 } else if (helpOption.short && !removeShort) {
270 visibleOptions.push(
271 cmd.createOption(helpOption.short, helpOption.description)
272 );
273 }
274 }
275 if (this.sortOptions) {
276 visibleOptions.sort(this.compareOptions);
277 }
278 return visibleOptions;
279 }
280 /**
281 * Get an array of the visible global options. (Not including help.)
282 *
283 * @param {Command} cmd
284 * @returns {Option[]}
285 */
286 visibleGlobalOptions(cmd) {
287 if (!this.showGlobalOptions) return [];
288 const globalOptions = [];
289 for (let ancestorCmd = cmd.parent; ancestorCmd; ancestorCmd = ancestorCmd.parent) {
290 const visibleOptions = ancestorCmd.options.filter(
291 (option) => !option.hidden
292 );
293 globalOptions.push(...visibleOptions);
294 }
295 if (this.sortOptions) {
296 globalOptions.sort(this.compareOptions);
297 }
298 return globalOptions;
299 }
300 /**
301 * Get an array of the arguments if any have a description.
302 *
303 * @param {Command} cmd
304 * @returns {Argument[]}
305 */
306 visibleArguments(cmd) {
307 if (cmd._argsDescription) {
308 cmd.registeredArguments.forEach((argument) => {
309 argument.description = argument.description || cmd._argsDescription[argument.name()] || "";
310 });
311 }
312 if (cmd.registeredArguments.find((argument) => argument.description)) {
313 return cmd.registeredArguments;
314 }
315 return [];
316 }
317 /**
318 * Get the command term to show in the list of subcommands.
319 *
320 * @param {Command} cmd
321 * @returns {string}
322 */
323 subcommandTerm(cmd) {
324 const args = cmd.registeredArguments.map((arg) => humanReadableArgName(arg)).join(" ");
325 return cmd._name + (cmd._aliases[0] ? "|" + cmd._aliases[0] : "") + (cmd.options.length ? " [options]" : "") + // simplistic check for non-help option
326 (args ? " " + args : "");
327 }
328 /**
329 * Get the option term to show in the list of options.
330 *
331 * @param {Option} option
332 * @returns {string}
333 */
334 optionTerm(option) {
335 return option.flags;
336 }
337 /**
338 * Get the argument term to show in the list of arguments.
339 *
340 * @param {Argument} argument
341 * @returns {string}
342 */
343 argumentTerm(argument) {
344 return argument.name();
345 }
346 /**
347 * Get the longest command term length.
348 *
349 * @param {Command} cmd
350 * @param {Help} helper
351 * @returns {number}
352 */
353 longestSubcommandTermLength(cmd, helper) {
354 return helper.visibleCommands(cmd).reduce((max, command) => {
355 return Math.max(
356 max,
357 this.displayWidth(
358 helper.styleSubcommandTerm(helper.subcommandTerm(command))
359 )
360 );
361 }, 0);
362 }
363 /**
364 * Get the longest option term length.
365 *
366 * @param {Command} cmd
367 * @param {Help} helper
368 * @returns {number}
369 */
370 longestOptionTermLength(cmd, helper) {
371 return helper.visibleOptions(cmd).reduce((max, option) => {
372 return Math.max(
373 max,
374 this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option)))
375 );
376 }, 0);
377 }
378 /**
379 * Get the longest global option term length.
380 *
381 * @param {Command} cmd
382 * @param {Help} helper
383 * @returns {number}
384 */
385 longestGlobalOptionTermLength(cmd, helper) {
386 return helper.visibleGlobalOptions(cmd).reduce((max, option) => {
387 return Math.max(
388 max,
389 this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option)))
390 );
391 }, 0);
392 }
393 /**
394 * Get the longest argument term length.
395 *
396 * @param {Command} cmd
397 * @param {Help} helper
398 * @returns {number}
399 */
400 longestArgumentTermLength(cmd, helper) {
401 return helper.visibleArguments(cmd).reduce((max, argument) => {
402 return Math.max(
403 max,
404 this.displayWidth(
405 helper.styleArgumentTerm(helper.argumentTerm(argument))
406 )
407 );
408 }, 0);
409 }
410 /**
411 * Get the command usage to be displayed at the top of the built-in help.
412 *
413 * @param {Command} cmd
414 * @returns {string}
415 */
416 commandUsage(cmd) {
417 let cmdName = cmd._name;
418 if (cmd._aliases[0]) {
419 cmdName = cmdName + "|" + cmd._aliases[0];
420 }
421 let ancestorCmdNames = "";
422 for (let ancestorCmd = cmd.parent; ancestorCmd; ancestorCmd = ancestorCmd.parent) {
423 ancestorCmdNames = ancestorCmd.name() + " " + ancestorCmdNames;
424 }
425 return ancestorCmdNames + cmdName + " " + cmd.usage();
426 }
427 /**
428 * Get the description for the command.
429 *
430 * @param {Command} cmd
431 * @returns {string}
432 */
433 commandDescription(cmd) {
434 return cmd.description();
435 }
436 /**
437 * Get the subcommand summary to show in the list of subcommands.
438 * (Fallback to description for backwards compatibility.)
439 *
440 * @param {Command} cmd
441 * @returns {string}
442 */
443 subcommandDescription(cmd) {
444 return cmd.summary() || cmd.description();
445 }
446 /**
447 * Get the option description to show in the list of options.
448 *
449 * @param {Option} option
450 * @return {string}
451 */
452 optionDescription(option) {
453 const extraInfo = [];
454 if (option.argChoices) {
455 extraInfo.push(
456 // use stringify to match the display of the default value
457 `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(", ")}`
458 );
459 }
460 if (option.defaultValue !== void 0) {
461 const showDefault = option.required || option.optional || option.isBoolean() && typeof option.defaultValue === "boolean";
462 if (showDefault) {
463 extraInfo.push(
464 `default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`
465 );
466 }
467 }
468 if (option.presetArg !== void 0 && option.optional) {
469 extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`);
470 }
471 if (option.envVar !== void 0) {
472 extraInfo.push(`env: ${option.envVar}`);
473 }
474 if (extraInfo.length > 0) {
475 const extraDescription = `(${extraInfo.join(", ")})`;
476 if (option.description) {
477 return `${option.description} ${extraDescription}`;
478 }
479 return extraDescription;
480 }
481 return option.description;
482 }
483 /**
484 * Get the argument description to show in the list of arguments.
485 *
486 * @param {Argument} argument
487 * @return {string}
488 */
489 argumentDescription(argument) {
490 const extraInfo = [];
491 if (argument.argChoices) {
492 extraInfo.push(
493 // use stringify to match the display of the default value
494 `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(", ")}`
495 );
496 }
497 if (argument.defaultValue !== void 0) {
498 extraInfo.push(
499 `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`
500 );
501 }
502 if (extraInfo.length > 0) {
503 const extraDescription = `(${extraInfo.join(", ")})`;
504 if (argument.description) {
505 return `${argument.description} ${extraDescription}`;
506 }
507 return extraDescription;
508 }
509 return argument.description;
510 }
511 /**
512 * Format a list of items, given a heading and an array of formatted items.
513 *
514 * @param {string} heading
515 * @param {string[]} items
516 * @param {Help} helper
517 * @returns string[]
518 */
519 formatItemList(heading, items, helper) {
520 if (items.length === 0) return [];
521 return [helper.styleTitle(heading), ...items, ""];
522 }
523 /**
524 * Group items by their help group heading.
525 *
526 * @param {Command[] | Option[]} unsortedItems
527 * @param {Command[] | Option[]} visibleItems
528 * @param {Function} getGroup
529 * @returns {Map<string, Command[] | Option[]>}
530 */
531 groupItems(unsortedItems, visibleItems, getGroup) {
532 const result = /* @__PURE__ */ new Map();
533 unsortedItems.forEach((item) => {
534 const group = getGroup(item);
535 if (!result.has(group)) result.set(group, []);
536 });
537 visibleItems.forEach((item) => {
538 const group = getGroup(item);
539 if (!result.has(group)) {
540 result.set(group, []);
541 }
542 result.get(group).push(item);
543 });
544 return result;
545 }
546 /**
547 * Generate the built-in help text.
548 *
549 * @param {Command} cmd
550 * @param {Help} helper
551 * @returns {string}
552 */
553 formatHelp(cmd, helper) {
554 const termWidth = helper.padWidth(cmd, helper);
555 const helpWidth = helper.helpWidth ?? 80;
556 function callFormatItem(term, description) {
557 return helper.formatItem(term, termWidth, description, helper);
558 }
559 let output = [
560 `${helper.styleTitle("Usage:")} ${helper.styleUsage(helper.commandUsage(cmd))}`,
561 ""
562 ];
563 const commandDescription = helper.commandDescription(cmd);
564 if (commandDescription.length > 0) {
565 output = output.concat([
566 helper.boxWrap(
567 helper.styleCommandDescription(commandDescription),
568 helpWidth
569 ),
570 ""
571 ]);
572 }
573 const argumentList = helper.visibleArguments(cmd).map((argument) => {
574 return callFormatItem(
575 helper.styleArgumentTerm(helper.argumentTerm(argument)),
576 helper.styleArgumentDescription(helper.argumentDescription(argument))
577 );
578 });
579 output = output.concat(
580 this.formatItemList("Arguments:", argumentList, helper)
581 );
582 const optionGroups = this.groupItems(
583 cmd.options,
584 helper.visibleOptions(cmd),
585 (option) => option.helpGroupHeading ?? "Options:"
586 );
587 optionGroups.forEach((options, group) => {
588 const optionList = options.map((option) => {
589 return callFormatItem(
590 helper.styleOptionTerm(helper.optionTerm(option)),
591 helper.styleOptionDescription(helper.optionDescription(option))
592 );
593 });
594 output = output.concat(this.formatItemList(group, optionList, helper));
595 });
596 if (helper.showGlobalOptions) {
597 const globalOptionList = helper.visibleGlobalOptions(cmd).map((option) => {
598 return callFormatItem(
599 helper.styleOptionTerm(helper.optionTerm(option)),
600 helper.styleOptionDescription(helper.optionDescription(option))
601 );
602 });
603 output = output.concat(
604 this.formatItemList("Global Options:", globalOptionList, helper)
605 );
606 }
607 const commandGroups = this.groupItems(
608 cmd.commands,
609 helper.visibleCommands(cmd),
610 (sub) => sub.helpGroup() || "Commands:"
611 );
612 commandGroups.forEach((commands, group) => {
613 const commandList = commands.map((sub) => {
614 return callFormatItem(
615 helper.styleSubcommandTerm(helper.subcommandTerm(sub)),
616 helper.styleSubcommandDescription(helper.subcommandDescription(sub))
617 );
618 });
619 output = output.concat(this.formatItemList(group, commandList, helper));
620 });
621 return output.join("\n");
622 }
623 /**
624 * Return display width of string, ignoring ANSI escape sequences. Used in padding and wrapping calculations.
625 *
626 * @param {string} str
627 * @returns {number}
628 */
629 displayWidth(str) {
630 return stripColor(str).length;
631 }
632 /**
633 * Style the title for displaying in the help. Called with 'Usage:', 'Options:', etc.
634 *
635 * @param {string} str
636 * @returns {string}
637 */
638 styleTitle(str) {
639 return str;
640 }
641 styleUsage(str) {
642 return str.split(" ").map((word) => {
643 if (word === "[options]") return this.styleOptionText(word);
644 if (word === "[command]") return this.styleSubcommandText(word);
645 if (word[0] === "[" || word[0] === "<")
646 return this.styleArgumentText(word);
647 return this.styleCommandText(word);
648 }).join(" ");
649 }
650 styleCommandDescription(str) {
651 return this.styleDescriptionText(str);
652 }
653 styleOptionDescription(str) {
654 return this.styleDescriptionText(str);
655 }
656 styleSubcommandDescription(str) {
657 return this.styleDescriptionText(str);
658 }
659 styleArgumentDescription(str) {
660 return this.styleDescriptionText(str);
661 }
662 styleDescriptionText(str) {
663 return str;
664 }
665 styleOptionTerm(str) {
666 return this.styleOptionText(str);
667 }
668 styleSubcommandTerm(str) {
669 return str.split(" ").map((word) => {
670 if (word === "[options]") return this.styleOptionText(word);
671 if (word[0] === "[" || word[0] === "<")
672 return this.styleArgumentText(word);
673 return this.styleSubcommandText(word);
674 }).join(" ");
675 }
676 styleArgumentTerm(str) {
677 return this.styleArgumentText(str);
678 }
679 styleOptionText(str) {
680 return str;
681 }
682 styleArgumentText(str) {
683 return str;
684 }
685 styleSubcommandText(str) {
686 return str;
687 }
688 styleCommandText(str) {
689 return str;
690 }
691 /**
692 * Calculate the pad width from the maximum term length.
693 *
694 * @param {Command} cmd
695 * @param {Help} helper
696 * @returns {number}
697 */
698 padWidth(cmd, helper) {
699 return Math.max(
700 helper.longestOptionTermLength(cmd, helper),
701 helper.longestGlobalOptionTermLength(cmd, helper),
702 helper.longestSubcommandTermLength(cmd, helper),
703 helper.longestArgumentTermLength(cmd, helper)
704 );
705 }
706 /**
707 * Detect manually wrapped and indented strings by checking for line break followed by whitespace.
708 *
709 * @param {string} str
710 * @returns {boolean}
711 */
712 preformatted(str) {
713 return /\n[^\S\r\n]/.test(str);
714 }
715 /**
716 * Format the "item", which consists of a term and description. Pad the term and wrap the description, indenting the following lines.
717 *
718 * So "TTT", 5, "DDD DDDD DD DDD" might be formatted for this.helpWidth=17 like so:
719 * TTT DDD DDDD
720 * DD DDD
721 *
722 * @param {string} term
723 * @param {number} termWidth
724 * @param {string} description
725 * @param {Help} helper
726 * @returns {string}
727 */
728 formatItem(term, termWidth, description, helper) {
729 const itemIndent = 2;
730 const itemIndentStr = " ".repeat(itemIndent);
731 if (!description) return itemIndentStr + term;
732 const paddedTerm = term.padEnd(
733 termWidth + term.length - helper.displayWidth(term)
734 );
735 const spacerWidth = 2;
736 const helpWidth = this.helpWidth ?? 80;
737 const remainingWidth = helpWidth - termWidth - spacerWidth - itemIndent;
738 let formattedDescription;
739 if (remainingWidth < this.minWidthToWrap || helper.preformatted(description)) {
740 formattedDescription = description;
741 } else {
742 const wrappedDescription = helper.boxWrap(description, remainingWidth);
743 formattedDescription = wrappedDescription.replace(
744 /\n/g,
745 "\n" + " ".repeat(termWidth + spacerWidth)
746 );
747 }
748 return itemIndentStr + paddedTerm + " ".repeat(spacerWidth) + formattedDescription.replace(/\n/g, `
749${itemIndentStr}`);
750 }
751 /**
752 * Wrap a string at whitespace, preserving existing line breaks.
753 * Wrapping is skipped if the width is less than `minWidthToWrap`.
754 *
755 * @param {string} str
756 * @param {number} width
757 * @returns {string}
758 */
759 boxWrap(str, width) {
760 if (width < this.minWidthToWrap) return str;
761 const rawLines = str.split(/\r\n|\n/);
762 const chunkPattern = /[\s]*[^\s]+/g;
763 const wrappedLines = [];
764 rawLines.forEach((line) => {
765 const chunks = line.match(chunkPattern);
766 if (chunks === null) {
767 wrappedLines.push("");
768 return;
769 }
770 let sumChunks = [chunks.shift()];
771 let sumWidth = this.displayWidth(sumChunks[0]);
772 chunks.forEach((chunk) => {
773 const visibleWidth = this.displayWidth(chunk);
774 if (sumWidth + visibleWidth <= width) {
775 sumChunks.push(chunk);
776 sumWidth += visibleWidth;
777 return;
778 }
779 wrappedLines.push(sumChunks.join(""));
780 const nextChunk = chunk.trimStart();
781 sumChunks = [nextChunk];
782 sumWidth = this.displayWidth(nextChunk);
783 });
784 wrappedLines.push(sumChunks.join(""));
785 });
786 return wrappedLines.join("\n");
787 }
788 };
789 function stripColor(str) {
790 const sgrPattern = /\x1b\[\d*(;\d*)*m/g;
791 return str.replace(sgrPattern, "");
792 }
793 exports2.Help = Help2;
794 exports2.stripColor = stripColor;
795 }
796});
797
798// node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/option.js
799var require_option = __commonJS({
800 "node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/option.js"(exports2) {
801 var { InvalidArgumentError: InvalidArgumentError2 } = require_error();
802 var Option2 = class {
803 /**
804 * Initialize a new `Option` with the given `flags` and `description`.
805 *
806 * @param {string} flags
807 * @param {string} [description]
808 */
809 constructor(flags, description) {
810 this.flags = flags;
811 this.description = description || "";
812 this.required = flags.includes("<");
813 this.optional = flags.includes("[");
814 this.variadic = /\w\.\.\.[>\]]$/.test(flags);
815 this.mandatory = false;
816 const optionFlags = splitOptionFlags(flags);
817 this.short = optionFlags.shortFlag;
818 this.long = optionFlags.longFlag;
819 this.negate = false;
820 if (this.long) {
821 this.negate = this.long.startsWith("--no-");
822 }
823 this.defaultValue = void 0;
824 this.defaultValueDescription = void 0;
825 this.presetArg = void 0;
826 this.envVar = void 0;
827 this.parseArg = void 0;
828 this.hidden = false;
829 this.argChoices = void 0;
830 this.conflictsWith = [];
831 this.implied = void 0;
832 this.helpGroupHeading = void 0;
833 }
834 /**
835 * Set the default value, and optionally supply the description to be displayed in the help.
836 *
837 * @param {*} value
838 * @param {string} [description]
839 * @return {Option}
840 */
841 default(value, description) {
842 this.defaultValue = value;
843 this.defaultValueDescription = description;
844 return this;
845 }
846 /**
847 * Preset to use when option used without option-argument, especially optional but also boolean and negated.
848 * The custom processing (parseArg) is called.
849 *
850 * @example
851 * new Option('--color').default('GREYSCALE').preset('RGB');
852 * new Option('--donate [amount]').preset('20').argParser(parseFloat);
853 *
854 * @param {*} arg
855 * @return {Option}
856 */
857 preset(arg) {
858 this.presetArg = arg;
859 return this;
860 }
861 /**
862 * Add option name(s) that conflict with this option.
863 * An error will be displayed if conflicting options are found during parsing.
864 *
865 * @example
866 * new Option('--rgb').conflicts('cmyk');
867 * new Option('--js').conflicts(['ts', 'jsx']);
868 *
869 * @param {(string | string[])} names
870 * @return {Option}
871 */
872 conflicts(names) {
873 this.conflictsWith = this.conflictsWith.concat(names);
874 return this;
875 }
876 /**
877 * Specify implied option values for when this option is set and the implied options are not.
878 *
879 * The custom processing (parseArg) is not called on the implied values.
880 *
881 * @example
882 * program
883 * .addOption(new Option('--log', 'write logging information to file'))
884 * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));
885 *
886 * @param {object} impliedOptionValues
887 * @return {Option}
888 */
889 implies(impliedOptionValues) {
890 let newImplied = impliedOptionValues;
891 if (typeof impliedOptionValues === "string") {
892 newImplied = { [impliedOptionValues]: true };
893 }
894 this.implied = Object.assign(this.implied || {}, newImplied);
895 return this;
896 }
897 /**
898 * Set environment variable to check for option value.
899 *
900 * An environment variable is only used if when processed the current option value is
901 * undefined, or the source of the current value is 'default' or 'config' or 'env'.
902 *
903 * @param {string} name
904 * @return {Option}
905 */
906 env(name) {
907 this.envVar = name;
908 return this;
909 }
910 /**
911 * Set the custom handler for processing CLI option arguments into option values.
912 *
913 * @param {Function} [fn]
914 * @return {Option}
915 */
916 argParser(fn) {
917 this.parseArg = fn;
918 return this;
919 }
920 /**
921 * Whether the option is mandatory and must have a value after parsing.
922 *
923 * @param {boolean} [mandatory=true]
924 * @return {Option}
925 */
926 makeOptionMandatory(mandatory = true) {
927 this.mandatory = !!mandatory;
928 return this;
929 }
930 /**
931 * Hide option in help.
932 *
933 * @param {boolean} [hide=true]
934 * @return {Option}
935 */
936 hideHelp(hide = true) {
937 this.hidden = !!hide;
938 return this;
939 }
940 /**
941 * @package
942 */
943 _collectValue(value, previous) {
944 if (previous === this.defaultValue || !Array.isArray(previous)) {
945 return [value];
946 }
947 previous.push(value);
948 return previous;
949 }
950 /**
951 * Only allow option value to be one of choices.
952 *
953 * @param {string[]} values
954 * @return {Option}
955 */
956 choices(values) {
957 this.argChoices = values.slice();
958 this.parseArg = (arg, previous) => {
959 if (!this.argChoices.includes(arg)) {
960 throw new InvalidArgumentError2(
961 `Allowed choices are ${this.argChoices.join(", ")}.`
962 );
963 }
964 if (this.variadic) {
965 return this._collectValue(arg, previous);
966 }
967 return arg;
968 };
969 return this;
970 }
971 /**
972 * Return option name.
973 *
974 * @return {string}
975 */
976 name() {
977 if (this.long) {
978 return this.long.replace(/^--/, "");
979 }
980 return this.short.replace(/^-/, "");
981 }
982 /**
983 * Return option name, in a camelcase format that can be used
984 * as an object attribute key.
985 *
986 * @return {string}
987 */
988 attributeName() {
989 if (this.negate) {
990 return camelcase(this.name().replace(/^no-/, ""));
991 }
992 return camelcase(this.name());
993 }
994 /**
995 * Set the help group heading.
996 *
997 * @param {string} heading
998 * @return {Option}
999 */
1000 helpGroup(heading) {
1001 this.helpGroupHeading = heading;
1002 return this;
1003 }
1004 /**
1005 * Check if `arg` matches the short or long flag.
1006 *
1007 * @param {string} arg
1008 * @return {boolean}
1009 * @package
1010 */
1011 is(arg) {
1012 return this.short === arg || this.long === arg;
1013 }
1014 /**
1015 * Return whether a boolean option.
1016 *
1017 * Options are one of boolean, negated, required argument, or optional argument.
1018 *
1019 * @return {boolean}
1020 * @package
1021 */
1022 isBoolean() {
1023 return !this.required && !this.optional && !this.negate;
1024 }
1025 };
1026 var DualOptions = class {
1027 /**
1028 * @param {Option[]} options
1029 */
1030 constructor(options) {
1031 this.positiveOptions = /* @__PURE__ */ new Map();
1032 this.negativeOptions = /* @__PURE__ */ new Map();
1033 this.dualOptions = /* @__PURE__ */ new Set();
1034 options.forEach((option) => {
1035 if (option.negate) {
1036 this.negativeOptions.set(option.attributeName(), option);
1037 } else {
1038 this.positiveOptions.set(option.attributeName(), option);
1039 }
1040 });
1041 this.negativeOptions.forEach((value, key) => {
1042 if (this.positiveOptions.has(key)) {
1043 this.dualOptions.add(key);
1044 }
1045 });
1046 }
1047 /**
1048 * Did the value come from the option, and not from possible matching dual option?
1049 *
1050 * @param {*} value
1051 * @param {Option} option
1052 * @returns {boolean}
1053 */
1054 valueFromOption(value, option) {
1055 const optionKey = option.attributeName();
1056 if (!this.dualOptions.has(optionKey)) return true;
1057 const preset = this.negativeOptions.get(optionKey).presetArg;
1058 const negativeValue = preset !== void 0 ? preset : false;
1059 return option.negate === (negativeValue === value);
1060 }
1061 };
1062 function camelcase(str) {
1063 return str.split("-").reduce((str2, word) => {
1064 return str2 + word[0].toUpperCase() + word.slice(1);
1065 });
1066 }
1067 function splitOptionFlags(flags) {
1068 let shortFlag;
1069 let longFlag;
1070 const shortFlagExp = /^-[^-]$/;
1071 const longFlagExp = /^--[^-]/;
1072 const flagParts = flags.split(/[ |,]+/).concat("guard");
1073 if (shortFlagExp.test(flagParts[0])) shortFlag = flagParts.shift();
1074 if (longFlagExp.test(flagParts[0])) longFlag = flagParts.shift();
1075 if (!shortFlag && shortFlagExp.test(flagParts[0]))
1076 shortFlag = flagParts.shift();
1077 if (!shortFlag && longFlagExp.test(flagParts[0])) {
1078 shortFlag = longFlag;
1079 longFlag = flagParts.shift();
1080 }
1081 if (flagParts[0].startsWith("-")) {
1082 const unsupportedFlag = flagParts[0];
1083 const baseError = `option creation failed due to '${unsupportedFlag}' in option flags '${flags}'`;
1084 if (/^-[^-][^-]/.test(unsupportedFlag))
1085 throw new Error(
1086 `${baseError}
1087- a short flag is a single dash and a single character
1088 - either use a single dash and a single character (for a short flag)
1089 - or use a double dash for a long option (and can have two, like '--ws, --workspace')`
1090 );
1091 if (shortFlagExp.test(unsupportedFlag))
1092 throw new Error(`${baseError}
1093- too many short flags`);
1094 if (longFlagExp.test(unsupportedFlag))
1095 throw new Error(`${baseError}
1096- too many long flags`);
1097 throw new Error(`${baseError}
1098- unrecognised flag format`);
1099 }
1100 if (shortFlag === void 0 && longFlag === void 0)
1101 throw new Error(
1102 `option creation failed due to no flags found in '${flags}'.`
1103 );
1104 return { shortFlag, longFlag };
1105 }
1106 exports2.Option = Option2;
1107 exports2.DualOptions = DualOptions;
1108 }
1109});
1110
1111// node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/suggestSimilar.js
1112var require_suggestSimilar = __commonJS({
1113 "node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/suggestSimilar.js"(exports2) {
1114 var maxDistance = 3;
1115 function editDistance(a, b) {
1116 if (Math.abs(a.length - b.length) > maxDistance)
1117 return Math.max(a.length, b.length);
1118 const d = [];
1119 for (let i = 0; i <= a.length; i++) {
1120 d[i] = [i];
1121 }
1122 for (let j = 0; j <= b.length; j++) {
1123 d[0][j] = j;
1124 }
1125 for (let j = 1; j <= b.length; j++) {
1126 for (let i = 1; i <= a.length; i++) {
1127 let cost = 1;
1128 if (a[i - 1] === b[j - 1]) {
1129 cost = 0;
1130 } else {
1131 cost = 1;
1132 }
1133 d[i][j] = Math.min(
1134 d[i - 1][j] + 1,
1135 // deletion
1136 d[i][j - 1] + 1,
1137 // insertion
1138 d[i - 1][j - 1] + cost
1139 // substitution
1140 );
1141 if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {
1142 d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);
1143 }
1144 }
1145 }
1146 return d[a.length][b.length];
1147 }
1148 function suggestSimilar(word, candidates) {
1149 if (!candidates || candidates.length === 0) return "";
1150 candidates = Array.from(new Set(candidates));
1151 const searchingOptions = word.startsWith("--");
1152 if (searchingOptions) {
1153 word = word.slice(2);
1154 candidates = candidates.map((candidate) => candidate.slice(2));
1155 }
1156 let similar = [];
1157 let bestDistance = maxDistance;
1158 const minSimilarity = 0.4;
1159 candidates.forEach((candidate) => {
1160 if (candidate.length <= 1) return;
1161 const distance = editDistance(word, candidate);
1162 const length = Math.max(word.length, candidate.length);
1163 const similarity = (length - distance) / length;
1164 if (similarity > minSimilarity) {
1165 if (distance < bestDistance) {
1166 bestDistance = distance;
1167 similar = [candidate];
1168 } else if (distance === bestDistance) {
1169 similar.push(candidate);
1170 }
1171 }
1172 });
1173 similar.sort((a, b) => a.localeCompare(b));
1174 if (searchingOptions) {
1175 similar = similar.map((candidate) => `--${candidate}`);
1176 }
1177 if (similar.length > 1) {
1178 return `
1179(Did you mean one of ${similar.join(", ")}?)`;
1180 }
1181 if (similar.length === 1) {
1182 return `
1183(Did you mean ${similar[0]}?)`;
1184 }
1185 return "";
1186 }
1187 exports2.suggestSimilar = suggestSimilar;
1188 }
1189});
1190
1191// node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/command.js
1192var require_command = __commonJS({
1193 "node_modules/.pnpm/commander@14.0.1/node_modules/commander/lib/command.js"(exports2) {
1194 var EventEmitter = require("node:events").EventEmitter;
1195 var childProcess = require("node:child_process");
1196 var path5 = require("node:path");
1197 var fs5 = require("node:fs");
1198 var process2 = require("node:process");
1199 var { Argument: Argument2, humanReadableArgName } = require_argument();
1200 var { CommanderError: CommanderError2 } = require_error();
1201 var { Help: Help2, stripColor } = require_help();
1202 var { Option: Option2, DualOptions } = require_option();
1203 var { suggestSimilar } = require_suggestSimilar();
1204 var Command2 = class _Command extends EventEmitter {
1205 /**
1206 * Initialize a new `Command`.
1207 *
1208 * @param {string} [name]
1209 */
1210 constructor(name) {
1211 super();
1212 this.commands = [];
1213 this.options = [];
1214 this.parent = null;
1215 this._allowUnknownOption = false;
1216 this._allowExcessArguments = false;
1217 this.registeredArguments = [];
1218 this._args = this.registeredArguments;
1219 this.args = [];
1220 this.rawArgs = [];
1221 this.processedArgs = [];
1222 this._scriptPath = null;
1223 this._name = name || "";
1224 this._optionValues = {};
1225 this._optionValueSources = {};
1226 this._storeOptionsAsProperties = false;
1227 this._actionHandler = null;
1228 this._executableHandler = false;
1229 this._executableFile = null;
1230 this._executableDir = null;
1231 this._defaultCommandName = null;
1232 this._exitCallback = null;
1233 this._aliases = [];
1234 this._combineFlagAndOptionalValue = true;
1235 this._description = "";
1236 this._summary = "";
1237 this._argsDescription = void 0;
1238 this._enablePositionalOptions = false;
1239 this._passThroughOptions = false;
1240 this._lifeCycleHooks = {};
1241 this._showHelpAfterError = false;
1242 this._showSuggestionAfterError = true;
1243 this._savedState = null;
1244 this._outputConfiguration = {
1245 writeOut: (str) => process2.stdout.write(str),
1246 writeErr: (str) => process2.stderr.write(str),
1247 outputError: (str, write) => write(str),
1248 getOutHelpWidth: () => process2.stdout.isTTY ? process2.stdout.columns : void 0,
1249 getErrHelpWidth: () => process2.stderr.isTTY ? process2.stderr.columns : void 0,
1250 getOutHasColors: () => useColor() ?? (process2.stdout.isTTY && process2.stdout.hasColors?.()),
1251 getErrHasColors: () => useColor() ?? (process2.stderr.isTTY && process2.stderr.hasColors?.()),
1252 stripColor: (str) => stripColor(str)
1253 };
1254 this._hidden = false;
1255 this._helpOption = void 0;
1256 this._addImplicitHelpCommand = void 0;
1257 this._helpCommand = void 0;
1258 this._helpConfiguration = {};
1259 this._helpGroupHeading = void 0;
1260 this._defaultCommandGroup = void 0;
1261 this._defaultOptionGroup = void 0;
1262 }
1263 /**
1264 * Copy settings that are useful to have in common across root command and subcommands.
1265 *
1266 * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)
1267 *
1268 * @param {Command} sourceCommand
1269 * @return {Command} `this` command for chaining
1270 */
1271 copyInheritedSettings(sourceCommand) {
1272 this._outputConfiguration = sourceCommand._outputConfiguration;
1273 this._helpOption = sourceCommand._helpOption;
1274 this._helpCommand = sourceCommand._helpCommand;
1275 this._helpConfiguration = sourceCommand._helpConfiguration;
1276 this._exitCallback = sourceCommand._exitCallback;
1277 this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;
1278 this._combineFlagAndOptionalValue = sourceCommand._combineFlagAndOptionalValue;
1279 this._allowExcessArguments = sourceCommand._allowExcessArguments;
1280 this._enablePositionalOptions = sourceCommand._enablePositionalOptions;
1281 this._showHelpAfterError = sourceCommand._showHelpAfterError;
1282 this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;
1283 return this;
1284 }
1285 /**
1286 * @returns {Command[]}
1287 * @private
1288 */
1289 _getCommandAndAncestors() {
1290 const result = [];
1291 for (let command = this; command; command = command.parent) {
1292 result.push(command);
1293 }
1294 return result;
1295 }
1296 /**
1297 * Define a command.
1298 *
1299 * There are two styles of command: pay attention to where to put the description.
1300 *
1301 * @example
1302 * // Command implemented using action handler (description is supplied separately to `.command`)
1303 * program
1304 * .command('clone <source> [destination]')
1305 * .description('clone a repository into a newly created directory')
1306 * .action((source, destination) => {
1307 * console.log('clone command called');
1308 * });
1309 *
1310 * // Command implemented using separate executable file (description is second parameter to `.command`)
1311 * program
1312 * .command('start <service>', 'start named service')
1313 * .command('stop [service]', 'stop named service, or all if no name supplied');
1314 *
1315 * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`
1316 * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)
1317 * @param {object} [execOpts] - configuration options (for executable)
1318 * @return {Command} returns new command for action handler, or `this` for executable command
1319 */
1320 command(nameAndArgs, actionOptsOrExecDesc, execOpts) {
1321 let desc = actionOptsOrExecDesc;
1322 let opts = execOpts;
1323 if (typeof desc === "object" && desc !== null) {
1324 opts = desc;
1325 desc = null;
1326 }
1327 opts = opts || {};
1328 const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);
1329 const cmd = this.createCommand(name);
1330 if (desc) {
1331 cmd.description(desc);
1332 cmd._executableHandler = true;
1333 }
1334 if (opts.isDefault) this._defaultCommandName = cmd._name;
1335 cmd._hidden = !!(opts.noHelp || opts.hidden);
1336 cmd._executableFile = opts.executableFile || null;
1337 if (args) cmd.arguments(args);
1338 this._registerCommand(cmd);
1339 cmd.parent = this;
1340 cmd.copyInheritedSettings(this);
1341 if (desc) return this;
1342 return cmd;
1343 }
1344 /**
1345 * Factory routine to create a new unattached command.
1346 *
1347 * See .command() for creating an attached subcommand, which uses this routine to
1348 * create the command. You can override createCommand to customise subcommands.
1349 *
1350 * @param {string} [name]
1351 * @return {Command} new command
1352 */
1353 createCommand(name) {
1354 return new _Command(name);
1355 }
1356 /**
1357 * You can customise the help with a subclass of Help by overriding createHelp,
1358 * or by overriding Help properties using configureHelp().
1359 *
1360 * @return {Help}
1361 */
1362 createHelp() {
1363 return Object.assign(new Help2(), this.configureHelp());
1364 }
1365 /**
1366 * You can customise the help by overriding Help properties using configureHelp(),
1367 * or with a subclass of Help by overriding createHelp().
1368 *
1369 * @param {object} [configuration] - configuration options
1370 * @return {(Command | object)} `this` command for chaining, or stored configuration
1371 */
1372 configureHelp(configuration) {
1373 if (configuration === void 0) return this._helpConfiguration;
1374 this._helpConfiguration = configuration;
1375 return this;
1376 }
1377 /**
1378 * The default output goes to stdout and stderr. You can customise this for special
1379 * applications. You can also customise the display of errors by overriding outputError.
1380 *
1381 * The configuration properties are all functions:
1382 *
1383 * // change how output being written, defaults to stdout and stderr
1384 * writeOut(str)
1385 * writeErr(str)
1386 * // change how output being written for errors, defaults to writeErr
1387 * outputError(str, write) // used for displaying errors and not used for displaying help
1388 * // specify width for wrapping help
1389 * getOutHelpWidth()
1390 * getErrHelpWidth()
1391 * // color support, currently only used with Help
1392 * getOutHasColors()
1393 * getErrHasColors()
1394 * stripColor() // used to remove ANSI escape codes if output does not have colors
1395 *
1396 * @param {object} [configuration] - configuration options
1397 * @return {(Command | object)} `this` command for chaining, or stored configuration
1398 */
1399 configureOutput(configuration) {
1400 if (configuration === void 0) return this._outputConfiguration;
1401 this._outputConfiguration = {
1402 ...this._outputConfiguration,
1403 ...configuration
1404 };
1405 return this;
1406 }
1407 /**
1408 * Display the help or a custom message after an error occurs.
1409 *
1410 * @param {(boolean|string)} [displayHelp]
1411 * @return {Command} `this` command for chaining
1412 */
1413 showHelpAfterError(displayHelp = true) {
1414 if (typeof displayHelp !== "string") displayHelp = !!displayHelp;
1415 this._showHelpAfterError = displayHelp;
1416 return this;
1417 }
1418 /**
1419 * Display suggestion of similar commands for unknown commands, or options for unknown options.
1420 *
1421 * @param {boolean} [displaySuggestion]
1422 * @return {Command} `this` command for chaining
1423 */
1424 showSuggestionAfterError(displaySuggestion = true) {
1425 this._showSuggestionAfterError = !!displaySuggestion;
1426 return this;
1427 }
1428 /**
1429 * Add a prepared subcommand.
1430 *
1431 * See .command() for creating an attached subcommand which inherits settings from its parent.
1432 *
1433 * @param {Command} cmd - new subcommand
1434 * @param {object} [opts] - configuration options
1435 * @return {Command} `this` command for chaining
1436 */
1437 addCommand(cmd, opts) {
1438 if (!cmd._name) {
1439 throw new Error(`Command passed to .addCommand() must have a name
1440- specify the name in Command constructor or using .name()`);
1441 }
1442 opts = opts || {};
1443 if (opts.isDefault) this._defaultCommandName = cmd._name;
1444 if (opts.noHelp || opts.hidden) cmd._hidden = true;
1445 this._registerCommand(cmd);
1446 cmd.parent = this;
1447 cmd._checkForBrokenPassThrough();
1448 return this;
1449 }
1450 /**
1451 * Factory routine to create a new unattached argument.
1452 *
1453 * See .argument() for creating an attached argument, which uses this routine to
1454 * create the argument. You can override createArgument to return a custom argument.
1455 *
1456 * @param {string} name
1457 * @param {string} [description]
1458 * @return {Argument} new argument
1459 */
1460 createArgument(name, description) {
1461 return new Argument2(name, description);
1462 }
1463 /**
1464 * Define argument syntax for command.
1465 *
1466 * The default is that the argument is required, and you can explicitly
1467 * indicate this with <> around the name. Put [] around the name for an optional argument.
1468 *
1469 * @example
1470 * program.argument('<input-file>');
1471 * program.argument('[output-file]');
1472 *
1473 * @param {string} name
1474 * @param {string} [description]
1475 * @param {(Function|*)} [parseArg] - custom argument processing function or default value
1476 * @param {*} [defaultValue]
1477 * @return {Command} `this` command for chaining
1478 */
1479 argument(name, description, parseArg, defaultValue) {
1480 const argument = this.createArgument(name, description);
1481 if (typeof parseArg === "function") {
1482 argument.default(defaultValue).argParser(parseArg);
1483 } else {
1484 argument.default(parseArg);
1485 }
1486 this.addArgument(argument);
1487 return this;
1488 }
1489 /**
1490 * Define argument syntax for command, adding multiple at once (without descriptions).
1491 *
1492 * See also .argument().
1493 *
1494 * @example
1495 * program.arguments('<cmd> [env]');
1496 *
1497 * @param {string} names
1498 * @return {Command} `this` command for chaining
1499 */
1500 arguments(names) {
1501 names.trim().split(/ +/).forEach((detail) => {
1502 this.argument(detail);
1503 });
1504 return this;
1505 }
1506 /**
1507 * Define argument syntax for command, adding a prepared argument.
1508 *
1509 * @param {Argument} argument
1510 * @return {Command} `this` command for chaining
1511 */
1512 addArgument(argument) {
1513 const previousArgument = this.registeredArguments.slice(-1)[0];
1514 if (previousArgument?.variadic) {
1515 throw new Error(
1516 `only the last argument can be variadic '${previousArgument.name()}'`
1517 );
1518 }
1519 if (argument.required && argument.defaultValue !== void 0 && argument.parseArg === void 0) {
1520 throw new Error(
1521 `a default value for a required argument is never used: '${argument.name()}'`
1522 );
1523 }
1524 this.registeredArguments.push(argument);
1525 return this;
1526 }
1527 /**
1528 * Customise or override default help command. By default a help command is automatically added if your command has subcommands.
1529 *
1530 * @example
1531 * program.helpCommand('help [cmd]');
1532 * program.helpCommand('help [cmd]', 'show help');
1533 * program.helpCommand(false); // suppress default help command
1534 * program.helpCommand(true); // add help command even if no subcommands
1535 *
1536 * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added
1537 * @param {string} [description] - custom description
1538 * @return {Command} `this` command for chaining
1539 */
1540 helpCommand(enableOrNameAndArgs, description) {
1541 if (typeof enableOrNameAndArgs === "boolean") {
1542 this._addImplicitHelpCommand = enableOrNameAndArgs;
1543 if (enableOrNameAndArgs && this._defaultCommandGroup) {
1544 this._initCommandGroup(this._getHelpCommand());
1545 }
1546 return this;
1547 }
1548 const nameAndArgs = enableOrNameAndArgs ?? "help [command]";
1549 const [, helpName, helpArgs] = nameAndArgs.match(/([^ ]+) *(.*)/);
1550 const helpDescription = description ?? "display help for command";
1551 const helpCommand = this.createCommand(helpName);
1552 helpCommand.helpOption(false);
1553 if (helpArgs) helpCommand.arguments(helpArgs);
1554 if (helpDescription) helpCommand.description(helpDescription);
1555 this._addImplicitHelpCommand = true;
1556 this._helpCommand = helpCommand;
1557 if (enableOrNameAndArgs || description) this._initCommandGroup(helpCommand);
1558 return this;
1559 }
1560 /**
1561 * Add prepared custom help command.
1562 *
1563 * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`
1564 * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only
1565 * @return {Command} `this` command for chaining
1566 */
1567 addHelpCommand(helpCommand, deprecatedDescription) {
1568 if (typeof helpCommand !== "object") {
1569 this.helpCommand(helpCommand, deprecatedDescription);
1570 return this;
1571 }
1572 this._addImplicitHelpCommand = true;
1573 this._helpCommand = helpCommand;
1574 this._initCommandGroup(helpCommand);
1575 return this;
1576 }
1577 /**
1578 * Lazy create help command.
1579 *
1580 * @return {(Command|null)}
1581 * @package
1582 */
1583 _getHelpCommand() {
1584 const hasImplicitHelpCommand = this._addImplicitHelpCommand ?? (this.commands.length && !this._actionHandler && !this._findCommand("help"));
1585 if (hasImplicitHelpCommand) {
1586 if (this._helpCommand === void 0) {
1587 this.helpCommand(void 0, void 0);
1588 }
1589 return this._helpCommand;
1590 }
1591 return null;
1592 }
1593 /**
1594 * Add hook for life cycle event.
1595 *
1596 * @param {string} event
1597 * @param {Function} listener
1598 * @return {Command} `this` command for chaining
1599 */
1600 hook(event, listener) {
1601 const allowedValues = ["preSubcommand", "preAction", "postAction"];
1602 if (!allowedValues.includes(event)) {
1603 throw new Error(`Unexpected value for event passed to hook : '${event}'.
1604Expecting one of '${allowedValues.join("', '")}'`);
1605 }
1606 if (this._lifeCycleHooks[event]) {
1607 this._lifeCycleHooks[event].push(listener);
1608 } else {
1609 this._lifeCycleHooks[event] = [listener];
1610 }
1611 return this;
1612 }
1613 /**
1614 * Register callback to use as replacement for calling process.exit.
1615 *
1616 * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing
1617 * @return {Command} `this` command for chaining
1618 */
1619 exitOverride(fn) {
1620 if (fn) {
1621 this._exitCallback = fn;
1622 } else {
1623 this._exitCallback = (err) => {
1624 if (err.code !== "commander.executeSubCommandAsync") {
1625 throw err;
1626 } else {
1627 }
1628 };
1629 }
1630 return this;
1631 }
1632 /**
1633 * Call process.exit, and _exitCallback if defined.
1634 *
1635 * @param {number} exitCode exit code for using with process.exit
1636 * @param {string} code an id string representing the error
1637 * @param {string} message human-readable description of the error
1638 * @return never
1639 * @private
1640 */
1641 _exit(exitCode, code, message) {
1642 if (this._exitCallback) {
1643 this._exitCallback(new CommanderError2(exitCode, code, message));
1644 }
1645 process2.exit(exitCode);
1646 }
1647 /**
1648 * Register callback `fn` for the command.
1649 *
1650 * @example
1651 * program
1652 * .command('serve')
1653 * .description('start service')
1654 * .action(function() {
1655 * // do work here
1656 * });
1657 *
1658 * @param {Function} fn
1659 * @return {Command} `this` command for chaining
1660 */
1661 action(fn) {
1662 const listener = (args) => {
1663 const expectedArgsCount = this.registeredArguments.length;
1664 const actionArgs = args.slice(0, expectedArgsCount);
1665 if (this._storeOptionsAsProperties) {
1666 actionArgs[expectedArgsCount] = this;
1667 } else {
1668 actionArgs[expectedArgsCount] = this.opts();
1669 }
1670 actionArgs.push(this);
1671 return fn.apply(this, actionArgs);
1672 };
1673 this._actionHandler = listener;
1674 return this;
1675 }
1676 /**
1677 * Factory routine to create a new unattached option.
1678 *
1679 * See .option() for creating an attached option, which uses this routine to
1680 * create the option. You can override createOption to return a custom option.
1681 *
1682 * @param {string} flags
1683 * @param {string} [description]
1684 * @return {Option} new option
1685 */
1686 createOption(flags, description) {
1687 return new Option2(flags, description);
1688 }
1689 /**
1690 * Wrap parseArgs to catch 'commander.invalidArgument'.
1691 *
1692 * @param {(Option | Argument)} target
1693 * @param {string} value
1694 * @param {*} previous
1695 * @param {string} invalidArgumentMessage
1696 * @private
1697 */
1698 _callParseArg(target, value, previous, invalidArgumentMessage) {
1699 try {
1700 return target.parseArg(value, previous);
1701 } catch (err) {
1702 if (err.code === "commander.invalidArgument") {
1703 const message = `${invalidArgumentMessage} ${err.message}`;
1704 this.error(message, { exitCode: err.exitCode, code: err.code });
1705 }
1706 throw err;
1707 }
1708 }
1709 /**
1710 * Check for option flag conflicts.
1711 * Register option if no conflicts found, or throw on conflict.
1712 *
1713 * @param {Option} option
1714 * @private
1715 */
1716 _registerOption(option) {
1717 const matchingOption = option.short && this._findOption(option.short) || option.long && this._findOption(option.long);
1718 if (matchingOption) {
1719 const matchingFlag = option.long && this._findOption(option.long) ? option.long : option.short;
1720 throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'
1721- already used by option '${matchingOption.flags}'`);
1722 }
1723 this._initOptionGroup(option);
1724 this.options.push(option);
1725 }
1726 /**
1727 * Check for command name and alias conflicts with existing commands.
1728 * Register command if no conflicts found, or throw on conflict.
1729 *
1730 * @param {Command} command
1731 * @private
1732 */
1733 _registerCommand(command) {
1734 const knownBy = (cmd) => {
1735 return [cmd.name()].concat(cmd.aliases());
1736 };
1737 const alreadyUsed = knownBy(command).find(
1738 (name) => this._findCommand(name)
1739 );
1740 if (alreadyUsed) {
1741 const existingCmd = knownBy(this._findCommand(alreadyUsed)).join("|");
1742 const newCmd = knownBy(command).join("|");
1743 throw new Error(
1744 `cannot add command '${newCmd}' as already have command '${existingCmd}'`
1745 );
1746 }
1747 this._initCommandGroup(command);
1748 this.commands.push(command);
1749 }
1750 /**
1751 * Add an option.
1752 *
1753 * @param {Option} option
1754 * @return {Command} `this` command for chaining
1755 */
1756 addOption(option) {
1757 this._registerOption(option);
1758 const oname = option.name();
1759 const name = option.attributeName();
1760 if (option.negate) {
1761 const positiveLongFlag = option.long.replace(/^--no-/, "--");
1762 if (!this._findOption(positiveLongFlag)) {
1763 this.setOptionValueWithSource(
1764 name,
1765 option.defaultValue === void 0 ? true : option.defaultValue,
1766 "default"
1767 );
1768 }
1769 } else if (option.defaultValue !== void 0) {
1770 this.setOptionValueWithSource(name, option.defaultValue, "default");
1771 }
1772 const handleOptionValue = (val, invalidValueMessage, valueSource) => {
1773 if (val == null && option.presetArg !== void 0) {
1774 val = option.presetArg;
1775 }
1776 const oldValue = this.getOptionValue(name);
1777 if (val !== null && option.parseArg) {
1778 val = this._callParseArg(option, val, oldValue, invalidValueMessage);
1779 } else if (val !== null && option.variadic) {
1780 val = option._collectValue(val, oldValue);
1781 }
1782 if (val == null) {
1783 if (option.negate) {
1784 val = false;
1785 } else if (option.isBoolean() || option.optional) {
1786 val = true;
1787 } else {
1788 val = "";
1789 }
1790 }
1791 this.setOptionValueWithSource(name, val, valueSource);
1792 };
1793 this.on("option:" + oname, (val) => {
1794 const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;
1795 handleOptionValue(val, invalidValueMessage, "cli");
1796 });
1797 if (option.envVar) {
1798 this.on("optionEnv:" + oname, (val) => {
1799 const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;
1800 handleOptionValue(val, invalidValueMessage, "env");
1801 });
1802 }
1803 return this;
1804 }
1805 /**
1806 * Internal implementation shared by .option() and .requiredOption()
1807 *
1808 * @return {Command} `this` command for chaining
1809 * @private
1810 */
1811 _optionEx(config, flags, description, fn, defaultValue) {
1812 if (typeof flags === "object" && flags instanceof Option2) {
1813 throw new Error(
1814 "To add an Option object use addOption() instead of option() or requiredOption()"
1815 );
1816 }
1817 const option = this.createOption(flags, description);
1818 option.makeOptionMandatory(!!config.mandatory);
1819 if (typeof fn === "function") {
1820 option.default(defaultValue).argParser(fn);
1821 } else if (fn instanceof RegExp) {
1822 const regex = fn;
1823 fn = (val, def) => {
1824 const m = regex.exec(val);
1825 return m ? m[0] : def;
1826 };
1827 option.default(defaultValue).argParser(fn);
1828 } else {
1829 option.default(fn);
1830 }
1831 return this.addOption(option);
1832 }
1833 /**
1834 * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.
1835 *
1836 * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required
1837 * option-argument is indicated by `<>` and an optional option-argument by `[]`.
1838 *
1839 * See the README for more details, and see also addOption() and requiredOption().
1840 *
1841 * @example
1842 * program
1843 * .option('-p, --pepper', 'add pepper')
1844 * .option('--pt, --pizza-type <TYPE>', 'type of pizza') // required option-argument
1845 * .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default
1846 * .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function
1847 *
1848 * @param {string} flags
1849 * @param {string} [description]
1850 * @param {(Function|*)} [parseArg] - custom option processing function or default value
1851 * @param {*} [defaultValue]
1852 * @return {Command} `this` command for chaining
1853 */
1854 option(flags, description, parseArg, defaultValue) {
1855 return this._optionEx({}, flags, description, parseArg, defaultValue);
1856 }
1857 /**
1858 * Add a required option which must have a value after parsing. This usually means
1859 * the option must be specified on the command line. (Otherwise the same as .option().)
1860 *
1861 * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.
1862 *
1863 * @param {string} flags
1864 * @param {string} [description]
1865 * @param {(Function|*)} [parseArg] - custom option processing function or default value
1866 * @param {*} [defaultValue]
1867 * @return {Command} `this` command for chaining
1868 */
1869 requiredOption(flags, description, parseArg, defaultValue) {
1870 return this._optionEx(
1871 { mandatory: true },
1872 flags,
1873 description,
1874 parseArg,
1875 defaultValue
1876 );
1877 }
1878 /**
1879 * Alter parsing of short flags with optional values.
1880 *
1881 * @example
1882 * // for `.option('-f,--flag [value]'):
1883 * program.combineFlagAndOptionalValue(true); // `-f80` is treated like `--flag=80`, this is the default behaviour
1884 * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`
1885 *
1886 * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.
1887 * @return {Command} `this` command for chaining
1888 */
1889 combineFlagAndOptionalValue(combine = true) {
1890 this._combineFlagAndOptionalValue = !!combine;
1891 return this;
1892 }
1893 /**
1894 * Allow unknown options on the command line.
1895 *
1896 * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.
1897 * @return {Command} `this` command for chaining
1898 */
1899 allowUnknownOption(allowUnknown = true) {
1900 this._allowUnknownOption = !!allowUnknown;
1901 return this;
1902 }
1903 /**
1904 * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.
1905 *
1906 * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.
1907 * @return {Command} `this` command for chaining
1908 */
1909 allowExcessArguments(allowExcess = true) {
1910 this._allowExcessArguments = !!allowExcess;
1911 return this;
1912 }
1913 /**
1914 * Enable positional options. Positional means global options are specified before subcommands which lets
1915 * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.
1916 * The default behaviour is non-positional and global options may appear anywhere on the command line.
1917 *
1918 * @param {boolean} [positional]
1919 * @return {Command} `this` command for chaining
1920 */
1921 enablePositionalOptions(positional = true) {
1922 this._enablePositionalOptions = !!positional;
1923 return this;
1924 }
1925 /**
1926 * Pass through options that come after command-arguments rather than treat them as command-options,
1927 * so actual command-options come before command-arguments. Turning this on for a subcommand requires
1928 * positional options to have been enabled on the program (parent commands).
1929 * The default behaviour is non-positional and options may appear before or after command-arguments.
1930 *
1931 * @param {boolean} [passThrough] for unknown options.
1932 * @return {Command} `this` command for chaining
1933 */
1934 passThroughOptions(passThrough = true) {
1935 this._passThroughOptions = !!passThrough;
1936 this._checkForBrokenPassThrough();
1937 return this;
1938 }
1939 /**
1940 * @private
1941 */
1942 _checkForBrokenPassThrough() {
1943 if (this.parent && this._passThroughOptions && !this.parent._enablePositionalOptions) {
1944 throw new Error(
1945 `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`
1946 );
1947 }
1948 }
1949 /**
1950 * Whether to store option values as properties on command object,
1951 * or store separately (specify false). In both cases the option values can be accessed using .opts().
1952 *
1953 * @param {boolean} [storeAsProperties=true]
1954 * @return {Command} `this` command for chaining
1955 */
1956 storeOptionsAsProperties(storeAsProperties = true) {
1957 if (this.options.length) {
1958 throw new Error("call .storeOptionsAsProperties() before adding options");
1959 }
1960 if (Object.keys(this._optionValues).length) {
1961 throw new Error(
1962 "call .storeOptionsAsProperties() before setting option values"
1963 );
1964 }
1965 this._storeOptionsAsProperties = !!storeAsProperties;
1966 return this;
1967 }
1968 /**
1969 * Retrieve option value.
1970 *
1971 * @param {string} key
1972 * @return {object} value
1973 */
1974 getOptionValue(key) {
1975 if (this._storeOptionsAsProperties) {
1976 return this[key];
1977 }
1978 return this._optionValues[key];
1979 }
1980 /**
1981 * Store option value.
1982 *
1983 * @param {string} key
1984 * @param {object} value
1985 * @return {Command} `this` command for chaining
1986 */
1987 setOptionValue(key, value) {
1988 return this.setOptionValueWithSource(key, value, void 0);
1989 }
1990 /**
1991 * Store option value and where the value came from.
1992 *
1993 * @param {string} key
1994 * @param {object} value
1995 * @param {string} source - expected values are default/config/env/cli/implied
1996 * @return {Command} `this` command for chaining
1997 */
1998 setOptionValueWithSource(key, value, source) {
1999 if (this._storeOptionsAsProperties) {
2000 this[key] = value;
2001 } else {
2002 this._optionValues[key] = value;
2003 }
2004 this._optionValueSources[key] = source;
2005 return this;
2006 }
2007 /**
2008 * Get source of option value.
2009 * Expected values are default | config | env | cli | implied
2010 *
2011 * @param {string} key
2012 * @return {string}
2013 */
2014 getOptionValueSource(key) {
2015 return this._optionValueSources[key];
2016 }
2017 /**
2018 * Get source of option value. See also .optsWithGlobals().
2019 * Expected values are default | config | env | cli | implied
2020 *
2021 * @param {string} key
2022 * @return {string}
2023 */
2024 getOptionValueSourceWithGlobals(key) {
2025 let source;
2026 this._getCommandAndAncestors().forEach((cmd) => {
2027 if (cmd.getOptionValueSource(key) !== void 0) {
2028 source = cmd.getOptionValueSource(key);
2029 }
2030 });
2031 return source;
2032 }
2033 /**
2034 * Get user arguments from implied or explicit arguments.
2035 * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.
2036 *
2037 * @private
2038 */
2039 _prepareUserArgs(argv, parseOptions) {
2040 if (argv !== void 0 && !Array.isArray(argv)) {
2041 throw new Error("first parameter to parse must be array or undefined");
2042 }
2043 parseOptions = parseOptions || {};
2044 if (argv === void 0 && parseOptions.from === void 0) {
2045 if (process2.versions?.electron) {
2046 parseOptions.from = "electron";
2047 }
2048 const execArgv = process2.execArgv ?? [];
2049 if (execArgv.includes("-e") || execArgv.includes("--eval") || execArgv.includes("-p") || execArgv.includes("--print")) {
2050 parseOptions.from = "eval";
2051 }
2052 }
2053 if (argv === void 0) {
2054 argv = process2.argv;
2055 }
2056 this.rawArgs = argv.slice();
2057 let userArgs;
2058 switch (parseOptions.from) {
2059 case void 0:
2060 case "node":
2061 this._scriptPath = argv[1];
2062 userArgs = argv.slice(2);
2063 break;
2064 case "electron":
2065 if (process2.defaultApp) {
2066 this._scriptPath = argv[1];
2067 userArgs = argv.slice(2);
2068 } else {
2069 userArgs = argv.slice(1);
2070 }
2071 break;
2072 case "user":
2073 userArgs = argv.slice(0);
2074 break;
2075 case "eval":
2076 userArgs = argv.slice(1);
2077 break;
2078 default:
2079 throw new Error(
2080 `unexpected parse option { from: '${parseOptions.from}' }`
2081 );
2082 }
2083 if (!this._name && this._scriptPath)
2084 this.nameFromFilename(this._scriptPath);
2085 this._name = this._name || "program";
2086 return userArgs;
2087 }
2088 /**
2089 * Parse `argv`, setting options and invoking commands when defined.
2090 *
2091 * Use parseAsync instead of parse if any of your action handlers are async.
2092 *
2093 * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!
2094 *
2095 * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:
2096 * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that
2097 * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged
2098 * - `'user'`: just user arguments
2099 *
2100 * @example
2101 * program.parse(); // parse process.argv and auto-detect electron and special node flags
2102 * program.parse(process.argv); // assume argv[0] is app and argv[1] is script
2103 * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]
2104 *
2105 * @param {string[]} [argv] - optional, defaults to process.argv
2106 * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron
2107 * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'
2108 * @return {Command} `this` command for chaining
2109 */
2110 parse(argv, parseOptions) {
2111 this._prepareForParse();
2112 const userArgs = this._prepareUserArgs(argv, parseOptions);
2113 this._parseCommand([], userArgs);
2114 return this;
2115 }
2116 /**
2117 * Parse `argv`, setting options and invoking commands when defined.
2118 *
2119 * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!
2120 *
2121 * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:
2122 * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that
2123 * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged
2124 * - `'user'`: just user arguments
2125 *
2126 * @example
2127 * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags
2128 * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script
2129 * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]
2130 *
2131 * @param {string[]} [argv]
2132 * @param {object} [parseOptions]
2133 * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'
2134 * @return {Promise}
2135 */
2136 async parseAsync(argv, parseOptions) {
2137 this._prepareForParse();
2138 const userArgs = this._prepareUserArgs(argv, parseOptions);
2139 await this._parseCommand([], userArgs);
2140 return this;
2141 }
2142 _prepareForParse() {
2143 if (this._savedState === null) {
2144 this.saveStateBeforeParse();
2145 } else {
2146 this.restoreStateBeforeParse();
2147 }
2148 }
2149 /**
2150 * Called the first time parse is called to save state and allow a restore before subsequent calls to parse.
2151 * Not usually called directly, but available for subclasses to save their custom state.
2152 *
2153 * This is called in a lazy way. Only commands used in parsing chain will have state saved.
2154 */
2155 saveStateBeforeParse() {
2156 this._savedState = {
2157 // name is stable if supplied by author, but may be unspecified for root command and deduced during parsing
2158 _name: this._name,
2159 // option values before parse have default values (including false for negated options)
2160 // shallow clones
2161 _optionValues: { ...this._optionValues },
2162 _optionValueSources: { ...this._optionValueSources }
2163 };
2164 }
2165 /**
2166 * Restore state before parse for calls after the first.
2167 * Not usually called directly, but available for subclasses to save their custom state.
2168 *
2169 * This is called in a lazy way. Only commands used in parsing chain will have state restored.
2170 */
2171 restoreStateBeforeParse() {
2172 if (this._storeOptionsAsProperties)
2173 throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
2174- either make a new Command for each call to parse, or stop storing options as properties`);
2175 this._name = this._savedState._name;
2176 this._scriptPath = null;
2177 this.rawArgs = [];
2178 this._optionValues = { ...this._savedState._optionValues };
2179 this._optionValueSources = { ...this._savedState._optionValueSources };
2180 this.args = [];
2181 this.processedArgs = [];
2182 }
2183 /**
2184 * Throw if expected executable is missing. Add lots of help for author.
2185 *
2186 * @param {string} executableFile
2187 * @param {string} executableDir
2188 * @param {string} subcommandName
2189 */
2190 _checkForMissingExecutable(executableFile, executableDir, subcommandName) {
2191 if (fs5.existsSync(executableFile)) return;
2192 const executableDirMessage = executableDir ? `searched for local subcommand relative to directory '${executableDir}'` : "no directory for search for local subcommand, use .executableDir() to supply a custom directory";
2193 const executableMissing = `'${executableFile}' does not exist
2194 - if '${subcommandName}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
2195 - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
2196 - ${executableDirMessage}`;
2197 throw new Error(executableMissing);
2198 }
2199 /**
2200 * Execute a sub-command executable.
2201 *
2202 * @private
2203 */
2204 _executeSubCommand(subcommand, args) {
2205 args = args.slice();
2206 let launchWithNode = false;
2207 const sourceExt = [".js", ".ts", ".tsx", ".mjs", ".cjs"];
2208 function findFile(baseDir, baseName) {
2209 const localBin = path5.resolve(baseDir, baseName);
2210 if (fs5.existsSync(localBin)) return localBin;
2211 if (sourceExt.includes(path5.extname(baseName))) return void 0;
2212 const foundExt = sourceExt.find(
2213 (ext) => fs5.existsSync(`${localBin}${ext}`)
2214 );
2215 if (foundExt) return `${localBin}${foundExt}`;
2216 return void 0;
2217 }
2218 this._checkForMissingMandatoryOptions();
2219 this._checkForConflictingOptions();
2220 let executableFile = subcommand._executableFile || `${this._name}-${subcommand._name}`;
2221 let executableDir = this._executableDir || "";
2222 if (this._scriptPath) {
2223 let resolvedScriptPath;
2224 try {
2225 resolvedScriptPath = fs5.realpathSync(this._scriptPath);
2226 } catch {
2227 resolvedScriptPath = this._scriptPath;
2228 }
2229 executableDir = path5.resolve(
2230 path5.dirname(resolvedScriptPath),
2231 executableDir
2232 );
2233 }
2234 if (executableDir) {
2235 let localFile = findFile(executableDir, executableFile);
2236 if (!localFile && !subcommand._executableFile && this._scriptPath) {
2237 const legacyName = path5.basename(
2238 this._scriptPath,
2239 path5.extname(this._scriptPath)
2240 );
2241 if (legacyName !== this._name) {
2242 localFile = findFile(
2243 executableDir,
2244 `${legacyName}-${subcommand._name}`
2245 );
2246 }
2247 }
2248 executableFile = localFile || executableFile;
2249 }
2250 launchWithNode = sourceExt.includes(path5.extname(executableFile));
2251 let proc;
2252 if (process2.platform !== "win32") {
2253 if (launchWithNode) {
2254 args.unshift(executableFile);
2255 args = incrementNodeInspectorPort(process2.execArgv).concat(args);
2256 proc = childProcess.spawn(process2.argv[0], args, { stdio: "inherit" });
2257 } else {
2258 proc = childProcess.spawn(executableFile, args, { stdio: "inherit" });
2259 }
2260 } else {
2261 this._checkForMissingExecutable(
2262 executableFile,
2263 executableDir,
2264 subcommand._name
2265 );
2266 args.unshift(executableFile);
2267 args = incrementNodeInspectorPort(process2.execArgv).concat(args);
2268 proc = childProcess.spawn(process2.execPath, args, { stdio: "inherit" });
2269 }
2270 if (!proc.killed) {
2271 const signals = ["SIGUSR1", "SIGUSR2", "SIGTERM", "SIGINT", "SIGHUP"];
2272 signals.forEach((signal) => {
2273 process2.on(signal, () => {
2274 if (proc.killed === false && proc.exitCode === null) {
2275 proc.kill(signal);
2276 }
2277 });
2278 });
2279 }
2280 const exitCallback = this._exitCallback;
2281 proc.on("close", (code) => {
2282 code = code ?? 1;
2283 if (!exitCallback) {
2284 process2.exit(code);
2285 } else {
2286 exitCallback(
2287 new CommanderError2(
2288 code,
2289 "commander.executeSubCommandAsync",
2290 "(close)"
2291 )
2292 );
2293 }
2294 });
2295 proc.on("error", (err) => {
2296 if (err.code === "ENOENT") {
2297 this._checkForMissingExecutable(
2298 executableFile,
2299 executableDir,
2300 subcommand._name
2301 );
2302 } else if (err.code === "EACCES") {
2303 throw new Error(`'${executableFile}' not executable`);
2304 }
2305 if (!exitCallback) {
2306 process2.exit(1);
2307 } else {
2308 const wrappedError = new CommanderError2(
2309 1,
2310 "commander.executeSubCommandAsync",
2311 "(error)"
2312 );
2313 wrappedError.nestedError = err;
2314 exitCallback(wrappedError);
2315 }
2316 });
2317 this.runningCommand = proc;
2318 }
2319 /**
2320 * @private
2321 */
2322 _dispatchSubcommand(commandName, operands, unknown) {
2323 const subCommand = this._findCommand(commandName);
2324 if (!subCommand) this.help({ error: true });
2325 subCommand._prepareForParse();
2326 let promiseChain;
2327 promiseChain = this._chainOrCallSubCommandHook(
2328 promiseChain,
2329 subCommand,
2330 "preSubcommand"
2331 );
2332 promiseChain = this._chainOrCall(promiseChain, () => {
2333 if (subCommand._executableHandler) {
2334 this._executeSubCommand(subCommand, operands.concat(unknown));
2335 } else {
2336 return subCommand._parseCommand(operands, unknown);
2337 }
2338 });
2339 return promiseChain;
2340 }
2341 /**
2342 * Invoke help directly if possible, or dispatch if necessary.
2343 * e.g. help foo
2344 *
2345 * @private
2346 */
2347 _dispatchHelpCommand(subcommandName) {
2348 if (!subcommandName) {
2349 this.help();
2350 }
2351 const subCommand = this._findCommand(subcommandName);
2352 if (subCommand && !subCommand._executableHandler) {
2353 subCommand.help();
2354 }
2355 return this._dispatchSubcommand(
2356 subcommandName,
2357 [],
2358 [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? "--help"]
2359 );
2360 }
2361 /**
2362 * Check this.args against expected this.registeredArguments.
2363 *
2364 * @private
2365 */
2366 _checkNumberOfArguments() {
2367 this.registeredArguments.forEach((arg, i) => {
2368 if (arg.required && this.args[i] == null) {
2369 this.missingArgument(arg.name());
2370 }
2371 });
2372 if (this.registeredArguments.length > 0 && this.registeredArguments[this.registeredArguments.length - 1].variadic) {
2373 return;
2374 }
2375 if (this.args.length > this.registeredArguments.length) {
2376 this._excessArguments(this.args);
2377 }
2378 }
2379 /**
2380 * Process this.args using this.registeredArguments and save as this.processedArgs!
2381 *
2382 * @private
2383 */
2384 _processArguments() {
2385 const myParseArg = (argument, value, previous) => {
2386 let parsedValue = value;
2387 if (value !== null && argument.parseArg) {
2388 const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;
2389 parsedValue = this._callParseArg(
2390 argument,
2391 value,
2392 previous,
2393 invalidValueMessage
2394 );
2395 }
2396 return parsedValue;
2397 };
2398 this._checkNumberOfArguments();
2399 const processedArgs = [];
2400 this.registeredArguments.forEach((declaredArg, index) => {
2401 let value = declaredArg.defaultValue;
2402 if (declaredArg.variadic) {
2403 if (index < this.args.length) {
2404 value = this.args.slice(index);
2405 if (declaredArg.parseArg) {
2406 value = value.reduce((processed, v) => {
2407 return myParseArg(declaredArg, v, processed);
2408 }, declaredArg.defaultValue);
2409 }
2410 } else if (value === void 0) {
2411 value = [];
2412 }
2413 } else if (index < this.args.length) {
2414 value = this.args[index];
2415 if (declaredArg.parseArg) {
2416 value = myParseArg(declaredArg, value, declaredArg.defaultValue);
2417 }
2418 }
2419 processedArgs[index] = value;
2420 });
2421 this.processedArgs = processedArgs;
2422 }
2423 /**
2424 * Once we have a promise we chain, but call synchronously until then.
2425 *
2426 * @param {(Promise|undefined)} promise
2427 * @param {Function} fn
2428 * @return {(Promise|undefined)}
2429 * @private
2430 */
2431 _chainOrCall(promise, fn) {
2432 if (promise?.then && typeof promise.then === "function") {
2433 return promise.then(() => fn());
2434 }
2435 return fn();
2436 }
2437 /**
2438 *
2439 * @param {(Promise|undefined)} promise
2440 * @param {string} event
2441 * @return {(Promise|undefined)}
2442 * @private
2443 */
2444 _chainOrCallHooks(promise, event) {
2445 let result = promise;
2446 const hooks = [];
2447 this._getCommandAndAncestors().reverse().filter((cmd) => cmd._lifeCycleHooks[event] !== void 0).forEach((hookedCommand) => {
2448 hookedCommand._lifeCycleHooks[event].forEach((callback) => {
2449 hooks.push({ hookedCommand, callback });
2450 });
2451 });
2452 if (event === "postAction") {
2453 hooks.reverse();
2454 }
2455 hooks.forEach((hookDetail) => {
2456 result = this._chainOrCall(result, () => {
2457 return hookDetail.callback(hookDetail.hookedCommand, this);
2458 });
2459 });
2460 return result;
2461 }
2462 /**
2463 *
2464 * @param {(Promise|undefined)} promise
2465 * @param {Command} subCommand
2466 * @param {string} event
2467 * @return {(Promise|undefined)}
2468 * @private
2469 */
2470 _chainOrCallSubCommandHook(promise, subCommand, event) {
2471 let result = promise;
2472 if (this._lifeCycleHooks[event] !== void 0) {
2473 this._lifeCycleHooks[event].forEach((hook2) => {
2474 result = this._chainOrCall(result, () => {
2475 return hook2(this, subCommand);
2476 });
2477 });
2478 }
2479 return result;
2480 }
2481 /**
2482 * Process arguments in context of this command.
2483 * Returns action result, in case it is a promise.
2484 *
2485 * @private
2486 */
2487 _parseCommand(operands, unknown) {
2488 const parsed = this.parseOptions(unknown);
2489 this._parseOptionsEnv();
2490 this._parseOptionsImplied();
2491 operands = operands.concat(parsed.operands);
2492 unknown = parsed.unknown;
2493 this.args = operands.concat(unknown);
2494 if (operands && this._findCommand(operands[0])) {
2495 return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);
2496 }
2497 if (this._getHelpCommand() && operands[0] === this._getHelpCommand().name()) {
2498 return this._dispatchHelpCommand(operands[1]);
2499 }
2500 if (this._defaultCommandName) {
2501 this._outputHelpIfRequested(unknown);
2502 return this._dispatchSubcommand(
2503 this._defaultCommandName,
2504 operands,
2505 unknown
2506 );
2507 }
2508 if (this.commands.length && this.args.length === 0 && !this._actionHandler && !this._defaultCommandName) {
2509 this.help({ error: true });
2510 }
2511 this._outputHelpIfRequested(parsed.unknown);
2512 this._checkForMissingMandatoryOptions();
2513 this._checkForConflictingOptions();
2514 const checkForUnknownOptions = () => {
2515 if (parsed.unknown.length > 0) {
2516 this.unknownOption(parsed.unknown[0]);
2517 }
2518 };
2519 const commandEvent = `command:${this.name()}`;
2520 if (this._actionHandler) {
2521 checkForUnknownOptions();
2522 this._processArguments();
2523 let promiseChain;
2524 promiseChain = this._chainOrCallHooks(promiseChain, "preAction");
2525 promiseChain = this._chainOrCall(
2526 promiseChain,
2527 () => this._actionHandler(this.processedArgs)
2528 );
2529 if (this.parent) {
2530 promiseChain = this._chainOrCall(promiseChain, () => {
2531 this.parent.emit(commandEvent, operands, unknown);
2532 });
2533 }
2534 promiseChain = this._chainOrCallHooks(promiseChain, "postAction");
2535 return promiseChain;
2536 }
2537 if (this.parent?.listenerCount(commandEvent)) {
2538 checkForUnknownOptions();
2539 this._processArguments();
2540 this.parent.emit(commandEvent, operands, unknown);
2541 } else if (operands.length) {
2542 if (this._findCommand("*")) {
2543 return this._dispatchSubcommand("*", operands, unknown);
2544 }
2545 if (this.listenerCount("command:*")) {
2546 this.emit("command:*", operands, unknown);
2547 } else if (this.commands.length) {
2548 this.unknownCommand();
2549 } else {
2550 checkForUnknownOptions();
2551 this._processArguments();
2552 }
2553 } else if (this.commands.length) {
2554 checkForUnknownOptions();
2555 this.help({ error: true });
2556 } else {
2557 checkForUnknownOptions();
2558 this._processArguments();
2559 }
2560 }
2561 /**
2562 * Find matching command.
2563 *
2564 * @private
2565 * @return {Command | undefined}
2566 */
2567 _findCommand(name) {
2568 if (!name) return void 0;
2569 return this.commands.find(
2570 (cmd) => cmd._name === name || cmd._aliases.includes(name)
2571 );
2572 }
2573 /**
2574 * Return an option matching `arg` if any.
2575 *
2576 * @param {string} arg
2577 * @return {Option}
2578 * @package
2579 */
2580 _findOption(arg) {
2581 return this.options.find((option) => option.is(arg));
2582 }
2583 /**
2584 * Display an error message if a mandatory option does not have a value.
2585 * Called after checking for help flags in leaf subcommand.
2586 *
2587 * @private
2588 */
2589 _checkForMissingMandatoryOptions() {
2590 this._getCommandAndAncestors().forEach((cmd) => {
2591 cmd.options.forEach((anOption) => {
2592 if (anOption.mandatory && cmd.getOptionValue(anOption.attributeName()) === void 0) {
2593 cmd.missingMandatoryOptionValue(anOption);
2594 }
2595 });
2596 });
2597 }
2598 /**
2599 * Display an error message if conflicting options are used together in this.
2600 *
2601 * @private
2602 */
2603 _checkForConflictingLocalOptions() {
2604 const definedNonDefaultOptions = this.options.filter((option) => {
2605 const optionKey = option.attributeName();
2606 if (this.getOptionValue(optionKey) === void 0) {
2607 return false;
2608 }
2609 return this.getOptionValueSource(optionKey) !== "default";
2610 });
2611 const optionsWithConflicting = definedNonDefaultOptions.filter(
2612 (option) => option.conflictsWith.length > 0
2613 );
2614 optionsWithConflicting.forEach((option) => {
2615 const conflictingAndDefined = definedNonDefaultOptions.find(
2616 (defined) => option.conflictsWith.includes(defined.attributeName())
2617 );
2618 if (conflictingAndDefined) {
2619 this._conflictingOption(option, conflictingAndDefined);
2620 }
2621 });
2622 }
2623 /**
2624 * Display an error message if conflicting options are used together.
2625 * Called after checking for help flags in leaf subcommand.
2626 *
2627 * @private
2628 */
2629 _checkForConflictingOptions() {
2630 this._getCommandAndAncestors().forEach((cmd) => {
2631 cmd._checkForConflictingLocalOptions();
2632 });
2633 }
2634 /**
2635 * Parse options from `argv` removing known options,
2636 * and return argv split into operands and unknown arguments.
2637 *
2638 * Side effects: modifies command by storing options. Does not reset state if called again.
2639 *
2640 * Examples:
2641 *
2642 * argv => operands, unknown
2643 * --known kkk op => [op], []
2644 * op --known kkk => [op], []
2645 * sub --unknown uuu op => [sub], [--unknown uuu op]
2646 * sub -- --unknown uuu op => [sub --unknown uuu op], []
2647 *
2648 * @param {string[]} args
2649 * @return {{operands: string[], unknown: string[]}}
2650 */
2651 parseOptions(args) {
2652 const operands = [];
2653 const unknown = [];
2654 let dest = operands;
2655 function maybeOption(arg) {
2656 return arg.length > 1 && arg[0] === "-";
2657 }
2658 const negativeNumberArg = (arg) => {
2659 if (!/^-\d*\.?\d+(e[+-]?\d+)?$/.test(arg)) return false;
2660 return !this._getCommandAndAncestors().some(
2661 (cmd) => cmd.options.map((opt) => opt.short).some((short) => /^-\d$/.test(short))
2662 );
2663 };
2664 let activeVariadicOption = null;
2665 let activeGroup = null;
2666 let i = 0;
2667 while (i < args.length || activeGroup) {
2668 const arg = activeGroup ?? args[i++];
2669 activeGroup = null;
2670 if (arg === "--") {
2671 if (dest === unknown) dest.push(arg);
2672 dest.push(...args.slice(i));
2673 break;
2674 }
2675 if (activeVariadicOption && (!maybeOption(arg) || negativeNumberArg(arg))) {
2676 this.emit(`option:${activeVariadicOption.name()}`, arg);
2677 continue;
2678 }
2679 activeVariadicOption = null;
2680 if (maybeOption(arg)) {
2681 const option = this._findOption(arg);
2682 if (option) {
2683 if (option.required) {
2684 const value = args[i++];
2685 if (value === void 0) this.optionMissingArgument(option);
2686 this.emit(`option:${option.name()}`, value);
2687 } else if (option.optional) {
2688 let value = null;
2689 if (i < args.length && (!maybeOption(args[i]) || negativeNumberArg(args[i]))) {
2690 value = args[i++];
2691 }
2692 this.emit(`option:${option.name()}`, value);
2693 } else {
2694 this.emit(`option:${option.name()}`);
2695 }
2696 activeVariadicOption = option.variadic ? option : null;
2697 continue;
2698 }
2699 }
2700 if (arg.length > 2 && arg[0] === "-" && arg[1] !== "-") {
2701 const option = this._findOption(`-${arg[1]}`);
2702 if (option) {
2703 if (option.required || option.optional && this._combineFlagAndOptionalValue) {
2704 this.emit(`option:${option.name()}`, arg.slice(2));
2705 } else {
2706 this.emit(`option:${option.name()}`);
2707 activeGroup = `-${arg.slice(2)}`;
2708 }
2709 continue;
2710 }
2711 }
2712 if (/^--[^=]+=/.test(arg)) {
2713 const index = arg.indexOf("=");
2714 const option = this._findOption(arg.slice(0, index));
2715 if (option && (option.required || option.optional)) {
2716 this.emit(`option:${option.name()}`, arg.slice(index + 1));
2717 continue;
2718 }
2719 }
2720 if (dest === operands && maybeOption(arg) && !(this.commands.length === 0 && negativeNumberArg(arg))) {
2721 dest = unknown;
2722 }
2723 if ((this._enablePositionalOptions || this._passThroughOptions) && operands.length === 0 && unknown.length === 0) {
2724 if (this._findCommand(arg)) {
2725 operands.push(arg);
2726 unknown.push(...args.slice(i));
2727 break;
2728 } else if (this._getHelpCommand() && arg === this._getHelpCommand().name()) {
2729 operands.push(arg, ...args.slice(i));
2730 break;
2731 } else if (this._defaultCommandName) {
2732 unknown.push(arg, ...args.slice(i));
2733 break;
2734 }
2735 }
2736 if (this._passThroughOptions) {
2737 dest.push(arg, ...args.slice(i));
2738 break;
2739 }
2740 dest.push(arg);
2741 }
2742 return { operands, unknown };
2743 }
2744 /**
2745 * Return an object containing local option values as key-value pairs.
2746 *
2747 * @return {object}
2748 */
2749 opts() {
2750 if (this._storeOptionsAsProperties) {
2751 const result = {};
2752 const len = this.options.length;
2753 for (let i = 0; i < len; i++) {
2754 const key = this.options[i].attributeName();
2755 result[key] = key === this._versionOptionName ? this._version : this[key];
2756 }
2757 return result;
2758 }
2759 return this._optionValues;
2760 }
2761 /**
2762 * Return an object containing merged local and global option values as key-value pairs.
2763 *
2764 * @return {object}
2765 */
2766 optsWithGlobals() {
2767 return this._getCommandAndAncestors().reduce(
2768 (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),
2769 {}
2770 );
2771 }
2772 /**
2773 * Display error message and exit (or call exitOverride).
2774 *
2775 * @param {string} message
2776 * @param {object} [errorOptions]
2777 * @param {string} [errorOptions.code] - an id string representing the error
2778 * @param {number} [errorOptions.exitCode] - used with process.exit
2779 */
2780 error(message, errorOptions) {
2781 this._outputConfiguration.outputError(
2782 `${message}
2783`,
2784 this._outputConfiguration.writeErr
2785 );
2786 if (typeof this._showHelpAfterError === "string") {
2787 this._outputConfiguration.writeErr(`${this._showHelpAfterError}
2788`);
2789 } else if (this._showHelpAfterError) {
2790 this._outputConfiguration.writeErr("\n");
2791 this.outputHelp({ error: true });
2792 }
2793 const config = errorOptions || {};
2794 const exitCode = config.exitCode || 1;
2795 const code = config.code || "commander.error";
2796 this._exit(exitCode, code, message);
2797 }
2798 /**
2799 * Apply any option related environment variables, if option does
2800 * not have a value from cli or client code.
2801 *
2802 * @private
2803 */
2804 _parseOptionsEnv() {
2805 this.options.forEach((option) => {
2806 if (option.envVar && option.envVar in process2.env) {
2807 const optionKey = option.attributeName();
2808 if (this.getOptionValue(optionKey) === void 0 || ["default", "config", "env"].includes(
2809 this.getOptionValueSource(optionKey)
2810 )) {
2811 if (option.required || option.optional) {
2812 this.emit(`optionEnv:${option.name()}`, process2.env[option.envVar]);
2813 } else {
2814 this.emit(`optionEnv:${option.name()}`);
2815 }
2816 }
2817 }
2818 });
2819 }
2820 /**
2821 * Apply any implied option values, if option is undefined or default value.
2822 *
2823 * @private
2824 */
2825 _parseOptionsImplied() {
2826 const dualHelper = new DualOptions(this.options);
2827 const hasCustomOptionValue = (optionKey) => {
2828 return this.getOptionValue(optionKey) !== void 0 && !["default", "implied"].includes(this.getOptionValueSource(optionKey));
2829 };
2830 this.options.filter(
2831 (option) => option.implied !== void 0 && hasCustomOptionValue(option.attributeName()) && dualHelper.valueFromOption(
2832 this.getOptionValue(option.attributeName()),
2833 option
2834 )
2835 ).forEach((option) => {
2836 Object.keys(option.implied).filter((impliedKey) => !hasCustomOptionValue(impliedKey)).forEach((impliedKey) => {
2837 this.setOptionValueWithSource(
2838 impliedKey,
2839 option.implied[impliedKey],
2840 "implied"
2841 );
2842 });
2843 });
2844 }
2845 /**
2846 * Argument `name` is missing.
2847 *
2848 * @param {string} name
2849 * @private
2850 */
2851 missingArgument(name) {
2852 const message = `error: missing required argument '${name}'`;
2853 this.error(message, { code: "commander.missingArgument" });
2854 }
2855 /**
2856 * `Option` is missing an argument.
2857 *
2858 * @param {Option} option
2859 * @private
2860 */
2861 optionMissingArgument(option) {
2862 const message = `error: option '${option.flags}' argument missing`;
2863 this.error(message, { code: "commander.optionMissingArgument" });
2864 }
2865 /**
2866 * `Option` does not have a value, and is a mandatory option.
2867 *
2868 * @param {Option} option
2869 * @private
2870 */
2871 missingMandatoryOptionValue(option) {
2872 const message = `error: required option '${option.flags}' not specified`;
2873 this.error(message, { code: "commander.missingMandatoryOptionValue" });
2874 }
2875 /**
2876 * `Option` conflicts with another option.
2877 *
2878 * @param {Option} option
2879 * @param {Option} conflictingOption
2880 * @private
2881 */
2882 _conflictingOption(option, conflictingOption) {
2883 const findBestOptionFromValue = (option2) => {
2884 const optionKey = option2.attributeName();
2885 const optionValue = this.getOptionValue(optionKey);
2886 const negativeOption = this.options.find(
2887 (target) => target.negate && optionKey === target.attributeName()
2888 );
2889 const positiveOption = this.options.find(
2890 (target) => !target.negate && optionKey === target.attributeName()
2891 );
2892 if (negativeOption && (negativeOption.presetArg === void 0 && optionValue === false || negativeOption.presetArg !== void 0 && optionValue === negativeOption.presetArg)) {
2893 return negativeOption;
2894 }
2895 return positiveOption || option2;
2896 };
2897 const getErrorMessage = (option2) => {
2898 const bestOption = findBestOptionFromValue(option2);
2899 const optionKey = bestOption.attributeName();
2900 const source = this.getOptionValueSource(optionKey);
2901 if (source === "env") {
2902 return `environment variable '${bestOption.envVar}'`;
2903 }
2904 return `option '${bestOption.flags}'`;
2905 };
2906 const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;
2907 this.error(message, { code: "commander.conflictingOption" });
2908 }
2909 /**
2910 * Unknown option `flag`.
2911 *
2912 * @param {string} flag
2913 * @private
2914 */
2915 unknownOption(flag) {
2916 if (this._allowUnknownOption) return;
2917 let suggestion = "";
2918 if (flag.startsWith("--") && this._showSuggestionAfterError) {
2919 let candidateFlags = [];
2920 let command = this;
2921 do {
2922 const moreFlags = command.createHelp().visibleOptions(command).filter((option) => option.long).map((option) => option.long);
2923 candidateFlags = candidateFlags.concat(moreFlags);
2924 command = command.parent;
2925 } while (command && !command._enablePositionalOptions);
2926 suggestion = suggestSimilar(flag, candidateFlags);
2927 }
2928 const message = `error: unknown option '${flag}'${suggestion}`;
2929 this.error(message, { code: "commander.unknownOption" });
2930 }
2931 /**
2932 * Excess arguments, more than expected.
2933 *
2934 * @param {string[]} receivedArgs
2935 * @private
2936 */
2937 _excessArguments(receivedArgs) {
2938 if (this._allowExcessArguments) return;
2939 const expected = this.registeredArguments.length;
2940 const s = expected === 1 ? "" : "s";
2941 const forSubcommand = this.parent ? ` for '${this.name()}'` : "";
2942 const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;
2943 this.error(message, { code: "commander.excessArguments" });
2944 }
2945 /**
2946 * Unknown command.
2947 *
2948 * @private
2949 */
2950 unknownCommand() {
2951 const unknownName = this.args[0];
2952 let suggestion = "";
2953 if (this._showSuggestionAfterError) {
2954 const candidateNames = [];
2955 this.createHelp().visibleCommands(this).forEach((command) => {
2956 candidateNames.push(command.name());
2957 if (command.alias()) candidateNames.push(command.alias());
2958 });
2959 suggestion = suggestSimilar(unknownName, candidateNames);
2960 }
2961 const message = `error: unknown command '${unknownName}'${suggestion}`;
2962 this.error(message, { code: "commander.unknownCommand" });
2963 }
2964 /**
2965 * Get or set the program version.
2966 *
2967 * This method auto-registers the "-V, --version" option which will print the version number.
2968 *
2969 * You can optionally supply the flags and description to override the defaults.
2970 *
2971 * @param {string} [str]
2972 * @param {string} [flags]
2973 * @param {string} [description]
2974 * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments
2975 */
2976 version(str, flags, description) {
2977 if (str === void 0) return this._version;
2978 this._version = str;
2979 flags = flags || "-V, --version";
2980 description = description || "output the version number";
2981 const versionOption = this.createOption(flags, description);
2982 this._versionOptionName = versionOption.attributeName();
2983 this._registerOption(versionOption);
2984 this.on("option:" + versionOption.name(), () => {
2985 this._outputConfiguration.writeOut(`${str}
2986`);
2987 this._exit(0, "commander.version", str);
2988 });
2989 return this;
2990 }
2991 /**
2992 * Set the description.
2993 *
2994 * @param {string} [str]
2995 * @param {object} [argsDescription]
2996 * @return {(string|Command)}
2997 */
2998 description(str, argsDescription) {
2999 if (str === void 0 && argsDescription === void 0)
3000 return this._description;
3001 this._description = str;
3002 if (argsDescription) {
3003 this._argsDescription = argsDescription;
3004 }
3005 return this;
3006 }
3007 /**
3008 * Set the summary. Used when listed as subcommand of parent.
3009 *
3010 * @param {string} [str]
3011 * @return {(string|Command)}
3012 */
3013 summary(str) {
3014 if (str === void 0) return this._summary;
3015 this._summary = str;
3016 return this;
3017 }
3018 /**
3019 * Set an alias for the command.
3020 *
3021 * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.
3022 *
3023 * @param {string} [alias]
3024 * @return {(string|Command)}
3025 */
3026 alias(alias) {
3027 if (alias === void 0) return this._aliases[0];
3028 let command = this;
3029 if (this.commands.length !== 0 && this.commands[this.commands.length - 1]._executableHandler) {
3030 command = this.commands[this.commands.length - 1];
3031 }
3032 if (alias === command._name)
3033 throw new Error("Command alias can't be the same as its name");
3034 const matchingCommand = this.parent?._findCommand(alias);
3035 if (matchingCommand) {
3036 const existingCmd = [matchingCommand.name()].concat(matchingCommand.aliases()).join("|");
3037 throw new Error(
3038 `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`
3039 );
3040 }
3041 command._aliases.push(alias);
3042 return this;
3043 }
3044 /**
3045 * Set aliases for the command.
3046 *
3047 * Only the first alias is shown in the auto-generated help.
3048 *
3049 * @param {string[]} [aliases]
3050 * @return {(string[]|Command)}
3051 */
3052 aliases(aliases) {
3053 if (aliases === void 0) return this._aliases;
3054 aliases.forEach((alias) => this.alias(alias));
3055 return this;
3056 }
3057 /**
3058 * Set / get the command usage `str`.
3059 *
3060 * @param {string} [str]
3061 * @return {(string|Command)}
3062 */
3063 usage(str) {
3064 if (str === void 0) {
3065 if (this._usage) return this._usage;
3066 const args = this.registeredArguments.map((arg) => {
3067 return humanReadableArgName(arg);
3068 });
3069 return [].concat(
3070 this.options.length || this._helpOption !== null ? "[options]" : [],
3071 this.commands.length ? "[command]" : [],
3072 this.registeredArguments.length ? args : []
3073 ).join(" ");
3074 }
3075 this._usage = str;
3076 return this;
3077 }
3078 /**
3079 * Get or set the name of the command.
3080 *
3081 * @param {string} [str]
3082 * @return {(string|Command)}
3083 */
3084 name(str) {
3085 if (str === void 0) return this._name;
3086 this._name = str;
3087 return this;
3088 }
3089 /**
3090 * Set/get the help group heading for this subcommand in parent command's help.
3091 *
3092 * @param {string} [heading]
3093 * @return {Command | string}
3094 */
3095 helpGroup(heading) {
3096 if (heading === void 0) return this._helpGroupHeading ?? "";
3097 this._helpGroupHeading = heading;
3098 return this;
3099 }
3100 /**
3101 * Set/get the default help group heading for subcommands added to this command.
3102 * (This does not override a group set directly on the subcommand using .helpGroup().)
3103 *
3104 * @example
3105 * program.commandsGroup('Development Commands:);
3106 * program.command('watch')...
3107 * program.command('lint')...
3108 * ...
3109 *
3110 * @param {string} [heading]
3111 * @returns {Command | string}
3112 */
3113 commandsGroup(heading) {
3114 if (heading === void 0) return this._defaultCommandGroup ?? "";
3115 this._defaultCommandGroup = heading;
3116 return this;
3117 }
3118 /**
3119 * Set/get the default help group heading for options added to this command.
3120 * (This does not override a group set directly on the option using .helpGroup().)
3121 *
3122 * @example
3123 * program
3124 * .optionsGroup('Development Options:')
3125 * .option('-d, --debug', 'output extra debugging')
3126 * .option('-p, --profile', 'output profiling information')
3127 *
3128 * @param {string} [heading]
3129 * @returns {Command | string}
3130 */
3131 optionsGroup(heading) {
3132 if (heading === void 0) return this._defaultOptionGroup ?? "";
3133 this._defaultOptionGroup = heading;
3134 return this;
3135 }
3136 /**
3137 * @param {Option} option
3138 * @private
3139 */
3140 _initOptionGroup(option) {
3141 if (this._defaultOptionGroup && !option.helpGroupHeading)
3142 option.helpGroup(this._defaultOptionGroup);
3143 }
3144 /**
3145 * @param {Command} cmd
3146 * @private
3147 */
3148 _initCommandGroup(cmd) {
3149 if (this._defaultCommandGroup && !cmd.helpGroup())
3150 cmd.helpGroup(this._defaultCommandGroup);
3151 }
3152 /**
3153 * Set the name of the command from script filename, such as process.argv[1],
3154 * or require.main.filename, or __filename.
3155 *
3156 * (Used internally and public although not documented in README.)
3157 *
3158 * @example
3159 * program.nameFromFilename(require.main.filename);
3160 *
3161 * @param {string} filename
3162 * @return {Command}
3163 */
3164 nameFromFilename(filename) {
3165 this._name = path5.basename(filename, path5.extname(filename));
3166 return this;
3167 }
3168 /**
3169 * Get or set the directory for searching for executable subcommands of this command.
3170 *
3171 * @example
3172 * program.executableDir(__dirname);
3173 * // or
3174 * program.executableDir('subcommands');
3175 *
3176 * @param {string} [path]
3177 * @return {(string|null|Command)}
3178 */
3179 executableDir(path6) {
3180 if (path6 === void 0) return this._executableDir;
3181 this._executableDir = path6;
3182 return this;
3183 }
3184 /**
3185 * Return program help documentation.
3186 *
3187 * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout
3188 * @return {string}
3189 */
3190 helpInformation(contextOptions) {
3191 const helper = this.createHelp();
3192 const context = this._getOutputContext(contextOptions);
3193 helper.prepareContext({
3194 error: context.error,
3195 helpWidth: context.helpWidth,
3196 outputHasColors: context.hasColors
3197 });
3198 const text = helper.formatHelp(this, helper);
3199 if (context.hasColors) return text;
3200 return this._outputConfiguration.stripColor(text);
3201 }
3202 /**
3203 * @typedef HelpContext
3204 * @type {object}
3205 * @property {boolean} error
3206 * @property {number} helpWidth
3207 * @property {boolean} hasColors
3208 * @property {function} write - includes stripColor if needed
3209 *
3210 * @returns {HelpContext}
3211 * @private
3212 */
3213 _getOutputContext(contextOptions) {
3214 contextOptions = contextOptions || {};
3215 const error = !!contextOptions.error;
3216 let baseWrite;
3217 let hasColors;
3218 let helpWidth;
3219 if (error) {
3220 baseWrite = (str) => this._outputConfiguration.writeErr(str);
3221 hasColors = this._outputConfiguration.getErrHasColors();
3222 helpWidth = this._outputConfiguration.getErrHelpWidth();
3223 } else {
3224 baseWrite = (str) => this._outputConfiguration.writeOut(str);
3225 hasColors = this._outputConfiguration.getOutHasColors();
3226 helpWidth = this._outputConfiguration.getOutHelpWidth();
3227 }
3228 const write = (str) => {
3229 if (!hasColors) str = this._outputConfiguration.stripColor(str);
3230 return baseWrite(str);
3231 };
3232 return { error, write, hasColors, helpWidth };
3233 }
3234 /**
3235 * Output help information for this command.
3236 *
3237 * Outputs built-in help, and custom text added using `.addHelpText()`.
3238 *
3239 * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout
3240 */
3241 outputHelp(contextOptions) {
3242 let deprecatedCallback;
3243 if (typeof contextOptions === "function") {
3244 deprecatedCallback = contextOptions;
3245 contextOptions = void 0;
3246 }
3247 const outputContext = this._getOutputContext(contextOptions);
3248 const eventContext = {
3249 error: outputContext.error,
3250 write: outputContext.write,
3251 command: this
3252 };
3253 this._getCommandAndAncestors().reverse().forEach((command) => command.emit("beforeAllHelp", eventContext));
3254 this.emit("beforeHelp", eventContext);
3255 let helpInformation = this.helpInformation({ error: outputContext.error });
3256 if (deprecatedCallback) {
3257 helpInformation = deprecatedCallback(helpInformation);
3258 if (typeof helpInformation !== "string" && !Buffer.isBuffer(helpInformation)) {
3259 throw new Error("outputHelp callback must return a string or a Buffer");
3260 }
3261 }
3262 outputContext.write(helpInformation);
3263 if (this._getHelpOption()?.long) {
3264 this.emit(this._getHelpOption().long);
3265 }
3266 this.emit("afterHelp", eventContext);
3267 this._getCommandAndAncestors().forEach(
3268 (command) => command.emit("afterAllHelp", eventContext)
3269 );
3270 }
3271 /**
3272 * You can pass in flags and a description to customise the built-in help option.
3273 * Pass in false to disable the built-in help option.
3274 *
3275 * @example
3276 * program.helpOption('-?, --help' 'show help'); // customise
3277 * program.helpOption(false); // disable
3278 *
3279 * @param {(string | boolean)} flags
3280 * @param {string} [description]
3281 * @return {Command} `this` command for chaining
3282 */
3283 helpOption(flags, description) {
3284 if (typeof flags === "boolean") {
3285 if (flags) {
3286 if (this._helpOption === null) this._helpOption = void 0;
3287 if (this._defaultOptionGroup) {
3288 this._initOptionGroup(this._getHelpOption());
3289 }
3290 } else {
3291 this._helpOption = null;
3292 }
3293 return this;
3294 }
3295 this._helpOption = this.createOption(
3296 flags ?? "-h, --help",
3297 description ?? "display help for command"
3298 );
3299 if (flags || description) this._initOptionGroup(this._helpOption);
3300 return this;
3301 }
3302 /**
3303 * Lazy create help option.
3304 * Returns null if has been disabled with .helpOption(false).
3305 *
3306 * @returns {(Option | null)} the help option
3307 * @package
3308 */
3309 _getHelpOption() {
3310 if (this._helpOption === void 0) {
3311 this.helpOption(void 0, void 0);
3312 }
3313 return this._helpOption;
3314 }
3315 /**
3316 * Supply your own option to use for the built-in help option.
3317 * This is an alternative to using helpOption() to customise the flags and description etc.
3318 *
3319 * @param {Option} option
3320 * @return {Command} `this` command for chaining
3321 */
3322 addHelpOption(option) {
3323 this._helpOption = option;
3324 this._initOptionGroup(option);
3325 return this;
3326 }
3327 /**
3328 * Output help information and exit.
3329 *
3330 * Outputs built-in help, and custom text added using `.addHelpText()`.
3331 *
3332 * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout
3333 */
3334 help(contextOptions) {
3335 this.outputHelp(contextOptions);
3336 let exitCode = Number(process2.exitCode ?? 0);
3337 if (exitCode === 0 && contextOptions && typeof contextOptions !== "function" && contextOptions.error) {
3338 exitCode = 1;
3339 }
3340 this._exit(exitCode, "commander.help", "(outputHelp)");
3341 }
3342 /**
3343 * // Do a little typing to coordinate emit and listener for the help text events.
3344 * @typedef HelpTextEventContext
3345 * @type {object}
3346 * @property {boolean} error
3347 * @property {Command} command
3348 * @property {function} write
3349 */
3350 /**
3351 * Add additional text to be displayed with the built-in help.
3352 *
3353 * Position is 'before' or 'after' to affect just this command,
3354 * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.
3355 *
3356 * @param {string} position - before or after built-in help
3357 * @param {(string | Function)} text - string to add, or a function returning a string
3358 * @return {Command} `this` command for chaining
3359 */
3360 addHelpText(position, text) {
3361 const allowedValues = ["beforeAll", "before", "after", "afterAll"];
3362 if (!allowedValues.includes(position)) {
3363 throw new Error(`Unexpected value for position to addHelpText.
3364Expecting one of '${allowedValues.join("', '")}'`);
3365 }
3366 const helpEvent = `${position}Help`;
3367 this.on(helpEvent, (context) => {
3368 let helpStr;
3369 if (typeof text === "function") {
3370 helpStr = text({ error: context.error, command: context.command });
3371 } else {
3372 helpStr = text;
3373 }
3374 if (helpStr) {
3375 context.write(`${helpStr}
3376`);
3377 }
3378 });
3379 return this;
3380 }
3381 /**
3382 * Output help information if help flags specified
3383 *
3384 * @param {Array} args - array of options to search for help flags
3385 * @private
3386 */
3387 _outputHelpIfRequested(args) {
3388 const helpOption = this._getHelpOption();
3389 const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));
3390 if (helpRequested) {
3391 this.outputHelp();
3392 this._exit(0, "commander.helpDisplayed", "(outputHelp)");
3393 }
3394 }
3395 };
3396 function incrementNodeInspectorPort(args) {
3397 return args.map((arg) => {
3398 if (!arg.startsWith("--inspect")) {
3399 return arg;
3400 }
3401 let debugOption;
3402 let debugHost = "127.0.0.1";
3403 let debugPort = "9229";
3404 let match;
3405 if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {
3406 debugOption = match[1];
3407 } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null) {
3408 debugOption = match[1];
3409 if (/^\d+$/.test(match[3])) {
3410 debugPort = match[3];
3411 } else {
3412 debugHost = match[3];
3413 }
3414 } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/)) !== null) {
3415 debugOption = match[1];
3416 debugHost = match[3];
3417 debugPort = match[4];
3418 }
3419 if (debugOption && debugPort !== "0") {
3420 return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;
3421 }
3422 return arg;
3423 });
3424 }
3425 function useColor() {
3426 if (process2.env.NO_COLOR || process2.env.FORCE_COLOR === "0" || process2.env.FORCE_COLOR === "false")
3427 return false;
3428 if (process2.env.FORCE_COLOR || process2.env.CLICOLOR_FORCE !== void 0)
3429 return true;
3430 return void 0;
3431 }
3432 exports2.Command = Command2;
3433 exports2.useColor = useColor;
3434 }
3435});
3436
3437// node_modules/.pnpm/commander@14.0.1/node_modules/commander/index.js
3438var require_commander = __commonJS({
3439 "node_modules/.pnpm/commander@14.0.1/node_modules/commander/index.js"(exports2) {
3440 var { Argument: Argument2 } = require_argument();
3441 var { Command: Command2 } = require_command();
3442 var { CommanderError: CommanderError2, InvalidArgumentError: InvalidArgumentError2 } = require_error();
3443 var { Help: Help2 } = require_help();
3444 var { Option: Option2 } = require_option();
3445 exports2.program = new Command2();
3446 exports2.createCommand = (name) => new Command2(name);
3447 exports2.createOption = (flags, description) => new Option2(flags, description);
3448 exports2.createArgument = (name, description) => new Argument2(name, description);
3449 exports2.Command = Command2;
3450 exports2.Option = Option2;
3451 exports2.Argument = Argument2;
3452 exports2.Help = Help2;
3453 exports2.CommanderError = CommanderError2;
3454 exports2.InvalidArgumentError = InvalidArgumentError2;
3455 exports2.InvalidOptionArgumentError = InvalidArgumentError2;
3456 }
3457});
3458
3459// node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/utils.js
3460var require_utils = __commonJS({
3461 "node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/utils.js"(exports2) {
3462 "use strict";
3463 Object.defineProperty(exports2, "__esModule", { value: true });
3464 exports2.toCommandProperties = exports2.toCommandValue = void 0;
3465 function toCommandValue(input) {
3466 if (input === null || input === void 0) {
3467 return "";
3468 } else if (typeof input === "string" || input instanceof String) {
3469 return input;
3470 }
3471 return JSON.stringify(input);
3472 }
3473 exports2.toCommandValue = toCommandValue;
3474 function toCommandProperties(annotationProperties) {
3475 if (!Object.keys(annotationProperties).length) {
3476 return {};
3477 }
3478 return {
3479 title: annotationProperties.title,
3480 file: annotationProperties.file,
3481 line: annotationProperties.startLine,
3482 endLine: annotationProperties.endLine,
3483 col: annotationProperties.startColumn,
3484 endColumn: annotationProperties.endColumn
3485 };
3486 }
3487 exports2.toCommandProperties = toCommandProperties;
3488 }
3489});
3490
3491// node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/command.js
3492var require_command2 = __commonJS({
3493 "node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/command.js"(exports2) {
3494 "use strict";
3495 var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3496 if (k2 === void 0) k2 = k;
3497 var desc = Object.getOwnPropertyDescriptor(m, k);
3498 if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
3499 desc = { enumerable: true, get: function() {
3500 return m[k];
3501 } };
3502 }
3503 Object.defineProperty(o, k2, desc);
3504 } : function(o, m, k, k2) {
3505 if (k2 === void 0) k2 = k;
3506 o[k2] = m[k];
3507 });
3508 var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3509 Object.defineProperty(o, "default", { enumerable: true, value: v });
3510 } : function(o, v) {
3511 o["default"] = v;
3512 });
3513 var __importStar = exports2 && exports2.__importStar || function(mod) {
3514 if (mod && mod.__esModule) return mod;
3515 var result = {};
3516 if (mod != null) {
3517 for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
3518 }
3519 __setModuleDefault(result, mod);
3520 return result;
3521 };
3522 Object.defineProperty(exports2, "__esModule", { value: true });
3523 exports2.issue = exports2.issueCommand = void 0;
3524 var os3 = __importStar(require("os"));
3525 var utils_1 = require_utils();
3526 function issueCommand(command, properties, message) {
3527 const cmd = new Command2(command, properties, message);
3528 process.stdout.write(cmd.toString() + os3.EOL);
3529 }
3530 exports2.issueCommand = issueCommand;
3531 function issue(name, message = "") {
3532 issueCommand(name, {}, message);
3533 }
3534 exports2.issue = issue;
3535 var CMD_STRING = "::";
3536 var Command2 = class {
3537 constructor(command, properties, message) {
3538 if (!command) {
3539 command = "missing.command";
3540 }
3541 this.command = command;
3542 this.properties = properties;
3543 this.message = message;
3544 }
3545 toString() {
3546 let cmdStr = CMD_STRING + this.command;
3547 if (this.properties && Object.keys(this.properties).length > 0) {
3548 cmdStr += " ";
3549 let first = true;
3550 for (const key in this.properties) {
3551 if (this.properties.hasOwnProperty(key)) {
3552 const val = this.properties[key];
3553 if (val) {
3554 if (first) {
3555 first = false;
3556 } else {
3557 cmdStr += ",";
3558 }
3559 cmdStr += `${key}=${escapeProperty(val)}`;
3560 }
3561 }
3562 }
3563 }
3564 cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
3565 return cmdStr;
3566 }
3567 };
3568 function escapeData(s) {
3569 return (0, utils_1.toCommandValue)(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A");
3570 }
3571 function escapeProperty(s) {
3572 return (0, utils_1.toCommandValue)(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/:/g, "%3A").replace(/,/g, "%2C");
3573 }
3574 }
3575});
3576
3577// node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/file-command.js
3578var require_file_command = __commonJS({
3579 "node_modules/.pnpm/@actions+core@1.11.1/node_modules/@actions/core/lib/file-command.js"(exports2) {
3580 "use strict";
3581 var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3582 if (k2 === void 0) k2 = k;
3583 var desc = Object.getOwnPropertyDescriptor(m, k);
3584 if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
3585 desc = { enumerable: true, get: function() {
3586 return m[k];
3587 } };
3588 }
3589 Object.defineProperty(o, k2, desc);
3590 } : function(o, m, k, k2) {
3591 if (k2 === void 0) k2 = k;
3592 o[k2] = m[k];
3593 });
3594 var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3595 Object.defineProperty(o, "default", { enumerable: true, value: v });
3596 } : function(o, v) {
3597 o["default"] = v;
3598 });
3599 var __importStar = exports2 && exports2.__importStar || function(mod) {
3600 if (mod && mod.__esModule) return mod;
3601 var result = {};
3602 if (mod != null) {
3603 for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
3604 }
3605 __setModuleDefault(result, mod);
3606 return result;
3607 };
3608 Object.defineProperty(exports2, "__esModule", { value: true });
3609 exports2.prepareKeyValueMessage = exports2.issueFileCommand = void 0;
3610 var crypto = __importStar(require("crypto"));
3611 var fs5 = __importStar(require("fs"));
3612 var os3 = __importStar(require("os"));
3613 var utils_1 = require_utils();
3614 function issueFileCommand(command, message) {
3615 const filePath = process.env[`GITHUB_${command}`];
3616 if (!filePath) {
3617 throw new Error(`Unable to find environment variable for file command ${command}`);
3618 }
3619 if (!fs5.existsSync(filePath)) {
3620 throw new Error(`Missing file at path: ${filePath}`);
3621 }
3622 fs5.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os3.EOL}`, {
3623 encoding: "utf8"
3624 });
3625 }
3626 exports2.issueFileCommand = issueFileCommand;
3627 function prepareKeyValueMessage(key, value) {
3628 const delimiter = `ghadelimiter_${crypto.randomUUID()}`;
3629 const convertedValue = (0, utils_1.toCommandValue)(value);
3630 if (key.includes(delimiter)) {
3631 throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`);
3632 }
3633 if (convertedValue.includes(delimiter)) {
3634 throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`);
3635 }
3636 return `${key}<<${delimiter}${os3.EOL}${convertedValue}${os3.EOL}${delimiter}`;
3637 }
3638 exports2.prepareKeyValueMessage = prepareKeyValueMessage;
3639 }
3640});
3641
3642// node_modules/.pnpm/@actions+http-client@2.2.3/node_modules/@actions/http-client/lib/proxy.js
3643var require_proxy = __commonJS({
3644 "node_modules/.pnpm/@actions+http-client@2.2.3/node_modules/@actions/http-client/lib/proxy.js"(exports2) {
3645 "use strict";
3646 Object.defineProperty(exports2, "__esModule", { value: true });
3647 exports2.checkBypass = exports2.getProxyUrl = void 0;
3648 function getProxyUrl(reqUrl) {
3649 const usingSsl = reqUrl.protocol === "https:";
3650 if (checkBypass(reqUrl)) {
3651 return void 0;
3652 }
3653 const proxyVar = (() => {
3654 if (usingSsl) {
3655 return process.env["https_proxy"] || process.env["HTTPS_PROXY"];
3656 } else {
3657 return process.env["http_proxy"] || process.env["HTTP_PROXY"];
3658 }
3659 })();
3660 if (proxyVar) {
3661 try {
3662 return new DecodedURL(proxyVar);
3663 } catch (_a) {
3664 if (!proxyVar.startsWith("http://") && !proxyVar.startsWith("https://"))
3665 return new DecodedURL(`http://${proxyVar}`);
3666 }
3667 } else {
3668 return void 0;
3669 }
3670 }
3671 exports2.getProxyUrl = getProxyUrl;
3672 function checkBypass(reqUrl) {
3673 if (!reqUrl.hostname) {
3674 return false;
3675 }
3676 const reqHost = reqUrl.hostname;
3677 if (isLoopbackAddress(reqHost)) {
3678 return true;
3679 }
3680 const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || "";
3681 if (!noProxy) {
3682 return false;
3683 }
3684 let reqPort;
3685 if (reqUrl.port) {
3686 reqPort = Number(reqUrl.port);
3687 } else if (reqUrl.protocol === "http:") {
3688 reqPort = 80;
3689 } else if (reqUrl.protocol === "https:") {
3690 reqPort = 443;
3691 }
3692 const upperReqHosts = [reqUrl.hostname.toUpperCase()];
3693 if (typeof reqPort === "number") {
3694 upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
3695 }
3696 for (const upperNoProxyItem of noProxy.split(",").map((x) => x.trim().toUpperCase()).filter((x) => x)) {
3697 if (upperNoProxyItem === "*" || upperReqHosts.some((x) => x === upperNoProxyItem || x.endsWith(`.${upperNoProxyItem}`) || upperNoProxyItem.startsWith(".") && x.endsWith(`${upperNoProxyItem}`))) {
3698 return true;
3699 }
3700 }
3701 return false;
3702 }
3703 exports2.checkBypass = checkBypass;
3704 function isLoopbackAddress(host) {
3705 const hostLower = host.toLowerCase();
3706 return hostLower === "localhost" || hostLower.startsWith("127.") || hostLower.startsWith("[::1]") || hostLower.startsWith("[0:0:0:0:0:0:0:1]");
3707 }
3708 var DecodedURL = class extends URL {
3709 constructor(url, base) {
3710 super(url, base);
3711 this._decodedUsername = decodeURIComponent(super.username);
3712 this._decodedPassword = decodeURIComponent(super.password);
3713 }
3714 get username() {
3715 return this._decodedUsername;
3716 }
3717 get password() {
3718 return this._decodedPassword;
3719 }
3720 };
3721 }
3722});
3723
3724// node_modules/.pnpm/tunnel@0.0.6/node_modules/tunnel/lib/tunnel.js
3725var require_tunnel = __commonJS({
3726 "node_modules/.pnpm/tunnel@0.0.6/node_modules/tunnel/lib/tunnel.js"(exports2) {
3727 "use strict";
3728 var net = require("net");
3729 var tls = require("tls");
3730 var http = require("http");
3731 var https = require("https");
3732 var events = require("events");
3733 var assert = require("assert");
3734 var util = require("util");
3735 exports2.httpOverHttp = httpOverHttp;
3736 exports2.httpsOverHttp = httpsOverHttp;
3737 exports2.httpOverHttps = httpOverHttps;
3738 exports2.httpsOverHttps = httpsOverHttps;
3739 function httpOverHttp(options) {
3740 var agent = new TunnelingAgent(options);
3741 agent.request = http.request;
3742 return agent;
3743 }
3744 function httpsOverHttp(options) {
3745 var agent = new TunnelingAgent(options);
3746 agent.request = http.request;
3747 agent.createSocket = createSecureSocket;
3748 agent.defaultPort = 443;
3749 return agent;
3750 }
3751 function httpOverHttps(options) {
3752 var agent = new TunnelingAgent(options);
3753 agent.request = https.request;
3754 return agent;
3755 }
3756 function httpsOverHttps(options) {
3757 var agent = new TunnelingAgent(options);
3758 agent.request = https.request;
3759 agent.createSocket = createSecureSocket;
3760 agent.defaultPort = 443;
3761 return agent;
3762 }
3763 function TunnelingAgent(options) {
3764 var self = this;
3765 self.options = options || {};
3766 self.proxyOptions = self.options.proxy || {};
3767 self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
3768 self.requests = [];
3769 self.sockets = [];
3770 self.on("free", function onFree(socket, host, port, localAddress) {
3771 var options2 = toOptions(host, port, localAddress);
3772 for (var i = 0, len = self.requests.length; i < len; ++i) {
3773 var pending = self.requests[i];
3774 if (pending.host === options2.host && pending.port === options2.port) {
3775 self.requests.splice(i, 1);
3776 pending.request.onSocket(socket);
3777 return;
3778 }
3779 }
3780 socket.destroy();
3781 self.removeSocket(socket);
3782 });
3783 }
3784 util.inherits(TunnelingAgent, events.EventEmitter);
3785 TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
3786 var self = this;
3787 var options = mergeOptions({ request: req }, self.options, toOptions(host, port, localAddress));
3788 if (self.sockets.length >= this.maxSockets) {
3789 self.requests.push(options);
3790 return;
3791 }
3792 self.createSocket(options, function(socket) {
3793 socket.on("free", onFree);
3794 socket.on("close", onCloseOrRemove);
3795 socket.on("agentRemove", onCloseOrRemove);
3796 req.onSocket(socket);
3797 function onFree() {
3798 self.emit("free", socket, options);
3799 }
3800 function onCloseOrRemove(err) {
3801 self.removeSocket(socket);
3802 socket.removeListener("free", onFree);
3803 socket.removeListener("close", onCloseOrRemove);
3804 socket.removeListener("agentRemove", onCloseOrRemove);
3805 }
3806 });
3807 };
3808 TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
3809 var self = this;
3810 var placeholder = {};
3811 self.sockets.push(placeholder);
3812 var connectOptions = mergeOptions({}, self.proxyOptions, {
3813 method: "CONNECT",
3814 path: options.host + ":" + options.port,
3815 agent: false,
3816 headers: {
3817 host: options.host + ":" + options.port
3818 }
3819 });
3820 if (options.localAddress) {
3821 connectOptions.localAddress = options.localAddress;
3822 }
3823 if (connectOptions.proxyAuth) {
3824 connectOptions.headers = connectOptions.headers || {};
3825 connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64");
3826 }
3827 debug("making CONNECT request");
3828 var connectReq = self.request(connectOptions);
3829 connectReq.useChunkedEncodingByDefault = false;
3830 connectReq.once("response", onResponse);
3831 connectReq.once("upgrade", onUpgrade);
3832 connectReq.once("connect", onConnect);
3833 connectReq.once("error", onError);
3834 connectReq.end();
3835 function onResponse(res) {
3836 res.upgrade = true;
3837 }
3838 function onUpgrade(res, socket, head) {
3839 process.nextTick(function() {
3840 onConnect(res, socket, head);
3841 });
3842 }
3843 function onConnect(res, socket, head) {
3844 connectReq.removeAllListeners();
3845 socket.removeAllListeners();
3846 if (res.statusCode !== 200) {
3847 debug(
3848 "tunneling socket could not be established, statusCode=%d",
3849 res.statusCode
3850 );
3851 socket.destroy();
3852 var error = new Error("tunneling socket could not be established, statusCode=" + res.statusCode);
3853 error.code = "ECONNRESET";
3854 options.request.emit("error", error);
3855 self.removeSocket(placeholder);
3856 return;
3857 }
3858 if (head.length > 0) {
3859 debug("got illegal response body from proxy");
3860 socket.destroy();
3861 var error = new Error("got illegal response body from proxy");
3862 error.code = "ECONNRESET";
3863 options.request.emit("error", error);
3864 self.removeSocket(placeholder);
3865 return;
3866 }
3867 debug("tunneling connection has established");
3868 self.sockets[self.sockets.indexOf(placeholder)] = socket;
3869 return cb(socket);
3870 }
3871 function onError(cause) {
3872 connectReq.removeAllListeners();
3873 debug(
3874 "tunneling socket could not be established, cause=%s\n",
3875 cause.message,
3876 cause.stack
3877 );
3878 var error = new Error("tunneling socket could not be established, cause=" + cause.message);
3879 error.code = "ECONNRESET";
3880 options.request.emit("error", error);
3881 self.removeSocket(placeholder);
3882 }
3883 };
3884 TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
3885 var pos = this.sockets.indexOf(socket);
3886 if (pos === -1) {
3887 return;
3888 }
3889 this.sockets.splice(pos, 1);
3890 var pending = this.requests.shift();
3891 if (pending) {
3892 this.createSocket(pending, function(socket2) {
3893 pending.request.onSocket(socket2);
3894 });
3895 }
3896 };
3897 function createSecureSocket(options, cb) {
3898 var self = this;
3899 TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
3900 var hostHeader = options.request.getHeader("host");
3901 var tlsOptions = mergeOptions({}, self.options, {
3902 socket,
3903 servername: hostHeader ? hostHeader.replace(/:.*$/, "") : options.host
3904 });
3905 var secureSocket = tls.connect(0, tlsOptions);
3906 self.sockets[self.sockets.indexOf(socket)] = secureSocket;
3907 cb(secureSocket);
3908 });
3909 }
3910 function toOptions(host, port, localAddress) {
3911 if (typeof host === "string") {
3912 return {
3913 host,
3914 port,
3915 localAddress
3916 };
3917 }
3918 return host;
3919 }
3920 function mergeOptions(target) {
3921 for (var i = 1, len = arguments.length; i < len; ++i) {
3922 var overrides = arguments[i];
3923 if (typeof overrides === "object") {
3924 var keys = Object.keys(overrides);
3925 for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
3926 var k = keys[j];
3927 if (overrides[k] !== void 0) {
3928 target[k] = overrides[k];
3929 }
3930 }
3931 }
3932 }
3933 return target;
3934 }
3935 var debug;
3936 if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
3937 debug = function() {
3938 var args = Array.prototype.slice.call(arguments);
3939 if (typeof args[0] === "string") {
3940 args[0] = "TUNNEL: " + args[0];
3941 } else {
3942 args.unshift("TUNNEL:");
3943 }
3944 console.error.apply(console, args);
3945 };
3946 } else {
3947 debug = function() {
3948 };
3949 }
3950 exports2.debug = debug;
3951 }
3952});
3953
3954// node_modules/.pnpm/tunnel@0.0.6/node_modules/tunnel/index.js
3955var require_tunnel2 = __commonJS({
3956 "node_modules/.pnpm/tunnel@0.0.6/node_modules/tunnel/index.js"(exports2, module2) {
3957 module2.exports = require_tunnel();
3958 }
3959});
3960
3961// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/symbols.js
3962var require_symbols = __commonJS({
3963 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/symbols.js"(exports2, module2) {
3964 module2.exports = {
3965 kClose: Symbol("close"),
3966 kDestroy: Symbol("destroy"),
3967 kDispatch: Symbol("dispatch"),
3968 kUrl: Symbol("url"),
3969 kWriting: Symbol("writing"),
3970 kResuming: Symbol("resuming"),
3971 kQueue: Symbol("queue"),
3972 kConnect: Symbol("connect"),
3973 kConnecting: Symbol("connecting"),
3974 kHeadersList: Symbol("headers list"),
3975 kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"),
3976 kKeepAliveMaxTimeout: Symbol("max keep alive timeout"),
3977 kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"),
3978 kKeepAliveTimeoutValue: Symbol("keep alive timeout"),
3979 kKeepAlive: Symbol("keep alive"),
3980 kHeadersTimeout: Symbol("headers timeout"),
3981 kBodyTimeout: Symbol("body timeout"),
3982 kServerName: Symbol("server name"),
3983 kLocalAddress: Symbol("local address"),
3984 kHost: Symbol("host"),
3985 kNoRef: Symbol("no ref"),
3986 kBodyUsed: Symbol("used"),
3987 kRunning: Symbol("running"),
3988 kBlocking: Symbol("blocking"),
3989 kPending: Symbol("pending"),
3990 kSize: Symbol("size"),
3991 kBusy: Symbol("busy"),
3992 kQueued: Symbol("queued"),
3993 kFree: Symbol("free"),
3994 kConnected: Symbol("connected"),
3995 kClosed: Symbol("closed"),
3996 kNeedDrain: Symbol("need drain"),
3997 kReset: Symbol("reset"),
3998 kDestroyed: Symbol.for("nodejs.stream.destroyed"),
3999 kMaxHeadersSize: Symbol("max headers size"),
4000 kRunningIdx: Symbol("running index"),
4001 kPendingIdx: Symbol("pending index"),
4002 kError: Symbol("error"),
4003 kClients: Symbol("clients"),
4004 kClient: Symbol("client"),
4005 kParser: Symbol("parser"),
4006 kOnDestroyed: Symbol("destroy callbacks"),
4007 kPipelining: Symbol("pipelining"),
4008 kSocket: Symbol("socket"),
4009 kHostHeader: Symbol("host header"),
4010 kConnector: Symbol("connector"),
4011 kStrictContentLength: Symbol("strict content length"),
4012 kMaxRedirections: Symbol("maxRedirections"),
4013 kMaxRequests: Symbol("maxRequestsPerClient"),
4014 kProxy: Symbol("proxy agent options"),
4015 kCounter: Symbol("socket request counter"),
4016 kInterceptors: Symbol("dispatch interceptors"),
4017 kMaxResponseSize: Symbol("max response size"),
4018 kHTTP2Session: Symbol("http2Session"),
4019 kHTTP2SessionState: Symbol("http2Session state"),
4020 kHTTP2BuildRequest: Symbol("http2 build request"),
4021 kHTTP1BuildRequest: Symbol("http1 build request"),
4022 kHTTP2CopyHeaders: Symbol("http2 copy headers"),
4023 kHTTPConnVersion: Symbol("http connection version"),
4024 kRetryHandlerDefaultRetry: Symbol("retry agent default retry"),
4025 kConstruct: Symbol("constructable")
4026 };
4027 }
4028});
4029
4030// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/errors.js
4031var require_errors = __commonJS({
4032 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/errors.js"(exports2, module2) {
4033 "use strict";
4034 var UndiciError = class extends Error {
4035 constructor(message) {
4036 super(message);
4037 this.name = "UndiciError";
4038 this.code = "UND_ERR";
4039 }
4040 };
4041 var ConnectTimeoutError = class _ConnectTimeoutError extends UndiciError {
4042 constructor(message) {
4043 super(message);
4044 Error.captureStackTrace(this, _ConnectTimeoutError);
4045 this.name = "ConnectTimeoutError";
4046 this.message = message || "Connect Timeout Error";
4047 this.code = "UND_ERR_CONNECT_TIMEOUT";
4048 }
4049 };
4050 var HeadersTimeoutError = class _HeadersTimeoutError extends UndiciError {
4051 constructor(message) {
4052 super(message);
4053 Error.captureStackTrace(this, _HeadersTimeoutError);
4054 this.name = "HeadersTimeoutError";
4055 this.message = message || "Headers Timeout Error";
4056 this.code = "UND_ERR_HEADERS_TIMEOUT";
4057 }
4058 };
4059 var HeadersOverflowError = class _HeadersOverflowError extends UndiciError {
4060 constructor(message) {
4061 super(message);
4062 Error.captureStackTrace(this, _HeadersOverflowError);
4063 this.name = "HeadersOverflowError";
4064 this.message = message || "Headers Overflow Error";
4065 this.code = "UND_ERR_HEADERS_OVERFLOW";
4066 }
4067 };
4068 var BodyTimeoutError = class _BodyTimeoutError extends UndiciError {
4069 constructor(message) {
4070 super(message);
4071 Error.captureStackTrace(this, _BodyTimeoutError);
4072 this.name = "BodyTimeoutError";
4073 this.message = message || "Body Timeout Error";
4074 this.code = "UND_ERR_BODY_TIMEOUT";
4075 }
4076 };
4077 var ResponseStatusCodeError = class _ResponseStatusCodeError extends UndiciError {
4078 constructor(message, statusCode, headers, body) {
4079 super(message);
4080 Error.captureStackTrace(this, _ResponseStatusCodeError);
4081 this.name = "ResponseStatusCodeError";
4082 this.message = message || "Response Status Code Error";
4083 this.code = "UND_ERR_RESPONSE_STATUS_CODE";
4084 this.body = body;
4085 this.status = statusCode;
4086 this.statusCode = statusCode;
4087 this.headers = headers;
4088 }
4089 };
4090 var InvalidArgumentError2 = class _InvalidArgumentError extends UndiciError {
4091 constructor(message) {
4092 super(message);
4093 Error.captureStackTrace(this, _InvalidArgumentError);
4094 this.name = "InvalidArgumentError";
4095 this.message = message || "Invalid Argument Error";
4096 this.code = "UND_ERR_INVALID_ARG";
4097 }
4098 };
4099 var InvalidReturnValueError = class _InvalidReturnValueError extends UndiciError {
4100 constructor(message) {
4101 super(message);
4102 Error.captureStackTrace(this, _InvalidReturnValueError);
4103 this.name = "InvalidReturnValueError";
4104 this.message = message || "Invalid Return Value Error";
4105 this.code = "UND_ERR_INVALID_RETURN_VALUE";
4106 }
4107 };
4108 var RequestAbortedError = class _RequestAbortedError extends UndiciError {
4109 constructor(message) {
4110 super(message);
4111 Error.captureStackTrace(this, _RequestAbortedError);
4112 this.name = "AbortError";
4113 this.message = message || "Request aborted";
4114 this.code = "UND_ERR_ABORTED";
4115 }
4116 };
4117 var InformationalError = class _InformationalError extends UndiciError {
4118 constructor(message) {
4119 super(message);
4120 Error.captureStackTrace(this, _InformationalError);
4121 this.name = "InformationalError";
4122 this.message = message || "Request information";
4123 this.code = "UND_ERR_INFO";
4124 }
4125 };
4126 var RequestContentLengthMismatchError = class _RequestContentLengthMismatchError extends UndiciError {
4127 constructor(message) {
4128 super(message);
4129 Error.captureStackTrace(this, _RequestContentLengthMismatchError);
4130 this.name = "RequestContentLengthMismatchError";
4131 this.message = message || "Request body length does not match content-length header";
4132 this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH";
4133 }
4134 };
4135 var ResponseContentLengthMismatchError = class _ResponseContentLengthMismatchError extends UndiciError {
4136 constructor(message) {
4137 super(message);
4138 Error.captureStackTrace(this, _ResponseContentLengthMismatchError);
4139 this.name = "ResponseContentLengthMismatchError";
4140 this.message = message || "Response body length does not match content-length header";
4141 this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH";
4142 }
4143 };
4144 var ClientDestroyedError = class _ClientDestroyedError extends UndiciError {
4145 constructor(message) {
4146 super(message);
4147 Error.captureStackTrace(this, _ClientDestroyedError);
4148 this.name = "ClientDestroyedError";
4149 this.message = message || "The client is destroyed";
4150 this.code = "UND_ERR_DESTROYED";
4151 }
4152 };
4153 var ClientClosedError = class _ClientClosedError extends UndiciError {
4154 constructor(message) {
4155 super(message);
4156 Error.captureStackTrace(this, _ClientClosedError);
4157 this.name = "ClientClosedError";
4158 this.message = message || "The client is closed";
4159 this.code = "UND_ERR_CLOSED";
4160 }
4161 };
4162 var SocketError = class _SocketError extends UndiciError {
4163 constructor(message, socket) {
4164 super(message);
4165 Error.captureStackTrace(this, _SocketError);
4166 this.name = "SocketError";
4167 this.message = message || "Socket error";
4168 this.code = "UND_ERR_SOCKET";
4169 this.socket = socket;
4170 }
4171 };
4172 var NotSupportedError = class _NotSupportedError extends UndiciError {
4173 constructor(message) {
4174 super(message);
4175 Error.captureStackTrace(this, _NotSupportedError);
4176 this.name = "NotSupportedError";
4177 this.message = message || "Not supported error";
4178 this.code = "UND_ERR_NOT_SUPPORTED";
4179 }
4180 };
4181 var BalancedPoolMissingUpstreamError = class extends UndiciError {
4182 constructor(message) {
4183 super(message);
4184 Error.captureStackTrace(this, NotSupportedError);
4185 this.name = "MissingUpstreamError";
4186 this.message = message || "No upstream has been added to the BalancedPool";
4187 this.code = "UND_ERR_BPL_MISSING_UPSTREAM";
4188 }
4189 };
4190 var HTTPParserError = class _HTTPParserError extends Error {
4191 constructor(message, code, data) {
4192 super(message);
4193 Error.captureStackTrace(this, _HTTPParserError);
4194 this.name = "HTTPParserError";
4195 this.code = code ? `HPE_${code}` : void 0;
4196 this.data = data ? data.toString() : void 0;
4197 }
4198 };
4199 var ResponseExceededMaxSizeError = class _ResponseExceededMaxSizeError extends UndiciError {
4200 constructor(message) {
4201 super(message);
4202 Error.captureStackTrace(this, _ResponseExceededMaxSizeError);
4203 this.name = "ResponseExceededMaxSizeError";
4204 this.message = message || "Response content exceeded max size";
4205 this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE";
4206 }
4207 };
4208 var RequestRetryError = class _RequestRetryError extends UndiciError {
4209 constructor(message, code, { headers, data }) {
4210 super(message);
4211 Error.captureStackTrace(this, _RequestRetryError);
4212 this.name = "RequestRetryError";
4213 this.message = message || "Request retry error";
4214 this.code = "UND_ERR_REQ_RETRY";
4215 this.statusCode = code;
4216 this.data = data;
4217 this.headers = headers;
4218 }
4219 };
4220 module2.exports = {
4221 HTTPParserError,
4222 UndiciError,
4223 HeadersTimeoutError,
4224 HeadersOverflowError,
4225 BodyTimeoutError,
4226 RequestContentLengthMismatchError,
4227 ConnectTimeoutError,
4228 ResponseStatusCodeError,
4229 InvalidArgumentError: InvalidArgumentError2,
4230 InvalidReturnValueError,
4231 RequestAbortedError,
4232 ClientDestroyedError,
4233 ClientClosedError,
4234 InformationalError,
4235 SocketError,
4236 NotSupportedError,
4237 ResponseContentLengthMismatchError,
4238 BalancedPoolMissingUpstreamError,
4239 ResponseExceededMaxSizeError,
4240 RequestRetryError
4241 };
4242 }
4243});
4244
4245// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/constants.js
4246var require_constants = __commonJS({
4247 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/constants.js"(exports2, module2) {
4248 "use strict";
4249 var headerNameLowerCasedRecord = {};
4250 var wellknownHeaderNames = [
4251 "Accept",
4252 "Accept-Encoding",
4253 "Accept-Language",
4254 "Accept-Ranges",
4255 "Access-Control-Allow-Credentials",
4256 "Access-Control-Allow-Headers",
4257 "Access-Control-Allow-Methods",
4258 "Access-Control-Allow-Origin",
4259 "Access-Control-Expose-Headers",
4260 "Access-Control-Max-Age",
4261 "Access-Control-Request-Headers",
4262 "Access-Control-Request-Method",
4263 "Age",
4264 "Allow",
4265 "Alt-Svc",
4266 "Alt-Used",
4267 "Authorization",
4268 "Cache-Control",
4269 "Clear-Site-Data",
4270 "Connection",
4271 "Content-Disposition",
4272 "Content-Encoding",
4273 "Content-Language",
4274 "Content-Length",
4275 "Content-Location",
4276 "Content-Range",
4277 "Content-Security-Policy",
4278 "Content-Security-Policy-Report-Only",
4279 "Content-Type",
4280 "Cookie",
4281 "Cross-Origin-Embedder-Policy",
4282 "Cross-Origin-Opener-Policy",
4283 "Cross-Origin-Resource-Policy",
4284 "Date",
4285 "Device-Memory",
4286 "Downlink",
4287 "ECT",
4288 "ETag",
4289 "Expect",
4290 "Expect-CT",
4291 "Expires",
4292 "Forwarded",
4293 "From",
4294 "Host",
4295 "If-Match",
4296 "If-Modified-Since",
4297 "If-None-Match",
4298 "If-Range",
4299 "If-Unmodified-Since",
4300 "Keep-Alive",
4301 "Last-Modified",
4302 "Link",
4303 "Location",
4304 "Max-Forwards",
4305 "Origin",
4306 "Permissions-Policy",
4307 "Pragma",
4308 "Proxy-Authenticate",
4309 "Proxy-Authorization",
4310 "RTT",
4311 "Range",
4312 "Referer",
4313 "Referrer-Policy",
4314 "Refresh",
4315 "Retry-After",
4316 "Sec-WebSocket-Accept",
4317 "Sec-WebSocket-Extensions",
4318 "Sec-WebSocket-Key",
4319 "Sec-WebSocket-Protocol",
4320 "Sec-WebSocket-Version",
4321 "Server",
4322 "Server-Timing",
4323 "Service-Worker-Allowed",
4324 "Service-Worker-Navigation-Preload",
4325 "Set-Cookie",
4326 "SourceMap",
4327 "Strict-Transport-Security",
4328 "Supports-Loading-Mode",
4329 "TE",
4330 "Timing-Allow-Origin",
4331 "Trailer",
4332 "Transfer-Encoding",
4333 "Upgrade",
4334 "Upgrade-Insecure-Requests",
4335 "User-Agent",
4336 "Vary",
4337 "Via",
4338 "WWW-Authenticate",
4339 "X-Content-Type-Options",
4340 "X-DNS-Prefetch-Control",
4341 "X-Frame-Options",
4342 "X-Permitted-Cross-Domain-Policies",
4343 "X-Powered-By",
4344 "X-Requested-With",
4345 "X-XSS-Protection"
4346 ];
4347 for (let i = 0; i < wellknownHeaderNames.length; ++i) {
4348 const key = wellknownHeaderNames[i];
4349 const lowerCasedKey = key.toLowerCase();
4350 headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = lowerCasedKey;
4351 }
4352 Object.setPrototypeOf(headerNameLowerCasedRecord, null);
4353 module2.exports = {
4354 wellknownHeaderNames,
4355 headerNameLowerCasedRecord
4356 };
4357 }
4358});
4359
4360// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/util.js
4361var require_util = __commonJS({
4362 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/util.js"(exports2, module2) {
4363 "use strict";
4364 var assert = require("assert");
4365 var { kDestroyed, kBodyUsed } = require_symbols();
4366 var { IncomingMessage } = require("http");
4367 var stream = require("stream");
4368 var net = require("net");
4369 var { InvalidArgumentError: InvalidArgumentError2 } = require_errors();
4370 var { Blob: Blob2 } = require("buffer");
4371 var nodeUtil = require("util");
4372 var { stringify } = require("querystring");
4373 var { headerNameLowerCasedRecord } = require_constants();
4374 var [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v));
4375 function nop() {
4376 }
4377 function isStream(obj) {
4378 return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function";
4379 }
4380 function isBlobLike(object) {
4381 return Blob2 && object instanceof Blob2 || object && typeof object === "object" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]);
4382 }
4383 function buildURL(url, queryParams) {
4384 if (url.includes("?") || url.includes("#")) {
4385 throw new Error('Query params cannot be passed when url already contains "?" or "#".');
4386 }
4387 const stringified = stringify(queryParams);
4388 if (stringified) {
4389 url += "?" + stringified;
4390 }
4391 return url;
4392 }
4393 function parseURL(url) {
4394 if (typeof url === "string") {
4395 url = new URL(url);
4396 if (!/^https?:/.test(url.origin || url.protocol)) {
4397 throw new InvalidArgumentError2("Invalid URL protocol: the URL must start with `http:` or `https:`.");
4398 }
4399 return url;
4400 }
4401 if (!url || typeof url !== "object") {
4402 throw new InvalidArgumentError2("Invalid URL: The URL argument must be a non-null object.");
4403 }
4404 if (!/^https?:/.test(url.origin || url.protocol)) {
4405 throw new InvalidArgumentError2("Invalid URL protocol: the URL must start with `http:` or `https:`.");
4406 }
4407 if (!(url instanceof URL)) {
4408 if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) {
4409 throw new InvalidArgumentError2("Invalid URL: port must be a valid integer or a string representation of an integer.");
4410 }
4411 if (url.path != null && typeof url.path !== "string") {
4412 throw new InvalidArgumentError2("Invalid URL path: the path must be a string or null/undefined.");
4413 }
4414 if (url.pathname != null && typeof url.pathname !== "string") {
4415 throw new InvalidArgumentError2("Invalid URL pathname: the pathname must be a string or null/undefined.");
4416 }
4417 if (url.hostname != null && typeof url.hostname !== "string") {
4418 throw new InvalidArgumentError2("Invalid URL hostname: the hostname must be a string or null/undefined.");
4419 }
4420 if (url.origin != null && typeof url.origin !== "string") {
4421 throw new InvalidArgumentError2("Invalid URL origin: the origin must be a string or null/undefined.");
4422 }
4423 const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80;
4424 let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`;
4425 let path5 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
4426 if (origin.endsWith("/")) {
4427 origin = origin.substring(0, origin.length - 1);
4428 }
4429 if (path5 && !path5.startsWith("/")) {
4430 path5 = `/${path5}`;
4431 }
4432 url = new URL(origin + path5);
4433 }
4434 return url;
4435 }
4436 function parseOrigin(url) {
4437 url = parseURL(url);
4438 if (url.pathname !== "/" || url.search || url.hash) {
4439 throw new InvalidArgumentError2("invalid url");
4440 }
4441 return url;
4442 }
4443 function getHostname(host) {
4444 if (host[0] === "[") {
4445 const idx2 = host.indexOf("]");
4446 assert(idx2 !== -1);
4447 return host.substring(1, idx2);
4448 }
4449 const idx = host.indexOf(":");
4450 if (idx === -1) return host;
4451 return host.substring(0, idx);
4452 }
4453 function getServerName(host) {
4454 if (!host) {
4455 return null;
4456 }
4457 assert.strictEqual(typeof host, "string");
4458 const servername = getHostname(host);
4459 if (net.isIP(servername)) {
4460 return "";
4461 }
4462 return servername;
4463 }
4464 function deepClone(obj) {
4465 return JSON.parse(JSON.stringify(obj));
4466 }
4467 function isAsyncIterable(obj) {
4468 return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function");
4469 }
4470 function isIterable(obj) {
4471 return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function"));
4472 }
4473 function bodyLength(body) {
4474 if (body == null) {
4475 return 0;
4476 } else if (isStream(body)) {
4477 const state = body._readableState;
4478 return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null;
4479 } else if (isBlobLike(body)) {
4480 return body.size != null ? body.size : null;
4481 } else if (isBuffer(body)) {
4482 return body.byteLength;
4483 }
4484 return null;
4485 }
4486 function isDestroyed(stream2) {
4487 return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]);
4488 }
4489 function isReadableAborted(stream2) {
4490 const state = stream2 && stream2._readableState;
4491 return isDestroyed(stream2) && state && !state.endEmitted;
4492 }
4493 function destroy(stream2, err) {
4494 if (stream2 == null || !isStream(stream2) || isDestroyed(stream2)) {
4495 return;
4496 }
4497 if (typeof stream2.destroy === "function") {
4498 if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) {
4499 stream2.socket = null;
4500 }
4501 stream2.destroy(err);
4502 } else if (err) {
4503 process.nextTick((stream3, err2) => {
4504 stream3.emit("error", err2);
4505 }, stream2, err);
4506 }
4507 if (stream2.destroyed !== true) {
4508 stream2[kDestroyed] = true;
4509 }
4510 }
4511 var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/;
4512 function parseKeepAliveTimeout(val) {
4513 const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR);
4514 return m ? parseInt(m[1], 10) * 1e3 : null;
4515 }
4516 function headerNameToString(value) {
4517 return headerNameLowerCasedRecord[value] || value.toLowerCase();
4518 }
4519 function parseHeaders(headers, obj = {}) {
4520 if (!Array.isArray(headers)) return headers;
4521 for (let i = 0; i < headers.length; i += 2) {
4522 const key = headers[i].toString().toLowerCase();
4523 let val = obj[key];
4524 if (!val) {
4525 if (Array.isArray(headers[i + 1])) {
4526 obj[key] = headers[i + 1].map((x) => x.toString("utf8"));
4527 } else {
4528 obj[key] = headers[i + 1].toString("utf8");
4529 }
4530 } else {
4531 if (!Array.isArray(val)) {
4532 val = [val];
4533 obj[key] = val;
4534 }
4535 val.push(headers[i + 1].toString("utf8"));
4536 }
4537 }
4538 if ("content-length" in obj && "content-disposition" in obj) {
4539 obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1");
4540 }
4541 return obj;
4542 }
4543 function parseRawHeaders(headers) {
4544 const ret = [];
4545 let hasContentLength = false;
4546 let contentDispositionIdx = -1;
4547 for (let n = 0; n < headers.length; n += 2) {
4548 const key = headers[n + 0].toString();
4549 const val = headers[n + 1].toString("utf8");
4550 if (key.length === 14 && (key === "content-length" || key.toLowerCase() === "content-length")) {
4551 ret.push(key, val);
4552 hasContentLength = true;
4553 } else if (key.length === 19 && (key === "content-disposition" || key.toLowerCase() === "content-disposition")) {
4554 contentDispositionIdx = ret.push(key, val) - 1;
4555 } else {
4556 ret.push(key, val);
4557 }
4558 }
4559 if (hasContentLength && contentDispositionIdx !== -1) {
4560 ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1");
4561 }
4562 return ret;
4563 }
4564 function isBuffer(buffer) {
4565 return buffer instanceof Uint8Array || Buffer.isBuffer(buffer);
4566 }
4567 function validateHandler(handler2, method, upgrade) {
4568 if (!handler2 || typeof handler2 !== "object") {
4569 throw new InvalidArgumentError2("handler must be an object");
4570 }
4571 if (typeof handler2.onConnect !== "function") {
4572 throw new InvalidArgumentError2("invalid onConnect method");
4573 }
4574 if (typeof handler2.onError !== "function") {
4575 throw new InvalidArgumentError2("invalid onError method");
4576 }
4577 if (typeof handler2.onBodySent !== "function" && handler2.onBodySent !== void 0) {
4578 throw new InvalidArgumentError2("invalid onBodySent method");
4579 }
4580 if (upgrade || method === "CONNECT") {
4581 if (typeof handler2.onUpgrade !== "function") {
4582 throw new InvalidArgumentError2("invalid onUpgrade method");
4583 }
4584 } else {
4585 if (typeof handler2.onHeaders !== "function") {
4586 throw new InvalidArgumentError2("invalid onHeaders method");
4587 }
4588 if (typeof handler2.onData !== "function") {
4589 throw new InvalidArgumentError2("invalid onData method");
4590 }
4591 if (typeof handler2.onComplete !== "function") {
4592 throw new InvalidArgumentError2("invalid onComplete method");
4593 }
4594 }
4595 }
4596 function isDisturbed(body) {
4597 return !!(body && (stream.isDisturbed ? stream.isDisturbed(body) || body[kBodyUsed] : body[kBodyUsed] || body.readableDidRead || body._readableState && body._readableState.dataEmitted || isReadableAborted(body)));
4598 }
4599 function isErrored(body) {
4600 return !!(body && (stream.isErrored ? stream.isErrored(body) : /state: 'errored'/.test(
4601 nodeUtil.inspect(body)
4602 )));
4603 }
4604 function isReadable(body) {
4605 return !!(body && (stream.isReadable ? stream.isReadable(body) : /state: 'readable'/.test(
4606 nodeUtil.inspect(body)
4607 )));
4608 }
4609 function getSocketInfo(socket) {
4610 return {
4611 localAddress: socket.localAddress,
4612 localPort: socket.localPort,
4613 remoteAddress: socket.remoteAddress,
4614 remotePort: socket.remotePort,
4615 remoteFamily: socket.remoteFamily,
4616 timeout: socket.timeout,
4617 bytesWritten: socket.bytesWritten,
4618 bytesRead: socket.bytesRead
4619 };
4620 }
4621 async function* convertIterableToBuffer(iterable) {
4622 for await (const chunk of iterable) {
4623 yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
4624 }
4625 }
4626 var ReadableStream;
4627 function ReadableStreamFrom(iterable) {
4628 if (!ReadableStream) {
4629 ReadableStream = require("stream/web").ReadableStream;
4630 }
4631 if (ReadableStream.from) {
4632 return ReadableStream.from(convertIterableToBuffer(iterable));
4633 }
4634 let iterator2;
4635 return new ReadableStream(
4636 {
4637 async start() {
4638 iterator2 = iterable[Symbol.asyncIterator]();
4639 },
4640 async pull(controller) {
4641 const { done, value } = await iterator2.next();
4642 if (done) {
4643 queueMicrotask(() => {
4644 controller.close();
4645 });
4646 } else {
4647 const buf = Buffer.isBuffer(value) ? value : Buffer.from(value);
4648 controller.enqueue(new Uint8Array(buf));
4649 }
4650 return controller.desiredSize > 0;
4651 },
4652 async cancel(reason) {
4653 await iterator2.return();
4654 }
4655 },
4656 0
4657 );
4658 }
4659 function isFormDataLike(object) {
4660 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";
4661 }
4662 function throwIfAborted(signal) {
4663 if (!signal) {
4664 return;
4665 }
4666 if (typeof signal.throwIfAborted === "function") {
4667 signal.throwIfAborted();
4668 } else {
4669 if (signal.aborted) {
4670 const err = new Error("The operation was aborted");
4671 err.name = "AbortError";
4672 throw err;
4673 }
4674 }
4675 }
4676 function addAbortListener(signal, listener) {
4677 if ("addEventListener" in signal) {
4678 signal.addEventListener("abort", listener, { once: true });
4679 return () => signal.removeEventListener("abort", listener);
4680 }
4681 signal.addListener("abort", listener);
4682 return () => signal.removeListener("abort", listener);
4683 }
4684 var hasToWellFormed = !!String.prototype.toWellFormed;
4685 function toUSVString(val) {
4686 if (hasToWellFormed) {
4687 return `${val}`.toWellFormed();
4688 } else if (nodeUtil.toUSVString) {
4689 return nodeUtil.toUSVString(val);
4690 }
4691 return `${val}`;
4692 }
4693 function parseRangeHeader(range) {
4694 if (range == null || range === "") return { start: 0, end: null, size: null };
4695 const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null;
4696 return m ? {
4697 start: parseInt(m[1]),
4698 end: m[2] ? parseInt(m[2]) : null,
4699 size: m[3] ? parseInt(m[3]) : null
4700 } : null;
4701 }
4702 var kEnumerableProperty = /* @__PURE__ */ Object.create(null);
4703 kEnumerableProperty.enumerable = true;
4704 module2.exports = {
4705 kEnumerableProperty,
4706 nop,
4707 isDisturbed,
4708 isErrored,
4709 isReadable,
4710 toUSVString,
4711 isReadableAborted,
4712 isBlobLike,
4713 parseOrigin,
4714 parseURL,
4715 getServerName,
4716 isStream,
4717 isIterable,
4718 isAsyncIterable,
4719 isDestroyed,
4720 headerNameToString,
4721 parseRawHeaders,
4722 parseHeaders,
4723 parseKeepAliveTimeout,
4724 destroy,
4725 bodyLength,
4726 deepClone,
4727 ReadableStreamFrom,
4728 isBuffer,
4729 validateHandler,
4730 getSocketInfo,
4731 isFormDataLike,
4732 buildURL,
4733 throwIfAborted,
4734 addAbortListener,
4735 parseRangeHeader,
4736 nodeMajor,
4737 nodeMinor,
4738 nodeHasAutoSelectFamily: nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 13,
4739 safeHTTPMethods: ["GET", "HEAD", "OPTIONS", "TRACE"]
4740 };
4741 }
4742});
4743
4744// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/timers.js
4745var require_timers = __commonJS({
4746 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/timers.js"(exports2, module2) {
4747 "use strict";
4748 var fastNow = Date.now();
4749 var fastNowTimeout;
4750 var fastTimers = [];
4751 function onTimeout() {
4752 fastNow = Date.now();
4753 let len = fastTimers.length;
4754 let idx = 0;
4755 while (idx < len) {
4756 const timer = fastTimers[idx];
4757 if (timer.state === 0) {
4758 timer.state = fastNow + timer.delay;
4759 } else if (timer.state > 0 && fastNow >= timer.state) {
4760 timer.state = -1;
4761 timer.callback(timer.opaque);
4762 }
4763 if (timer.state === -1) {
4764 timer.state = -2;
4765 if (idx !== len - 1) {
4766 fastTimers[idx] = fastTimers.pop();
4767 } else {
4768 fastTimers.pop();
4769 }
4770 len -= 1;
4771 } else {
4772 idx += 1;
4773 }
4774 }
4775 if (fastTimers.length > 0) {
4776 refreshTimeout();
4777 }
4778 }
4779 function refreshTimeout() {
4780 if (fastNowTimeout && fastNowTimeout.refresh) {
4781 fastNowTimeout.refresh();
4782 } else {
4783 clearTimeout(fastNowTimeout);
4784 fastNowTimeout = setTimeout(onTimeout, 1e3);
4785 if (fastNowTimeout.unref) {
4786 fastNowTimeout.unref();
4787 }
4788 }
4789 }
4790 var Timeout = class {
4791 constructor(callback, delay, opaque) {
4792 this.callback = callback;
4793 this.delay = delay;
4794 this.opaque = opaque;
4795 this.state = -2;
4796 this.refresh();
4797 }
4798 refresh() {
4799 if (this.state === -2) {
4800 fastTimers.push(this);
4801 if (!fastNowTimeout || fastTimers.length === 1) {
4802 refreshTimeout();
4803 }
4804 }
4805 this.state = 0;
4806 }
4807 clear() {
4808 this.state = -1;
4809 }
4810 };
4811 module2.exports = {
4812 setTimeout(callback, delay, opaque) {
4813 return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque);
4814 },
4815 clearTimeout(timeout) {
4816 if (timeout instanceof Timeout) {
4817 timeout.clear();
4818 } else {
4819 clearTimeout(timeout);
4820 }
4821 }
4822 };
4823 }
4824});
4825
4826// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js
4827var require_sbmh = __commonJS({
4828 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js"(exports2, module2) {
4829 "use strict";
4830 var EventEmitter = require("node:events").EventEmitter;
4831 var inherits = require("node:util").inherits;
4832 function SBMH(needle) {
4833 if (typeof needle === "string") {
4834 needle = Buffer.from(needle);
4835 }
4836 if (!Buffer.isBuffer(needle)) {
4837 throw new TypeError("The needle has to be a String or a Buffer.");
4838 }
4839 const needleLength = needle.length;
4840 if (needleLength === 0) {
4841 throw new Error("The needle cannot be an empty String/Buffer.");
4842 }
4843 if (needleLength > 256) {
4844 throw new Error("The needle cannot have a length bigger than 256.");
4845 }
4846 this.maxMatches = Infinity;
4847 this.matches = 0;
4848 this._occ = new Array(256).fill(needleLength);
4849 this._lookbehind_size = 0;
4850 this._needle = needle;
4851 this._bufpos = 0;
4852 this._lookbehind = Buffer.alloc(needleLength);
4853 for (var i = 0; i < needleLength - 1; ++i) {
4854 this._occ[needle[i]] = needleLength - 1 - i;
4855 }
4856 }
4857 inherits(SBMH, EventEmitter);
4858 SBMH.prototype.reset = function() {
4859 this._lookbehind_size = 0;
4860 this.matches = 0;
4861 this._bufpos = 0;
4862 };
4863 SBMH.prototype.push = function(chunk, pos) {
4864 if (!Buffer.isBuffer(chunk)) {
4865 chunk = Buffer.from(chunk, "binary");
4866 }
4867 const chlen = chunk.length;
4868 this._bufpos = pos || 0;
4869 let r;
4870 while (r !== chlen && this.matches < this.maxMatches) {
4871 r = this._sbmh_feed(chunk);
4872 }
4873 return r;
4874 };
4875 SBMH.prototype._sbmh_feed = function(data) {
4876 const len = data.length;
4877 const needle = this._needle;
4878 const needleLength = needle.length;
4879 const lastNeedleChar = needle[needleLength - 1];
4880 let pos = -this._lookbehind_size;
4881 let ch;
4882 if (pos < 0) {
4883 while (pos < 0 && pos <= len - needleLength) {
4884 ch = this._sbmh_lookup_char(data, pos + needleLength - 1);
4885 if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) {
4886 this._lookbehind_size = 0;
4887 ++this.matches;
4888 this.emit("info", true);
4889 return this._bufpos = pos + needleLength;
4890 }
4891 pos += this._occ[ch];
4892 }
4893 if (pos < 0) {
4894 while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) {
4895 ++pos;
4896 }
4897 }
4898 if (pos >= 0) {
4899 this.emit("info", false, this._lookbehind, 0, this._lookbehind_size);
4900 this._lookbehind_size = 0;
4901 } else {
4902 const bytesToCutOff = this._lookbehind_size + pos;
4903 if (bytesToCutOff > 0) {
4904 this.emit("info", false, this._lookbehind, 0, bytesToCutOff);
4905 }
4906 this._lookbehind.copy(
4907 this._lookbehind,
4908 0,
4909 bytesToCutOff,
4910 this._lookbehind_size - bytesToCutOff
4911 );
4912 this._lookbehind_size -= bytesToCutOff;
4913 data.copy(this._lookbehind, this._lookbehind_size);
4914 this._lookbehind_size += len;
4915 this._bufpos = len;
4916 return len;
4917 }
4918 }
4919 pos += (pos >= 0) * this._bufpos;
4920 if (data.indexOf(needle, pos) !== -1) {
4921 pos = data.indexOf(needle, pos);
4922 ++this.matches;
4923 if (pos > 0) {
4924 this.emit("info", true, data, this._bufpos, pos);
4925 } else {
4926 this.emit("info", true);
4927 }
4928 return this._bufpos = pos + needleLength;
4929 } else {
4930 pos = len - needleLength;
4931 }
4932 while (pos < len && (data[pos] !== needle[0] || Buffer.compare(
4933 data.subarray(pos, pos + len - pos),
4934 needle.subarray(0, len - pos)
4935 ) !== 0)) {
4936 ++pos;
4937 }
4938 if (pos < len) {
4939 data.copy(this._lookbehind, 0, pos, pos + (len - pos));
4940 this._lookbehind_size = len - pos;
4941 }
4942 if (pos > 0) {
4943 this.emit("info", false, data, this._bufpos, pos < len ? pos : len);
4944 }
4945 this._bufpos = len;
4946 return len;
4947 };
4948 SBMH.prototype._sbmh_lookup_char = function(data, pos) {
4949 return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos];
4950 };
4951 SBMH.prototype._sbmh_memcmp = function(data, pos, len) {
4952 for (var i = 0; i < len; ++i) {
4953 if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) {
4954 return false;
4955 }
4956 }
4957 return true;
4958 };
4959 module2.exports = SBMH;
4960 }
4961});
4962
4963// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js
4964var require_PartStream = __commonJS({
4965 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js"(exports2, module2) {
4966 "use strict";
4967 var inherits = require("node:util").inherits;
4968 var ReadableStream = require("node:stream").Readable;
4969 function PartStream(opts) {
4970 ReadableStream.call(this, opts);
4971 }
4972 inherits(PartStream, ReadableStream);
4973 PartStream.prototype._read = function(n) {
4974 };
4975 module2.exports = PartStream;
4976 }
4977});
4978
4979// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/getLimit.js
4980var require_getLimit = __commonJS({
4981 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/getLimit.js"(exports2, module2) {
4982 "use strict";
4983 module2.exports = function getLimit(limits, name, defaultLimit) {
4984 if (!limits || limits[name] === void 0 || limits[name] === null) {
4985 return defaultLimit;
4986 }
4987 if (typeof limits[name] !== "number" || isNaN(limits[name])) {
4988 throw new TypeError("Limit " + name + " is not a valid number");
4989 }
4990 return limits[name];
4991 };
4992 }
4993});
4994
4995// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js
4996var require_HeaderParser = __commonJS({
4997 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js"(exports2, module2) {
4998 "use strict";
4999 var EventEmitter = require("node:events").EventEmitter;
5000 var inherits = require("node:util").inherits;
5001 var getLimit = require_getLimit();
5002 var StreamSearch = require_sbmh();
5003 var B_DCRLF = Buffer.from("\r\n\r\n");
5004 var RE_CRLF = /\r\n/g;
5005 var RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/;
5006 function HeaderParser(cfg) {
5007 EventEmitter.call(this);
5008 cfg = cfg || {};
5009 const self = this;
5010 this.nread = 0;
5011 this.maxed = false;
5012 this.npairs = 0;
5013 this.maxHeaderPairs = getLimit(cfg, "maxHeaderPairs", 2e3);
5014 this.maxHeaderSize = getLimit(cfg, "maxHeaderSize", 80 * 1024);
5015 this.buffer = "";
5016 this.header = {};
5017 this.finished = false;
5018 this.ss = new StreamSearch(B_DCRLF);
5019 this.ss.on("info", function(isMatch, data, start, end) {
5020 if (data && !self.maxed) {
5021 if (self.nread + end - start >= self.maxHeaderSize) {
5022 end = self.maxHeaderSize - self.nread + start;
5023 self.nread = self.maxHeaderSize;
5024 self.maxed = true;
5025 } else {
5026 self.nread += end - start;
5027 }
5028 self.buffer += data.toString("binary", start, end);
5029 }
5030 if (isMatch) {
5031 self._finish();
5032 }
5033 });
5034 }
5035 inherits(HeaderParser, EventEmitter);
5036 HeaderParser.prototype.push = function(data) {
5037 const r = this.ss.push(data);
5038 if (this.finished) {
5039 return r;
5040 }
5041 };
5042 HeaderParser.prototype.reset = function() {
5043 this.finished = false;
5044 this.buffer = "";
5045 this.header = {};
5046 this.ss.reset();
5047 };
5048 HeaderParser.prototype._finish = function() {
5049 if (this.buffer) {
5050 this._parseHeader();
5051 }
5052 this.ss.matches = this.ss.maxMatches;
5053 const header = this.header;
5054 this.header = {};
5055 this.buffer = "";
5056 this.finished = true;
5057 this.nread = this.npairs = 0;
5058 this.maxed = false;
5059 this.emit("header", header);
5060 };
5061 HeaderParser.prototype._parseHeader = function() {
5062 if (this.npairs === this.maxHeaderPairs) {
5063 return;
5064 }
5065 const lines = this.buffer.split(RE_CRLF);
5066 const len = lines.length;
5067 let m, h;
5068 for (var i = 0; i < len; ++i) {
5069 if (lines[i].length === 0) {
5070 continue;
5071 }
5072 if (lines[i][0] === " " || lines[i][0] === " ") {
5073 if (h) {
5074 this.header[h][this.header[h].length - 1] += lines[i];
5075 continue;
5076 }
5077 }
5078 const posColon = lines[i].indexOf(":");
5079 if (posColon === -1 || posColon === 0) {
5080 return;
5081 }
5082 m = RE_HDR.exec(lines[i]);
5083 h = m[1].toLowerCase();
5084 this.header[h] = this.header[h] || [];
5085 this.header[h].push(m[2] || "");
5086 if (++this.npairs === this.maxHeaderPairs) {
5087 break;
5088 }
5089 }
5090 };
5091 module2.exports = HeaderParser;
5092 }
5093});
5094
5095// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js
5096var require_Dicer = __commonJS({
5097 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js"(exports2, module2) {
5098 "use strict";
5099 var WritableStream = require("node:stream").Writable;
5100 var inherits = require("node:util").inherits;
5101 var StreamSearch = require_sbmh();
5102 var PartStream = require_PartStream();
5103 var HeaderParser = require_HeaderParser();
5104 var DASH = 45;
5105 var B_ONEDASH = Buffer.from("-");
5106 var B_CRLF = Buffer.from("\r\n");
5107 var EMPTY_FN = function() {
5108 };
5109 function Dicer(cfg) {
5110 if (!(this instanceof Dicer)) {
5111 return new Dicer(cfg);
5112 }
5113 WritableStream.call(this, cfg);
5114 if (!cfg || !cfg.headerFirst && typeof cfg.boundary !== "string") {
5115 throw new TypeError("Boundary required");
5116 }
5117 if (typeof cfg.boundary === "string") {
5118 this.setBoundary(cfg.boundary);
5119 } else {
5120 this._bparser = void 0;
5121 }
5122 this._headerFirst = cfg.headerFirst;
5123 this._dashes = 0;
5124 this._parts = 0;
5125 this._finished = false;
5126 this._realFinish = false;
5127 this._isPreamble = true;
5128 this._justMatched = false;
5129 this._firstWrite = true;
5130 this._inHeader = true;
5131 this._part = void 0;
5132 this._cb = void 0;
5133 this._ignoreData = false;
5134 this._partOpts = { highWaterMark: cfg.partHwm };
5135 this._pause = false;
5136 const self = this;
5137 this._hparser = new HeaderParser(cfg);
5138 this._hparser.on("header", function(header) {
5139 self._inHeader = false;
5140 self._part.emit("header", header);
5141 });
5142 }
5143 inherits(Dicer, WritableStream);
5144 Dicer.prototype.emit = function(ev) {
5145 if (ev === "finish" && !this._realFinish) {
5146 if (!this._finished) {
5147 const self = this;
5148 process.nextTick(function() {
5149 self.emit("error", new Error("Unexpected end of multipart data"));
5150 if (self._part && !self._ignoreData) {
5151 const type = self._isPreamble ? "Preamble" : "Part";
5152 self._part.emit("error", new Error(type + " terminated early due to unexpected end of multipart data"));
5153 self._part.push(null);
5154 process.nextTick(function() {
5155 self._realFinish = true;
5156 self.emit("finish");
5157 self._realFinish = false;
5158 });
5159 return;
5160 }
5161 self._realFinish = true;
5162 self.emit("finish");
5163 self._realFinish = false;
5164 });
5165 }
5166 } else {
5167 WritableStream.prototype.emit.apply(this, arguments);
5168 }
5169 };
5170 Dicer.prototype._write = function(data, encoding, cb) {
5171 if (!this._hparser && !this._bparser) {
5172 return cb();
5173 }
5174 if (this._headerFirst && this._isPreamble) {
5175 if (!this._part) {
5176 this._part = new PartStream(this._partOpts);
5177 if (this.listenerCount("preamble") !== 0) {
5178 this.emit("preamble", this._part);
5179 } else {
5180 this._ignore();
5181 }
5182 }
5183 const r = this._hparser.push(data);
5184 if (!this._inHeader && r !== void 0 && r < data.length) {
5185 data = data.slice(r);
5186 } else {
5187 return cb();
5188 }
5189 }
5190 if (this._firstWrite) {
5191 this._bparser.push(B_CRLF);
5192 this._firstWrite = false;
5193 }
5194 this._bparser.push(data);
5195 if (this._pause) {
5196 this._cb = cb;
5197 } else {
5198 cb();
5199 }
5200 };
5201 Dicer.prototype.reset = function() {
5202 this._part = void 0;
5203 this._bparser = void 0;
5204 this._hparser = void 0;
5205 };
5206 Dicer.prototype.setBoundary = function(boundary) {
5207 const self = this;
5208 this._bparser = new StreamSearch("\r\n--" + boundary);
5209 this._bparser.on("info", function(isMatch, data, start, end) {
5210 self._oninfo(isMatch, data, start, end);
5211 });
5212 };
5213 Dicer.prototype._ignore = function() {
5214 if (this._part && !this._ignoreData) {
5215 this._ignoreData = true;
5216 this._part.on("error", EMPTY_FN);
5217 this._part.resume();
5218 }
5219 };
5220 Dicer.prototype._oninfo = function(isMatch, data, start, end) {
5221 let buf;
5222 const self = this;
5223 let i = 0;
5224 let r;
5225 let shouldWriteMore = true;
5226 if (!this._part && this._justMatched && data) {
5227 while (this._dashes < 2 && start + i < end) {
5228 if (data[start + i] === DASH) {
5229 ++i;
5230 ++this._dashes;
5231 } else {
5232 if (this._dashes) {
5233 buf = B_ONEDASH;
5234 }
5235 this._dashes = 0;
5236 break;
5237 }
5238 }
5239 if (this._dashes === 2) {
5240 if (start + i < end && this.listenerCount("trailer") !== 0) {
5241 this.emit("trailer", data.slice(start + i, end));
5242 }
5243 this.reset();
5244 this._finished = true;
5245 if (self._parts === 0) {
5246 self._realFinish = true;
5247 self.emit("finish");
5248 self._realFinish = false;
5249 }
5250 }
5251 if (this._dashes) {
5252 return;
5253 }
5254 }
5255 if (this._justMatched) {
5256 this._justMatched = false;
5257 }
5258 if (!this._part) {
5259 this._part = new PartStream(this._partOpts);
5260 this._part._read = function(n) {
5261 self._unpause();
5262 };
5263 if (this._isPreamble && this.listenerCount("preamble") !== 0) {
5264 this.emit("preamble", this._part);
5265 } else if (this._isPreamble !== true && this.listenerCount("part") !== 0) {
5266 this.emit("part", this._part);
5267 } else {
5268 this._ignore();
5269 }
5270 if (!this._isPreamble) {
5271 this._inHeader = true;
5272 }
5273 }
5274 if (data && start < end && !this._ignoreData) {
5275 if (this._isPreamble || !this._inHeader) {
5276 if (buf) {
5277 shouldWriteMore = this._part.push(buf);
5278 }
5279 shouldWriteMore = this._part.push(data.slice(start, end));
5280 if (!shouldWriteMore) {
5281 this._pause = true;
5282 }
5283 } else if (!this._isPreamble && this._inHeader) {
5284 if (buf) {
5285 this._hparser.push(buf);
5286 }
5287 r = this._hparser.push(data.slice(start, end));
5288 if (!this._inHeader && r !== void 0 && r < end) {
5289 this._oninfo(false, data, start + r, end);
5290 }
5291 }
5292 }
5293 if (isMatch) {
5294 this._hparser.reset();
5295 if (this._isPreamble) {
5296 this._isPreamble = false;
5297 } else {
5298 if (start !== end) {
5299 ++this._parts;
5300 this._part.on("end", function() {
5301 if (--self._parts === 0) {
5302 if (self._finished) {
5303 self._realFinish = true;
5304 self.emit("finish");
5305 self._realFinish = false;
5306 } else {
5307 self._unpause();
5308 }
5309 }
5310 });
5311 }
5312 }
5313 this._part.push(null);
5314 this._part = void 0;
5315 this._ignoreData = false;
5316 this._justMatched = true;
5317 this._dashes = 0;
5318 }
5319 };
5320 Dicer.prototype._unpause = function() {
5321 if (!this._pause) {
5322 return;
5323 }
5324 this._pause = false;
5325 if (this._cb) {
5326 const cb = this._cb;
5327 this._cb = void 0;
5328 cb();
5329 }
5330 };
5331 module2.exports = Dicer;
5332 }
5333});
5334
5335// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/decodeText.js
5336var require_decodeText = __commonJS({
5337 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/decodeText.js"(exports2, module2) {
5338 "use strict";
5339 var utf8Decoder = new TextDecoder("utf-8");
5340 var textDecoders = /* @__PURE__ */ new Map([
5341 ["utf-8", utf8Decoder],
5342 ["utf8", utf8Decoder]
5343 ]);
5344 function getDecoder(charset) {
5345 let lc;
5346 while (true) {
5347 switch (charset) {
5348 case "utf-8":
5349 case "utf8":
5350 return decoders.utf8;
5351 case "latin1":
5352 case "ascii":
5353 case "us-ascii":
5354 case "iso-8859-1":
5355 case "iso8859-1":
5356 case "iso88591":
5357 case "iso_8859-1":
5358 case "windows-1252":
5359 case "iso_8859-1:1987":
5360 case "cp1252":
5361 case "x-cp1252":
5362 return decoders.latin1;
5363 case "utf16le":
5364 case "utf-16le":
5365 case "ucs2":
5366 case "ucs-2":
5367 return decoders.utf16le;
5368 case "base64":
5369 return decoders.base64;
5370 default:
5371 if (lc === void 0) {
5372 lc = true;
5373 charset = charset.toLowerCase();
5374 continue;
5375 }
5376 return decoders.other.bind(charset);
5377 }
5378 }
5379 }
5380 var decoders = {
5381 utf8: (data, sourceEncoding) => {
5382 if (data.length === 0) {
5383 return "";
5384 }
5385 if (typeof data === "string") {
5386 data = Buffer.from(data, sourceEncoding);
5387 }
5388 return data.utf8Slice(0, data.length);
5389 },
5390 latin1: (data, sourceEncoding) => {
5391 if (data.length === 0) {
5392 return "";
5393 }
5394 if (typeof data === "string") {
5395 return data;
5396 }
5397 return data.latin1Slice(0, data.length);
5398 },
5399 utf16le: (data, sourceEncoding) => {
5400 if (data.length === 0) {
5401 return "";
5402 }
5403 if (typeof data === "string") {
5404 data = Buffer.from(data, sourceEncoding);
5405 }
5406 return data.ucs2Slice(0, data.length);
5407 },
5408 base64: (data, sourceEncoding) => {
5409 if (data.length === 0) {
5410 return "";
5411 }
5412 if (typeof data === "string") {
5413 data = Buffer.from(data, sourceEncoding);
5414 }
5415 return data.base64Slice(0, data.length);
5416 },
5417 other: (data, sourceEncoding) => {
5418 if (data.length === 0) {
5419 return "";
5420 }
5421 if (typeof data === "string") {
5422 data = Buffer.from(data, sourceEncoding);
5423 }
5424 if (textDecoders.has(exports2.toString())) {
5425 try {
5426 return textDecoders.get(exports2).decode(data);
5427 } catch {
5428 }
5429 }
5430 return typeof data === "string" ? data : data.toString();
5431 }
5432 };
5433 function decodeText(text, sourceEncoding, destEncoding) {
5434 if (text) {
5435 return getDecoder(destEncoding)(text, sourceEncoding);
5436 }
5437 return text;
5438 }
5439 module2.exports = decodeText;
5440 }
5441});
5442
5443// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/parseParams.js
5444var require_parseParams = __commonJS({
5445 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/parseParams.js"(exports2, module2) {
5446 "use strict";
5447 var decodeText = require_decodeText();
5448 var RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g;
5449 var EncodedLookup = {
5450 "%00": "\0",
5451 "%01": "",
5452 "%02": "",
5453 "%03": "",
5454 "%04": "",
5455 "%05": "",
5456 "%06": "",
5457 "%07": "\x07",
5458 "%08": "\b",
5459 "%09": " ",
5460 "%0a": "\n",
5461 "%0A": "\n",
5462 "%0b": "\v",
5463 "%0B": "\v",
5464 "%0c": "\f",
5465 "%0C": "\f",
5466 "%0d": "\r",
5467 "%0D": "\r",
5468 "%0e": "",
5469 "%0E": "",
5470 "%0f": "",
5471 "%0F": "",
5472 "%10": "",
5473 "%11": "",
5474 "%12": "",
5475 "%13": "",
5476 "%14": "",
5477 "%15": "",
5478 "%16": "",
5479 "%17": "",
5480 "%18": "",
5481 "%19": "",
5482 "%1a": "",
5483 "%1A": "",
5484 "%1b": "\x1B",
5485 "%1B": "\x1B",
5486 "%1c": "",
5487 "%1C": "",
5488 "%1d": "",
5489 "%1D": "",
5490 "%1e": "",
5491 "%1E": "",
5492 "%1f": "",
5493 "%1F": "",
5494 "%20": " ",
5495 "%21": "!",
5496 "%22": '"',
5497 "%23": "#",
5498 "%24": "$",
5499 "%25": "%",
5500 "%26": "&",
5501 "%27": "'",
5502 "%28": "(",
5503 "%29": ")",
5504 "%2a": "*",
5505 "%2A": "*",
5506 "%2b": "+",
5507 "%2B": "+",
5508 "%2c": ",",
5509 "%2C": ",",
5510 "%2d": "-",
5511 "%2D": "-",
5512 "%2e": ".",
5513 "%2E": ".",
5514 "%2f": "/",
5515 "%2F": "/",
5516 "%30": "0",
5517 "%31": "1",
5518 "%32": "2",
5519 "%33": "3",
5520 "%34": "4",
5521 "%35": "5",
5522 "%36": "6",
5523 "%37": "7",
5524 "%38": "8",
5525 "%39": "9",
5526 "%3a": ":",
5527 "%3A": ":",
5528 "%3b": ";",
5529 "%3B": ";",
5530 "%3c": "<",
5531 "%3C": "<",
5532 "%3d": "=",
5533 "%3D": "=",
5534 "%3e": ">",
5535 "%3E": ">",
5536 "%3f": "?",
5537 "%3F": "?",
5538 "%40": "@",
5539 "%41": "A",
5540 "%42": "B",
5541 "%43": "C",
5542 "%44": "D",
5543 "%45": "E",
5544 "%46": "F",
5545 "%47": "G",
5546 "%48": "H",
5547 "%49": "I",
5548 "%4a": "J",
5549 "%4A": "J",
5550 "%4b": "K",
5551 "%4B": "K",
5552 "%4c": "L",
5553 "%4C": "L",
5554 "%4d": "M",
5555 "%4D": "M",
5556 "%4e": "N",
5557 "%4E": "N",
5558 "%4f": "O",
5559 "%4F": "O",
5560 "%50": "P",
5561 "%51": "Q",
5562 "%52": "R",
5563 "%53": "S",
5564 "%54": "T",
5565 "%55": "U",
5566 "%56": "V",
5567 "%57": "W",
5568 "%58": "X",
5569 "%59": "Y",
5570 "%5a": "Z",
5571 "%5A": "Z",
5572 "%5b": "[",
5573 "%5B": "[",
5574 "%5c": "\\",
5575 "%5C": "\\",
5576 "%5d": "]",
5577 "%5D": "]",
5578 "%5e": "^",
5579 "%5E": "^",
5580 "%5f": "_",
5581 "%5F": "_",
5582 "%60": "`",
5583 "%61": "a",
5584 "%62": "b",
5585 "%63": "c",
5586 "%64": "d",
5587 "%65": "e",
5588 "%66": "f",
5589 "%67": "g",
5590 "%68": "h",
5591 "%69": "i",
5592 "%6a": "j",
5593 "%6A": "j",
5594 "%6b": "k",
5595 "%6B": "k",
5596 "%6c": "l",
5597 "%6C": "l",
5598 "%6d": "m",
5599 "%6D": "m",
5600 "%6e": "n",
5601 "%6E": "n",
5602 "%6f": "o",
5603 "%6F": "o",
5604 "%70": "p",
5605 "%71": "q",
5606 "%72": "r",
5607 "%73": "s",
5608 "%74": "t",
5609 "%75": "u",
5610 "%76": "v",
5611 "%77": "w",
5612 "%78": "x",
5613 "%79": "y",
5614 "%7a": "z",
5615 "%7A": "z",
5616 "%7b": "{",
5617 "%7B": "{",
5618 "%7c": "|",
5619 "%7C": "|",
5620 "%7d": "}",
5621 "%7D": "}",
5622 "%7e": "~",
5623 "%7E": "~",
5624 "%7f": "\x7F",
5625 "%7F": "\x7F",
5626 "%80": "\x80",
5627 "%81": "\x81",
5628 "%82": "\x82",
5629 "%83": "\x83",
5630 "%84": "\x84",
5631 "%85": "\x85",
5632 "%86": "\x86",
5633 "%87": "\x87",
5634 "%88": "\x88",
5635 "%89": "\x89",
5636 "%8a": "\x8A",
5637 "%8A": "\x8A",
5638 "%8b": "\x8B",
5639 "%8B": "\x8B",
5640 "%8c": "\x8C",
5641 "%8C": "\x8C",
5642 "%8d": "\x8D",
5643 "%8D": "\x8D",
5644 "%8e": "\x8E",
5645 "%8E": "\x8E",
5646 "%8f": "\x8F",
5647 "%8F": "\x8F",
5648 "%90": "\x90",
5649 "%91": "\x91",
5650 "%92": "\x92",
5651 "%93": "\x93",
5652 "%94": "\x94",
5653 "%95": "\x95",
5654 "%96": "\x96",
5655 "%97": "\x97",
5656 "%98": "\x98",
5657 "%99": "\x99",
5658 "%9a": "\x9A",
5659 "%9A": "\x9A",
5660 "%9b": "\x9B",
5661 "%9B": "\x9B",
5662 "%9c": "\x9C",
5663 "%9C": "\x9C",
5664 "%9d": "\x9D",
5665 "%9D": "\x9D",
5666 "%9e": "\x9E",
5667 "%9E": "\x9E",
5668 "%9f": "\x9F",
5669 "%9F": "\x9F",
5670 "%a0": "\xA0",
5671 "%A0": "\xA0",
5672 "%a1": "\xA1",
5673 "%A1": "\xA1",
5674 "%a2": "\xA2",
5675 "%A2": "\xA2",
5676 "%a3": "\xA3",
5677 "%A3": "\xA3",
5678 "%a4": "\xA4",
5679 "%A4": "\xA4",
5680 "%a5": "\xA5",
5681 "%A5": "\xA5",
5682 "%a6": "\xA6",
5683 "%A6": "\xA6",
5684 "%a7": "\xA7",
5685 "%A7": "\xA7",
5686 "%a8": "\xA8",
5687 "%A8": "\xA8",
5688 "%a9": "\xA9",
5689 "%A9": "\xA9",
5690 "%aa": "\xAA",
5691 "%Aa": "\xAA",
5692 "%aA": "\xAA",
5693 "%AA": "\xAA",
5694 "%ab": "\xAB",
5695 "%Ab": "\xAB",
5696 "%aB": "\xAB",
5697 "%AB": "\xAB",
5698 "%ac": "\xAC",
5699 "%Ac": "\xAC",
5700 "%aC": "\xAC",
5701 "%AC": "\xAC",
5702 "%ad": "\xAD",
5703 "%Ad": "\xAD",
5704 "%aD": "\xAD",
5705 "%AD": "\xAD",
5706 "%ae": "\xAE",
5707 "%Ae": "\xAE",
5708 "%aE": "\xAE",
5709 "%AE": "\xAE",
5710 "%af": "\xAF",
5711 "%Af": "\xAF",
5712 "%aF": "\xAF",
5713 "%AF": "\xAF",
5714 "%b0": "\xB0",
5715 "%B0": "\xB0",
5716 "%b1": "\xB1",
5717 "%B1": "\xB1",
5718 "%b2": "\xB2",
5719 "%B2": "\xB2",
5720 "%b3": "\xB3",
5721 "%B3": "\xB3",
5722 "%b4": "\xB4",
5723 "%B4": "\xB4",
5724 "%b5": "\xB5",
5725 "%B5": "\xB5",
5726 "%b6": "\xB6",
5727 "%B6": "\xB6",
5728 "%b7": "\xB7",
5729 "%B7": "\xB7",
5730 "%b8": "\xB8",
5731 "%B8": "\xB8",
5732 "%b9": "\xB9",
5733 "%B9": "\xB9",
5734 "%ba": "\xBA",
5735 "%Ba": "\xBA",
5736 "%bA": "\xBA",
5737 "%BA": "\xBA",
5738 "%bb": "\xBB",
5739 "%Bb": "\xBB",
5740 "%bB": "\xBB",
5741 "%BB": "\xBB",
5742 "%bc": "\xBC",
5743 "%Bc": "\xBC",
5744 "%bC": "\xBC",
5745 "%BC": "\xBC",
5746 "%bd": "\xBD",
5747 "%Bd": "\xBD",
5748 "%bD": "\xBD",
5749 "%BD": "\xBD",
5750 "%be": "\xBE",
5751 "%Be": "\xBE",
5752 "%bE": "\xBE",
5753 "%BE": "\xBE",
5754 "%bf": "\xBF",
5755 "%Bf": "\xBF",
5756 "%bF": "\xBF",
5757 "%BF": "\xBF",
5758 "%c0": "\xC0",
5759 "%C0": "\xC0",
5760 "%c1": "\xC1",
5761 "%C1": "\xC1",
5762 "%c2": "\xC2",
5763 "%C2": "\xC2",
5764 "%c3": "\xC3",
5765 "%C3": "\xC3",
5766 "%c4": "\xC4",
5767 "%C4": "\xC4",
5768 "%c5": "\xC5",
5769 "%C5": "\xC5",
5770 "%c6": "\xC6",
5771 "%C6": "\xC6",
5772 "%c7": "\xC7",
5773 "%C7": "\xC7",
5774 "%c8": "\xC8",
5775 "%C8": "\xC8",
5776 "%c9": "\xC9",
5777 "%C9": "\xC9",
5778 "%ca": "\xCA",
5779 "%Ca": "\xCA",
5780 "%cA": "\xCA",
5781 "%CA": "\xCA",
5782 "%cb": "\xCB",
5783 "%Cb": "\xCB",
5784 "%cB": "\xCB",
5785 "%CB": "\xCB",
5786 "%cc": "\xCC",
5787 "%Cc": "\xCC",
5788 "%cC": "\xCC",
5789 "%CC": "\xCC",
5790 "%cd": "\xCD",
5791 "%Cd": "\xCD",
5792 "%cD": "\xCD",
5793 "%CD": "\xCD",
5794 "%ce": "\xCE",
5795 "%Ce": "\xCE",
5796 "%cE": "\xCE",
5797 "%CE": "\xCE",
5798 "%cf": "\xCF",
5799 "%Cf": "\xCF",
5800 "%cF": "\xCF",
5801 "%CF": "\xCF",
5802 "%d0": "\xD0",
5803 "%D0": "\xD0",
5804 "%d1": "\xD1",
5805 "%D1": "\xD1",
5806 "%d2": "\xD2",
5807 "%D2": "\xD2",
5808 "%d3": "\xD3",
5809 "%D3": "\xD3",
5810 "%d4": "\xD4",
5811 "%D4": "\xD4",
5812 "%d5": "\xD5",
5813 "%D5": "\xD5",
5814 "%d6": "\xD6",
5815 "%D6": "\xD6",
5816 "%d7": "\xD7",
5817 "%D7": "\xD7",
5818 "%d8": "\xD8",
5819 "%D8": "\xD8",
5820 "%d9": "\xD9",
5821 "%D9": "\xD9",
5822 "%da": "\xDA",
5823 "%Da": "\xDA",
5824 "%dA": "\xDA",
5825 "%DA": "\xDA",
5826 "%db": "\xDB",
5827 "%Db": "\xDB",
5828 "%dB": "\xDB",
5829 "%DB": "\xDB",
5830 "%dc": "\xDC",
5831 "%Dc": "\xDC",
5832 "%dC": "\xDC",
5833 "%DC": "\xDC",
5834 "%dd": "\xDD",
5835 "%Dd": "\xDD",
5836 "%dD": "\xDD",
5837 "%DD": "\xDD",
5838 "%de": "\xDE",
5839 "%De": "\xDE",
5840 "%dE": "\xDE",
5841 "%DE": "\xDE",
5842 "%df": "\xDF",
5843 "%Df": "\xDF",
5844 "%dF": "\xDF",
5845 "%DF": "\xDF",
5846 "%e0": "\xE0",
5847 "%E0": "\xE0",
5848 "%e1": "\xE1",
5849 "%E1": "\xE1",
5850 "%e2": "\xE2",
5851 "%E2": "\xE2",
5852 "%e3": "\xE3",
5853 "%E3": "\xE3",
5854 "%e4": "\xE4",
5855 "%E4": "\xE4",
5856 "%e5": "\xE5",
5857 "%E5": "\xE5",
5858 "%e6": "\xE6",
5859 "%E6": "\xE6",
5860 "%e7": "\xE7",
5861 "%E7": "\xE7",
5862 "%e8": "\xE8",
5863 "%E8": "\xE8",
5864 "%e9": "\xE9",
5865 "%E9": "\xE9",
5866 "%ea": "\xEA",
5867 "%Ea": "\xEA",
5868 "%eA": "\xEA",
5869 "%EA": "\xEA",
5870 "%eb": "\xEB",
5871 "%Eb": "\xEB",
5872 "%eB": "\xEB",
5873 "%EB": "\xEB",
5874 "%ec": "\xEC",
5875 "%Ec": "\xEC",
5876 "%eC": "\xEC",
5877 "%EC": "\xEC",
5878 "%ed": "\xED",
5879 "%Ed": "\xED",
5880 "%eD": "\xED",
5881 "%ED": "\xED",
5882 "%ee": "\xEE",
5883 "%Ee": "\xEE",
5884 "%eE": "\xEE",
5885 "%EE": "\xEE",
5886 "%ef": "\xEF",
5887 "%Ef": "\xEF",
5888 "%eF": "\xEF",
5889 "%EF": "\xEF",
5890 "%f0": "\xF0",
5891 "%F0": "\xF0",
5892 "%f1": "\xF1",
5893 "%F1": "\xF1",
5894 "%f2": "\xF2",
5895 "%F2": "\xF2",
5896 "%f3": "\xF3",
5897 "%F3": "\xF3",
5898 "%f4": "\xF4",
5899 "%F4": "\xF4",
5900 "%f5": "\xF5",
5901 "%F5": "\xF5",
5902 "%f6": "\xF6",
5903 "%F6": "\xF6",
5904 "%f7": "\xF7",
5905 "%F7": "\xF7",
5906 "%f8": "\xF8",
5907 "%F8": "\xF8",
5908 "%f9": "\xF9",
5909 "%F9": "\xF9",
5910 "%fa": "\xFA",
5911 "%Fa": "\xFA",
5912 "%fA": "\xFA",
5913 "%FA": "\xFA",
5914 "%fb": "\xFB",
5915 "%Fb": "\xFB",
5916 "%fB": "\xFB",
5917 "%FB": "\xFB",
5918 "%fc": "\xFC",
5919 "%Fc": "\xFC",
5920 "%fC": "\xFC",
5921 "%FC": "\xFC",
5922 "%fd": "\xFD",
5923 "%Fd": "\xFD",
5924 "%fD": "\xFD",
5925 "%FD": "\xFD",
5926 "%fe": "\xFE",
5927 "%Fe": "\xFE",
5928 "%fE": "\xFE",
5929 "%FE": "\xFE",
5930 "%ff": "\xFF",
5931 "%Ff": "\xFF",
5932 "%fF": "\xFF",
5933 "%FF": "\xFF"
5934 };
5935 function encodedReplacer(match) {
5936 return EncodedLookup[match];
5937 }
5938 var STATE_KEY = 0;
5939 var STATE_VALUE = 1;
5940 var STATE_CHARSET = 2;
5941 var STATE_LANG = 3;
5942 function parseParams(str) {
5943 const res = [];
5944 let state = STATE_KEY;
5945 let charset = "";
5946 let inquote = false;
5947 let escaping = false;
5948 let p = 0;
5949 let tmp = "";
5950 const len = str.length;
5951 for (var i = 0; i < len; ++i) {
5952 const char = str[i];
5953 if (char === "\\" && inquote) {
5954 if (escaping) {
5955 escaping = false;
5956 } else {
5957 escaping = true;
5958 continue;
5959 }
5960 } else if (char === '"') {
5961 if (!escaping) {
5962 if (inquote) {
5963 inquote = false;
5964 state = STATE_KEY;
5965 } else {
5966 inquote = true;
5967 }
5968 continue;
5969 } else {
5970 escaping = false;
5971 }
5972 } else {
5973 if (escaping && inquote) {
5974 tmp += "\\";
5975 }
5976 escaping = false;
5977 if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") {
5978 if (state === STATE_CHARSET) {
5979 state = STATE_LANG;
5980 charset = tmp.substring(1);
5981 } else {
5982 state = STATE_VALUE;
5983 }
5984 tmp = "";
5985 continue;
5986 } else if (state === STATE_KEY && (char === "*" || char === "=") && res.length) {
5987 state = char === "*" ? STATE_CHARSET : STATE_VALUE;
5988 res[p] = [tmp, void 0];
5989 tmp = "";
5990 continue;
5991 } else if (!inquote && char === ";") {
5992 state = STATE_KEY;
5993 if (charset) {
5994 if (tmp.length) {
5995 tmp = decodeText(
5996 tmp.replace(RE_ENCODED, encodedReplacer),
5997 "binary",
5998 charset
5999 );
6000 }
6001 charset = "";
6002 } else if (tmp.length) {
6003 tmp = decodeText(tmp, "binary", "utf8");
6004 }
6005 if (res[p] === void 0) {
6006 res[p] = tmp;
6007 } else {
6008 res[p][1] = tmp;
6009 }
6010 tmp = "";
6011 ++p;
6012 continue;
6013 } else if (!inquote && (char === " " || char === " ")) {
6014 continue;
6015 }
6016 }
6017 tmp += char;
6018 }
6019 if (charset && tmp.length) {
6020 tmp = decodeText(
6021 tmp.replace(RE_ENCODED, encodedReplacer),
6022 "binary",
6023 charset
6024 );
6025 } else if (tmp) {
6026 tmp = decodeText(tmp, "binary", "utf8");
6027 }
6028 if (res[p] === void 0) {
6029 if (tmp) {
6030 res[p] = tmp;
6031 }
6032 } else {
6033 res[p][1] = tmp;
6034 }
6035 return res;
6036 }
6037 module2.exports = parseParams;
6038 }
6039});
6040
6041// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/basename.js
6042var require_basename = __commonJS({
6043 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/basename.js"(exports2, module2) {
6044 "use strict";
6045 module2.exports = function basename(path5) {
6046 if (typeof path5 !== "string") {
6047 return "";
6048 }
6049 for (var i = path5.length - 1; i >= 0; --i) {
6050 switch (path5.charCodeAt(i)) {
6051 case 47:
6052 case 92:
6053 path5 = path5.slice(i + 1);
6054 return path5 === ".." || path5 === "." ? "" : path5;
6055 }
6056 }
6057 return path5 === ".." || path5 === "." ? "" : path5;
6058 };
6059 }
6060});
6061
6062// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/types/multipart.js
6063var require_multipart = __commonJS({
6064 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/types/multipart.js"(exports2, module2) {
6065 "use strict";
6066 var { Readable } = require("node:stream");
6067 var { inherits } = require("node:util");
6068 var Dicer = require_Dicer();
6069 var parseParams = require_parseParams();
6070 var decodeText = require_decodeText();
6071 var basename = require_basename();
6072 var getLimit = require_getLimit();
6073 var RE_BOUNDARY = /^boundary$/i;
6074 var RE_FIELD = /^form-data$/i;
6075 var RE_CHARSET = /^charset$/i;
6076 var RE_FILENAME = /^filename$/i;
6077 var RE_NAME = /^name$/i;
6078 Multipart.detect = /^multipart\/form-data/i;
6079 function Multipart(boy, cfg) {
6080 let i;
6081 let len;
6082 const self = this;
6083 let boundary;
6084 const limits = cfg.limits;
6085 const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => contentType === "application/octet-stream" || fileName !== void 0);
6086 const parsedConType = cfg.parsedConType || [];
6087 const defCharset = cfg.defCharset || "utf8";
6088 const preservePath = cfg.preservePath;
6089 const fileOpts = { highWaterMark: cfg.fileHwm };
6090 for (i = 0, len = parsedConType.length; i < len; ++i) {
6091 if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) {
6092 boundary = parsedConType[i][1];
6093 break;
6094 }
6095 }
6096 function checkFinished() {
6097 if (nends === 0 && finished && !boy._done) {
6098 finished = false;
6099 self.end();
6100 }
6101 }
6102 if (typeof boundary !== "string") {
6103 throw new Error("Multipart: Boundary not found");
6104 }
6105 const fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024);
6106 const fileSizeLimit = getLimit(limits, "fileSize", Infinity);
6107 const filesLimit = getLimit(limits, "files", Infinity);
6108 const fieldsLimit = getLimit(limits, "fields", Infinity);
6109 const partsLimit = getLimit(limits, "parts", Infinity);
6110 const headerPairsLimit = getLimit(limits, "headerPairs", 2e3);
6111 const headerSizeLimit = getLimit(limits, "headerSize", 80 * 1024);
6112 let nfiles = 0;
6113 let nfields = 0;
6114 let nends = 0;
6115 let curFile;
6116 let curField;
6117 let finished = false;
6118 this._needDrain = false;
6119 this._pause = false;
6120 this._cb = void 0;
6121 this._nparts = 0;
6122 this._boy = boy;
6123 const parserCfg = {
6124 boundary,
6125 maxHeaderPairs: headerPairsLimit,
6126 maxHeaderSize: headerSizeLimit,
6127 partHwm: fileOpts.highWaterMark,
6128 highWaterMark: cfg.highWaterMark
6129 };
6130 this.parser = new Dicer(parserCfg);
6131 this.parser.on("drain", function() {
6132 self._needDrain = false;
6133 if (self._cb && !self._pause) {
6134 const cb = self._cb;
6135 self._cb = void 0;
6136 cb();
6137 }
6138 }).on("part", function onPart(part) {
6139 if (++self._nparts > partsLimit) {
6140 self.parser.removeListener("part", onPart);
6141 self.parser.on("part", skipPart);
6142 boy.hitPartsLimit = true;
6143 boy.emit("partsLimit");
6144 return skipPart(part);
6145 }
6146 if (curField) {
6147 const field = curField;
6148 field.emit("end");
6149 field.removeAllListeners("end");
6150 }
6151 part.on("header", function(header) {
6152 let contype;
6153 let fieldname;
6154 let parsed;
6155 let charset;
6156 let encoding;
6157 let filename;
6158 let nsize = 0;
6159 if (header["content-type"]) {
6160 parsed = parseParams(header["content-type"][0]);
6161 if (parsed[0]) {
6162 contype = parsed[0].toLowerCase();
6163 for (i = 0, len = parsed.length; i < len; ++i) {
6164 if (RE_CHARSET.test(parsed[i][0])) {
6165 charset = parsed[i][1].toLowerCase();
6166 break;
6167 }
6168 }
6169 }
6170 }
6171 if (contype === void 0) {
6172 contype = "text/plain";
6173 }
6174 if (charset === void 0) {
6175 charset = defCharset;
6176 }
6177 if (header["content-disposition"]) {
6178 parsed = parseParams(header["content-disposition"][0]);
6179 if (!RE_FIELD.test(parsed[0])) {
6180 return skipPart(part);
6181 }
6182 for (i = 0, len = parsed.length; i < len; ++i) {
6183 if (RE_NAME.test(parsed[i][0])) {
6184 fieldname = parsed[i][1];
6185 } else if (RE_FILENAME.test(parsed[i][0])) {
6186 filename = parsed[i][1];
6187 if (!preservePath) {
6188 filename = basename(filename);
6189 }
6190 }
6191 }
6192 } else {
6193 return skipPart(part);
6194 }
6195 if (header["content-transfer-encoding"]) {
6196 encoding = header["content-transfer-encoding"][0].toLowerCase();
6197 } else {
6198 encoding = "7bit";
6199 }
6200 let onData, onEnd;
6201 if (isPartAFile(fieldname, contype, filename)) {
6202 if (nfiles === filesLimit) {
6203 if (!boy.hitFilesLimit) {
6204 boy.hitFilesLimit = true;
6205 boy.emit("filesLimit");
6206 }
6207 return skipPart(part);
6208 }
6209 ++nfiles;
6210 if (boy.listenerCount("file") === 0) {
6211 self.parser._ignore();
6212 return;
6213 }
6214 ++nends;
6215 const file = new FileStream(fileOpts);
6216 curFile = file;
6217 file.on("end", function() {
6218 --nends;
6219 self._pause = false;
6220 checkFinished();
6221 if (self._cb && !self._needDrain) {
6222 const cb = self._cb;
6223 self._cb = void 0;
6224 cb();
6225 }
6226 });
6227 file._read = function(n) {
6228 if (!self._pause) {
6229 return;
6230 }
6231 self._pause = false;
6232 if (self._cb && !self._needDrain) {
6233 const cb = self._cb;
6234 self._cb = void 0;
6235 cb();
6236 }
6237 };
6238 boy.emit("file", fieldname, file, filename, encoding, contype);
6239 onData = function(data) {
6240 if ((nsize += data.length) > fileSizeLimit) {
6241 const extralen = fileSizeLimit - nsize + data.length;
6242 if (extralen > 0) {
6243 file.push(data.slice(0, extralen));
6244 }
6245 file.truncated = true;
6246 file.bytesRead = fileSizeLimit;
6247 part.removeAllListeners("data");
6248 file.emit("limit");
6249 return;
6250 } else if (!file.push(data)) {
6251 self._pause = true;
6252 }
6253 file.bytesRead = nsize;
6254 };
6255 onEnd = function() {
6256 curFile = void 0;
6257 file.push(null);
6258 };
6259 } else {
6260 if (nfields === fieldsLimit) {
6261 if (!boy.hitFieldsLimit) {
6262 boy.hitFieldsLimit = true;
6263 boy.emit("fieldsLimit");
6264 }
6265 return skipPart(part);
6266 }
6267 ++nfields;
6268 ++nends;
6269 let buffer = "";
6270 let truncated = false;
6271 curField = part;
6272 onData = function(data) {
6273 if ((nsize += data.length) > fieldSizeLimit) {
6274 const extralen = fieldSizeLimit - (nsize - data.length);
6275 buffer += data.toString("binary", 0, extralen);
6276 truncated = true;
6277 part.removeAllListeners("data");
6278 } else {
6279 buffer += data.toString("binary");
6280 }
6281 };
6282 onEnd = function() {
6283 curField = void 0;
6284 if (buffer.length) {
6285 buffer = decodeText(buffer, "binary", charset);
6286 }
6287 boy.emit("field", fieldname, buffer, false, truncated, encoding, contype);
6288 --nends;
6289 checkFinished();
6290 };
6291 }
6292 part._readableState.sync = false;
6293 part.on("data", onData);
6294 part.on("end", onEnd);
6295 }).on("error", function(err) {
6296 if (curFile) {
6297 curFile.emit("error", err);
6298 }
6299 });
6300 }).on("error", function(err) {
6301 boy.emit("error", err);
6302 }).on("finish", function() {
6303 finished = true;
6304 checkFinished();
6305 });
6306 }
6307 Multipart.prototype.write = function(chunk, cb) {
6308 const r = this.parser.write(chunk);
6309 if (r && !this._pause) {
6310 cb();
6311 } else {
6312 this._needDrain = !r;
6313 this._cb = cb;
6314 }
6315 };
6316 Multipart.prototype.end = function() {
6317 const self = this;
6318 if (self.parser.writable) {
6319 self.parser.end();
6320 } else if (!self._boy._done) {
6321 process.nextTick(function() {
6322 self._boy._done = true;
6323 self._boy.emit("finish");
6324 });
6325 }
6326 };
6327 function skipPart(part) {
6328 part.resume();
6329 }
6330 function FileStream(opts) {
6331 Readable.call(this, opts);
6332 this.bytesRead = 0;
6333 this.truncated = false;
6334 }
6335 inherits(FileStream, Readable);
6336 FileStream.prototype._read = function(n) {
6337 };
6338 module2.exports = Multipart;
6339 }
6340});
6341
6342// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/Decoder.js
6343var require_Decoder = __commonJS({
6344 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/utils/Decoder.js"(exports2, module2) {
6345 "use strict";
6346 var RE_PLUS = /\+/g;
6347 var HEX = [
6348 0,
6349 0,
6350 0,
6351 0,
6352 0,
6353 0,
6354 0,
6355 0,
6356 0,
6357 0,
6358 0,
6359 0,
6360 0,
6361 0,
6362 0,
6363 0,
6364 0,
6365 0,
6366 0,
6367 0,
6368 0,
6369 0,
6370 0,
6371 0,
6372 0,
6373 0,
6374 0,
6375 0,
6376 0,
6377 0,
6378 0,
6379 0,
6380 0,
6381 0,
6382 0,
6383 0,
6384 0,
6385 0,
6386 0,
6387 0,
6388 0,
6389 0,
6390 0,
6391 0,
6392 0,
6393 0,
6394 0,
6395 0,
6396 1,
6397 1,
6398 1,
6399 1,
6400 1,
6401 1,
6402 1,
6403 1,
6404 1,
6405 1,
6406 0,
6407 0,
6408 0,
6409 0,
6410 0,
6411 0,
6412 0,
6413 1,
6414 1,
6415 1,
6416 1,
6417 1,
6418 1,
6419 0,
6420 0,
6421 0,
6422 0,
6423 0,
6424 0,
6425 0,
6426 0,
6427 0,
6428 0,
6429 0,
6430 0,
6431 0,
6432 0,
6433 0,
6434 0,
6435 0,
6436 0,
6437 0,
6438 0,
6439 0,
6440 0,
6441 0,
6442 0,
6443 0,
6444 0,
6445 1,
6446 1,
6447 1,
6448 1,
6449 1,
6450 1,
6451 0,
6452 0,
6453 0,
6454 0,
6455 0,
6456 0,
6457 0,
6458 0,
6459 0,
6460 0,
6461 0,
6462 0,
6463 0,
6464 0,
6465 0,
6466 0,
6467 0,
6468 0,
6469 0,
6470 0,
6471 0,
6472 0,
6473 0,
6474 0,
6475 0
6476 ];
6477 function Decoder() {
6478 this.buffer = void 0;
6479 }
6480 Decoder.prototype.write = function(str) {
6481 str = str.replace(RE_PLUS, " ");
6482 let res = "";
6483 let i = 0;
6484 let p = 0;
6485 const len = str.length;
6486 for (; i < len; ++i) {
6487 if (this.buffer !== void 0) {
6488 if (!HEX[str.charCodeAt(i)]) {
6489 res += "%" + this.buffer;
6490 this.buffer = void 0;
6491 --i;
6492 } else {
6493 this.buffer += str[i];
6494 ++p;
6495 if (this.buffer.length === 2) {
6496 res += String.fromCharCode(parseInt(this.buffer, 16));
6497 this.buffer = void 0;
6498 }
6499 }
6500 } else if (str[i] === "%") {
6501 if (i > p) {
6502 res += str.substring(p, i);
6503 p = i;
6504 }
6505 this.buffer = "";
6506 ++p;
6507 }
6508 }
6509 if (p < len && this.buffer === void 0) {
6510 res += str.substring(p);
6511 }
6512 return res;
6513 };
6514 Decoder.prototype.reset = function() {
6515 this.buffer = void 0;
6516 };
6517 module2.exports = Decoder;
6518 }
6519});
6520
6521// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/types/urlencoded.js
6522var require_urlencoded = __commonJS({
6523 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/types/urlencoded.js"(exports2, module2) {
6524 "use strict";
6525 var Decoder = require_Decoder();
6526 var decodeText = require_decodeText();
6527 var getLimit = require_getLimit();
6528 var RE_CHARSET = /^charset$/i;
6529 UrlEncoded.detect = /^application\/x-www-form-urlencoded/i;
6530 function UrlEncoded(boy, cfg) {
6531 const limits = cfg.limits;
6532 const parsedConType = cfg.parsedConType;
6533 this.boy = boy;
6534 this.fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024);
6535 this.fieldNameSizeLimit = getLimit(limits, "fieldNameSize", 100);
6536 this.fieldsLimit = getLimit(limits, "fields", Infinity);
6537 let charset;
6538 for (var i = 0, len = parsedConType.length; i < len; ++i) {
6539 if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) {
6540 charset = parsedConType[i][1].toLowerCase();
6541 break;
6542 }
6543 }
6544 if (charset === void 0) {
6545 charset = cfg.defCharset || "utf8";
6546 }
6547 this.decoder = new Decoder();
6548 this.charset = charset;
6549 this._fields = 0;
6550 this._state = "key";
6551 this._checkingBytes = true;
6552 this._bytesKey = 0;
6553 this._bytesVal = 0;
6554 this._key = "";
6555 this._val = "";
6556 this._keyTrunc = false;
6557 this._valTrunc = false;
6558 this._hitLimit = false;
6559 }
6560 UrlEncoded.prototype.write = function(data, cb) {
6561 if (this._fields === this.fieldsLimit) {
6562 if (!this.boy.hitFieldsLimit) {
6563 this.boy.hitFieldsLimit = true;
6564 this.boy.emit("fieldsLimit");
6565 }
6566 return cb();
6567 }
6568 let idxeq;
6569 let idxamp;
6570 let i;
6571 let p = 0;
6572 const len = data.length;
6573 while (p < len) {
6574 if (this._state === "key") {
6575 idxeq = idxamp = void 0;
6576 for (i = p; i < len; ++i) {
6577 if (!this._checkingBytes) {
6578 ++p;
6579 }
6580 if (data[i] === 61) {
6581 idxeq = i;
6582 break;
6583 } else if (data[i] === 38) {
6584 idxamp = i;
6585 break;
6586 }
6587 if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {
6588 this._hitLimit = true;
6589 break;
6590 } else if (this._checkingBytes) {
6591 ++this._bytesKey;
6592 }
6593 }
6594 if (idxeq !== void 0) {
6595 if (idxeq > p) {
6596 this._key += this.decoder.write(data.toString("binary", p, idxeq));
6597 }
6598 this._state = "val";
6599 this._hitLimit = false;
6600 this._checkingBytes = true;
6601 this._val = "";
6602 this._bytesVal = 0;
6603 this._valTrunc = false;
6604 this.decoder.reset();
6605 p = idxeq + 1;
6606 } else if (idxamp !== void 0) {
6607 ++this._fields;
6608 let key;
6609 const keyTrunc = this._keyTrunc;
6610 if (idxamp > p) {
6611 key = this._key += this.decoder.write(data.toString("binary", p, idxamp));
6612 } else {
6613 key = this._key;
6614 }
6615 this._hitLimit = false;
6616 this._checkingBytes = true;
6617 this._key = "";
6618 this._bytesKey = 0;
6619 this._keyTrunc = false;
6620 this.decoder.reset();
6621 if (key.length) {
6622 this.boy.emit(
6623 "field",
6624 decodeText(key, "binary", this.charset),
6625 "",
6626 keyTrunc,
6627 false
6628 );
6629 }
6630 p = idxamp + 1;
6631 if (this._fields === this.fieldsLimit) {
6632 return cb();
6633 }
6634 } else if (this._hitLimit) {
6635 if (i > p) {
6636 this._key += this.decoder.write(data.toString("binary", p, i));
6637 }
6638 p = i;
6639 if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {
6640 this._checkingBytes = false;
6641 this._keyTrunc = true;
6642 }
6643 } else {
6644 if (p < len) {
6645 this._key += this.decoder.write(data.toString("binary", p));
6646 }
6647 p = len;
6648 }
6649 } else {
6650 idxamp = void 0;
6651 for (i = p; i < len; ++i) {
6652 if (!this._checkingBytes) {
6653 ++p;
6654 }
6655 if (data[i] === 38) {
6656 idxamp = i;
6657 break;
6658 }
6659 if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {
6660 this._hitLimit = true;
6661 break;
6662 } else if (this._checkingBytes) {
6663 ++this._bytesVal;
6664 }
6665 }
6666 if (idxamp !== void 0) {
6667 ++this._fields;
6668 if (idxamp > p) {
6669 this._val += this.decoder.write(data.toString("binary", p, idxamp));
6670 }
6671 this.boy.emit(
6672 "field",
6673 decodeText(this._key, "binary", this.charset),
6674 decodeText(this._val, "binary", this.charset),
6675 this._keyTrunc,
6676 this._valTrunc
6677 );
6678 this._state = "key";
6679 this._hitLimit = false;
6680 this._checkingBytes = true;
6681 this._key = "";
6682 this._bytesKey = 0;
6683 this._keyTrunc = false;
6684 this.decoder.reset();
6685 p = idxamp + 1;
6686 if (this._fields === this.fieldsLimit) {
6687 return cb();
6688 }
6689 } else if (this._hitLimit) {
6690 if (i > p) {
6691 this._val += this.decoder.write(data.toString("binary", p, i));
6692 }
6693 p = i;
6694 if (this._val === "" && this.fieldSizeLimit === 0 || (this._bytesVal = this._val.length) === this.fieldSizeLimit) {
6695 this._checkingBytes = false;
6696 this._valTrunc = true;
6697 }
6698 } else {
6699 if (p < len) {
6700 this._val += this.decoder.write(data.toString("binary", p));
6701 }
6702 p = len;
6703 }
6704 }
6705 }
6706 cb();
6707 };
6708 UrlEncoded.prototype.end = function() {
6709 if (this.boy._done) {
6710 return;
6711 }
6712 if (this._state === "key" && this._key.length > 0) {
6713 this.boy.emit(
6714 "field",
6715 decodeText(this._key, "binary", this.charset),
6716 "",
6717 this._keyTrunc,
6718 false
6719 );
6720 } else if (this._state === "val") {
6721 this.boy.emit(
6722 "field",
6723 decodeText(this._key, "binary", this.charset),
6724 decodeText(this._val, "binary", this.charset),
6725 this._keyTrunc,
6726 this._valTrunc
6727 );
6728 }
6729 this.boy._done = true;
6730 this.boy.emit("finish");
6731 };
6732 module2.exports = UrlEncoded;
6733 }
6734});
6735
6736// node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/main.js
6737var require_main = __commonJS({
6738 "node_modules/.pnpm/@fastify+busboy@2.1.1/node_modules/@fastify/busboy/lib/main.js"(exports2, module2) {
6739 "use strict";
6740 var WritableStream = require("node:stream").Writable;
6741 var { inherits } = require("node:util");
6742 var Dicer = require_Dicer();
6743 var MultipartParser = require_multipart();
6744 var UrlencodedParser = require_urlencoded();
6745 var parseParams = require_parseParams();
6746 function Busboy(opts) {
6747 if (!(this instanceof Busboy)) {
6748 return new Busboy(opts);
6749 }
6750 if (typeof opts !== "object") {
6751 throw new TypeError("Busboy expected an options-Object.");
6752 }
6753 if (typeof opts.headers !== "object") {
6754 throw new TypeError("Busboy expected an options-Object with headers-attribute.");
6755 }
6756 if (typeof opts.headers["content-type"] !== "string") {
6757 throw new TypeError("Missing Content-Type-header.");
6758 }
6759 const {
6760 headers,
6761 ...streamOptions
6762 } = opts;
6763 this.opts = {
6764 autoDestroy: false,
6765 ...streamOptions
6766 };
6767 WritableStream.call(this, this.opts);
6768 this._done = false;
6769 this._parser = this.getParserByHeaders(headers);
6770 this._finished = false;
6771 }
6772 inherits(Busboy, WritableStream);
6773 Busboy.prototype.emit = function(ev) {
6774 if (ev === "finish") {
6775 if (!this._done) {
6776 this._parser?.end();
6777 return;
6778 } else if (this._finished) {
6779 return;
6780 }
6781 this._finished = true;
6782 }
6783 WritableStream.prototype.emit.apply(this, arguments);
6784 };
6785 Busboy.prototype.getParserByHeaders = function(headers) {
6786 const parsed = parseParams(headers["content-type"]);
6787 const cfg = {
6788 defCharset: this.opts.defCharset,
6789 fileHwm: this.opts.fileHwm,
6790 headers,
6791 highWaterMark: this.opts.highWaterMark,
6792 isPartAFile: this.opts.isPartAFile,
6793 limits: this.opts.limits,
6794 parsedConType: parsed,
6795 preservePath: this.opts.preservePath
6796 };
6797 if (MultipartParser.detect.test(parsed[0])) {
6798 return new MultipartParser(this, cfg);
6799 }
6800 if (UrlencodedParser.detect.test(parsed[0])) {
6801 return new UrlencodedParser(this, cfg);
6802 }
6803 throw new Error("Unsupported Content-Type.");
6804 };
6805 Busboy.prototype._write = function(chunk, encoding, cb) {
6806 this._parser.write(chunk, cb);
6807 };
6808 module2.exports = Busboy;
6809 module2.exports.default = Busboy;
6810 module2.exports.Busboy = Busboy;
6811 module2.exports.Dicer = Dicer;
6812 }
6813});
6814
6815// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/constants.js
6816var require_constants2 = __commonJS({
6817 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/constants.js"(exports2, module2) {
6818 "use strict";
6819 var { MessageChannel, receiveMessageOnPort } = require("worker_threads");
6820 var corsSafeListedMethods = ["GET", "HEAD", "POST"];
6821 var corsSafeListedMethodsSet = new Set(corsSafeListedMethods);
6822 var nullBodyStatus = [101, 204, 205, 304];
6823 var redirectStatus = [301, 302, 303, 307, 308];
6824 var redirectStatusSet = new Set(redirectStatus);
6825 var badPorts = [
6826 "1",
6827 "7",
6828 "9",
6829 "11",
6830 "13",
6831 "15",
6832 "17",
6833 "19",
6834 "20",
6835 "21",
6836 "22",
6837 "23",
6838 "25",
6839 "37",
6840 "42",
6841 "43",
6842 "53",
6843 "69",
6844 "77",
6845 "79",
6846 "87",
6847 "95",
6848 "101",
6849 "102",
6850 "103",
6851 "104",
6852 "109",
6853 "110",
6854 "111",
6855 "113",
6856 "115",
6857 "117",
6858 "119",
6859 "123",
6860 "135",
6861 "137",
6862 "139",
6863 "143",
6864 "161",
6865 "179",
6866 "389",
6867 "427",
6868 "465",
6869 "512",
6870 "513",
6871 "514",
6872 "515",
6873 "526",
6874 "530",
6875 "531",
6876 "532",
6877 "540",
6878 "548",
6879 "554",
6880 "556",
6881 "563",
6882 "587",
6883 "601",
6884 "636",
6885 "989",
6886 "990",
6887 "993",
6888 "995",
6889 "1719",
6890 "1720",
6891 "1723",
6892 "2049",
6893 "3659",
6894 "4045",
6895 "5060",
6896 "5061",
6897 "6000",
6898 "6566",
6899 "6665",
6900 "6666",
6901 "6667",
6902 "6668",
6903 "6669",
6904 "6697",
6905 "10080"
6906 ];
6907 var badPortsSet = new Set(badPorts);
6908 var referrerPolicy = [
6909 "",
6910 "no-referrer",
6911 "no-referrer-when-downgrade",
6912 "same-origin",
6913 "origin",
6914 "strict-origin",
6915 "origin-when-cross-origin",
6916 "strict-origin-when-cross-origin",
6917 "unsafe-url"
6918 ];
6919 var referrerPolicySet = new Set(referrerPolicy);
6920 var requestRedirect = ["follow", "manual", "error"];
6921 var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"];
6922 var safeMethodsSet = new Set(safeMethods);
6923 var requestMode = ["navigate", "same-origin", "no-cors", "cors"];
6924 var requestCredentials = ["omit", "same-origin", "include"];
6925 var requestCache = [
6926 "default",
6927 "no-store",
6928 "reload",
6929 "no-cache",
6930 "force-cache",
6931 "only-if-cached"
6932 ];
6933 var requestBodyHeader = [
6934 "content-encoding",
6935 "content-language",
6936 "content-location",
6937 "content-type",
6938 // See https://github.com/nodejs/undici/issues/2021
6939 // 'Content-Length' is a forbidden header name, which is typically
6940 // removed in the Headers implementation. However, undici doesn't
6941 // filter out headers, so we add it here.
6942 "content-length"
6943 ];
6944 var requestDuplex = [
6945 "half"
6946 ];
6947 var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"];
6948 var forbiddenMethodsSet = new Set(forbiddenMethods);
6949 var subresource = [
6950 "audio",
6951 "audioworklet",
6952 "font",
6953 "image",
6954 "manifest",
6955 "paintworklet",
6956 "script",
6957 "style",
6958 "track",
6959 "video",
6960 "xslt",
6961 ""
6962 ];
6963 var subresourceSet = new Set(subresource);
6964 var DOMException2 = globalThis.DOMException ?? (() => {
6965 try {
6966 atob("~");
6967 } catch (err) {
6968 return Object.getPrototypeOf(err).constructor;
6969 }
6970 })();
6971 var channel;
6972 var structuredClone = globalThis.structuredClone ?? // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js
6973 // structuredClone was added in v17.0.0, but fetch supports v16.8
6974 function structuredClone2(value, options = void 0) {
6975 if (arguments.length === 0) {
6976 throw new TypeError("missing argument");
6977 }
6978 if (!channel) {
6979 channel = new MessageChannel();
6980 }
6981 channel.port1.unref();
6982 channel.port2.unref();
6983 channel.port1.postMessage(value, options?.transfer);
6984 return receiveMessageOnPort(channel.port2).message;
6985 };
6986 module2.exports = {
6987 DOMException: DOMException2,
6988 structuredClone,
6989 subresource,
6990 forbiddenMethods,
6991 requestBodyHeader,
6992 referrerPolicy,
6993 requestRedirect,
6994 requestMode,
6995 requestCredentials,
6996 requestCache,
6997 redirectStatus,
6998 corsSafeListedMethods,
6999 nullBodyStatus,
7000 safeMethods,
7001 badPorts,
7002 requestDuplex,
7003 subresourceSet,
7004 badPortsSet,
7005 redirectStatusSet,
7006 corsSafeListedMethodsSet,
7007 safeMethodsSet,
7008 forbiddenMethodsSet,
7009 referrerPolicySet
7010 };
7011 }
7012});
7013
7014// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/global.js
7015var require_global = __commonJS({
7016 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/global.js"(exports2, module2) {
7017 "use strict";
7018 var globalOrigin = Symbol.for("undici.globalOrigin.1");
7019 function getGlobalOrigin() {
7020 return globalThis[globalOrigin];
7021 }
7022 function setGlobalOrigin(newOrigin) {
7023 if (newOrigin === void 0) {
7024 Object.defineProperty(globalThis, globalOrigin, {
7025 value: void 0,
7026 writable: true,
7027 enumerable: false,
7028 configurable: false
7029 });
7030 return;
7031 }
7032 const parsedURL = new URL(newOrigin);
7033 if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") {
7034 throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`);
7035 }
7036 Object.defineProperty(globalThis, globalOrigin, {
7037 value: parsedURL,
7038 writable: true,
7039 enumerable: false,
7040 configurable: false
7041 });
7042 }
7043 module2.exports = {
7044 getGlobalOrigin,
7045 setGlobalOrigin
7046 };
7047 }
7048});
7049
7050// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/util.js
7051var require_util2 = __commonJS({
7052 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/util.js"(exports2, module2) {
7053 "use strict";
7054 var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants2();
7055 var { getGlobalOrigin } = require_global();
7056 var { performance: performance2 } = require("perf_hooks");
7057 var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util();
7058 var assert = require("assert");
7059 var { isUint8Array } = require("util/types");
7060 var supportedHashes = [];
7061 var crypto;
7062 try {
7063 crypto = require("crypto");
7064 const possibleRelevantHashes = ["sha256", "sha384", "sha512"];
7065 supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash));
7066 } catch {
7067 }
7068 function responseURL(response) {
7069 const urlList = response.urlList;
7070 const length = urlList.length;
7071 return length === 0 ? null : urlList[length - 1].toString();
7072 }
7073 function responseLocationURL(response, requestFragment) {
7074 if (!redirectStatusSet.has(response.status)) {
7075 return null;
7076 }
7077 let location = response.headersList.get("location");
7078 if (location !== null && isValidHeaderValue(location)) {
7079 location = new URL(location, responseURL(response));
7080 }
7081 if (location && !location.hash) {
7082 location.hash = requestFragment;
7083 }
7084 return location;
7085 }
7086 function requestCurrentURL(request2) {
7087 return request2.urlList[request2.urlList.length - 1];
7088 }
7089 function requestBadPort(request2) {
7090 const url = requestCurrentURL(request2);
7091 if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
7092 return "blocked";
7093 }
7094 return "allowed";
7095 }
7096 function isErrorLike(object) {
7097 return object instanceof Error || (object?.constructor?.name === "Error" || object?.constructor?.name === "DOMException");
7098 }
7099 function isValidReasonPhrase(statusText) {
7100 for (let i = 0; i < statusText.length; ++i) {
7101 const c = statusText.charCodeAt(i);
7102 if (!(c === 9 || // HTAB
7103 c >= 32 && c <= 126 || // SP / VCHAR
7104 c >= 128 && c <= 255)) {
7105 return false;
7106 }
7107 }
7108 return true;
7109 }
7110 function isTokenCharCode(c) {
7111 switch (c) {
7112 case 34:
7113 case 40:
7114 case 41:
7115 case 44:
7116 case 47:
7117 case 58:
7118 case 59:
7119 case 60:
7120 case 61:
7121 case 62:
7122 case 63:
7123 case 64:
7124 case 91:
7125 case 92:
7126 case 93:
7127 case 123:
7128 case 125:
7129 return false;
7130 default:
7131 return c >= 33 && c <= 126;
7132 }
7133 }
7134 function isValidHTTPToken(characters) {
7135 if (characters.length === 0) {
7136 return false;
7137 }
7138 for (let i = 0; i < characters.length; ++i) {
7139 if (!isTokenCharCode(characters.charCodeAt(i))) {
7140 return false;
7141 }
7142 }
7143 return true;
7144 }
7145 function isValidHeaderName(potentialValue) {
7146 return isValidHTTPToken(potentialValue);
7147 }
7148 function isValidHeaderValue(potentialValue) {
7149 if (potentialValue.startsWith(" ") || potentialValue.startsWith(" ") || potentialValue.endsWith(" ") || potentialValue.endsWith(" ")) {
7150 return false;
7151 }
7152 if (potentialValue.includes("\0") || potentialValue.includes("\r") || potentialValue.includes("\n")) {
7153 return false;
7154 }
7155 return true;
7156 }
7157 function setRequestReferrerPolicyOnRedirect(request2, actualResponse) {
7158 const { headersList } = actualResponse;
7159 const policyHeader = (headersList.get("referrer-policy") ?? "").split(",");
7160 let policy = "";
7161 if (policyHeader.length > 0) {
7162 for (let i = policyHeader.length; i !== 0; i--) {
7163 const token = policyHeader[i - 1].trim();
7164 if (referrerPolicyTokens.has(token)) {
7165 policy = token;
7166 break;
7167 }
7168 }
7169 }
7170 if (policy !== "") {
7171 request2.referrerPolicy = policy;
7172 }
7173 }
7174 function crossOriginResourcePolicyCheck() {
7175 return "allowed";
7176 }
7177 function corsCheck() {
7178 return "success";
7179 }
7180 function TAOCheck() {
7181 return "success";
7182 }
7183 function appendFetchMetadata(httpRequest) {
7184 let header = null;
7185 header = httpRequest.mode;
7186 httpRequest.headersList.set("sec-fetch-mode", header);
7187 }
7188 function appendRequestOriginHeader(request2) {
7189 let serializedOrigin = request2.origin;
7190 if (request2.responseTainting === "cors" || request2.mode === "websocket") {
7191 if (serializedOrigin) {
7192 request2.headersList.append("origin", serializedOrigin);
7193 }
7194 } else if (request2.method !== "GET" && request2.method !== "HEAD") {
7195 switch (request2.referrerPolicy) {
7196 case "no-referrer":
7197 serializedOrigin = null;
7198 break;
7199 case "no-referrer-when-downgrade":
7200 case "strict-origin":
7201 case "strict-origin-when-cross-origin":
7202 if (request2.origin && urlHasHttpsScheme(request2.origin) && !urlHasHttpsScheme(requestCurrentURL(request2))) {
7203 serializedOrigin = null;
7204 }
7205 break;
7206 case "same-origin":
7207 if (!sameOrigin(request2, requestCurrentURL(request2))) {
7208 serializedOrigin = null;
7209 }
7210 break;
7211 default:
7212 }
7213 if (serializedOrigin) {
7214 request2.headersList.append("origin", serializedOrigin);
7215 }
7216 }
7217 }
7218 function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) {
7219 return performance2.now();
7220 }
7221 function createOpaqueTimingInfo(timingInfo) {
7222 return {
7223 startTime: timingInfo.startTime ?? 0,
7224 redirectStartTime: 0,
7225 redirectEndTime: 0,
7226 postRedirectStartTime: timingInfo.startTime ?? 0,
7227 finalServiceWorkerStartTime: 0,
7228 finalNetworkResponseStartTime: 0,
7229 finalNetworkRequestStartTime: 0,
7230 endTime: 0,
7231 encodedBodySize: 0,
7232 decodedBodySize: 0,
7233 finalConnectionTimingInfo: null
7234 };
7235 }
7236 function makePolicyContainer() {
7237 return {
7238 referrerPolicy: "strict-origin-when-cross-origin"
7239 };
7240 }
7241 function clonePolicyContainer(policyContainer) {
7242 return {
7243 referrerPolicy: policyContainer.referrerPolicy
7244 };
7245 }
7246 function determineRequestsReferrer(request2) {
7247 const policy = request2.referrerPolicy;
7248 assert(policy);
7249 let referrerSource = null;
7250 if (request2.referrer === "client") {
7251 const globalOrigin = getGlobalOrigin();
7252 if (!globalOrigin || globalOrigin.origin === "null") {
7253 return "no-referrer";
7254 }
7255 referrerSource = new URL(globalOrigin);
7256 } else if (request2.referrer instanceof URL) {
7257 referrerSource = request2.referrer;
7258 }
7259 let referrerURL = stripURLForReferrer(referrerSource);
7260 const referrerOrigin = stripURLForReferrer(referrerSource, true);
7261 if (referrerURL.toString().length > 4096) {
7262 referrerURL = referrerOrigin;
7263 }
7264 const areSameOrigin = sameOrigin(request2, referrerURL);
7265 const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request2.url);
7266 switch (policy) {
7267 case "origin":
7268 return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true);
7269 case "unsafe-url":
7270 return referrerURL;
7271 case "same-origin":
7272 return areSameOrigin ? referrerOrigin : "no-referrer";
7273 case "origin-when-cross-origin":
7274 return areSameOrigin ? referrerURL : referrerOrigin;
7275 case "strict-origin-when-cross-origin": {
7276 const currentURL = requestCurrentURL(request2);
7277 if (sameOrigin(referrerURL, currentURL)) {
7278 return referrerURL;
7279 }
7280 if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
7281 return "no-referrer";
7282 }
7283 return referrerOrigin;
7284 }
7285 case "strict-origin":
7286 case "no-referrer-when-downgrade":
7287 default:
7288 return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin;
7289 }
7290 }
7291 function stripURLForReferrer(url, originOnly) {
7292 assert(url instanceof URL);
7293 if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") {
7294 return "no-referrer";
7295 }
7296 url.username = "";
7297 url.password = "";
7298 url.hash = "";
7299 if (originOnly) {
7300 url.pathname = "";
7301 url.search = "";
7302 }
7303 return url;
7304 }
7305 function isURLPotentiallyTrustworthy(url) {
7306 if (!(url instanceof URL)) {
7307 return false;
7308 }
7309 if (url.href === "about:blank" || url.href === "about:srcdoc") {
7310 return true;
7311 }
7312 if (url.protocol === "data:") return true;
7313 if (url.protocol === "file:") return true;
7314 return isOriginPotentiallyTrustworthy(url.origin);
7315 function isOriginPotentiallyTrustworthy(origin) {
7316 if (origin == null || origin === "null") return false;
7317 const originAsURL = new URL(origin);
7318 if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") {
7319 return true;
7320 }
7321 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")) {
7322 return true;
7323 }
7324 return false;
7325 }
7326 }
7327 function bytesMatch(bytes, metadataList) {
7328 if (crypto === void 0) {
7329 return true;
7330 }
7331 const parsedMetadata = parseMetadata(metadataList);
7332 if (parsedMetadata === "no metadata") {
7333 return true;
7334 }
7335 if (parsedMetadata.length === 0) {
7336 return true;
7337 }
7338 const strongest = getStrongestMetadata(parsedMetadata);
7339 const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest);
7340 for (const item of metadata) {
7341 const algorithm = item.algo;
7342 const expectedValue = item.hash;
7343 let actualValue = crypto.createHash(algorithm).update(bytes).digest("base64");
7344 if (actualValue[actualValue.length - 1] === "=") {
7345 if (actualValue[actualValue.length - 2] === "=") {
7346 actualValue = actualValue.slice(0, -2);
7347 } else {
7348 actualValue = actualValue.slice(0, -1);
7349 }
7350 }
7351 if (compareBase64Mixed(actualValue, expectedValue)) {
7352 return true;
7353 }
7354 }
7355 return false;
7356 }
7357 var parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;
7358 function parseMetadata(metadata) {
7359 const result = [];
7360 let empty = true;
7361 for (const token of metadata.split(" ")) {
7362 empty = false;
7363 const parsedToken = parseHashWithOptions.exec(token);
7364 if (parsedToken === null || parsedToken.groups === void 0 || parsedToken.groups.algo === void 0) {
7365 continue;
7366 }
7367 const algorithm = parsedToken.groups.algo.toLowerCase();
7368 if (supportedHashes.includes(algorithm)) {
7369 result.push(parsedToken.groups);
7370 }
7371 }
7372 if (empty === true) {
7373 return "no metadata";
7374 }
7375 return result;
7376 }
7377 function getStrongestMetadata(metadataList) {
7378 let algorithm = metadataList[0].algo;
7379 if (algorithm[3] === "5") {
7380 return algorithm;
7381 }
7382 for (let i = 1; i < metadataList.length; ++i) {
7383 const metadata = metadataList[i];
7384 if (metadata.algo[3] === "5") {
7385 algorithm = "sha512";
7386 break;
7387 } else if (algorithm[3] === "3") {
7388 continue;
7389 } else if (metadata.algo[3] === "3") {
7390 algorithm = "sha384";
7391 }
7392 }
7393 return algorithm;
7394 }
7395 function filterMetadataListByAlgorithm(metadataList, algorithm) {
7396 if (metadataList.length === 1) {
7397 return metadataList;
7398 }
7399 let pos = 0;
7400 for (let i = 0; i < metadataList.length; ++i) {
7401 if (metadataList[i].algo === algorithm) {
7402 metadataList[pos++] = metadataList[i];
7403 }
7404 }
7405 metadataList.length = pos;
7406 return metadataList;
7407 }
7408 function compareBase64Mixed(actualValue, expectedValue) {
7409 if (actualValue.length !== expectedValue.length) {
7410 return false;
7411 }
7412 for (let i = 0; i < actualValue.length; ++i) {
7413 if (actualValue[i] !== expectedValue[i]) {
7414 if (actualValue[i] === "+" && expectedValue[i] === "-" || actualValue[i] === "/" && expectedValue[i] === "_") {
7415 continue;
7416 }
7417 return false;
7418 }
7419 }
7420 return true;
7421 }
7422 function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) {
7423 }
7424 function sameOrigin(A, B) {
7425 if (A.origin === B.origin && A.origin === "null") {
7426 return true;
7427 }
7428 if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {
7429 return true;
7430 }
7431 return false;
7432 }
7433 function createDeferredPromise() {
7434 let res;
7435 let rej;
7436 const promise = new Promise((resolve, reject) => {
7437 res = resolve;
7438 rej = reject;
7439 });
7440 return { promise, resolve: res, reject: rej };
7441 }
7442 function isAborted(fetchParams) {
7443 return fetchParams.controller.state === "aborted";
7444 }
7445 function isCancelled(fetchParams) {
7446 return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated";
7447 }
7448 var normalizeMethodRecord = {
7449 delete: "DELETE",
7450 DELETE: "DELETE",
7451 get: "GET",
7452 GET: "GET",
7453 head: "HEAD",
7454 HEAD: "HEAD",
7455 options: "OPTIONS",
7456 OPTIONS: "OPTIONS",
7457 post: "POST",
7458 POST: "POST",
7459 put: "PUT",
7460 PUT: "PUT"
7461 };
7462 Object.setPrototypeOf(normalizeMethodRecord, null);
7463 function normalizeMethod(method) {
7464 return normalizeMethodRecord[method.toLowerCase()] ?? method;
7465 }
7466 function serializeJavascriptValueToJSONString(value) {
7467 const result = JSON.stringify(value);
7468 if (result === void 0) {
7469 throw new TypeError("Value is not JSON serializable");
7470 }
7471 assert(typeof result === "string");
7472 return result;
7473 }
7474 var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));
7475 function makeIterator(iterator2, name, kind) {
7476 const object = {
7477 index: 0,
7478 kind,
7479 target: iterator2
7480 };
7481 const i = {
7482 next() {
7483 if (Object.getPrototypeOf(this) !== i) {
7484 throw new TypeError(
7485 `'next' called on an object that does not implement interface ${name} Iterator.`
7486 );
7487 }
7488 const { index, kind: kind2, target } = object;
7489 const values = target();
7490 const len = values.length;
7491 if (index >= len) {
7492 return { value: void 0, done: true };
7493 }
7494 const pair = values[index];
7495 object.index = index + 1;
7496 return iteratorResult(pair, kind2);
7497 },
7498 // The class string of an iterator prototype object for a given interface is the
7499 // result of concatenating the identifier of the interface and the string " Iterator".
7500 [Symbol.toStringTag]: `${name} Iterator`
7501 };
7502 Object.setPrototypeOf(i, esIteratorPrototype);
7503 return Object.setPrototypeOf({}, i);
7504 }
7505 function iteratorResult(pair, kind) {
7506 let result;
7507 switch (kind) {
7508 case "key": {
7509 result = pair[0];
7510 break;
7511 }
7512 case "value": {
7513 result = pair[1];
7514 break;
7515 }
7516 case "key+value": {
7517 result = pair;
7518 break;
7519 }
7520 }
7521 return { value: result, done: false };
7522 }
7523 async function fullyReadBody(body, processBody, processBodyError) {
7524 const successSteps = processBody;
7525 const errorSteps = processBodyError;
7526 let reader;
7527 try {
7528 reader = body.stream.getReader();
7529 } catch (e) {
7530 errorSteps(e);
7531 return;
7532 }
7533 try {
7534 const result = await readAllBytes(reader);
7535 successSteps(result);
7536 } catch (e) {
7537 errorSteps(e);
7538 }
7539 }
7540 var ReadableStream = globalThis.ReadableStream;
7541 function isReadableStreamLike(stream) {
7542 if (!ReadableStream) {
7543 ReadableStream = require("stream/web").ReadableStream;
7544 }
7545 return stream instanceof ReadableStream || stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function";
7546 }
7547 var MAXIMUM_ARGUMENT_LENGTH = 65535;
7548 function isomorphicDecode(input) {
7549 if (input.length < MAXIMUM_ARGUMENT_LENGTH) {
7550 return String.fromCharCode(...input);
7551 }
7552 return input.reduce((previous, current) => previous + String.fromCharCode(current), "");
7553 }
7554 function readableStreamClose(controller) {
7555 try {
7556 controller.close();
7557 } catch (err) {
7558 if (!err.message.includes("Controller is already closed")) {
7559 throw err;
7560 }
7561 }
7562 }
7563 function isomorphicEncode(input) {
7564 for (let i = 0; i < input.length; i++) {
7565 assert(input.charCodeAt(i) <= 255);
7566 }
7567 return input;
7568 }
7569 async function readAllBytes(reader) {
7570 const bytes = [];
7571 let byteLength = 0;
7572 while (true) {
7573 const { done, value: chunk } = await reader.read();
7574 if (done) {
7575 return Buffer.concat(bytes, byteLength);
7576 }
7577 if (!isUint8Array(chunk)) {
7578 throw new TypeError("Received non-Uint8Array chunk");
7579 }
7580 bytes.push(chunk);
7581 byteLength += chunk.length;
7582 }
7583 }
7584 function urlIsLocal(url) {
7585 assert("protocol" in url);
7586 const protocol = url.protocol;
7587 return protocol === "about:" || protocol === "blob:" || protocol === "data:";
7588 }
7589 function urlHasHttpsScheme(url) {
7590 if (typeof url === "string") {
7591 return url.startsWith("https:");
7592 }
7593 return url.protocol === "https:";
7594 }
7595 function urlIsHttpHttpsScheme(url) {
7596 assert("protocol" in url);
7597 const protocol = url.protocol;
7598 return protocol === "http:" || protocol === "https:";
7599 }
7600 var hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key));
7601 module2.exports = {
7602 isAborted,
7603 isCancelled,
7604 createDeferredPromise,
7605 ReadableStreamFrom,
7606 toUSVString,
7607 tryUpgradeRequestToAPotentiallyTrustworthyURL,
7608 coarsenedSharedCurrentTime,
7609 determineRequestsReferrer,
7610 makePolicyContainer,
7611 clonePolicyContainer,
7612 appendFetchMetadata,
7613 appendRequestOriginHeader,
7614 TAOCheck,
7615 corsCheck,
7616 crossOriginResourcePolicyCheck,
7617 createOpaqueTimingInfo,
7618 setRequestReferrerPolicyOnRedirect,
7619 isValidHTTPToken,
7620 requestBadPort,
7621 requestCurrentURL,
7622 responseURL,
7623 responseLocationURL,
7624 isBlobLike,
7625 isURLPotentiallyTrustworthy,
7626 isValidReasonPhrase,
7627 sameOrigin,
7628 normalizeMethod,
7629 serializeJavascriptValueToJSONString,
7630 makeIterator,
7631 isValidHeaderName,
7632 isValidHeaderValue,
7633 hasOwn,
7634 isErrorLike,
7635 fullyReadBody,
7636 bytesMatch,
7637 isReadableStreamLike,
7638 readableStreamClose,
7639 isomorphicEncode,
7640 isomorphicDecode,
7641 urlIsLocal,
7642 urlHasHttpsScheme,
7643 urlIsHttpHttpsScheme,
7644 readAllBytes,
7645 normalizeMethodRecord,
7646 parseMetadata
7647 };
7648 }
7649});
7650
7651// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/symbols.js
7652var require_symbols2 = __commonJS({
7653 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/symbols.js"(exports2, module2) {
7654 "use strict";
7655 module2.exports = {
7656 kUrl: Symbol("url"),
7657 kHeaders: Symbol("headers"),
7658 kSignal: Symbol("signal"),
7659 kState: Symbol("state"),
7660 kGuard: Symbol("guard"),
7661 kRealm: Symbol("realm")
7662 };
7663 }
7664});
7665
7666// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/webidl.js
7667var require_webidl = __commonJS({
7668 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/webidl.js"(exports2, module2) {
7669 "use strict";
7670 var { types } = require("util");
7671 var { hasOwn, toUSVString } = require_util2();
7672 var webidl = {};
7673 webidl.converters = {};
7674 webidl.util = {};
7675 webidl.errors = {};
7676 webidl.errors.exception = function(message) {
7677 return new TypeError(`${message.header}: ${message.message}`);
7678 };
7679 webidl.errors.conversionFailed = function(context) {
7680 const plural = context.types.length === 1 ? "" : " one of";
7681 const message = `${context.argument} could not be converted to${plural}: ${context.types.join(", ")}.`;
7682 return webidl.errors.exception({
7683 header: context.prefix,
7684 message
7685 });
7686 };
7687 webidl.errors.invalidArgument = function(context) {
7688 return webidl.errors.exception({
7689 header: context.prefix,
7690 message: `"${context.value}" is an invalid ${context.type}.`
7691 });
7692 };
7693 webidl.brandCheck = function(V, I, opts = void 0) {
7694 if (opts?.strict !== false && !(V instanceof I)) {
7695 throw new TypeError("Illegal invocation");
7696 } else {
7697 return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag];
7698 }
7699 };
7700 webidl.argumentLengthCheck = function({ length }, min, ctx) {
7701 if (length < min) {
7702 throw webidl.errors.exception({
7703 message: `${min} argument${min !== 1 ? "s" : ""} required, but${length ? " only" : ""} ${length} found.`,
7704 ...ctx
7705 });
7706 }
7707 };
7708 webidl.illegalConstructor = function() {
7709 throw webidl.errors.exception({
7710 header: "TypeError",
7711 message: "Illegal constructor"
7712 });
7713 };
7714 webidl.util.Type = function(V) {
7715 switch (typeof V) {
7716 case "undefined":
7717 return "Undefined";
7718 case "boolean":
7719 return "Boolean";
7720 case "string":
7721 return "String";
7722 case "symbol":
7723 return "Symbol";
7724 case "number":
7725 return "Number";
7726 case "bigint":
7727 return "BigInt";
7728 case "function":
7729 case "object": {
7730 if (V === null) {
7731 return "Null";
7732 }
7733 return "Object";
7734 }
7735 }
7736 };
7737 webidl.util.ConvertToInt = function(V, bitLength, signedness, opts = {}) {
7738 let upperBound;
7739 let lowerBound;
7740 if (bitLength === 64) {
7741 upperBound = Math.pow(2, 53) - 1;
7742 if (signedness === "unsigned") {
7743 lowerBound = 0;
7744 } else {
7745 lowerBound = Math.pow(-2, 53) + 1;
7746 }
7747 } else if (signedness === "unsigned") {
7748 lowerBound = 0;
7749 upperBound = Math.pow(2, bitLength) - 1;
7750 } else {
7751 lowerBound = Math.pow(-2, bitLength) - 1;
7752 upperBound = Math.pow(2, bitLength - 1) - 1;
7753 }
7754 let x = Number(V);
7755 if (x === 0) {
7756 x = 0;
7757 }
7758 if (opts.enforceRange === true) {
7759 if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {
7760 throw webidl.errors.exception({
7761 header: "Integer conversion",
7762 message: `Could not convert ${V} to an integer.`
7763 });
7764 }
7765 x = webidl.util.IntegerPart(x);
7766 if (x < lowerBound || x > upperBound) {
7767 throw webidl.errors.exception({
7768 header: "Integer conversion",
7769 message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`
7770 });
7771 }
7772 return x;
7773 }
7774 if (!Number.isNaN(x) && opts.clamp === true) {
7775 x = Math.min(Math.max(x, lowerBound), upperBound);
7776 if (Math.floor(x) % 2 === 0) {
7777 x = Math.floor(x);
7778 } else {
7779 x = Math.ceil(x);
7780 }
7781 return x;
7782 }
7783 if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {
7784 return 0;
7785 }
7786 x = webidl.util.IntegerPart(x);
7787 x = x % Math.pow(2, bitLength);
7788 if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) {
7789 return x - Math.pow(2, bitLength);
7790 }
7791 return x;
7792 };
7793 webidl.util.IntegerPart = function(n) {
7794 const r = Math.floor(Math.abs(n));
7795 if (n < 0) {
7796 return -1 * r;
7797 }
7798 return r;
7799 };
7800 webidl.sequenceConverter = function(converter) {
7801 return (V) => {
7802 if (webidl.util.Type(V) !== "Object") {
7803 throw webidl.errors.exception({
7804 header: "Sequence",
7805 message: `Value of type ${webidl.util.Type(V)} is not an Object.`
7806 });
7807 }
7808 const method = V?.[Symbol.iterator]?.();
7809 const seq = [];
7810 if (method === void 0 || typeof method.next !== "function") {
7811 throw webidl.errors.exception({
7812 header: "Sequence",
7813 message: "Object is not an iterator."
7814 });
7815 }
7816 while (true) {
7817 const { done, value } = method.next();
7818 if (done) {
7819 break;
7820 }
7821 seq.push(converter(value));
7822 }
7823 return seq;
7824 };
7825 };
7826 webidl.recordConverter = function(keyConverter, valueConverter) {
7827 return (O) => {
7828 if (webidl.util.Type(O) !== "Object") {
7829 throw webidl.errors.exception({
7830 header: "Record",
7831 message: `Value of type ${webidl.util.Type(O)} is not an Object.`
7832 });
7833 }
7834 const result = {};
7835 if (!types.isProxy(O)) {
7836 const keys2 = Object.keys(O);
7837 for (const key of keys2) {
7838 const typedKey = keyConverter(key);
7839 const typedValue = valueConverter(O[key]);
7840 result[typedKey] = typedValue;
7841 }
7842 return result;
7843 }
7844 const keys = Reflect.ownKeys(O);
7845 for (const key of keys) {
7846 const desc = Reflect.getOwnPropertyDescriptor(O, key);
7847 if (desc?.enumerable) {
7848 const typedKey = keyConverter(key);
7849 const typedValue = valueConverter(O[key]);
7850 result[typedKey] = typedValue;
7851 }
7852 }
7853 return result;
7854 };
7855 };
7856 webidl.interfaceConverter = function(i) {
7857 return (V, opts = {}) => {
7858 if (opts.strict !== false && !(V instanceof i)) {
7859 throw webidl.errors.exception({
7860 header: i.name,
7861 message: `Expected ${V} to be an instance of ${i.name}.`
7862 });
7863 }
7864 return V;
7865 };
7866 };
7867 webidl.dictionaryConverter = function(converters) {
7868 return (dictionary) => {
7869 const type = webidl.util.Type(dictionary);
7870 const dict = {};
7871 if (type === "Null" || type === "Undefined") {
7872 return dict;
7873 } else if (type !== "Object") {
7874 throw webidl.errors.exception({
7875 header: "Dictionary",
7876 message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`
7877 });
7878 }
7879 for (const options of converters) {
7880 const { key, defaultValue, required, converter } = options;
7881 if (required === true) {
7882 if (!hasOwn(dictionary, key)) {
7883 throw webidl.errors.exception({
7884 header: "Dictionary",
7885 message: `Missing required key "${key}".`
7886 });
7887 }
7888 }
7889 let value = dictionary[key];
7890 const hasDefault = hasOwn(options, "defaultValue");
7891 if (hasDefault && value !== null) {
7892 value = value ?? defaultValue;
7893 }
7894 if (required || hasDefault || value !== void 0) {
7895 value = converter(value);
7896 if (options.allowedValues && !options.allowedValues.includes(value)) {
7897 throw webidl.errors.exception({
7898 header: "Dictionary",
7899 message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.`
7900 });
7901 }
7902 dict[key] = value;
7903 }
7904 }
7905 return dict;
7906 };
7907 };
7908 webidl.nullableConverter = function(converter) {
7909 return (V) => {
7910 if (V === null) {
7911 return V;
7912 }
7913 return converter(V);
7914 };
7915 };
7916 webidl.converters.DOMString = function(V, opts = {}) {
7917 if (V === null && opts.legacyNullToEmptyString) {
7918 return "";
7919 }
7920 if (typeof V === "symbol") {
7921 throw new TypeError("Could not convert argument of type symbol to string.");
7922 }
7923 return String(V);
7924 };
7925 webidl.converters.ByteString = function(V) {
7926 const x = webidl.converters.DOMString(V);
7927 for (let index = 0; index < x.length; index++) {
7928 if (x.charCodeAt(index) > 255) {
7929 throw new TypeError(
7930 `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`
7931 );
7932 }
7933 }
7934 return x;
7935 };
7936 webidl.converters.USVString = toUSVString;
7937 webidl.converters.boolean = function(V) {
7938 const x = Boolean(V);
7939 return x;
7940 };
7941 webidl.converters.any = function(V) {
7942 return V;
7943 };
7944 webidl.converters["long long"] = function(V) {
7945 const x = webidl.util.ConvertToInt(V, 64, "signed");
7946 return x;
7947 };
7948 webidl.converters["unsigned long long"] = function(V) {
7949 const x = webidl.util.ConvertToInt(V, 64, "unsigned");
7950 return x;
7951 };
7952 webidl.converters["unsigned long"] = function(V) {
7953 const x = webidl.util.ConvertToInt(V, 32, "unsigned");
7954 return x;
7955 };
7956 webidl.converters["unsigned short"] = function(V, opts) {
7957 const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts);
7958 return x;
7959 };
7960 webidl.converters.ArrayBuffer = function(V, opts = {}) {
7961 if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) {
7962 throw webidl.errors.conversionFailed({
7963 prefix: `${V}`,
7964 argument: `${V}`,
7965 types: ["ArrayBuffer"]
7966 });
7967 }
7968 if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {
7969 throw webidl.errors.exception({
7970 header: "ArrayBuffer",
7971 message: "SharedArrayBuffer is not allowed."
7972 });
7973 }
7974 return V;
7975 };
7976 webidl.converters.TypedArray = function(V, T, opts = {}) {
7977 if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) {
7978 throw webidl.errors.conversionFailed({
7979 prefix: `${T.name}`,
7980 argument: `${V}`,
7981 types: [T.name]
7982 });
7983 }
7984 if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
7985 throw webidl.errors.exception({
7986 header: "ArrayBuffer",
7987 message: "SharedArrayBuffer is not allowed."
7988 });
7989 }
7990 return V;
7991 };
7992 webidl.converters.DataView = function(V, opts = {}) {
7993 if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) {
7994 throw webidl.errors.exception({
7995 header: "DataView",
7996 message: "Object is not a DataView."
7997 });
7998 }
7999 if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
8000 throw webidl.errors.exception({
8001 header: "ArrayBuffer",
8002 message: "SharedArrayBuffer is not allowed."
8003 });
8004 }
8005 return V;
8006 };
8007 webidl.converters.BufferSource = function(V, opts = {}) {
8008 if (types.isAnyArrayBuffer(V)) {
8009 return webidl.converters.ArrayBuffer(V, opts);
8010 }
8011 if (types.isTypedArray(V)) {
8012 return webidl.converters.TypedArray(V, V.constructor);
8013 }
8014 if (types.isDataView(V)) {
8015 return webidl.converters.DataView(V, opts);
8016 }
8017 throw new TypeError(`Could not convert ${V} to a BufferSource.`);
8018 };
8019 webidl.converters["sequence<ByteString>"] = webidl.sequenceConverter(
8020 webidl.converters.ByteString
8021 );
8022 webidl.converters["sequence<sequence<ByteString>>"] = webidl.sequenceConverter(
8023 webidl.converters["sequence<ByteString>"]
8024 );
8025 webidl.converters["record<ByteString, ByteString>"] = webidl.recordConverter(
8026 webidl.converters.ByteString,
8027 webidl.converters.ByteString
8028 );
8029 module2.exports = {
8030 webidl
8031 };
8032 }
8033});
8034
8035// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/dataURL.js
8036var require_dataURL = __commonJS({
8037 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/dataURL.js"(exports2, module2) {
8038 var assert = require("assert");
8039 var { atob: atob2 } = require("buffer");
8040 var { isomorphicDecode } = require_util2();
8041 var encoder = new TextEncoder();
8042 var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/;
8043 var HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/;
8044 var HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/;
8045 function dataURLProcessor(dataURL) {
8046 assert(dataURL.protocol === "data:");
8047 let input = URLSerializer(dataURL, true);
8048 input = input.slice(5);
8049 const position = { position: 0 };
8050 let mimeType = collectASequenceOfCodePointsFast(
8051 ",",
8052 input,
8053 position
8054 );
8055 const mimeTypeLength = mimeType.length;
8056 mimeType = removeASCIIWhitespace(mimeType, true, true);
8057 if (position.position >= input.length) {
8058 return "failure";
8059 }
8060 position.position++;
8061 const encodedBody = input.slice(mimeTypeLength + 1);
8062 let body = stringPercentDecode(encodedBody);
8063 if (/;(\u0020){0,}base64$/i.test(mimeType)) {
8064 const stringBody = isomorphicDecode(body);
8065 body = forgivingBase64(stringBody);
8066 if (body === "failure") {
8067 return "failure";
8068 }
8069 mimeType = mimeType.slice(0, -6);
8070 mimeType = mimeType.replace(/(\u0020)+$/, "");
8071 mimeType = mimeType.slice(0, -1);
8072 }
8073 if (mimeType.startsWith(";")) {
8074 mimeType = "text/plain" + mimeType;
8075 }
8076 let mimeTypeRecord = parseMIMEType(mimeType);
8077 if (mimeTypeRecord === "failure") {
8078 mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII");
8079 }
8080 return { mimeType: mimeTypeRecord, body };
8081 }
8082 function URLSerializer(url, excludeFragment = false) {
8083 if (!excludeFragment) {
8084 return url.href;
8085 }
8086 const href = url.href;
8087 const hashLength = url.hash.length;
8088 return hashLength === 0 ? href : href.substring(0, href.length - hashLength);
8089 }
8090 function collectASequenceOfCodePoints(condition, input, position) {
8091 let result = "";
8092 while (position.position < input.length && condition(input[position.position])) {
8093 result += input[position.position];
8094 position.position++;
8095 }
8096 return result;
8097 }
8098 function collectASequenceOfCodePointsFast(char, input, position) {
8099 const idx = input.indexOf(char, position.position);
8100 const start = position.position;
8101 if (idx === -1) {
8102 position.position = input.length;
8103 return input.slice(start);
8104 }
8105 position.position = idx;
8106 return input.slice(start, position.position);
8107 }
8108 function stringPercentDecode(input) {
8109 const bytes = encoder.encode(input);
8110 return percentDecode(bytes);
8111 }
8112 function percentDecode(input) {
8113 const output = [];
8114 for (let i = 0; i < input.length; i++) {
8115 const byte = input[i];
8116 if (byte !== 37) {
8117 output.push(byte);
8118 } else if (byte === 37 && !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))) {
8119 output.push(37);
8120 } else {
8121 const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]);
8122 const bytePoint = Number.parseInt(nextTwoBytes, 16);
8123 output.push(bytePoint);
8124 i += 2;
8125 }
8126 }
8127 return Uint8Array.from(output);
8128 }
8129 function parseMIMEType(input) {
8130 input = removeHTTPWhitespace(input, true, true);
8131 const position = { position: 0 };
8132 const type = collectASequenceOfCodePointsFast(
8133 "/",
8134 input,
8135 position
8136 );
8137 if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {
8138 return "failure";
8139 }
8140 if (position.position > input.length) {
8141 return "failure";
8142 }
8143 position.position++;
8144 let subtype = collectASequenceOfCodePointsFast(
8145 ";",
8146 input,
8147 position
8148 );
8149 subtype = removeHTTPWhitespace(subtype, false, true);
8150 if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {
8151 return "failure";
8152 }
8153 const typeLowercase = type.toLowerCase();
8154 const subtypeLowercase = subtype.toLowerCase();
8155 const mimeType = {
8156 type: typeLowercase,
8157 subtype: subtypeLowercase,
8158 /** @type {Map<string, string>} */
8159 parameters: /* @__PURE__ */ new Map(),
8160 // https://mimesniff.spec.whatwg.org/#mime-type-essence
8161 essence: `${typeLowercase}/${subtypeLowercase}`
8162 };
8163 while (position.position < input.length) {
8164 position.position++;
8165 collectASequenceOfCodePoints(
8166 // https://fetch.spec.whatwg.org/#http-whitespace
8167 (char) => HTTP_WHITESPACE_REGEX.test(char),
8168 input,
8169 position
8170 );
8171 let parameterName = collectASequenceOfCodePoints(
8172 (char) => char !== ";" && char !== "=",
8173 input,
8174 position
8175 );
8176 parameterName = parameterName.toLowerCase();
8177 if (position.position < input.length) {
8178 if (input[position.position] === ";") {
8179 continue;
8180 }
8181 position.position++;
8182 }
8183 if (position.position > input.length) {
8184 break;
8185 }
8186 let parameterValue = null;
8187 if (input[position.position] === '"') {
8188 parameterValue = collectAnHTTPQuotedString(input, position, true);
8189 collectASequenceOfCodePointsFast(
8190 ";",
8191 input,
8192 position
8193 );
8194 } else {
8195 parameterValue = collectASequenceOfCodePointsFast(
8196 ";",
8197 input,
8198 position
8199 );
8200 parameterValue = removeHTTPWhitespace(parameterValue, false, true);
8201 if (parameterValue.length === 0) {
8202 continue;
8203 }
8204 }
8205 if (parameterName.length !== 0 && HTTP_TOKEN_CODEPOINTS.test(parameterName) && (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && !mimeType.parameters.has(parameterName)) {
8206 mimeType.parameters.set(parameterName, parameterValue);
8207 }
8208 }
8209 return mimeType;
8210 }
8211 function forgivingBase64(data) {
8212 data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, "");
8213 if (data.length % 4 === 0) {
8214 data = data.replace(/=?=$/, "");
8215 }
8216 if (data.length % 4 === 1) {
8217 return "failure";
8218 }
8219 if (/[^+/0-9A-Za-z]/.test(data)) {
8220 return "failure";
8221 }
8222 const binary = atob2(data);
8223 const bytes = new Uint8Array(binary.length);
8224 for (let byte = 0; byte < binary.length; byte++) {
8225 bytes[byte] = binary.charCodeAt(byte);
8226 }
8227 return bytes;
8228 }
8229 function collectAnHTTPQuotedString(input, position, extractValue) {
8230 const positionStart = position.position;
8231 let value = "";
8232 assert(input[position.position] === '"');
8233 position.position++;
8234 while (true) {
8235 value += collectASequenceOfCodePoints(
8236 (char) => char !== '"' && char !== "\\",
8237 input,
8238 position
8239 );
8240 if (position.position >= input.length) {
8241 break;
8242 }
8243 const quoteOrBackslash = input[position.position];
8244 position.position++;
8245 if (quoteOrBackslash === "\\") {
8246 if (position.position >= input.length) {
8247 value += "\\";
8248 break;
8249 }
8250 value += input[position.position];
8251 position.position++;
8252 } else {
8253 assert(quoteOrBackslash === '"');
8254 break;
8255 }
8256 }
8257 if (extractValue) {
8258 return value;
8259 }
8260 return input.slice(positionStart, position.position);
8261 }
8262 function serializeAMimeType(mimeType) {
8263 assert(mimeType !== "failure");
8264 const { parameters, essence } = mimeType;
8265 let serialization = essence;
8266 for (let [name, value] of parameters.entries()) {
8267 serialization += ";";
8268 serialization += name;
8269 serialization += "=";
8270 if (!HTTP_TOKEN_CODEPOINTS.test(value)) {
8271 value = value.replace(/(\\|")/g, "\\$1");
8272 value = '"' + value;
8273 value += '"';
8274 }
8275 serialization += value;
8276 }
8277 return serialization;
8278 }
8279 function isHTTPWhiteSpace(char) {
8280 return char === "\r" || char === "\n" || char === " " || char === " ";
8281 }
8282 function removeHTTPWhitespace(str, leading = true, trailing = true) {
8283 let lead = 0;
8284 let trail = str.length - 1;
8285 if (leading) {
8286 for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++) ;
8287 }
8288 if (trailing) {
8289 for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--) ;
8290 }
8291 return str.slice(lead, trail + 1);
8292 }
8293 function isASCIIWhitespace(char) {
8294 return char === "\r" || char === "\n" || char === " " || char === "\f" || char === " ";
8295 }
8296 function removeASCIIWhitespace(str, leading = true, trailing = true) {
8297 let lead = 0;
8298 let trail = str.length - 1;
8299 if (leading) {
8300 for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++) ;
8301 }
8302 if (trailing) {
8303 for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--) ;
8304 }
8305 return str.slice(lead, trail + 1);
8306 }
8307 module2.exports = {
8308 dataURLProcessor,
8309 URLSerializer,
8310 collectASequenceOfCodePoints,
8311 collectASequenceOfCodePointsFast,
8312 stringPercentDecode,
8313 parseMIMEType,
8314 collectAnHTTPQuotedString,
8315 serializeAMimeType
8316 };
8317 }
8318});
8319
8320// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/file.js
8321var require_file = __commonJS({
8322 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/file.js"(exports2, module2) {
8323 "use strict";
8324 var { Blob: Blob2, File: NativeFile } = require("buffer");
8325 var { types } = require("util");
8326 var { kState } = require_symbols2();
8327 var { isBlobLike } = require_util2();
8328 var { webidl } = require_webidl();
8329 var { parseMIMEType, serializeAMimeType } = require_dataURL();
8330 var { kEnumerableProperty } = require_util();
8331 var encoder = new TextEncoder();
8332 var File = class _File extends Blob2 {
8333 constructor(fileBits, fileName, options = {}) {
8334 webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" });
8335 fileBits = webidl.converters["sequence<BlobPart>"](fileBits);
8336 fileName = webidl.converters.USVString(fileName);
8337 options = webidl.converters.FilePropertyBag(options);
8338 const n = fileName;
8339 let t = options.type;
8340 let d;
8341 substep: {
8342 if (t) {
8343 t = parseMIMEType(t);
8344 if (t === "failure") {
8345 t = "";
8346 break substep;
8347 }
8348 t = serializeAMimeType(t).toLowerCase();
8349 }
8350 d = options.lastModified;
8351 }
8352 super(processBlobParts(fileBits, options), { type: t });
8353 this[kState] = {
8354 name: n,
8355 lastModified: d,
8356 type: t
8357 };
8358 }
8359 get name() {
8360 webidl.brandCheck(this, _File);
8361 return this[kState].name;
8362 }
8363 get lastModified() {
8364 webidl.brandCheck(this, _File);
8365 return this[kState].lastModified;
8366 }
8367 get type() {
8368 webidl.brandCheck(this, _File);
8369 return this[kState].type;
8370 }
8371 };
8372 var FileLike = class _FileLike {
8373 constructor(blobLike, fileName, options = {}) {
8374 const n = fileName;
8375 const t = options.type;
8376 const d = options.lastModified ?? Date.now();
8377 this[kState] = {
8378 blobLike,
8379 name: n,
8380 type: t,
8381 lastModified: d
8382 };
8383 }
8384 stream(...args) {
8385 webidl.brandCheck(this, _FileLike);
8386 return this[kState].blobLike.stream(...args);
8387 }
8388 arrayBuffer(...args) {
8389 webidl.brandCheck(this, _FileLike);
8390 return this[kState].blobLike.arrayBuffer(...args);
8391 }
8392 slice(...args) {
8393 webidl.brandCheck(this, _FileLike);
8394 return this[kState].blobLike.slice(...args);
8395 }
8396 text(...args) {
8397 webidl.brandCheck(this, _FileLike);
8398 return this[kState].blobLike.text(...args);
8399 }
8400 get size() {
8401 webidl.brandCheck(this, _FileLike);
8402 return this[kState].blobLike.size;
8403 }
8404 get type() {
8405 webidl.brandCheck(this, _FileLike);
8406 return this[kState].blobLike.type;
8407 }
8408 get name() {
8409 webidl.brandCheck(this, _FileLike);
8410 return this[kState].name;
8411 }
8412 get lastModified() {
8413 webidl.brandCheck(this, _FileLike);
8414 return this[kState].lastModified;
8415 }
8416 get [Symbol.toStringTag]() {
8417 return "File";
8418 }
8419 };
8420 Object.defineProperties(File.prototype, {
8421 [Symbol.toStringTag]: {
8422 value: "File",
8423 configurable: true
8424 },
8425 name: kEnumerableProperty,
8426 lastModified: kEnumerableProperty
8427 });
8428 webidl.converters.Blob = webidl.interfaceConverter(Blob2);
8429 webidl.converters.BlobPart = function(V, opts) {
8430 if (webidl.util.Type(V) === "Object") {
8431 if (isBlobLike(V)) {
8432 return webidl.converters.Blob(V, { strict: false });
8433 }
8434 if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {
8435 return webidl.converters.BufferSource(V, opts);
8436 }
8437 }
8438 return webidl.converters.USVString(V, opts);
8439 };
8440 webidl.converters["sequence<BlobPart>"] = webidl.sequenceConverter(
8441 webidl.converters.BlobPart
8442 );
8443 webidl.converters.FilePropertyBag = webidl.dictionaryConverter([
8444 {
8445 key: "lastModified",
8446 converter: webidl.converters["long long"],
8447 get defaultValue() {
8448 return Date.now();
8449 }
8450 },
8451 {
8452 key: "type",
8453 converter: webidl.converters.DOMString,
8454 defaultValue: ""
8455 },
8456 {
8457 key: "endings",
8458 converter: (value) => {
8459 value = webidl.converters.DOMString(value);
8460 value = value.toLowerCase();
8461 if (value !== "native") {
8462 value = "transparent";
8463 }
8464 return value;
8465 },
8466 defaultValue: "transparent"
8467 }
8468 ]);
8469 function processBlobParts(parts, options) {
8470 const bytes = [];
8471 for (const element of parts) {
8472 if (typeof element === "string") {
8473 let s = element;
8474 if (options.endings === "native") {
8475 s = convertLineEndingsNative(s);
8476 }
8477 bytes.push(encoder.encode(s));
8478 } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) {
8479 if (!element.buffer) {
8480 bytes.push(new Uint8Array(element));
8481 } else {
8482 bytes.push(
8483 new Uint8Array(element.buffer, element.byteOffset, element.byteLength)
8484 );
8485 }
8486 } else if (isBlobLike(element)) {
8487 bytes.push(element);
8488 }
8489 }
8490 return bytes;
8491 }
8492 function convertLineEndingsNative(s) {
8493 let nativeLineEnding = "\n";
8494 if (process.platform === "win32") {
8495 nativeLineEnding = "\r\n";
8496 }
8497 return s.replace(/\r?\n/g, nativeLineEnding);
8498 }
8499 function isFileLike(object) {
8500 return NativeFile && object instanceof NativeFile || object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File";
8501 }
8502 module2.exports = { File, FileLike, isFileLike };
8503 }
8504});
8505
8506// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/formdata.js
8507var require_formdata = __commonJS({
8508 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/formdata.js"(exports2, module2) {
8509 "use strict";
8510 var { isBlobLike, toUSVString, makeIterator } = require_util2();
8511 var { kState } = require_symbols2();
8512 var { File: UndiciFile, FileLike, isFileLike } = require_file();
8513 var { webidl } = require_webidl();
8514 var { Blob: Blob2, File: NativeFile } = require("buffer");
8515 var File = NativeFile ?? UndiciFile;
8516 var FormData = class _FormData {
8517 constructor(form) {
8518 if (form !== void 0) {
8519 throw webidl.errors.conversionFailed({
8520 prefix: "FormData constructor",
8521 argument: "Argument 1",
8522 types: ["undefined"]
8523 });
8524 }
8525 this[kState] = [];
8526 }
8527 append(name, value, filename = void 0) {
8528 webidl.brandCheck(this, _FormData);
8529 webidl.argumentLengthCheck(arguments, 2, { header: "FormData.append" });
8530 if (arguments.length === 3 && !isBlobLike(value)) {
8531 throw new TypeError(
8532 "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"
8533 );
8534 }
8535 name = webidl.converters.USVString(name);
8536 value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value);
8537 filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0;
8538 const entry = makeEntry(name, value, filename);
8539 this[kState].push(entry);
8540 }
8541 delete(name) {
8542 webidl.brandCheck(this, _FormData);
8543 webidl.argumentLengthCheck(arguments, 1, { header: "FormData.delete" });
8544 name = webidl.converters.USVString(name);
8545 this[kState] = this[kState].filter((entry) => entry.name !== name);
8546 }
8547 get(name) {
8548 webidl.brandCheck(this, _FormData);
8549 webidl.argumentLengthCheck(arguments, 1, { header: "FormData.get" });
8550 name = webidl.converters.USVString(name);
8551 const idx = this[kState].findIndex((entry) => entry.name === name);
8552 if (idx === -1) {
8553 return null;
8554 }
8555 return this[kState][idx].value;
8556 }
8557 getAll(name) {
8558 webidl.brandCheck(this, _FormData);
8559 webidl.argumentLengthCheck(arguments, 1, { header: "FormData.getAll" });
8560 name = webidl.converters.USVString(name);
8561 return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value);
8562 }
8563 has(name) {
8564 webidl.brandCheck(this, _FormData);
8565 webidl.argumentLengthCheck(arguments, 1, { header: "FormData.has" });
8566 name = webidl.converters.USVString(name);
8567 return this[kState].findIndex((entry) => entry.name === name) !== -1;
8568 }
8569 set(name, value, filename = void 0) {
8570 webidl.brandCheck(this, _FormData);
8571 webidl.argumentLengthCheck(arguments, 2, { header: "FormData.set" });
8572 if (arguments.length === 3 && !isBlobLike(value)) {
8573 throw new TypeError(
8574 "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"
8575 );
8576 }
8577 name = webidl.converters.USVString(name);
8578 value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value);
8579 filename = arguments.length === 3 ? toUSVString(filename) : void 0;
8580 const entry = makeEntry(name, value, filename);
8581 const idx = this[kState].findIndex((entry2) => entry2.name === name);
8582 if (idx !== -1) {
8583 this[kState] = [
8584 ...this[kState].slice(0, idx),
8585 entry,
8586 ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name)
8587 ];
8588 } else {
8589 this[kState].push(entry);
8590 }
8591 }
8592 entries() {
8593 webidl.brandCheck(this, _FormData);
8594 return makeIterator(
8595 () => this[kState].map((pair) => [pair.name, pair.value]),
8596 "FormData",
8597 "key+value"
8598 );
8599 }
8600 keys() {
8601 webidl.brandCheck(this, _FormData);
8602 return makeIterator(
8603 () => this[kState].map((pair) => [pair.name, pair.value]),
8604 "FormData",
8605 "key"
8606 );
8607 }
8608 values() {
8609 webidl.brandCheck(this, _FormData);
8610 return makeIterator(
8611 () => this[kState].map((pair) => [pair.name, pair.value]),
8612 "FormData",
8613 "value"
8614 );
8615 }
8616 /**
8617 * @param {(value: string, key: string, self: FormData) => void} callbackFn
8618 * @param {unknown} thisArg
8619 */
8620 forEach(callbackFn, thisArg = globalThis) {
8621 webidl.brandCheck(this, _FormData);
8622 webidl.argumentLengthCheck(arguments, 1, { header: "FormData.forEach" });
8623 if (typeof callbackFn !== "function") {
8624 throw new TypeError(
8625 "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'."
8626 );
8627 }
8628 for (const [key, value] of this) {
8629 callbackFn.apply(thisArg, [value, key, this]);
8630 }
8631 }
8632 };
8633 FormData.prototype[Symbol.iterator] = FormData.prototype.entries;
8634 Object.defineProperties(FormData.prototype, {
8635 [Symbol.toStringTag]: {
8636 value: "FormData",
8637 configurable: true
8638 }
8639 });
8640 function makeEntry(name, value, filename) {
8641 name = Buffer.from(name).toString("utf8");
8642 if (typeof value === "string") {
8643 value = Buffer.from(value).toString("utf8");
8644 } else {
8645 if (!isFileLike(value)) {
8646 value = value instanceof Blob2 ? new File([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type });
8647 }
8648 if (filename !== void 0) {
8649 const options = {
8650 type: value.type,
8651 lastModified: value.lastModified
8652 };
8653 value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File([value], filename, options) : new FileLike(value, filename, options);
8654 }
8655 }
8656 return { name, value };
8657 }
8658 module2.exports = { FormData };
8659 }
8660});
8661
8662// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/body.js
8663var require_body = __commonJS({
8664 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/body.js"(exports2, module2) {
8665 "use strict";
8666 var Busboy = require_main();
8667 var util = require_util();
8668 var {
8669 ReadableStreamFrom,
8670 isBlobLike,
8671 isReadableStreamLike,
8672 readableStreamClose,
8673 createDeferredPromise,
8674 fullyReadBody
8675 } = require_util2();
8676 var { FormData } = require_formdata();
8677 var { kState } = require_symbols2();
8678 var { webidl } = require_webidl();
8679 var { DOMException: DOMException2, structuredClone } = require_constants2();
8680 var { Blob: Blob2, File: NativeFile } = require("buffer");
8681 var { kBodyUsed } = require_symbols();
8682 var assert = require("assert");
8683 var { isErrored } = require_util();
8684 var { isUint8Array, isArrayBuffer } = require("util/types");
8685 var { File: UndiciFile } = require_file();
8686 var { parseMIMEType, serializeAMimeType } = require_dataURL();
8687 var random;
8688 try {
8689 const crypto = require("node:crypto");
8690 random = (max) => crypto.randomInt(0, max);
8691 } catch {
8692 random = (max) => Math.floor(Math.random(max));
8693 }
8694 var ReadableStream = globalThis.ReadableStream;
8695 var File = NativeFile ?? UndiciFile;
8696 var textEncoder = new TextEncoder();
8697 var textDecoder = new TextDecoder();
8698 function extractBody(object, keepalive = false) {
8699 if (!ReadableStream) {
8700 ReadableStream = require("stream/web").ReadableStream;
8701 }
8702 let stream = null;
8703 if (object instanceof ReadableStream) {
8704 stream = object;
8705 } else if (isBlobLike(object)) {
8706 stream = object.stream();
8707 } else {
8708 stream = new ReadableStream({
8709 async pull(controller) {
8710 controller.enqueue(
8711 typeof source === "string" ? textEncoder.encode(source) : source
8712 );
8713 queueMicrotask(() => readableStreamClose(controller));
8714 },
8715 start() {
8716 },
8717 type: void 0
8718 });
8719 }
8720 assert(isReadableStreamLike(stream));
8721 let action = null;
8722 let source = null;
8723 let length = null;
8724 let type = null;
8725 if (typeof object === "string") {
8726 source = object;
8727 type = "text/plain;charset=UTF-8";
8728 } else if (object instanceof URLSearchParams) {
8729 source = object.toString();
8730 type = "application/x-www-form-urlencoded;charset=UTF-8";
8731 } else if (isArrayBuffer(object)) {
8732 source = new Uint8Array(object.slice());
8733 } else if (ArrayBuffer.isView(object)) {
8734 source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength));
8735 } else if (util.isFormDataLike(object)) {
8736 const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, "0")}`;
8737 const prefix = `--${boundary}\r
8738Content-Disposition: form-data`;
8739 const escape = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22");
8740 const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n");
8741 const blobParts = [];
8742 const rn = new Uint8Array([13, 10]);
8743 length = 0;
8744 let hasUnknownSizeValue = false;
8745 for (const [name, value] of object) {
8746 if (typeof value === "string") {
8747 const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r
8748\r
8749${normalizeLinefeeds(value)}\r
8750`);
8751 blobParts.push(chunk2);
8752 length += chunk2.byteLength;
8753 } else {
8754 const chunk2 = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r
8755Content-Type: ${value.type || "application/octet-stream"}\r
8756\r
8757`);
8758 blobParts.push(chunk2, value, rn);
8759 if (typeof value.size === "number") {
8760 length += chunk2.byteLength + value.size + rn.byteLength;
8761 } else {
8762 hasUnknownSizeValue = true;
8763 }
8764 }
8765 }
8766 const chunk = textEncoder.encode(`--${boundary}--`);
8767 blobParts.push(chunk);
8768 length += chunk.byteLength;
8769 if (hasUnknownSizeValue) {
8770 length = null;
8771 }
8772 source = object;
8773 action = async function* () {
8774 for (const part of blobParts) {
8775 if (part.stream) {
8776 yield* part.stream();
8777 } else {
8778 yield part;
8779 }
8780 }
8781 };
8782 type = "multipart/form-data; boundary=" + boundary;
8783 } else if (isBlobLike(object)) {
8784 source = object;
8785 length = object.size;
8786 if (object.type) {
8787 type = object.type;
8788 }
8789 } else if (typeof object[Symbol.asyncIterator] === "function") {
8790 if (keepalive) {
8791 throw new TypeError("keepalive");
8792 }
8793 if (util.isDisturbed(object) || object.locked) {
8794 throw new TypeError(
8795 "Response body object should not be disturbed or locked"
8796 );
8797 }
8798 stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object);
8799 }
8800 if (typeof source === "string" || util.isBuffer(source)) {
8801 length = Buffer.byteLength(source);
8802 }
8803 if (action != null) {
8804 let iterator2;
8805 stream = new ReadableStream({
8806 async start() {
8807 iterator2 = action(object)[Symbol.asyncIterator]();
8808 },
8809 async pull(controller) {
8810 const { value, done } = await iterator2.next();
8811 if (done) {
8812 queueMicrotask(() => {
8813 controller.close();
8814 });
8815 } else {
8816 if (!isErrored(stream)) {
8817 controller.enqueue(new Uint8Array(value));
8818 }
8819 }
8820 return controller.desiredSize > 0;
8821 },
8822 async cancel(reason) {
8823 await iterator2.return();
8824 },
8825 type: void 0
8826 });
8827 }
8828 const body = { stream, source, length };
8829 return [body, type];
8830 }
8831 function safelyExtractBody(object, keepalive = false) {
8832 if (!ReadableStream) {
8833 ReadableStream = require("stream/web").ReadableStream;
8834 }
8835 if (object instanceof ReadableStream) {
8836 assert(!util.isDisturbed(object), "The body has already been consumed.");
8837 assert(!object.locked, "The stream is locked.");
8838 }
8839 return extractBody(object, keepalive);
8840 }
8841 function cloneBody(body) {
8842 const [out1, out2] = body.stream.tee();
8843 const out2Clone = structuredClone(out2, { transfer: [out2] });
8844 const [, finalClone] = out2Clone.tee();
8845 body.stream = out1;
8846 return {
8847 stream: finalClone,
8848 length: body.length,
8849 source: body.source
8850 };
8851 }
8852 async function* consumeBody(body) {
8853 if (body) {
8854 if (isUint8Array(body)) {
8855 yield body;
8856 } else {
8857 const stream = body.stream;
8858 if (util.isDisturbed(stream)) {
8859 throw new TypeError("The body has already been consumed.");
8860 }
8861 if (stream.locked) {
8862 throw new TypeError("The stream is locked.");
8863 }
8864 stream[kBodyUsed] = true;
8865 yield* stream;
8866 }
8867 }
8868 }
8869 function throwIfAborted(state) {
8870 if (state.aborted) {
8871 throw new DOMException2("The operation was aborted.", "AbortError");
8872 }
8873 }
8874 function bodyMixinMethods(instance) {
8875 const methods = {
8876 blob() {
8877 return specConsumeBody(this, (bytes) => {
8878 let mimeType = bodyMimeType(this);
8879 if (mimeType === "failure") {
8880 mimeType = "";
8881 } else if (mimeType) {
8882 mimeType = serializeAMimeType(mimeType);
8883 }
8884 return new Blob2([bytes], { type: mimeType });
8885 }, instance);
8886 },
8887 arrayBuffer() {
8888 return specConsumeBody(this, (bytes) => {
8889 return new Uint8Array(bytes).buffer;
8890 }, instance);
8891 },
8892 text() {
8893 return specConsumeBody(this, utf8DecodeBytes, instance);
8894 },
8895 json() {
8896 return specConsumeBody(this, parseJSONFromBytes, instance);
8897 },
8898 async formData() {
8899 webidl.brandCheck(this, instance);
8900 throwIfAborted(this[kState]);
8901 const contentType = this.headers.get("Content-Type");
8902 if (/multipart\/form-data/.test(contentType)) {
8903 const headers = {};
8904 for (const [key, value] of this.headers) headers[key.toLowerCase()] = value;
8905 const responseFormData = new FormData();
8906 let busboy;
8907 try {
8908 busboy = new Busboy({
8909 headers,
8910 preservePath: true
8911 });
8912 } catch (err) {
8913 throw new DOMException2(`${err}`, "AbortError");
8914 }
8915 busboy.on("field", (name, value) => {
8916 responseFormData.append(name, value);
8917 });
8918 busboy.on("file", (name, value, filename, encoding, mimeType) => {
8919 const chunks = [];
8920 if (encoding === "base64" || encoding.toLowerCase() === "base64") {
8921 let base64chunk = "";
8922 value.on("data", (chunk) => {
8923 base64chunk += chunk.toString().replace(/[\r\n]/gm, "");
8924 const end = base64chunk.length - base64chunk.length % 4;
8925 chunks.push(Buffer.from(base64chunk.slice(0, end), "base64"));
8926 base64chunk = base64chunk.slice(end);
8927 });
8928 value.on("end", () => {
8929 chunks.push(Buffer.from(base64chunk, "base64"));
8930 responseFormData.append(name, new File(chunks, filename, { type: mimeType }));
8931 });
8932 } else {
8933 value.on("data", (chunk) => {
8934 chunks.push(chunk);
8935 });
8936 value.on("end", () => {
8937 responseFormData.append(name, new File(chunks, filename, { type: mimeType }));
8938 });
8939 }
8940 });
8941 const busboyResolve = new Promise((resolve, reject) => {
8942 busboy.on("finish", resolve);
8943 busboy.on("error", (err) => reject(new TypeError(err)));
8944 });
8945 if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk);
8946 busboy.end();
8947 await busboyResolve;
8948 return responseFormData;
8949 } else if (/application\/x-www-form-urlencoded/.test(contentType)) {
8950 let entries;
8951 try {
8952 let text = "";
8953 const streamingDecoder = new TextDecoder("utf-8", { ignoreBOM: true });
8954 for await (const chunk of consumeBody(this[kState].body)) {
8955 if (!isUint8Array(chunk)) {
8956 throw new TypeError("Expected Uint8Array chunk");
8957 }
8958 text += streamingDecoder.decode(chunk, { stream: true });
8959 }
8960 text += streamingDecoder.decode();
8961 entries = new URLSearchParams(text);
8962 } catch (err) {
8963 throw Object.assign(new TypeError(), { cause: err });
8964 }
8965 const formData = new FormData();
8966 for (const [name, value] of entries) {
8967 formData.append(name, value);
8968 }
8969 return formData;
8970 } else {
8971 await Promise.resolve();
8972 throwIfAborted(this[kState]);
8973 throw webidl.errors.exception({
8974 header: `${instance.name}.formData`,
8975 message: "Could not parse content as FormData."
8976 });
8977 }
8978 }
8979 };
8980 return methods;
8981 }
8982 function mixinBody(prototype) {
8983 Object.assign(prototype.prototype, bodyMixinMethods(prototype));
8984 }
8985 async function specConsumeBody(object, convertBytesToJSValue, instance) {
8986 webidl.brandCheck(object, instance);
8987 throwIfAborted(object[kState]);
8988 if (bodyUnusable(object[kState].body)) {
8989 throw new TypeError("Body is unusable");
8990 }
8991 const promise = createDeferredPromise();
8992 const errorSteps = (error) => promise.reject(error);
8993 const successSteps = (data) => {
8994 try {
8995 promise.resolve(convertBytesToJSValue(data));
8996 } catch (e) {
8997 errorSteps(e);
8998 }
8999 };
9000 if (object[kState].body == null) {
9001 successSteps(new Uint8Array());
9002 return promise.promise;
9003 }
9004 await fullyReadBody(object[kState].body, successSteps, errorSteps);
9005 return promise.promise;
9006 }
9007 function bodyUnusable(body) {
9008 return body != null && (body.stream.locked || util.isDisturbed(body.stream));
9009 }
9010 function utf8DecodeBytes(buffer) {
9011 if (buffer.length === 0) {
9012 return "";
9013 }
9014 if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) {
9015 buffer = buffer.subarray(3);
9016 }
9017 const output = textDecoder.decode(buffer);
9018 return output;
9019 }
9020 function parseJSONFromBytes(bytes) {
9021 return JSON.parse(utf8DecodeBytes(bytes));
9022 }
9023 function bodyMimeType(object) {
9024 const { headersList } = object[kState];
9025 const contentType = headersList.get("content-type");
9026 if (contentType === null) {
9027 return "failure";
9028 }
9029 return parseMIMEType(contentType);
9030 }
9031 module2.exports = {
9032 extractBody,
9033 safelyExtractBody,
9034 cloneBody,
9035 mixinBody
9036 };
9037 }
9038});
9039
9040// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/request.js
9041var require_request = __commonJS({
9042 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/request.js"(exports2, module2) {
9043 "use strict";
9044 var {
9045 InvalidArgumentError: InvalidArgumentError2,
9046 NotSupportedError
9047 } = require_errors();
9048 var assert = require("assert");
9049 var { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require_symbols();
9050 var util = require_util();
9051 var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;
9052 var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
9053 var invalidPathRegex = /[^\u0021-\u00ff]/;
9054 var kHandler = Symbol("handler");
9055 var channels = {};
9056 var extractBody;
9057 try {
9058 const diagnosticsChannel = require("diagnostics_channel");
9059 channels.create = diagnosticsChannel.channel("undici:request:create");
9060 channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent");
9061 channels.headers = diagnosticsChannel.channel("undici:request:headers");
9062 channels.trailers = diagnosticsChannel.channel("undici:request:trailers");
9063 channels.error = diagnosticsChannel.channel("undici:request:error");
9064 } catch {
9065 channels.create = { hasSubscribers: false };
9066 channels.bodySent = { hasSubscribers: false };
9067 channels.headers = { hasSubscribers: false };
9068 channels.trailers = { hasSubscribers: false };
9069 channels.error = { hasSubscribers: false };
9070 }
9071 var Request = class _Request {
9072 constructor(origin, {
9073 path: path5,
9074 method,
9075 body,
9076 headers,
9077 query,
9078 idempotent,
9079 blocking,
9080 upgrade,
9081 headersTimeout,
9082 bodyTimeout,
9083 reset,
9084 throwOnError,
9085 expectContinue
9086 }, handler2) {
9087 if (typeof path5 !== "string") {
9088 throw new InvalidArgumentError2("path must be a string");
9089 } else if (path5[0] !== "/" && !(path5.startsWith("http://") || path5.startsWith("https://")) && method !== "CONNECT") {
9090 throw new InvalidArgumentError2("path must be an absolute URL or start with a slash");
9091 } else if (invalidPathRegex.exec(path5) !== null) {
9092 throw new InvalidArgumentError2("invalid request path");
9093 }
9094 if (typeof method !== "string") {
9095 throw new InvalidArgumentError2("method must be a string");
9096 } else if (tokenRegExp.exec(method) === null) {
9097 throw new InvalidArgumentError2("invalid request method");
9098 }
9099 if (upgrade && typeof upgrade !== "string") {
9100 throw new InvalidArgumentError2("upgrade must be a string");
9101 }
9102 if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
9103 throw new InvalidArgumentError2("invalid headersTimeout");
9104 }
9105 if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {
9106 throw new InvalidArgumentError2("invalid bodyTimeout");
9107 }
9108 if (reset != null && typeof reset !== "boolean") {
9109 throw new InvalidArgumentError2("invalid reset");
9110 }
9111 if (expectContinue != null && typeof expectContinue !== "boolean") {
9112 throw new InvalidArgumentError2("invalid expectContinue");
9113 }
9114 this.headersTimeout = headersTimeout;
9115 this.bodyTimeout = bodyTimeout;
9116 this.throwOnError = throwOnError === true;
9117 this.method = method;
9118 this.abort = null;
9119 if (body == null) {
9120 this.body = null;
9121 } else if (util.isStream(body)) {
9122 this.body = body;
9123 const rState = this.body._readableState;
9124 if (!rState || !rState.autoDestroy) {
9125 this.endHandler = function autoDestroy() {
9126 util.destroy(this);
9127 };
9128 this.body.on("end", this.endHandler);
9129 }
9130 this.errorHandler = (err) => {
9131 if (this.abort) {
9132 this.abort(err);
9133 } else {
9134 this.error = err;
9135 }
9136 };
9137 this.body.on("error", this.errorHandler);
9138 } else if (util.isBuffer(body)) {
9139 this.body = body.byteLength ? body : null;
9140 } else if (ArrayBuffer.isView(body)) {
9141 this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null;
9142 } else if (body instanceof ArrayBuffer) {
9143 this.body = body.byteLength ? Buffer.from(body) : null;
9144 } else if (typeof body === "string") {
9145 this.body = body.length ? Buffer.from(body) : null;
9146 } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {
9147 this.body = body;
9148 } else {
9149 throw new InvalidArgumentError2("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");
9150 }
9151 this.completed = false;
9152 this.aborted = false;
9153 this.upgrade = upgrade || null;
9154 this.path = query ? util.buildURL(path5, query) : path5;
9155 this.origin = origin;
9156 this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;
9157 this.blocking = blocking == null ? false : blocking;
9158 this.reset = reset == null ? null : reset;
9159 this.host = null;
9160 this.contentLength = null;
9161 this.contentType = null;
9162 this.headers = "";
9163 this.expectContinue = expectContinue != null ? expectContinue : false;
9164 if (Array.isArray(headers)) {
9165 if (headers.length % 2 !== 0) {
9166 throw new InvalidArgumentError2("headers array must be even");
9167 }
9168 for (let i = 0; i < headers.length; i += 2) {
9169 processHeader(this, headers[i], headers[i + 1]);
9170 }
9171 } else if (headers && typeof headers === "object") {
9172 const keys = Object.keys(headers);
9173 for (let i = 0; i < keys.length; i++) {
9174 const key = keys[i];
9175 processHeader(this, key, headers[key]);
9176 }
9177 } else if (headers != null) {
9178 throw new InvalidArgumentError2("headers must be an object or an array");
9179 }
9180 if (util.isFormDataLike(this.body)) {
9181 if (util.nodeMajor < 16 || util.nodeMajor === 16 && util.nodeMinor < 8) {
9182 throw new InvalidArgumentError2("Form-Data bodies are only supported in node v16.8 and newer.");
9183 }
9184 if (!extractBody) {
9185 extractBody = require_body().extractBody;
9186 }
9187 const [bodyStream, contentType] = extractBody(body);
9188 if (this.contentType == null) {
9189 this.contentType = contentType;
9190 this.headers += `content-type: ${contentType}\r
9191`;
9192 }
9193 this.body = bodyStream.stream;
9194 this.contentLength = bodyStream.length;
9195 } else if (util.isBlobLike(body) && this.contentType == null && body.type) {
9196 this.contentType = body.type;
9197 this.headers += `content-type: ${body.type}\r
9198`;
9199 }
9200 util.validateHandler(handler2, method, upgrade);
9201 this.servername = util.getServerName(this.host);
9202 this[kHandler] = handler2;
9203 if (channels.create.hasSubscribers) {
9204 channels.create.publish({ request: this });
9205 }
9206 }
9207 onBodySent(chunk) {
9208 if (this[kHandler].onBodySent) {
9209 try {
9210 return this[kHandler].onBodySent(chunk);
9211 } catch (err) {
9212 this.abort(err);
9213 }
9214 }
9215 }
9216 onRequestSent() {
9217 if (channels.bodySent.hasSubscribers) {
9218 channels.bodySent.publish({ request: this });
9219 }
9220 if (this[kHandler].onRequestSent) {
9221 try {
9222 return this[kHandler].onRequestSent();
9223 } catch (err) {
9224 this.abort(err);
9225 }
9226 }
9227 }
9228 onConnect(abort) {
9229 assert(!this.aborted);
9230 assert(!this.completed);
9231 if (this.error) {
9232 abort(this.error);
9233 } else {
9234 this.abort = abort;
9235 return this[kHandler].onConnect(abort);
9236 }
9237 }
9238 onHeaders(statusCode, headers, resume, statusText) {
9239 assert(!this.aborted);
9240 assert(!this.completed);
9241 if (channels.headers.hasSubscribers) {
9242 channels.headers.publish({ request: this, response: { statusCode, headers, statusText } });
9243 }
9244 try {
9245 return this[kHandler].onHeaders(statusCode, headers, resume, statusText);
9246 } catch (err) {
9247 this.abort(err);
9248 }
9249 }
9250 onData(chunk) {
9251 assert(!this.aborted);
9252 assert(!this.completed);
9253 try {
9254 return this[kHandler].onData(chunk);
9255 } catch (err) {
9256 this.abort(err);
9257 return false;
9258 }
9259 }
9260 onUpgrade(statusCode, headers, socket) {
9261 assert(!this.aborted);
9262 assert(!this.completed);
9263 return this[kHandler].onUpgrade(statusCode, headers, socket);
9264 }
9265 onComplete(trailers) {
9266 this.onFinally();
9267 assert(!this.aborted);
9268 this.completed = true;
9269 if (channels.trailers.hasSubscribers) {
9270 channels.trailers.publish({ request: this, trailers });
9271 }
9272 try {
9273 return this[kHandler].onComplete(trailers);
9274 } catch (err) {
9275 this.onError(err);
9276 }
9277 }
9278 onError(error) {
9279 this.onFinally();
9280 if (channels.error.hasSubscribers) {
9281 channels.error.publish({ request: this, error });
9282 }
9283 if (this.aborted) {
9284 return;
9285 }
9286 this.aborted = true;
9287 return this[kHandler].onError(error);
9288 }
9289 onFinally() {
9290 if (this.errorHandler) {
9291 this.body.off("error", this.errorHandler);
9292 this.errorHandler = null;
9293 }
9294 if (this.endHandler) {
9295 this.body.off("end", this.endHandler);
9296 this.endHandler = null;
9297 }
9298 }
9299 // TODO: adjust to support H2
9300 addHeader(key, value) {
9301 processHeader(this, key, value);
9302 return this;
9303 }
9304 static [kHTTP1BuildRequest](origin, opts, handler2) {
9305 return new _Request(origin, opts, handler2);
9306 }
9307 static [kHTTP2BuildRequest](origin, opts, handler2) {
9308 const headers = opts.headers;
9309 opts = { ...opts, headers: null };
9310 const request2 = new _Request(origin, opts, handler2);
9311 request2.headers = {};
9312 if (Array.isArray(headers)) {
9313 if (headers.length % 2 !== 0) {
9314 throw new InvalidArgumentError2("headers array must be even");
9315 }
9316 for (let i = 0; i < headers.length; i += 2) {
9317 processHeader(request2, headers[i], headers[i + 1], true);
9318 }
9319 } else if (headers && typeof headers === "object") {
9320 const keys = Object.keys(headers);
9321 for (let i = 0; i < keys.length; i++) {
9322 const key = keys[i];
9323 processHeader(request2, key, headers[key], true);
9324 }
9325 } else if (headers != null) {
9326 throw new InvalidArgumentError2("headers must be an object or an array");
9327 }
9328 return request2;
9329 }
9330 static [kHTTP2CopyHeaders](raw) {
9331 const rawHeaders = raw.split("\r\n");
9332 const headers = {};
9333 for (const header of rawHeaders) {
9334 const [key, value] = header.split(": ");
9335 if (value == null || value.length === 0) continue;
9336 if (headers[key]) headers[key] += `,${value}`;
9337 else headers[key] = value;
9338 }
9339 return headers;
9340 }
9341 };
9342 function processHeaderValue(key, val, skipAppend) {
9343 if (val && typeof val === "object") {
9344 throw new InvalidArgumentError2(`invalid ${key} header`);
9345 }
9346 val = val != null ? `${val}` : "";
9347 if (headerCharRegex.exec(val) !== null) {
9348 throw new InvalidArgumentError2(`invalid ${key} header`);
9349 }
9350 return skipAppend ? val : `${key}: ${val}\r
9351`;
9352 }
9353 function processHeader(request2, key, val, skipAppend = false) {
9354 if (val && (typeof val === "object" && !Array.isArray(val))) {
9355 throw new InvalidArgumentError2(`invalid ${key} header`);
9356 } else if (val === void 0) {
9357 return;
9358 }
9359 if (request2.host === null && key.length === 4 && key.toLowerCase() === "host") {
9360 if (headerCharRegex.exec(val) !== null) {
9361 throw new InvalidArgumentError2(`invalid ${key} header`);
9362 }
9363 request2.host = val;
9364 } else if (request2.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") {
9365 request2.contentLength = parseInt(val, 10);
9366 if (!Number.isFinite(request2.contentLength)) {
9367 throw new InvalidArgumentError2("invalid content-length header");
9368 }
9369 } else if (request2.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") {
9370 request2.contentType = val;
9371 if (skipAppend) request2.headers[key] = processHeaderValue(key, val, skipAppend);
9372 else request2.headers += processHeaderValue(key, val);
9373 } else if (key.length === 17 && key.toLowerCase() === "transfer-encoding") {
9374 throw new InvalidArgumentError2("invalid transfer-encoding header");
9375 } else if (key.length === 10 && key.toLowerCase() === "connection") {
9376 const value = typeof val === "string" ? val.toLowerCase() : null;
9377 if (value !== "close" && value !== "keep-alive") {
9378 throw new InvalidArgumentError2("invalid connection header");
9379 } else if (value === "close") {
9380 request2.reset = true;
9381 }
9382 } else if (key.length === 10 && key.toLowerCase() === "keep-alive") {
9383 throw new InvalidArgumentError2("invalid keep-alive header");
9384 } else if (key.length === 7 && key.toLowerCase() === "upgrade") {
9385 throw new InvalidArgumentError2("invalid upgrade header");
9386 } else if (key.length === 6 && key.toLowerCase() === "expect") {
9387 throw new NotSupportedError("expect header not supported");
9388 } else if (tokenRegExp.exec(key) === null) {
9389 throw new InvalidArgumentError2("invalid header key");
9390 } else {
9391 if (Array.isArray(val)) {
9392 for (let i = 0; i < val.length; i++) {
9393 if (skipAppend) {
9394 if (request2.headers[key]) request2.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`;
9395 else request2.headers[key] = processHeaderValue(key, val[i], skipAppend);
9396 } else {
9397 request2.headers += processHeaderValue(key, val[i]);
9398 }
9399 }
9400 } else {
9401 if (skipAppend) request2.headers[key] = processHeaderValue(key, val, skipAppend);
9402 else request2.headers += processHeaderValue(key, val);
9403 }
9404 }
9405 }
9406 module2.exports = Request;
9407 }
9408});
9409
9410// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/dispatcher.js
9411var require_dispatcher = __commonJS({
9412 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/dispatcher.js"(exports2, module2) {
9413 "use strict";
9414 var EventEmitter = require("events");
9415 var Dispatcher = class extends EventEmitter {
9416 dispatch() {
9417 throw new Error("not implemented");
9418 }
9419 close() {
9420 throw new Error("not implemented");
9421 }
9422 destroy() {
9423 throw new Error("not implemented");
9424 }
9425 };
9426 module2.exports = Dispatcher;
9427 }
9428});
9429
9430// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/dispatcher-base.js
9431var require_dispatcher_base = __commonJS({
9432 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/dispatcher-base.js"(exports2, module2) {
9433 "use strict";
9434 var Dispatcher = require_dispatcher();
9435 var {
9436 ClientDestroyedError,
9437 ClientClosedError,
9438 InvalidArgumentError: InvalidArgumentError2
9439 } = require_errors();
9440 var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols();
9441 var kDestroyed = Symbol("destroyed");
9442 var kClosed = Symbol("closed");
9443 var kOnDestroyed = Symbol("onDestroyed");
9444 var kOnClosed = Symbol("onClosed");
9445 var kInterceptedDispatch = Symbol("Intercepted Dispatch");
9446 var DispatcherBase = class extends Dispatcher {
9447 constructor() {
9448 super();
9449 this[kDestroyed] = false;
9450 this[kOnDestroyed] = null;
9451 this[kClosed] = false;
9452 this[kOnClosed] = [];
9453 }
9454 get destroyed() {
9455 return this[kDestroyed];
9456 }
9457 get closed() {
9458 return this[kClosed];
9459 }
9460 get interceptors() {
9461 return this[kInterceptors];
9462 }
9463 set interceptors(newInterceptors) {
9464 if (newInterceptors) {
9465 for (let i = newInterceptors.length - 1; i >= 0; i--) {
9466 const interceptor = this[kInterceptors][i];
9467 if (typeof interceptor !== "function") {
9468 throw new InvalidArgumentError2("interceptor must be an function");
9469 }
9470 }
9471 }
9472 this[kInterceptors] = newInterceptors;
9473 }
9474 close(callback) {
9475 if (callback === void 0) {
9476 return new Promise((resolve, reject) => {
9477 this.close((err, data) => {
9478 return err ? reject(err) : resolve(data);
9479 });
9480 });
9481 }
9482 if (typeof callback !== "function") {
9483 throw new InvalidArgumentError2("invalid callback");
9484 }
9485 if (this[kDestroyed]) {
9486 queueMicrotask(() => callback(new ClientDestroyedError(), null));
9487 return;
9488 }
9489 if (this[kClosed]) {
9490 if (this[kOnClosed]) {
9491 this[kOnClosed].push(callback);
9492 } else {
9493 queueMicrotask(() => callback(null, null));
9494 }
9495 return;
9496 }
9497 this[kClosed] = true;
9498 this[kOnClosed].push(callback);
9499 const onClosed = () => {
9500 const callbacks = this[kOnClosed];
9501 this[kOnClosed] = null;
9502 for (let i = 0; i < callbacks.length; i++) {
9503 callbacks[i](null, null);
9504 }
9505 };
9506 this[kClose]().then(() => this.destroy()).then(() => {
9507 queueMicrotask(onClosed);
9508 });
9509 }
9510 destroy(err, callback) {
9511 if (typeof err === "function") {
9512 callback = err;
9513 err = null;
9514 }
9515 if (callback === void 0) {
9516 return new Promise((resolve, reject) => {
9517 this.destroy(err, (err2, data) => {
9518 return err2 ? (
9519 /* istanbul ignore next: should never error */
9520 reject(err2)
9521 ) : resolve(data);
9522 });
9523 });
9524 }
9525 if (typeof callback !== "function") {
9526 throw new InvalidArgumentError2("invalid callback");
9527 }
9528 if (this[kDestroyed]) {
9529 if (this[kOnDestroyed]) {
9530 this[kOnDestroyed].push(callback);
9531 } else {
9532 queueMicrotask(() => callback(null, null));
9533 }
9534 return;
9535 }
9536 if (!err) {
9537 err = new ClientDestroyedError();
9538 }
9539 this[kDestroyed] = true;
9540 this[kOnDestroyed] = this[kOnDestroyed] || [];
9541 this[kOnDestroyed].push(callback);
9542 const onDestroyed = () => {
9543 const callbacks = this[kOnDestroyed];
9544 this[kOnDestroyed] = null;
9545 for (let i = 0; i < callbacks.length; i++) {
9546 callbacks[i](null, null);
9547 }
9548 };
9549 this[kDestroy](err).then(() => {
9550 queueMicrotask(onDestroyed);
9551 });
9552 }
9553 [kInterceptedDispatch](opts, handler2) {
9554 if (!this[kInterceptors] || this[kInterceptors].length === 0) {
9555 this[kInterceptedDispatch] = this[kDispatch];
9556 return this[kDispatch](opts, handler2);
9557 }
9558 let dispatch = this[kDispatch].bind(this);
9559 for (let i = this[kInterceptors].length - 1; i >= 0; i--) {
9560 dispatch = this[kInterceptors][i](dispatch);
9561 }
9562 this[kInterceptedDispatch] = dispatch;
9563 return dispatch(opts, handler2);
9564 }
9565 dispatch(opts, handler2) {
9566 if (!handler2 || typeof handler2 !== "object") {
9567 throw new InvalidArgumentError2("handler must be an object");
9568 }
9569 try {
9570 if (!opts || typeof opts !== "object") {
9571 throw new InvalidArgumentError2("opts must be an object.");
9572 }
9573 if (this[kDestroyed] || this[kOnDestroyed]) {
9574 throw new ClientDestroyedError();
9575 }
9576 if (this[kClosed]) {
9577 throw new ClientClosedError();
9578 }
9579 return this[kInterceptedDispatch](opts, handler2);
9580 } catch (err) {
9581 if (typeof handler2.onError !== "function") {
9582 throw new InvalidArgumentError2("invalid onError method");
9583 }
9584 handler2.onError(err);
9585 return false;
9586 }
9587 }
9588 };
9589 module2.exports = DispatcherBase;
9590 }
9591});
9592
9593// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/connect.js
9594var require_connect = __commonJS({
9595 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/core/connect.js"(exports2, module2) {
9596 "use strict";
9597 var net = require("net");
9598 var assert = require("assert");
9599 var util = require_util();
9600 var { InvalidArgumentError: InvalidArgumentError2, ConnectTimeoutError } = require_errors();
9601 var tls;
9602 var SessionCache;
9603 if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {
9604 SessionCache = class WeakSessionCache {
9605 constructor(maxCachedSessions) {
9606 this._maxCachedSessions = maxCachedSessions;
9607 this._sessionCache = /* @__PURE__ */ new Map();
9608 this._sessionRegistry = new global.FinalizationRegistry((key) => {
9609 if (this._sessionCache.size < this._maxCachedSessions) {
9610 return;
9611 }
9612 const ref = this._sessionCache.get(key);
9613 if (ref !== void 0 && ref.deref() === void 0) {
9614 this._sessionCache.delete(key);
9615 }
9616 });
9617 }
9618 get(sessionKey) {
9619 const ref = this._sessionCache.get(sessionKey);
9620 return ref ? ref.deref() : null;
9621 }
9622 set(sessionKey, session) {
9623 if (this._maxCachedSessions === 0) {
9624 return;
9625 }
9626 this._sessionCache.set(sessionKey, new WeakRef(session));
9627 this._sessionRegistry.register(session, sessionKey);
9628 }
9629 };
9630 } else {
9631 SessionCache = class SimpleSessionCache {
9632 constructor(maxCachedSessions) {
9633 this._maxCachedSessions = maxCachedSessions;
9634 this._sessionCache = /* @__PURE__ */ new Map();
9635 }
9636 get(sessionKey) {
9637 return this._sessionCache.get(sessionKey);
9638 }
9639 set(sessionKey, session) {
9640 if (this._maxCachedSessions === 0) {
9641 return;
9642 }
9643 if (this._sessionCache.size >= this._maxCachedSessions) {
9644 const { value: oldestKey } = this._sessionCache.keys().next();
9645 this._sessionCache.delete(oldestKey);
9646 }
9647 this._sessionCache.set(sessionKey, session);
9648 }
9649 };
9650 }
9651 function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {
9652 if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {
9653 throw new InvalidArgumentError2("maxCachedSessions must be a positive integer or zero");
9654 }
9655 const options = { path: socketPath, ...opts };
9656 const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions);
9657 timeout = timeout == null ? 1e4 : timeout;
9658 allowH2 = allowH2 != null ? allowH2 : false;
9659 return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {
9660 let socket;
9661 if (protocol === "https:") {
9662 if (!tls) {
9663 tls = require("tls");
9664 }
9665 servername = servername || options.servername || util.getServerName(host) || null;
9666 const sessionKey = servername || hostname;
9667 const session = sessionCache.get(sessionKey) || null;
9668 assert(sessionKey);
9669 socket = tls.connect({
9670 highWaterMark: 16384,
9671 // TLS in node can't have bigger HWM anyway...
9672 ...options,
9673 servername,
9674 session,
9675 localAddress,
9676 // TODO(HTTP/2): Add support for h2c
9677 ALPNProtocols: allowH2 ? ["http/1.1", "h2"] : ["http/1.1"],
9678 socket: httpSocket,
9679 // upgrade socket connection
9680 port: port || 443,
9681 host: hostname
9682 });
9683 socket.on("session", function(session2) {
9684 sessionCache.set(sessionKey, session2);
9685 });
9686 } else {
9687 assert(!httpSocket, "httpSocket can only be sent on TLS update");
9688 socket = net.connect({
9689 highWaterMark: 64 * 1024,
9690 // Same as nodejs fs streams.
9691 ...options,
9692 localAddress,
9693 port: port || 80,
9694 host: hostname
9695 });
9696 }
9697 if (options.keepAlive == null || options.keepAlive) {
9698 const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay;
9699 socket.setKeepAlive(true, keepAliveInitialDelay);
9700 }
9701 const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout);
9702 socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() {
9703 cancelTimeout();
9704 if (callback) {
9705 const cb = callback;
9706 callback = null;
9707 cb(null, this);
9708 }
9709 }).on("error", function(err) {
9710 cancelTimeout();
9711 if (callback) {
9712 const cb = callback;
9713 callback = null;
9714 cb(err);
9715 }
9716 });
9717 return socket;
9718 };
9719 }
9720 function setupTimeout(onConnectTimeout2, timeout) {
9721 if (!timeout) {
9722 return () => {
9723 };
9724 }
9725 let s1 = null;
9726 let s2 = null;
9727 const timeoutId = setTimeout(() => {
9728 s1 = setImmediate(() => {
9729 if (process.platform === "win32") {
9730 s2 = setImmediate(() => onConnectTimeout2());
9731 } else {
9732 onConnectTimeout2();
9733 }
9734 });
9735 }, timeout);
9736 return () => {
9737 clearTimeout(timeoutId);
9738 clearImmediate(s1);
9739 clearImmediate(s2);
9740 };
9741 }
9742 function onConnectTimeout(socket) {
9743 util.destroy(socket, new ConnectTimeoutError());
9744 }
9745 module2.exports = buildConnector;
9746 }
9747});
9748
9749// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/llhttp/utils.js
9750var require_utils2 = __commonJS({
9751 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/llhttp/utils.js"(exports2) {
9752 "use strict";
9753 Object.defineProperty(exports2, "__esModule", { value: true });
9754 exports2.enumToMap = void 0;
9755 function enumToMap(obj) {
9756 const res = {};
9757 Object.keys(obj).forEach((key) => {
9758 const value = obj[key];
9759 if (typeof value === "number") {
9760 res[key] = value;
9761 }
9762 });
9763 return res;
9764 }
9765 exports2.enumToMap = enumToMap;
9766 }
9767});
9768
9769// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/llhttp/constants.js
9770var require_constants3 = __commonJS({
9771 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/llhttp/constants.js"(exports2) {
9772 "use strict";
9773 Object.defineProperty(exports2, "__esModule", { value: true });
9774 exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0;
9775 var utils_1 = require_utils2();
9776 var ERROR;
9777 (function(ERROR2) {
9778 ERROR2[ERROR2["OK"] = 0] = "OK";
9779 ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL";
9780 ERROR2[ERROR2["STRICT"] = 2] = "STRICT";
9781 ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED";
9782 ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH";
9783 ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION";
9784 ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD";
9785 ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL";
9786 ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT";
9787 ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION";
9788 ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN";
9789 ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH";
9790 ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE";
9791 ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS";
9792 ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE";
9793 ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING";
9794 ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN";
9795 ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE";
9796 ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE";
9797 ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER";
9798 ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE";
9799 ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED";
9800 ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE";
9801 ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE";
9802 ERROR2[ERROR2["USER"] = 24] = "USER";
9803 })(ERROR = exports2.ERROR || (exports2.ERROR = {}));
9804 var TYPE;
9805 (function(TYPE2) {
9806 TYPE2[TYPE2["BOTH"] = 0] = "BOTH";
9807 TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST";
9808 TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE";
9809 })(TYPE = exports2.TYPE || (exports2.TYPE = {}));
9810 var FLAGS;
9811 (function(FLAGS2) {
9812 FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE";
9813 FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE";
9814 FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE";
9815 FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED";
9816 FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE";
9817 FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH";
9818 FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY";
9819 FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING";
9820 FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING";
9821 })(FLAGS = exports2.FLAGS || (exports2.FLAGS = {}));
9822 var LENIENT_FLAGS;
9823 (function(LENIENT_FLAGS2) {
9824 LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS";
9825 LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH";
9826 LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE";
9827 })(LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {}));
9828 var METHODS;
9829 (function(METHODS2) {
9830 METHODS2[METHODS2["DELETE"] = 0] = "DELETE";
9831 METHODS2[METHODS2["GET"] = 1] = "GET";
9832 METHODS2[METHODS2["HEAD"] = 2] = "HEAD";
9833 METHODS2[METHODS2["POST"] = 3] = "POST";
9834 METHODS2[METHODS2["PUT"] = 4] = "PUT";
9835 METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT";
9836 METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS";
9837 METHODS2[METHODS2["TRACE"] = 7] = "TRACE";
9838 METHODS2[METHODS2["COPY"] = 8] = "COPY";
9839 METHODS2[METHODS2["LOCK"] = 9] = "LOCK";
9840 METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL";
9841 METHODS2[METHODS2["MOVE"] = 11] = "MOVE";
9842 METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND";
9843 METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH";
9844 METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH";
9845 METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK";
9846 METHODS2[METHODS2["BIND"] = 16] = "BIND";
9847 METHODS2[METHODS2["REBIND"] = 17] = "REBIND";
9848 METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND";
9849 METHODS2[METHODS2["ACL"] = 19] = "ACL";
9850 METHODS2[METHODS2["REPORT"] = 20] = "REPORT";
9851 METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY";
9852 METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT";
9853 METHODS2[METHODS2["MERGE"] = 23] = "MERGE";
9854 METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH";
9855 METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY";
9856 METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE";
9857 METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE";
9858 METHODS2[METHODS2["PATCH"] = 28] = "PATCH";
9859 METHODS2[METHODS2["PURGE"] = 29] = "PURGE";
9860 METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR";
9861 METHODS2[METHODS2["LINK"] = 31] = "LINK";
9862 METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK";
9863 METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE";
9864 METHODS2[METHODS2["PRI"] = 34] = "PRI";
9865 METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE";
9866 METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE";
9867 METHODS2[METHODS2["SETUP"] = 37] = "SETUP";
9868 METHODS2[METHODS2["PLAY"] = 38] = "PLAY";
9869 METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE";
9870 METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN";
9871 METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER";
9872 METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER";
9873 METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT";
9874 METHODS2[METHODS2["RECORD"] = 44] = "RECORD";
9875 METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH";
9876 })(METHODS = exports2.METHODS || (exports2.METHODS = {}));
9877 exports2.METHODS_HTTP = [
9878 METHODS.DELETE,
9879 METHODS.GET,
9880 METHODS.HEAD,
9881 METHODS.POST,
9882 METHODS.PUT,
9883 METHODS.CONNECT,
9884 METHODS.OPTIONS,
9885 METHODS.TRACE,
9886 METHODS.COPY,
9887 METHODS.LOCK,
9888 METHODS.MKCOL,
9889 METHODS.MOVE,
9890 METHODS.PROPFIND,
9891 METHODS.PROPPATCH,
9892 METHODS.SEARCH,
9893 METHODS.UNLOCK,
9894 METHODS.BIND,
9895 METHODS.REBIND,
9896 METHODS.UNBIND,
9897 METHODS.ACL,
9898 METHODS.REPORT,
9899 METHODS.MKACTIVITY,
9900 METHODS.CHECKOUT,
9901 METHODS.MERGE,
9902 METHODS["M-SEARCH"],
9903 METHODS.NOTIFY,
9904 METHODS.SUBSCRIBE,
9905 METHODS.UNSUBSCRIBE,
9906 METHODS.PATCH,
9907 METHODS.PURGE,
9908 METHODS.MKCALENDAR,
9909 METHODS.LINK,
9910 METHODS.UNLINK,
9911 METHODS.PRI,
9912 // TODO(indutny): should we allow it with HTTP?
9913 METHODS.SOURCE
9914 ];
9915 exports2.METHODS_ICE = [
9916 METHODS.SOURCE
9917 ];
9918 exports2.METHODS_RTSP = [
9919 METHODS.OPTIONS,
9920 METHODS.DESCRIBE,
9921 METHODS.ANNOUNCE,
9922 METHODS.SETUP,
9923 METHODS.PLAY,
9924 METHODS.PAUSE,
9925 METHODS.TEARDOWN,
9926 METHODS.GET_PARAMETER,
9927 METHODS.SET_PARAMETER,
9928 METHODS.REDIRECT,
9929 METHODS.RECORD,
9930 METHODS.FLUSH,
9931 // For AirPlay
9932 METHODS.GET,
9933 METHODS.POST
9934 ];
9935 exports2.METHOD_MAP = utils_1.enumToMap(METHODS);
9936 exports2.H_METHOD_MAP = {};
9937 Object.keys(exports2.METHOD_MAP).forEach((key) => {
9938 if (/^H/.test(key)) {
9939 exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key];
9940 }
9941 });
9942 var FINISH;
9943 (function(FINISH2) {
9944 FINISH2[FINISH2["SAFE"] = 0] = "SAFE";
9945 FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB";
9946 FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE";
9947 })(FINISH = exports2.FINISH || (exports2.FINISH = {}));
9948 exports2.ALPHA = [];
9949 for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) {
9950 exports2.ALPHA.push(String.fromCharCode(i));
9951 exports2.ALPHA.push(String.fromCharCode(i + 32));
9952 }
9953 exports2.NUM_MAP = {
9954 0: 0,
9955 1: 1,
9956 2: 2,
9957 3: 3,
9958 4: 4,
9959 5: 5,
9960 6: 6,
9961 7: 7,
9962 8: 8,
9963 9: 9
9964 };
9965 exports2.HEX_MAP = {
9966 0: 0,
9967 1: 1,
9968 2: 2,
9969 3: 3,
9970 4: 4,
9971 5: 5,
9972 6: 6,
9973 7: 7,
9974 8: 8,
9975 9: 9,
9976 A: 10,
9977 B: 11,
9978 C: 12,
9979 D: 13,
9980 E: 14,
9981 F: 15,
9982 a: 10,
9983 b: 11,
9984 c: 12,
9985 d: 13,
9986 e: 14,
9987 f: 15
9988 };
9989 exports2.NUM = [
9990 "0",
9991 "1",
9992 "2",
9993 "3",
9994 "4",
9995 "5",
9996 "6",
9997 "7",
9998 "8",
9999 "9"
10000 ];
10001 exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM);
10002 exports2.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"];
10003 exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]);
10004 exports2.STRICT_URL_CHAR = [
10005 "!",
10006 '"',
10007 "$",
10008 "%",
10009 "&",
10010 "'",
10011 "(",
10012 ")",
10013 "*",
10014 "+",
10015 ",",
10016 "-",
10017 ".",
10018 "/",
10019 ":",
10020 ";",
10021 "<",
10022 "=",
10023 ">",
10024 "@",
10025 "[",
10026 "\\",
10027 "]",
10028 "^",
10029 "_",
10030 "`",
10031 "{",
10032 "|",
10033 "}",
10034 "~"
10035 ].concat(exports2.ALPHANUM);
10036 exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([" ", "\f"]);
10037 for (let i = 128; i <= 255; i++) {
10038 exports2.URL_CHAR.push(i);
10039 }
10040 exports2.HEX = exports2.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]);
10041 exports2.STRICT_TOKEN = [
10042 "!",
10043 "#",
10044 "$",
10045 "%",
10046 "&",
10047 "'",
10048 "*",
10049 "+",
10050 "-",
10051 ".",
10052 "^",
10053 "_",
10054 "`",
10055 "|",
10056 "~"
10057 ].concat(exports2.ALPHANUM);
10058 exports2.TOKEN = exports2.STRICT_TOKEN.concat([" "]);
10059 exports2.HEADER_CHARS = [" "];
10060 for (let i = 32; i <= 255; i++) {
10061 if (i !== 127) {
10062 exports2.HEADER_CHARS.push(i);
10063 }
10064 }
10065 exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter((c) => c !== 44);
10066 exports2.MAJOR = exports2.NUM_MAP;
10067 exports2.MINOR = exports2.MAJOR;
10068 var HEADER_STATE;
10069 (function(HEADER_STATE2) {
10070 HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL";
10071 HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION";
10072 HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH";
10073 HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING";
10074 HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE";
10075 HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE";
10076 HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE";
10077 HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE";
10078 HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED";
10079 })(HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {}));
10080 exports2.SPECIAL_HEADERS = {
10081 "connection": HEADER_STATE.CONNECTION,
10082 "content-length": HEADER_STATE.CONTENT_LENGTH,
10083 "proxy-connection": HEADER_STATE.CONNECTION,
10084 "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING,
10085 "upgrade": HEADER_STATE.UPGRADE
10086 };
10087 }
10088});
10089
10090// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/handler/RedirectHandler.js
10091var require_RedirectHandler = __commonJS({
10092 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/handler/RedirectHandler.js"(exports2, module2) {
10093 "use strict";
10094 var util = require_util();
10095 var { kBodyUsed } = require_symbols();
10096 var assert = require("assert");
10097 var { InvalidArgumentError: InvalidArgumentError2 } = require_errors();
10098 var EE = require("events");
10099 var redirectableStatusCodes = [300, 301, 302, 303, 307, 308];
10100 var kBody = Symbol("body");
10101 var BodyAsyncIterable = class {
10102 constructor(body) {
10103 this[kBody] = body;
10104 this[kBodyUsed] = false;
10105 }
10106 async *[Symbol.asyncIterator]() {
10107 assert(!this[kBodyUsed], "disturbed");
10108 this[kBodyUsed] = true;
10109 yield* this[kBody];
10110 }
10111 };
10112 var RedirectHandler = class {
10113 constructor(dispatch, maxRedirections, opts, handler2) {
10114 if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
10115 throw new InvalidArgumentError2("maxRedirections must be a positive number");
10116 }
10117 util.validateHandler(handler2, opts.method, opts.upgrade);
10118 this.dispatch = dispatch;
10119 this.location = null;
10120 this.abort = null;
10121 this.opts = { ...opts, maxRedirections: 0 };
10122 this.maxRedirections = maxRedirections;
10123 this.handler = handler2;
10124 this.history = [];
10125 if (util.isStream(this.opts.body)) {
10126 if (util.bodyLength(this.opts.body) === 0) {
10127 this.opts.body.on("data", function() {
10128 assert(false);
10129 });
10130 }
10131 if (typeof this.opts.body.readableDidRead !== "boolean") {
10132 this.opts.body[kBodyUsed] = false;
10133 EE.prototype.on.call(this.opts.body, "data", function() {
10134 this[kBodyUsed] = true;
10135 });
10136 }
10137 } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") {
10138 this.opts.body = new BodyAsyncIterable(this.opts.body);
10139 } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) {
10140 this.opts.body = new BodyAsyncIterable(this.opts.body);
10141 }
10142 }
10143 onConnect(abort) {
10144 this.abort = abort;
10145 this.handler.onConnect(abort, { history: this.history });
10146 }
10147 onUpgrade(statusCode, headers, socket) {
10148 this.handler.onUpgrade(statusCode, headers, socket);
10149 }
10150 onError(error) {
10151 this.handler.onError(error);
10152 }
10153 onHeaders(statusCode, headers, resume, statusText) {
10154 this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers);
10155 if (this.opts.origin) {
10156 this.history.push(new URL(this.opts.path, this.opts.origin));
10157 }
10158 if (!this.location) {
10159 return this.handler.onHeaders(statusCode, headers, resume, statusText);
10160 }
10161 const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)));
10162 const path5 = search ? `${pathname}${search}` : pathname;
10163 this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin);
10164 this.opts.path = path5;
10165 this.opts.origin = origin;
10166 this.opts.maxRedirections = 0;
10167 this.opts.query = null;
10168 if (statusCode === 303 && this.opts.method !== "HEAD") {
10169 this.opts.method = "GET";
10170 this.opts.body = null;
10171 }
10172 }
10173 onData(chunk) {
10174 if (this.location) {
10175 } else {
10176 return this.handler.onData(chunk);
10177 }
10178 }
10179 onComplete(trailers) {
10180 if (this.location) {
10181 this.location = null;
10182 this.abort = null;
10183 this.dispatch(this.opts, this);
10184 } else {
10185 this.handler.onComplete(trailers);
10186 }
10187 }
10188 onBodySent(chunk) {
10189 if (this.handler.onBodySent) {
10190 this.handler.onBodySent(chunk);
10191 }
10192 }
10193 };
10194 function parseLocation(statusCode, headers) {
10195 if (redirectableStatusCodes.indexOf(statusCode) === -1) {
10196 return null;
10197 }
10198 for (let i = 0; i < headers.length; i += 2) {
10199 if (headers[i].toString().toLowerCase() === "location") {
10200 return headers[i + 1];
10201 }
10202 }
10203 }
10204 function shouldRemoveHeader(header, removeContent, unknownOrigin) {
10205 if (header.length === 4) {
10206 return util.headerNameToString(header) === "host";
10207 }
10208 if (removeContent && util.headerNameToString(header).startsWith("content-")) {
10209 return true;
10210 }
10211 if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {
10212 const name = util.headerNameToString(header);
10213 return name === "authorization" || name === "cookie" || name === "proxy-authorization";
10214 }
10215 return false;
10216 }
10217 function cleanRequestHeaders(headers, removeContent, unknownOrigin) {
10218 const ret = [];
10219 if (Array.isArray(headers)) {
10220 for (let i = 0; i < headers.length; i += 2) {
10221 if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {
10222 ret.push(headers[i], headers[i + 1]);
10223 }
10224 }
10225 } else if (headers && typeof headers === "object") {
10226 for (const key of Object.keys(headers)) {
10227 if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {
10228 ret.push(key, headers[key]);
10229 }
10230 }
10231 } else {
10232 assert(headers == null, "headers must be an object or an array");
10233 }
10234 return ret;
10235 }
10236 module2.exports = RedirectHandler;
10237 }
10238});
10239
10240// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/interceptor/redirectInterceptor.js
10241var require_redirectInterceptor = __commonJS({
10242 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/interceptor/redirectInterceptor.js"(exports2, module2) {
10243 "use strict";
10244 var RedirectHandler = require_RedirectHandler();
10245 function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {
10246 return (dispatch) => {
10247 return function Intercept(opts, handler2) {
10248 const { maxRedirections = defaultMaxRedirections } = opts;
10249 if (!maxRedirections) {
10250 return dispatch(opts, handler2);
10251 }
10252 const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler2);
10253 opts = { ...opts, maxRedirections: 0 };
10254 return dispatch(opts, redirectHandler);
10255 };
10256 };
10257 }
10258 module2.exports = createRedirectInterceptor;
10259 }
10260});
10261
10262// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/llhttp/llhttp-wasm.js
10263var require_llhttp_wasm = __commonJS({
10264 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) {
10265 module2.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=";
10266 }
10267});
10268
10269// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
10270var require_llhttp_simd_wasm = __commonJS({
10271 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) {
10272 module2.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==";
10273 }
10274});
10275
10276// node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/client.js
10277var require_client = __commonJS({
10278 "node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/client.js"(exports2, module2) {
10279 "use strict";
10280 var assert = require("assert");
10281 var net = require("net");
10282 var http = require("http");
10283 var { pipeline } = require("stream");
10284 var util = require_util();
10285 var timers = require_timers();
10286 var Request = require_request();
10287 var DispatcherBase = require_dispatcher_base();
10288 var {
10289 RequestContentLengthMismatchError,
10290 ResponseContentLengthMismatchError,
10291 InvalidArgumentError: InvalidArgumentError2,
10292 RequestAbortedError,
10293 HeadersTimeoutError,
10294 HeadersOverflowError,
10295 SocketError,
10296 InformationalError,
10297 BodyTimeoutError,
10298 HTTPParserError,
10299 ResponseExceededMaxSizeError,
10300 ClientDestroyedError
10301 } = require_errors();
10302 var buildConnector = require_connect();
10303 var {
10304 kUrl,
10305 kReset,
10306 kServerName,
10307 kClient,
10308 kBusy,
10309 kParser,
10310 kConnect,
10311 kBlocking,
10312 kResuming,
10313 kRunning,
10314 kPending,
10315 kSize,
10316 kWriting,
10317 kQueue,
10318 kConnected,
10319 kConnecting,
10320 kNeedDrain,
10321 kNoRef,
10322 kKeepAliveDefaultTimeout,
10323 kHostHeader,
10324 kPendingIdx,
10325 kRunningIdx,
10326 kError,
10327 kPipelining,
10328 kSocket,
10329 kKeepAliveTimeoutValue,
10330 kMaxHeadersSize,
10331 kKeepAliveMaxTimeout,
10332 kKeepAliveTimeoutThreshold,
10333 kHeadersTimeout,
10334 kBodyTimeout,
10335 kStrictContentLength,
10336 kConnector,
10337 kMaxRedirections,
10338 kMaxRequests,
10339 kCounter,
10340 kClose,
10341 kDestroy,
10342 kDispatch,
10343 kInterceptors,
10344 kLocalAddress,
10345 kMaxResponseSize,
10346 kHTTPConnVersion,
10347 // HTTP2
10348 kHost,
10349 kHTTP2Session,
10350 kHTTP2SessionState,
10351 kHTTP2BuildRequest,
10352 kHTTP2CopyHeaders,
10353 kHTTP1BuildRequest
10354 } = require_symbols();
10355 var http2;
10356 try {
10357 http2 = require("http2");
10358 } catch {
10359 http2 = { constants: {} };
10360 }
10361 var {
10362 constants: {
10363 HTTP2_HEADER_AUTHORITY,
10364 HTTP2_HEADER_METHOD,
10365 HTTP2_HEADER_PATH,
10366 HTTP2_HEADER_SCHEME,
10367 HTTP2_HEADER_CONTENT_LENGTH,
10368 HTTP2_HEADER_EXPECT,
10369 HTTP2_HEADER_STATUS
10370 }
10371 } = http2;
10372 var h2ExperimentalWarned = false;
10373 var FastBuffer = Buffer[Symbol.species];
10374 var kClosedResolve = Symbol("kClosedResolve");
10375 var channels = {};
10376 try {
10377 const diagnosticsChannel = require("diagnostics_channel");
10378 channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders");
10379 channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect");
10380 channels.connectError = diagnosticsChannel.channel("undici:client:connectError");
10381 channels.connected = diagnosticsChannel.channel("undici:client:connected");
10382 } catch {
10383 channels.sendHeaders = { hasSubscribers: false };
10384 channels.beforeConnect = { hasSubscribers: false };
10385 channels.connectError = { hasSubscribers: false };
10386 channels.connected = { hasSubscribers: false };
10387 }
10388 var Client = class extends DispatcherBase {
10389 /**
10390 *
10391 * @param {string|URL} url
10392 * @param {import('../types/client').Client.Options} options
10393 */
10394 constructor(url, {
10395 interceptors,
10396 maxHeaderSize,
10397 headersTimeout,
10398 socketTimeout,
10399 requestTimeout,
10400 connectTimeout,
10401 bodyTimeout,
10402 idleTimeout,
10403 keepAlive,
10404 keepAliveTimeout,
10405 maxKeepAliveTimeout,
10406 keepAliveMaxTimeout,
10407 keepAliveTimeoutThreshold,
10408 socketPath,
10409 pipelining,
10410 tls,
10411 strictContentLength,
10412 maxCachedSessions,
10413 maxRedirections,
10414 connect: connect2,
10415 maxRequestsPerClient,
10416 localAddress,
10417 maxResponseSize,
10418 autoSelectFamily,
10419 autoSelectFamilyAttemptTimeout,
10420 // h2
10421 allowH2,
10422 maxConcurrentStreams
10423 } = {}) {
10424 super();
10425 if (keepAlive !== void 0) {
10426 throw new InvalidArgumentError2("unsupported keepAlive, use pipelining=0 instead");
10427 }
10428 if (socketTimeout !== void 0) {
10429 throw new InvalidArgumentError2("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");
10430 }
10431 if (requestTimeout !== void 0) {
10432 throw new InvalidArgumentError2("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");
10433 }
10434 if (idleTimeout !== void 0) {
10435 throw new InvalidArgumentError2("unsupported idleTimeout, use keepAliveTimeout instead");
10436 }
10437 if (maxKeepAliveTimeout !== void 0) {
10438 throw new InvalidArgumentError2("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");
10439 }
10440 if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {
10441 throw new InvalidArgumentError2("invalid maxHeaderSize");
10442 }
10443 if (socketPath != null && typeof socketPath !== "string") {
10444 throw new InvalidArgumentError2("invalid socketPath");
10445 }
10446 if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {
10447 throw new InvalidArgumentError2("invalid connectTimeout");
10448 }
10449 if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {
10450 throw new InvalidArgumentError2("invalid keepAliveTimeout");
10451 }
10452 if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {
10453 throw new InvalidArgumentError2("invalid keepAliveMaxTimeout");
10454 }
10455 if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {
10456 throw new InvalidArgumentError2("invalid keepAliveTimeoutThreshold");
10457 }
10458 if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {
10459 throw new InvalidArgumentError2("headersTimeout must be a positive integer or zero");
10460 }
10461 if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {
10462 throw new InvalidArgumentError2("bodyTimeout must be a positive integer or zero");
10463 }
10464 if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") {
10465 throw new InvalidArgumentError2("connect must be a function or an object");
10466 }
10467 if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
10468 throw new InvalidArgumentError2("maxRedirections must be a positive number");
10469 }
10470 if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {
10471 throw new InvalidArgumentError2("maxRequestsPerClient must be a positive number");
10472 }
10473 if (localAddress != null && (typeof localAddress !== "string" || net.isIP(localAddress) === 0)) {
10474 throw new InvalidArgumentError2("localAddress must be valid string IP address");
10475 }
10476 if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {
10477 throw new InvalidArgumentError2("maxResponseSize must be a positive number");
10478 }
10479 if (autoSelectFamilyAttemptTimeout != null && (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)) {
10480 throw new InvalidArgumentError2("autoSelectFamilyAttemptTimeout must be a positive number");
10481 }
10482 if (allowH2 != null && typeof allowH2 !== "boolean") {
10483 throw new InvalidArgumentError2("allowH2 must be a valid boolean value");
10484 }
10485 if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1)) {
10486 throw new InvalidArgumentError2("maxConcurrentStreams must be a possitive integer, greater than 0");
10487 }
10488 if (typeof connect2 !== "function") {
10489 connect2 = buildConnector({
10490 ...tls,
10491 maxCachedSessions,
10492 allowH2,
10493 socketPath,
10494 timeout: connectTimeout,
10495 ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
10496 ...connect2
10497 });
10498 }
10499 this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) ? interceptors.Client : [createRedirectInterceptor({ maxRedirections })];
10500 this[kUrl] = util.parseOrigin(url);
10501 this[kConnector] = connect2;
10502 this[kSocket] = null;
10503 this[kPipelining] = pipelining != null ? pipelining : 1;
10504 this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize;
10505 this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout;
10506 this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout;
10507 this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold;
10508 this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout];
10509 this[kServerName] = null;
10510 this[kLocalAddress] = localAddress != null ? localAddress : null;
10511 this[kResuming] = 0;
10512 this[kNeedDrain] = 0;
10513 this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\r
10514`;
10515 this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5;
10516 this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5;
10517 this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength;
10518 this[kMaxRedirections] = maxRedirections;
10519 this[kMaxRequests] = maxRequestsPerClient;
10520 this[kClosedResolve] = null;
10521 this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1;
10522 this[kHTTPConnVersion] = "h1";
10523 this[kHTTP2Session] = null;
10524 this[kHTTP2SessionState] = !allowH2 ? null : {
10525 // streams: null, // Fixed queue of streams - For future support of `push`
10526 openStreams: 0,
10527 // Keep track of them to decide wether or not unref the session
10528 maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100
10529 // Max peerConcurrentStreams for a Node h2 server
10530 };
10531 this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}`;
10532 this[kQueue] = [];
10533 this[kRunningIdx] = 0;
10534 this[kPendingIdx] = 0;
10535 }
10536 get pipelining() {
10537 return this[kPipelining];
10538 }
10539 set pipelining(value) {
10540 this[kPipelining] = value;
10541 resume(this, true);
10542 }
10543 get [kPending]() {
10544 return this[kQueue].length - this[kPendingIdx];
10545 }
10546 get [kRunning]() {
10547 return this[kPendingIdx] - this[kRunningIdx];
10548 }
10549 get [kSize]() {
10550 return this[kQueue].length - this[kRunningIdx];
10551 }
10552 get [kConnected]() {
10553 return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed;
10554 }
10555 get [kBusy]() {
10556 const socket = this[kSocket];
10557 return socket && (socket[kReset] || socket[kWriting] || socket[kBlocking]) || this[kSize] >= (this[kPipelining] || 1) || this[kPending] > 0;
10558 }
10559 /* istanbul ignore: only used for test */
10560 [kConnect](cb) {
10561 connect(this);
10562 this.once("connect", cb);
10563 }
10564 [kDispatch](opts, handler2) {
10565 const origin = opts.origin || this[kUrl].origin;
10566 const request2 = this[kHTTPConnVersion] === "h2" ? Request[kHTTP2BuildRequest](origin, opts, handler2) : Request[kHTTP1BuildRequest](origin, opts, handler2);
10567 this[kQueue].push(request2);
10568 if (this[kResuming]) {
10569 } else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) {
10570 this[kResuming] = 1;
10571 process.nextTick(resume, this);
10572 } else {
10573 resume(this, true);
10574 }
10575 if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {
10576 this[kNeedDrain] = 2;
10577 }
10578 return this[kNeedDrain] < 2;
10579 }
10580 async [kClose]() {
10581 return new Promise((resolve) => {
10582 if (!this[kSize]) {
10583 resolve(null);
10584 } else {
10585 this[kClosedResolve] = resolve;
10586 }
10587 });
10588 }
10589 async [kDestroy](err) {
10590 return new Promise((resolve) => {
10591 const requests = this[kQueue].splice(this[kPendingIdx]);
10592 for (let i = 0; i < requests.length; i++) {
10593 const request2 = requests[i];
10594 errorRequest(this, request2, err);
10595 }
10596 const callback = () => {
10597 if (this[kClosedResolve]) {
10598 this[kClosedResolve]();
10599 this[kClosedResolve] = null;
10600 }
10601 resolve();
10602 };
10603 if (this[kHTTP2Session] != null) {
10604 util.destroy(this[kHTTP2Session], err);
10605 this[kHTTP2Session] = null;
10606 this[kHTTP2SessionState] = null;
10607 }
10608 if (!this[kSocket]) {
10609 queueMicrotask(callback);
10610 } else {
10611 util.destroy(this[kSocket].on("close", callback), err);
10612 }
10613 resume(this);
10614 });
10615 }
10616 };
10617 function onHttp2SessionError(err) {
10618 assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
10619 this[kSocket][kError] = err;
10620 onError(this[kClient], err);
10621 }
10622 function onHttp2FrameError(type, code, id) {
10623 const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`);
10624 if (id === 0) {
10625 this[kSocket][kError] = err;
10626 onError(this[kClient], err);
10627 }
10628 }
10629 function onHttp2SessionEnd() {
10630 util.destroy(this, new SocketError("other side closed"));
10631 util.destroy(this[kSocket], new SocketError("other side closed"));
10632 }
10633 function onHTTP2GoAway(code) {
10634 const client = this[kClient];
10635 const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`);
10636 client[kSocket] = null;
10637 client[kHTTP2Session] = null;
10638 if (client.destroyed) {
10639 assert(this[kPending] === 0);
10640 const requests = client[kQueue].splice(client[kRunningIdx]);
10641 for (let i = 0; i < requests.length; i++) {
10642 const request2 = requests[i];
10643 errorRequest(this, request2, err);
10644 }
10645 } else if (client[kRunning] > 0) {
10646 const request2 = client[kQueue][client[kRunningIdx]];
10647 client[kQueue][client[kRunningIdx]++] = null;
10648 errorRequest(client, request2, err);
10649 }
10650 client[kPendingIdx] = client[kRunningIdx];
10651 assert(client[kRunning] === 0);
10652 client.emit(
10653 "disconnect",
10654 client[kUrl],
10655 [client],
10656 err
10657 );
10658 resume(client);
10659 }
10660 var constants = require_constants3();
10661 var createRedirectInterceptor = require_redirectInterceptor();
10662 var EMPTY_BUF = Buffer.alloc(0);
10663 async function lazyllhttp() {
10664 const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0;
10665 let mod;
10666 try {
10667 mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), "base64"));
10668 } catch (e) {
10669 mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), "base64"));
10670 }
10671 return await WebAssembly.instantiate(mod, {
10672 env: {
10673 /* eslint-disable camelcase */
10674 wasm_on_url: (p, at, len) => {
10675 return 0;
10676 },
10677 wasm_on_status: (p, at, len) => {
10678 assert.strictEqual(currentParser.ptr, p);
10679 const start = at - currentBufferPtr + currentBufferRef.byteOffset;
10680 return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
10681 },
10682 wasm_on_message_begin: (p) => {
10683 assert.strictEqual(currentParser.ptr, p);
10684 return currentParser.onMessageBegin() || 0;
10685 },
10686 wasm_on_header_field: (p, at, len) => {
10687 assert.strictEqual(currentParser.ptr, p);
10688 const start = at - currentBufferPtr + currentBufferRef.byteOffset;
10689 return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
10690 },
10691 wasm_on_header_value: (p, at, len) => {
10692 assert.strictEqual(currentParser.ptr, p);
10693 const start = at - currentBufferPtr + currentBufferRef.byteOffset;
10694 return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
10695 },
10696 wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {
10697 assert.strictEqual(currentParser.ptr, p);
10698 return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0;
10699 },
10700 wasm_on_body: (p, at, len) => {
10701 assert.strictEqual(currentParser.ptr, p);
10702 const start = at - currentBufferPtr + currentBufferRef.byteOffset;
10703 return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
10704 },
10705 wasm_on_message_complete: (p) => {
10706 assert.strictEqual(currentParser.ptr, p);
10707 return currentParser.onMessageComplete() || 0;
10708 }
10709 /* eslint-enable camelcase */
10710 }
10711 });
10712 }
10713 var llhttpInstance = null;
10714 var llhttpPromise = lazyllhttp();
10715 llhttpPromise.catch();
10716 var currentParser = null;
10717 var currentBufferRef = null;
10718 var currentBufferSize = 0;
10719 var currentBufferPtr = null;
10720 var TIMEOUT_HEADERS = 1;
10721 var TIMEOUT_BODY = 2;
10722 var TIMEOUT_IDLE = 3;
10723 var Parser = class {
10724 constructor(client, socket, { exports: exports3 }) {
10725 assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);
10726 this.llhttp = exports3;
10727 this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE);
10728 this.client = client;
10729 this.socket = socket;
10730 this.timeout = null;
10731 this.timeoutValue = null;
10732 this.timeoutType = null;
10733 this.statusCode = null;
10734 this.statusText = "";
10735 this.upgrade = false;
10736 this.headers = [];
10737 this.headersSize = 0;
10738 this.headersMaxSize = client[kMaxHeadersSize];
10739 this.shouldKeepAlive = false;
10740 this.paused = false;
10741 this.resume = this.resume.bind(this);
10742 this.bytesRead = 0;
10743 this.keepAlive = "";
10744 this.contentLength = "";
10745 this.connection = "";
10746 this.maxResponseSize = client[kMaxResponseSize];
10747 }
10748 setTimeout(value, type) {
10749 this.timeoutType = type;
10750 if (value !== this.timeoutValue) {
10751 timers.clearTimeout(this.timeout);
10752 if (value) {
10753 this.timeout = timers.setTimeout(onParserTimeout, value, this);
10754 if (this.timeout.unref) {
10755 this.timeout.unref();
10756 }
10757 } else {
10758 this.timeout = null;
10759 }
10760 this.timeoutValue = value;
10761 } else if (this.timeout) {
10762 if (this.timeout.refresh) {
10763 this.timeout.refresh();
10764 }
10765 }
10766 }
10767 resume() {
10768 if (this.socket.destroyed || !this.paused) {
10769 return;
10770 }
10771 assert(this.ptr != null);
10772 assert(currentParser == null);
10773 this.llhttp.llhttp_resume(this.ptr);
10774 assert(this.timeoutType === TIMEOUT_BODY);
10775 if (this.timeout) {
10776 if (this.timeout.refresh) {
10777 this.timeout.refresh();
10778 }
10779 }
10780 this.paused = false;
10781 this.execute(this.socket.read() || EMPTY_BUF);
10782 this.readMore();
10783 }
10784 readMore() {
10785 while (!this.paused && this.ptr) {
10786 const chunk = this.socket.read();
10787 if (chunk === null) {
10788 break;
10789 }
10790 this.execute(chunk);
10791 }
10792 }
10793 execute(data) {
10794 assert(this.ptr != null);
10795 assert(currentParser == null);
10796 assert(!this.paused);
10797 const { socket, llhttp } = this;
10798 if (data.length > currentBufferSize) {
10799 if (currentBufferPtr) {
10800 llhttp.free(currentBufferPtr);
10801 }
10802 currentBufferSize = Math.ceil(data.length / 4096) * 4096;
10803 currentBufferPtr = llhttp.malloc(currentBufferSize);
10804 }
10805 new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data);
10806 try {
10807 let ret;
10808 try {
10809 currentBufferRef = data;
10810 currentParser = this;
10811 ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length);
10812 } catch (err) {
10813 throw err;
10814 } finally {
10815 currentParser = null;
10816 currentBufferRef = null;
10817 }
10818 const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;
10819 if (ret === constants.ERROR.PAUSED_UPGRADE) {
10820 this.onUpgrade(data.slice(offset));
10821 } else if (ret === constants.ERROR.PAUSED) {
10822 this.paused = true;
10823 socket.unshift(data.slice(offset));
10824 } else if (ret !== constants.ERROR.OK) {
10825 const ptr = llhttp.llhttp_get_error_reason(this.ptr);
10826 let message = "";
10827 if (ptr) {
10828 const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
10829 message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
10830 }
10831 throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset));
10832 }
10833 } catch (err) {
10834 util.destroy(socket, err);
10835 }
10836 }
10837 destroy() {
10838 assert(this.ptr != null);
10839 assert(currentParser == null);
10840 this.llhttp.llhttp_free(this.ptr);
10841 this.ptr = null;
10842 timers.clearTimeout(this.timeout);
10843 this.timeout = null;
10844 this.timeoutValue = null;
10845 this.timeoutType = null;
10846 this.paused = false;
10847 }
10848 onStatus(buf) {
10849 this.statusText = buf.toString();
10850 }
10851 onMessageBegin() {
10852 const { socket, client } = this;
10853 if (socket.destroyed) {
10854 return -1;
10855 }
10856 const request2 = client[kQueue][client[kRunningIdx]];
10857 if (!request2) {
10858 return -1;
10859 }
10860 }
10861 onHeaderField(buf) {
10862 const len = this.headers.length;
10863 if ((len & 1) === 0) {
10864 this.headers.push(buf);
10865 } else {
10866 this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]);
10867 }
10868 this.trackHeader(buf.length);
10869 }
10870 onHeaderValue(buf) {
10871 let len = this.headers.length;
10872 if ((len & 1) === 1) {
10873 this.headers.push(buf);
10874 len += 1;
10875 } else {
10876 this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]);
10877 }
10878 const key = this.headers[len - 2];
10879 if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") {
10880 this.keepAlive += buf.toString();
10881 } else if (key.length === 10 && key.toString().toLowerCase() === "connection") {
10882 this.connection += buf.toString();
10883 } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") {
10884 this.contentLength += buf.toString();
10885 }
10886 this.trackHeader(buf.length);
10887 }
10888 trackHeader(len) {
10889 this.headersSize += len;
10890 if (this.headersSize >= this.headersMaxSize) {
10891 util.destroy(this.socket, new HeadersOverflowError());
10892 }
10893 }
10894 onUpgrade(head) {
10895 const { upgrade, client, socket, headers, statusCode } = this;
10896 assert(upgrade);
10897 const request2 = client[kQueue][client[kRunningIdx]];
10898 assert(request2);
10899 assert(!socket.destroyed);
10900 assert(socket === client[kSocket]);
10901 assert(!this.paused);
10902 assert(request2.upgrade || request2.method === "CONNECT");
10903 this.statusCode = null;
10904 this.statusText = "";
10905 this.shouldKeepAlive = null;
10906 assert(this.headers.length % 2 === 0);
10907 this.headers = [];
10908 this.headersSize = 0;
10909 socket.unshift(head);
10910 socket[kParser].destroy();
10911 socket[kParser] = null;
10912 socket[kClient] = null;
10913 socket[kError] = null;
10914 socket.removeListener("error", onSocketError).removeListener("readable", onSocketReadable).removeListener("end", onSocketEnd).removeListener("close", onSocketClose);
10915 client[kSocket] = null;
10916 client[kQueue][client[kRunningIdx]++] = null;
10917 client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
10918 try {
10919 request2.onUpgrade(statusCode, headers, socket);
10920 } catch (err) {
10921 util.destroy(socket, err);
10922 }
10923 resume(client);
10924 }
10925 onHeadersComplete(statusCode, upgrade, shouldKeepAlive) {
10926 const { client, socket, headers, statusText } = this;
10927 if (socket.destr